source: ChapterX.Application/Story/Commands/AddHandler.cs@ 73b69b2

main
Last change on this file since 73b69b2 was 73b69b2, checked in by kikisrbinoska <srbinoskakristina07@…>, 3 months ago

Fixed reading lists,comments and likes

  • Property mode set to 100644
File size: 1.8 KB
RevLine 
[877c13c]1using ChapterX.Domain.Repositories;
2using MediatR;
3using Microsoft.Extensions.Logging;
4
5namespace ChapterX.Application.Story.Commands
6{
7 public class AddHandler : IRequestHandler<AddRequest, AddResponse>
8 {
9 private readonly IStoryRepository _storyRepository;
[73b69b2]10 private readonly IGenreRepository _genreRepository;
11 private readonly IHasGenreRepository _hasGenreRepository;
[877c13c]12 private readonly ILogger<AddHandler> _logger;
13
[73b69b2]14 public AddHandler(IStoryRepository storyRepository, IGenreRepository genreRepository, IHasGenreRepository hasGenreRepository, ILogger<AddHandler> logger)
[877c13c]15 {
16 _storyRepository = storyRepository;
[73b69b2]17 _genreRepository = genreRepository;
18 _hasGenreRepository = hasGenreRepository;
[877c13c]19 _logger = logger;
20 }
21
22 public async Task<AddResponse> Handle(AddRequest request, CancellationToken cancellationToken)
23 {
24 var story = new Domain.Entities.Story
25 {
26 MatureContent = request.MatureContent,
27 ShortDescription = request.ShortDescription,
28 Image = request.Image,
29 Content = request.Content,
30 UserId = request.UserId,
31 CreatedAt = DateTime.UtcNow,
32 UpdatedAt = DateTime.UtcNow
33 };
34
35 await _storyRepository.AddAsync(story, cancellationToken);
36
[73b69b2]37 foreach (var genreName in request.Genres ?? [])
38 {
39 var genre = await _genreRepository.GetByNameAsync(genreName, cancellationToken);
40 if (genre == null) continue;
41 await _hasGenreRepository.AddAsync(new Domain.Entities.HasGenre { StoryId = story.Id, GenreId = genre.Id }, cancellationToken);
42 }
43
[877c13c]44 return new AddResponse(story.Id);
45 }
46 }
47}
Note: See TracBrowser for help on using the repository browser.