forked from thinktecture/Thinktecture.Blazor
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathConferencesService.cs
76 lines (61 loc) · 2.7 KB
/
ConferencesService.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using AutoMapper;
using PatrickJahr.Blazor.GrpcDevTools.Shared.DTO;
using PatrickJahr.Blazor.GrpcDevTools.Shared.Services;
using PatrickJahr.Blazor.GrpcDevTools.WebApi.Models;
using Microsoft.EntityFrameworkCore;
namespace PatrickJahr.Blazor.GrpcDevTools.WebApi.Services;
public class ConferencesService : IConferencesService
{
private readonly ConferencesDbContext _conferencesDbContext;
private readonly IMapper _mapper;
public ConferencesService(ConferencesDbContext conferencesDbContext, IMapper mapper)
{
_conferencesDbContext = conferencesDbContext;
_mapper = mapper;
}
public async Task<IEnumerable<ConferenceOverview>> ListConferencesAsync()
{
var conferences = await _conferencesDbContext.Conferences.OrderByDescending(c => c.DateCreated).ToListAsync();
var confs = _mapper.Map<IEnumerable<ConferenceOverview>>(conferences);
return confs;
}
public async Task<ConferenceDetailModel> AddNewConferenceAsync(ConferenceDetailModel conference)
{
var conf = _mapper.Map<Conference>(conference);
conf.DateCreated = DateTime.UtcNow;
_conferencesDbContext.Conferences.Add(conf);
await _conferencesDbContext.SaveChangesAsync();
return _mapper.Map<ConferenceDetailModel>(conf);
}
public async Task<ConferenceDetailModel?> GetConferenceDetailsAsync(ConferenceDetailsRequest request)
{
var conferenceDetails = await _conferencesDbContext.Conferences.FindAsync(request.ID);
if (conferenceDetails == null)
{
return null;
}
return _mapper.Map<ConferenceDetailModel>(conferenceDetails);
}
public async Task UpdateConferenceAsync(ConferenceUpdateRequest request)
{
var conferenceDetails = await _conferencesDbContext.Conferences.FindAsync(request.ID);
if (conferenceDetails != null)
{
conferenceDetails.Title = request.Conference?.Title ?? string.Empty;
conferenceDetails.DateFrom = request.Conference?.DateFrom ?? DateTime.Now;
conferenceDetails.DateTo = request.Conference?.DateTo ?? DateTime.Now;
conferenceDetails.City = request.Conference?.City ?? string.Empty;
conferenceDetails.Country = request.Conference?.Country ?? string.Empty;
await _conferencesDbContext.SaveChangesAsync();
}
}
public async Task DeleteConferenceAsync(ConferenceDetailsRequest request)
{
var conferenceDetails = await _conferencesDbContext.Conferences.FindAsync(request.ID);
if (conferenceDetails != null)
{
_conferencesDbContext.Remove(conferenceDetails);
await _conferencesDbContext.SaveChangesAsync();
}
}
}