using AutoMapper; using BlackRock.Reporting.API.Core.Interfaces; using BlackRock.Reporting.API.Core.Models; using BlackRock.Reporting.API.Mediator.UserMediator.Model; using BlackRock.Reporting.API.Mediator.UserMediator.Dto; using MediatR; namespace BlackRock.Reporting.API.Mediator.UserMediator.Queries { public class GetAllUsersQuery : UsersFilter, IRequest>> { } public class GetAllUsersQueryHandlers : IRequestHandler>> { private readonly ILogger logger; private readonly IMapper mapper; private readonly IUnitOfWork unitOfWork; public GetAllUsersQueryHandlers(ILogger logger, IMapper mapper, IUnitOfWork unitOfWork) { this.unitOfWork = unitOfWork; this.mapper = mapper; this.logger = logger; } public async Task>> Handle(GetAllUsersQuery command, CancellationToken cancellationToken) { if (command == null) throw new ArgumentNullException($"Parameter {nameof(command)} must not be null"); logger.LogInformation("Getting users ..."); try { var users = await unitOfWork.UsersRepository.GetAllByFilter(command); var usersDto = mapper.Map, PagedCollection>(users); logger.LogInformation($"The Users has been founded successfully"); return new Result> { Data = usersDto }; } catch (Exception ex) { return new Result> { IsSuccess = false, Error = "Faild to fetch data from DB." }; } } } }