public ActionResult Checkout(bool? noProducts = null)
 {
     SmartNerdDataContext _context = new SmartNerdDataContext();
     Models.CartViewModels.CheckoutPage c = new Models.CartViewModels.CheckoutPage {
         Products = (from op in Cart.Products
                     join p in _context.Products on op.ProductID equals p.ProductID
                     select new Models.Menu.Product {
                         ProductID = p.ProductID,
                         ProductName = p.Name,
                         Quantity = op.Quantity,
                         Description = p.Description,
                         Price = p.Price
                     }).ToList(),
         Total = Cart.Total
     };
     if(noProducts.HasValue) {
         ModelState.AddModelError("","You must have products in your cart to continue");
     }
     return View(c);
 }
        public ActionResult Checkout(Models.CartViewModels.CheckoutPage model)
        {
            SmartNerdDataContext _context = new SmartNerdDataContext();

            List <DataModels.Product> dataProducts = (from p in _context.Products
                                                      where Cart.Products.Select(pr => pr.ProductID).Contains(p.ProductID)
                                                      select p).ToList();

            foreach (var p in model.Products)
            {
                DataModels.Product dataProduct = dataProducts.First(pr => pr.ProductID == p.ProductID);
                Cart.Products.Where(prod => prod.ProductID == p.ProductID).ToList().ForEach(prod => prod.Quantity = p.Quantity);
                foreach (var pr in Cart.Products.Where(prod => prod.Quantity < 1))
                {
                    Cart.RemoveProduct(pr.ProductID);
                }

                if (dataProduct.Inventory - p.Quantity < 0)
                {
                    ModelState.AddModelError("", "There isn't sufficient inventory to place this order (" + dataProduct.Name + ": " + dataProduct.Inventory + ").");

                    Models.CartViewModels.CheckoutPage c = new Models.CartViewModels.CheckoutPage {
                        Products = (from op in Cart.Products
                                    join pro in _context.Products on op.ProductID equals pro.ProductID
                                    select new Models.Menu.Product {
                            ProductID = pro.ProductID,
                            ProductName = pro.Name,
                            Quantity = op.Quantity,
                            Description = pro.Description,
                            Price = pro.Price
                        }).ToList(),
                        Total = Cart.Total
                    };
                    return(View(c));
                }
            }
            Cart.Save();
            return(RedirectToAction("Address", "Cart"));
        }
        public ActionResult Checkout(bool?noProducts = null)
        {
            SmartNerdDataContext _context = new SmartNerdDataContext();

            Models.CartViewModels.CheckoutPage c = new Models.CartViewModels.CheckoutPage {
                Products = (from op in Cart.Products
                            join p in _context.Products on op.ProductID equals p.ProductID
                            select new Models.Menu.Product {
                    ProductID = p.ProductID,
                    ProductName = p.Name,
                    Quantity = op.Quantity,
                    Description = p.Description,
                    Price = p.Price
                }).ToList(),
                Total = Cart.Total
            };
            if (noProducts.HasValue)
            {
                ModelState.AddModelError("", "You must have products in your cart to continue");
            }
            return(View(c));
        }
        public ActionResult Checkout(Models.CartViewModels.CheckoutPage model)
        {
            SmartNerdDataContext _context = new SmartNerdDataContext();

            List<DataModels.Product> dataProducts = (from p in _context.Products
                                                     where Cart.Products.Select(pr => pr.ProductID).Contains(p.ProductID)
                                                     select p).ToList();
            foreach(var p in model.Products) {
                DataModels.Product dataProduct = dataProducts.First(pr => pr.ProductID == p.ProductID);
                Cart.Products.Where(prod => prod.ProductID == p.ProductID).ToList().ForEach(prod => prod.Quantity = p.Quantity);
                foreach(var pr in Cart.Products.Where(prod => prod.Quantity < 1)) {
                    Cart.RemoveProduct(pr.ProductID);
                }

                if(dataProduct.Inventory - p.Quantity < 0) {
                    ModelState.AddModelError("","There isn't sufficient inventory to place this order (" + dataProduct.Name + ": " + dataProduct.Inventory + ").");

                    Models.CartViewModels.CheckoutPage c = new Models.CartViewModels.CheckoutPage {
                        Products = (from op in Cart.Products
                                    join pro in _context.Products on op.ProductID equals pro.ProductID
                                    select new Models.Menu.Product {
                                        ProductID = pro.ProductID,
                                        ProductName = pro.Name,
                                        Quantity = op.Quantity,
                                        Description = pro.Description,
                                        Price = pro.Price
                                    }).ToList(),
                        Total = Cart.Total
                    };
                    return View(c);
                }
            }
            Cart.Save();
            return RedirectToAction("Address","Cart");
        }