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ů.

GetAllUsersQuery.cs 2.2KB

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