En el archivo appsettings.json
"Pagination": {
"DefaultPageIndex": 1, //Pagina Actual
"DefaulttPageSize": 10 //Numero de registros a mostrar
}
Creamos una clase con lo parámetros declarados en el appsettings.json
namespace Api.Core.Custom
{
public class PaginationOptions
{
public int DefaultPageIndex { get; set; }
public int DefaulttPageSize { get; set; }
}
}
En la clase Startup, en el metodo ConfigureServices:
services.Configure<PaginationOptions>(Configuration.GetSection("Pagination")); //Configue Default Pagination options
Inyectamos:
private readonly PaginationOptions _paginationOptions;
public MesaService(IOptions<PaginationOptions> options)
{
_paginationOptions = options.Value;
}
public async Task<PaginatedList<MesaDto>> GetAll(FiltersQuery filters)
{
filters.PageIndex = filters.PageIndex == 0 ? _paginationOptions.DefaultPageIndex : filters.PageIndex;
filters.PageSize = filters.PageSize == 0 ? _paginationOptions.DefaulttPageSize : filters.PageSize;
var responseModel = await _mesaRepository.GetAll();
if (filters.Descripcion != null)
{
responseModel = responseModel.Where(x => x.Descripcion.ToLower().Contains(filters.Descripcion.ToLower()));
}
var responseDto = _mapper.Map<IEnumerable<MesaDto>>(responseModel); //Mappeamos de MesaModel a MesaDto
var paginatedResponse = PaginatedList<MesaDto>.Create(responseDto, filters.PageIndex, filters.PageSize);
return paginatedResponse;
}