Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

DeleteUsersCommand.cs 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using AutoMapper;
  2. using BlackRock.Reporting.API.Core;
  3. using BlackRock.Reporting.API.Mediator.Model;
  4. using MediatR;
  5. namespace BlackRock.Reporting.API.Mediator.Commands
  6. {
  7. public class DeleteUsersCommand : UserQuery, IRequest<Result<int>>
  8. {
  9. public DeleteUsersCommand(int id) : base(id)
  10. {
  11. }
  12. }
  13. public class DeleteUsersCommandHandlers : IRequestHandler<DeleteUsersCommand, Result<int>>
  14. {
  15. private readonly ILogger<DeleteUsersCommandHandlers> logger;
  16. private readonly IMapper mapper;
  17. private readonly IUnitOfWork unitOfWork;
  18. public DeleteUsersCommandHandlers(ILogger<DeleteUsersCommandHandlers> logger, IMapper mapper, IUnitOfWork unitOfWork)
  19. {
  20. this.unitOfWork = unitOfWork;
  21. this.mapper = mapper;
  22. this.logger = logger;
  23. }
  24. public async Task<Result<int>> Handle(DeleteUsersCommand command, CancellationToken cancellationToken)
  25. {
  26. if (command.Id <= 0)
  27. throw new ArgumentException($"Parameter {nameof(command.Id)} must not be grater than 0");
  28. logger.LogInformation("Deleting user ...");
  29. try
  30. {
  31. var user = await unitOfWork.UsersRepository.GetByIdAsync(command.Id);
  32. unitOfWork.UsersRepository.Remove(user);
  33. await unitOfWork.SaveChangesAsync();
  34. logger.LogInformation($"User with id {user.Id} has been deleted successfully");
  35. return new Result<int> { Data = command.Id };
  36. }
  37. catch (Exception ex)
  38. {
  39. return new Result<int> { IsSuccess = false, Error = "Faild to delete data from DB." };
  40. }
  41. }
  42. }
  43. }