Example #1
0
        public IActionResult Index(string category, ProductSortingOption sortingOption, int pageNumber = 1, int itemsPerPage = 4)
        {
            ProductsViewModel productsViewModel = new ProductsViewModel()
            {
                Products = productRepository.Products
                           .Where(p => p.Category.Name == category || category == null)
                           .SortBy(sortingOption)
                           .Skip((pageNumber - 1) * itemsPerPage)
                           .Take(itemsPerPage),

                PaginateData = GetPaginateData(category, pageNumber, itemsPerPage)
            };

            return(View(productsViewModel));
        }
        public static IOrderedEnumerable <Product> SortBy(this IEnumerable <Product> products, ProductSortingOption productSortingOption)
        {
            switch (productSortingOption)
            {
            default:
            case ProductSortingOption.AZ:
                return(products.OrderBy(p => p.Name));

            case ProductSortingOption.ZA:
                return(products.OrderByDescending(p => p.Name));

            case ProductSortingOption.PriceAscending:
                return(products.OrderBy(p => p.Price));

            case ProductSortingOption.PriceDescending:
                return(products.OrderByDescending(p => p.Price));
            }
        }