using AutobusApi.Application.Common.Interfaces; using AutobusApi.Application.Common.Mappings; using AutobusApi.Application.Common.Models; using AutoMapper; using AutoMapper.QueryableExtensions; using MediatR; namespace AutobusApi.Application.Routes.Queries.GetRoutesWithPagination; public class GetRoutesWithPaginationQueryHandler : IRequestHandler> { private readonly IApplicationDbContext _dbContext; private readonly IMapper _mapper; public GetRoutesWithPaginationQueryHandler( IApplicationDbContext dbContext, IMapper mapper) { _dbContext = dbContext; _mapper = mapper; } public async Task> Handle( GetRoutesWithPaginationQuery request, CancellationToken cancellationToken) { return await _dbContext.Routes .ProjectTo(_mapper.ConfigurationProvider) .ApplySort(request.Sort) .PaginatedListAsync(request.PageNumber, request.PageSize); } }