private bool addToCart() { List <Product_Cart> myCart = new List <Product_Cart>(); if (Session["CART"] != null) { myCart = (List <Product_Cart>)Session["CART"]; } if (Session["USER"] != null) { User_Account userAccount = (User_Account)Session["USER"]; ICollection <Product_Cart> productCarts = userAccount.Product_Cart; Product_CartDAL productCartDal = new Product_CartDAL(); foreach (var myProduct in myCart) { int productId = myProduct.Product_ID; int quantity = (int)myProduct.Quantity; ProductDAL productDal = new ProductDAL(); Product product = productDal.getProductById(productId); bool isContain = false; foreach (var item in productCarts) { if (item.Product_ID == productId) { isContain = true; if (item.Quantity + quantity <= product.Products_Available) { item.Quantity += quantity; productCartDal.updateQuantity(item); } else { item.Quantity = product.Products_Available; productCartDal.updateQuantity(item); } break; } } if (!isContain) { Product_Cart productCart = new Product_Cart() { Email = userAccount.Email, Quantity = quantity, Product_ID = productId, Product = product, }; productCarts.Add(productCart); productCartDal.addProductCart(productCart); } } } else { return(false); } return(true); }
public ActionResult Add(FormCollection f) { string quantityStr = f["myNumber"]; Int32 quantity = Convert.ToInt32(quantityStr); string productIdStr = f["productId"]; int productId = int.Parse(productIdStr); ProductDAL productDal = new ProductDAL(); Product product = productDal.getProductById(productId); if (quantity > product.Products_Available) { Session["ADD_ERROR"] = "This product has only " + product.Products_Available + " items"; return(RedirectToAction("ProductDetails", "Product", new { productIDStr = @product.Product_ID + "" })); } if (Session["USER"] != null) { User_Account userAccount = (User_Account)Session["USER"]; ICollection <Product_Cart> productCarts = userAccount.Product_Cart; Product_CartDAL productCartDal = new Product_CartDAL(); bool isContain = false; foreach (var item in productCarts) { if (item.Product_ID == productId) { isContain = true; if (item.Quantity + quantity > product.Products_Available) { Session["ADD_ERROR"] = "This product has only " + (product.Products_Available - item.Quantity) + " items"; return(RedirectToAction("ProductDetails", "Product", new { productIDStr = @product.Product_ID + "" })); } item.Quantity += quantity; productCartDal.updateQuantity(item); break; } } if (!isContain) { Product_Cart productCart = new Product_Cart() { Email = userAccount.Email, Quantity = quantity, Product_ID = productId, Product = product, }; productCarts.Add(productCart); productCartDal.addProductCart(productCart); } } else { List <Product_Cart> myCart = new List <Product_Cart>(); if (Session["CART"] != null) { myCart = (List <Product_Cart>)Session["CART"]; } Product_Cart productCart = null; foreach (var item in myCart) { if (productIdStr.Equals(item.Product_ID + "")) { productCart = item; break; } } if (productCart != null) { if (productCart.Quantity + quantity > product.Products_Available) { Session["ADD_ERROR"] = "This product has only " + (product.Products_Available - productCart.Quantity) + " items"; return(RedirectToAction("ProductDetails", "Product", new { productIDStr = @product.Product_ID + "" })); } productCart.Quantity += quantity; } else { productCart = new Product_Cart() { Quantity = quantity, Product_ID = productId, Product = product, }; myCart.Add(productCart); } Session["CART"] = myCart; } return(RedirectToAction("ViewCart", "Cart")); }