예제 #1
0
 public ProductsSortViewModel(ProductsSortState sortOrder)
 {
     IdSort       = sortOrder == ProductsSortState.IdAsc ? ProductsSortState.IdDesc : ProductsSortState.IdAsc;
     NameSort     = sortOrder == ProductsSortState.NameAsc ? ProductsSortState.NameDesc : ProductsSortState.NameAsc;
     ProducerSort = sortOrder == ProductsSortState.ProducerAsc ? ProductsSortState.ProducerDesc : ProductsSortState.ProducerAsc;
     PriceSort    = sortOrder == ProductsSortState.PriceAsc ? ProductsSortState.PriceDesc : ProductsSortState.PriceAsc;
     Current      = sortOrder;
 }
예제 #2
0
        public IActionResult Index(string searchString, string category = "All", int page = 1, ProductsSortState sortOrder = ProductsSortState.IdAsc)
        {
            if (!User.IsInRole("Administrator"))
            {
                ViewData["SortOrders"] = Enum.GetValues(typeof(ProductsSortState)).Cast <ProductsSortState>().Select(v => new SelectListItem
                {
                    Text  = v.ToString(),
                    Value = v.ToString()
                }).ToList();
            }
            var products   = _productRepository.GetAll();
            var categories = _categoryRepository.GetAll();
            List <SelectListItem> selectListCategories = new List <SelectListItem>(
                categories.Select(n => new SelectListItem
            {
                Value = n.Name,
                Text  = n.Name
            }));

            selectListCategories.Insert(0, new SelectListItem("All", "All"));

            if (!string.IsNullOrEmpty(category) && category != "All")
            {
                var categoryFilter = categories.FirstOrDefault(n => n.Name == category);
                products = products.Where(n => n.CategoryId == categoryFilter.Id).ToList();
                selectListCategories.FirstOrDefault(n => n.Text == category).Selected = true;
            }

            if (!string.IsNullOrEmpty(searchString))
            {
                products = products.Where(n => n.Name.ToLower().Contains(searchString.ToLower())).ToList();
            }

            List <Product> sortProducts = (sortOrder switch
            {
                ProductsSortState.IdDesc => products.OrderByDescending(n => n.Id),
                ProductsSortState.NameAsc => products.OrderBy(n => n.Name),
                ProductsSortState.NameDesc => products.OrderByDescending(n => n.Name),
                ProductsSortState.ProducerAsc => products.OrderBy(n => n.Producer),
                ProductsSortState.ProducerDesc => products.OrderByDescending(n => n.Producer),
                ProductsSortState.PriceAsc => products.OrderBy(n => n.Price),
                ProductsSortState.PriceDesc => products.OrderByDescending(n => n.Price),
                _ => products.OrderBy(n => n.Id),
            }).ToList();