예제 #1
0
        public ActionResult InactiveProducts(string sortOrder, string categoryFilter, string dietaryFilter, string nameFilter)
        {
            // here we do the same thing as in Index, but we pass the products that are inactive. We didn't do it in the same Action because it was already loaded with a lot of code!
            // maybe that shouldn't be an issue? It just felt cleaner to add another method which is more defined.
            var products         = _context.Products.Where(p => p.IsInactive == true).Include(p => p.Category).ToList();
            var dietaries        = _context.Dietaries.ToList();
            var categories       = _context.Categories.ToList();
            var productDietaries = _context.ProductDietaries.ToList();

            //viewbags for sorting
            ViewBag.NameSortParm  = String.IsNullOrEmpty(sortOrder) ? "ProductName" : "";
            ViewBag.PriceSortParm = String.IsNullOrEmpty(sortOrder) ? "Price" : "";

            var viewModel = new ProductsDetailsVM();

            //Sorting with actionlinks
            switch (sortOrder)
            {
            case "ProductName":
            {
                viewModel.Products         = products.OrderBy(p => p.ProductName);
                viewModel.Dietaries        = dietaries;
                viewModel.Categories       = categories;
                viewModel.ProductDietaries = productDietaries;
            }
            break;

            case "Price":
            {
                viewModel.Products         = products.OrderBy(p => p.PriceIncludingVAT);
                viewModel.Dietaries        = dietaries;
                viewModel.Categories       = categories;
                viewModel.ProductDietaries = productDietaries;
            }
            break;

            default:
            {
                viewModel.Products         = products.ToList();
                viewModel.Dietaries        = dietaries;
                viewModel.Categories       = categories;
                viewModel.ProductDietaries = productDietaries;
            }
            break;
            }

            //Filters
            ViewBag.CategoryFilter = categories.Select(x => x.CategoryName).Distinct().ToList();
            ViewBag.DietaryFilter  = dietaries.Select(x => x.DietaryName).Distinct().ToList();
            var filteredDietaries = productDietaries.Where(d => d.Dietary.DietaryName.Contains(dietaryFilter));
            var tempList          = new List <Product>();

            if (!String.IsNullOrEmpty(categoryFilter) && String.IsNullOrEmpty(dietaryFilter))
            {
                viewModel.Products = products.Where(p => p.Category.CategoryName.Contains(categoryFilter));
            }
            else if (String.IsNullOrEmpty(categoryFilter) && !String.IsNullOrEmpty(dietaryFilter))
            {
                foreach (var item in filteredDietaries)
                {
                    tempList.Add(products.SingleOrDefault(p => p.Id == item.ProductId));
                }

                viewModel.Products = tempList;
            }
            else if (!String.IsNullOrEmpty(categoryFilter) && !String.IsNullOrEmpty(dietaryFilter))
            {
                foreach (var item in filteredDietaries)
                {
                    tempList.Add(products.SingleOrDefault(p => p.Id == item.ProductId));
                }
                viewModel.Products = tempList.Where(p => p.Category.CategoryName.Contains(categoryFilter));
            }

            ViewBag.Name = "Deleted Products";

            return(View(viewModel));
        }
예제 #2
0
        public ActionResult Index(string sortOrder, string categoryFilter, string dietaryFilter, string nameFilter)
        {
            // check which works the way we want to : include IsInactive == false or where IsInactive == false
            //var products = _context.Products.Include(p => p.Category).Include(y=>y.IsInactive == false).ToList();
            var products         = _context.Products.Where(p => p.IsInactive == false).Include(p => p.Category).ToList();
            var dietaries        = _context.Dietaries.ToList();
            var categories       = _context.Categories.ToList();
            var productDietaries = _context.ProductDietaries.ToList();

            //viewbags for sorting
            ViewBag.NameSortParm  = String.IsNullOrEmpty(sortOrder) ? "ProductName" : "";
            ViewBag.PriceSortParm = String.IsNullOrEmpty(sortOrder) ? "Price" : "";

            var viewModel = new ProductsDetailsVM();

            //Sorting with actionlinks
            switch (sortOrder)
            {
            case "ProductName":
            {
                viewModel.Products         = products.OrderBy(p => p.ProductName);
                viewModel.Dietaries        = dietaries;
                viewModel.Categories       = categories;
                viewModel.ProductDietaries = productDietaries;
            }
            break;

            case "Price":
            {
                viewModel.Products         = products.OrderBy(p => p.PriceIncludingVAT);
                viewModel.Dietaries        = dietaries;
                viewModel.Categories       = categories;
                viewModel.ProductDietaries = productDietaries;
            }
            break;

            default:
            {
                viewModel.Products         = products.ToList();
                viewModel.Dietaries        = dietaries;
                viewModel.Categories       = categories;
                viewModel.ProductDietaries = productDietaries;
            }
            break;
            }

            //Filters
            ViewBag.CategoryFilter = categories.Select(x => x.CategoryName).Distinct().ToList();
            ViewBag.DietaryFilter  = dietaries.Select(x => x.DietaryName).Distinct().ToList();
            var filteredDietaries = productDietaries.Where(d => d.Dietary.DietaryName.Contains(dietaryFilter));
            var tempList          = new List <Product>();

            if (!String.IsNullOrEmpty(categoryFilter) && String.IsNullOrEmpty(dietaryFilter))
            {
                viewModel.Products = products.Where(p => p.Category.CategoryName.Contains(categoryFilter));
            }
            else if (String.IsNullOrEmpty(categoryFilter) && !String.IsNullOrEmpty(dietaryFilter))
            {
                foreach (var item in filteredDietaries)
                {
                    tempList.Add(products.SingleOrDefault(p => p.Id == item.ProductId));
                }

                viewModel.Products = tempList;
            }
            else if (!String.IsNullOrEmpty(categoryFilter) && !String.IsNullOrEmpty(dietaryFilter))
            {
                foreach (var item in filteredDietaries)
                {
                    tempList.Add(products.SingleOrDefault(p => p.Id == item.ProductId));
                }
                viewModel.Products = tempList.Where(p => p.Category.CategoryName.Contains(categoryFilter));
            }

            if (User.IsInRole(RoleModel.Manager) || User.IsInRole(RoleModel.Admin))
            {
                ViewBag.Name = "Manage Products";
                return(PartialView("_IndexManager", viewModel));
            }

            ViewBag.Name = "Products";
            return(PartialView("_IndexUser", viewModel));
        }