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.Companies.Queries.GetCompaniesWithPagination; public class GetCompaniesWithPaginationQueryHandler : IRequestHandler> { private readonly IApplicationDbContext _dbContext; private readonly IMapper _mapper; public GetCompaniesWithPaginationQueryHandler( IApplicationDbContext dbContext, IMapper mapper) { _dbContext = dbContext; _mapper = mapper; } public async Task> Handle( GetCompaniesWithPaginationQuery request, CancellationToken cancellationToken) { return await _dbContext.Companies .ProjectTo(_mapper.ConfigurationProvider) .ApplySort(request.Sort) .PaginatedListAsync(request.PageNumber, request.PageSize); } }