Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

GetAllUsersQuery.cs 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using AutoMapper;
  2. using BlackRock.Reporting.API.Core;
  3. using BlackRock.Reporting.API.Models;
  4. using MediatR;
  5. namespace BlackRock.Reporting.API.Mediator
  6. {
  7. public class QueryResults<T>
  8. {
  9. public int TotalItems { get; set; }
  10. public IEnumerable<T> Items { get; set; }
  11. }
  12. public class UserQuery
  13. {
  14. public string SortBy { get; set; }
  15. public bool IsSortAscending { get; set; }
  16. public int Page { get; set; }
  17. public int PageSize { get; set; }
  18. }
  19. public class GetAllUsersQuery : IRequest<Result<QueryResults<UserDto>>>
  20. {
  21. public UserQuery Filter { get; }
  22. public GetAllUsersQuery(UserQuery filter)
  23. {
  24. this.Filter = filter;
  25. }
  26. }
  27. public class GetAllUsersQueryHandlers : IRequestHandler<GetAllUsersQuery, Result<QueryResults<UserDto>>>
  28. {
  29. private readonly ILogger<GetAllUsersQueryHandlers> logger;
  30. private readonly IMapper mapper;
  31. private readonly IUnitOfWork unitOfWork;
  32. private readonly IUsersRepository repository;
  33. public GetAllUsersQueryHandlers(ILogger<GetAllUsersQueryHandlers> logger, IMapper mapper, IUsersRepository repository, IUnitOfWork unitOfWork)
  34. {
  35. this.repository = repository;
  36. this.unitOfWork = unitOfWork;
  37. this.mapper = mapper;
  38. this.logger = logger;
  39. }
  40. public async Task<Result<QueryResults<UserDto>>> Handle(GetAllUsersQuery command, CancellationToken cancellationToken)
  41. {
  42. if (command.Filter == null)
  43. throw new ArgumentNullException($"Parameter {nameof(command.Filter)} must not be null");
  44. logger.LogInformation("Getting users ...");
  45. try
  46. {
  47. var users = await repository.GetAllAsync();
  48. var usersDto = mapper.Map<IEnumerable<User>, IEnumerable<UserDto>>(users);
  49. var data = new QueryResults<UserDto> { Items = usersDto, TotalItems = usersDto.Count() };
  50. logger.LogInformation($"The Users has been founded successfully");
  51. return new Result<QueryResults<UserDto>> { Data = data };
  52. }
  53. catch (Exception ex)
  54. {
  55. return new Result<QueryResults<UserDto>> { IsSuccess = false, Error = "Faild to fetch data from DB." };
  56. }
  57. }
  58. }
  59. }