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));
        }
Exemple #2
0
        //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);
        }