コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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));
        }
コード例 #4
0
 public async Task <List <WeatherForecast> > Read([FromBody] PaginatorData data) => await DataService.GetRecordListAsync <WeatherForecast>(data);