public ActionResult ViewAllProducts(string sort)
        {
            var model = new ViewModels.ProductFromCategoryViewModel();

            using (var db = new Models.ModelDB())
            {
                model.ProductList.AddRange(db.Products.Select(x => new ViewModels.ProductFromCategoryViewModel.ProductListViewModel
                {
                    Id          = x.Id,
                    Name        = x.Name,
                    Price       = x.Price,
                    Description = x.Description,
                    Category_Id = x.Category_id
                }));
            }
            SortProducts(sort, model);
            return(View(model));
        }
        // GET: Product
        public ActionResult Index(int id)
        {
            var model = new ViewModels.ProductFromCategoryViewModel();

            using (var db = new Models.ModelDB())
            {
                model.CategoryId = id;
                model.ProductList.AddRange(db.Products.Select(x => new ViewModels.ProductFromCategoryViewModel.ProductListViewModel
                {
                    Id          = x.Id,
                    Name        = x.Name,
                    Price       = x.Price,
                    Description = x.Description,
                    Category_Id = x.Category_id
                }).Where(x => x.Category_Id == id));


                return(View(model));
            }
        }
 public ActionResult Search(string search, string sort)
 {
     using (var db = new Models.ModelDB())
     {
         var model = new ViewModels.ProductFromCategoryViewModel
         {
             Search = search
         };
         model.ProductList.AddRange(db.Products.ToList().Select(r => new ViewModels.ProductFromCategoryViewModel.ProductListViewModel
         {
             Id          = r.Id,
             Name        = r.Name,
             Price       = r.Price,
             Description = r.Description,
             Category_Id = r.Category_id
         }).Where(c => c.Name.ToLower().Contains(model.Search.ToLower()) || c.Description.ToLower().Contains(model.Search.ToLower()))
                                    );
         SortProducts(sort, model);
         return(View(model));
     }
 }
        public void SortProducts(string sort, ViewModels.ProductFromCategoryViewModel model)
        {
            model.SortName  = String.IsNullOrEmpty(sort) ? "namedes" : "";
            model.SortPrice = sort == "price" ? "pricedes" : "price";
            switch (sort)
            {
            case "namedes":
                model.ProductList = model.ProductList.OrderByDescending(s => s.Name).ToList();
                break;

            case "price":
                model.ProductList = model.ProductList.OrderBy(s => s.Price).ToList();
                break;

            case "pricedes":
                model.ProductList = model.ProductList.OrderByDescending(s => s.Price).ToList();
                break;

            default:
                model.ProductList = model.ProductList.OrderBy(s => s.Name).ToList();
                break;
            }
        }