Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

GetUsersQuery.cs 1.8KB

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