public PagedList <ProductDTO> GetProductsSegment(ProductPagingParams pagingParams) { IQueryable <Product> products = uow.ProductRepository.GetAllItems(); products = SortProducts(products, pagingParams); IEnumerable <ProductDTO> productsDTO = mapper.Map <IEnumerable <ProductDTO> >(products.AsEnumerable()); return(pagingService.ToPagedList(productsDTO, pagingParams.PageNumber, pagingParams.PageSize)); }
//GET: api/Product public IActionResult GetProducts([FromQuery] ProductPagingParams pagingParams) { var products = productService.GetProductsSegment(pagingParams); var metadata = new { products.TotalCount, products.PageSize, products.PageNumber, products.TotalPages, products.HasNext, products.HasPrevious, pagingParams.SortOrder }; Response.Headers.Add("Pagination", JsonConvert.SerializeObject(metadata)); return(Ok(products)); }
public IQueryable <Product> SortProducts(IQueryable <Product> products, ProductPagingParams pagingParams) { switch (pagingParams.SortOrder) { case SortProductState.NameDesc: products = products.OrderByDescending(s => s.Name); break; case SortProductState.PriceAsc: products = products.OrderBy(s => s.Price); break; case SortProductState.PriceDesc: products = products.OrderByDescending(s => s.Price); break; default: products = products.OrderBy(s => s.Name); break; } return(products); }