public override async Task <List <TRecord> > GetRecordListAsync <TRecord>(PaginatorData paginatorData) { var startpage = paginatorData.Page <= 1 ? 0 : (paginatorData.Page - 1) * paginatorData.PageSize; var dbset = _dbContext.GetDbSet <TRecord>(); var isSortable = typeof(TRecord).GetProperty(paginatorData.SortColumn) != null; if (isSortable) { var list = await dbset .OrderBy(paginatorData.SortDescending?$"{paginatorData.SortColumn} descending" : paginatorData.SortColumn) .Skip(startpage) .Take(paginatorData.PageSize).ToListAsync() ?? new List <TRecord>(); return(list); } else { var list = await dbset .Skip(startpage) .Take(paginatorData.PageSize).ToListAsync() ?? new List <TRecord>(); return(list); } }
public async Task <ActionResult <PaginatorData <CategoriaDTO> > > GetPaged(int pagina = 0, int cantidad = 10) { var result = new PaginatorData <CategoriaDTO>(); var categorias = await _contexto.Categorias.Skip(cantidad *pagina).Take(cantidad).ToListAsync(); var total = categorias.Count / cantidad; result.Content = _mapper.Map <List <CategoriaDTO> >(categorias); result.Empty = result.Content.Any(); result.First = pagina == 0; result.Last = total == pagina; result.PageNumber = pagina; result.TotalPages = total; return(result); }
public IActionResult GetInvoicesPaged([FromQuery] SalesInvoicePagedFilter filters) { var invoices = _salesInvoiceUseCase.GetSalesInvoicesPaged(filters); var invoicesDto = _mapper.Map <IEnumerable <SalesInvoiceDto> >(invoices); var paginator = new PaginatorData { TotalCount = invoices.TotalCount, PageSize = invoices.PageSize, CurrentPage = invoices.CurrentPage, TotalPages = invoices.TotalPages, HasNextPage = invoices.HasNextPage, HasPreviousPage = invoices.HasPreviousPage }; var response = new SalesInvoiceResponse <IEnumerable <SalesInvoiceDto> >(invoicesDto) { paginator = paginator }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(paginator)); return(Ok(response)); }
public async Task <List <WeatherForecast> > Read([FromBody] PaginatorData data) => await DataService.GetRecordListAsync <WeatherForecast>(data);