You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

GetUserQuery.cs 1.9KB

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