source: ChapterX.Application/Story/Commands/DeleteHandler.cs@ 99c1e45

main
Last change on this file since 99c1e45 was 99c1e45, checked in by kikisrbinoska <srbinoskakristina07@…>, 11 days ago

Fixed writer section and admin management

  • Property mode set to 100644
File size: 1.1 KB
Line 
1using ChapterX.Domain.Repositories;
2using MediatR;
3using Microsoft.Extensions.Logging;
4
5namespace ChapterX.Application.Story.Commands
6{
7 public class DeleteHandler : IRequestHandler<DeleteRequest, DeleteResponse>
8 {
9 private readonly IStoryRepository _storyRepository;
10 private readonly ILogger<DeleteHandler> _logger;
11
12 public DeleteHandler(IStoryRepository storyRepository, ILogger<DeleteHandler> logger)
13 {
14 _storyRepository = storyRepository;
15 _logger = logger;
16 }
17
18 public async Task<DeleteResponse> Handle(DeleteRequest request, CancellationToken cancellationToken)
19 {
20 var story = await _storyRepository.GetByIdAsync(request.Id, cancellationToken);
21 if (story is null)
22 return new DeleteResponse(false);
23
24 if (!request.IsAdmin && story.UserId != request.CallerId)
25 throw new UnauthorizedAccessException("You do not own this story.");
26
27 await _storyRepository.DeleteAsync(story, cancellationToken);
28
29 return new DeleteResponse(true);
30 }
31 }
32}
Note: See TracBrowser for help on using the repository browser.