private void AddToVisitorCart(CartProduct input) { List<CartProduct> cartProducts = new List<CartProduct>(); var temp = (List<CartProduct>)Session["Cart"]; if (Session["Cart"] == null || temp.Count == 0) { cartProducts.Add(input); Session["Cart"] = cartProducts; } else { cartProducts.AddRange((List<CartProduct>)Session["Cart"]); if (!cartProducts.Where(c => c.ProductId == input.ProductId).Any()) { cartProducts.Add(input); } Session["Cart"] = cartProducts; } }
private void AddToUserCart(CartProduct input) { Cart cart = db.Carts.Where(c => c.UserId == user.Id && c.Status == StatusEnum.PENDING).FirstOrDefault(); // Check if the user already has a cart in db if (cart != null && cart.Status == StatusEnum.PENDING) { CartProduct cartProduct = new CartProduct() { CartId = cart.CartId, ProductId = input.ProductId, AmountOfProducts = input.AmountOfProducts }; // Check if the product already exists in the cart if (db.CartProducts.Where(c => c.ProductId == cartProduct.ProductId && c.CartId == cart.CartId).Any()) { db.Entry(cartProduct).State = EntityState.Modified; } else { db.CartProducts.Add(cartProduct); } } else { cart = new Cart() { CartId = db.Carts.Any() ? db.Carts.Max(c => c.CartId) + 1: 1, UserId = user.Id, Status = StatusEnum.PENDING }; CartProduct cartProduct = new CartProduct() { Cart = cart, CartId = cart.CartId, ProductId = input.ProductId, AmountOfProducts = input.AmountOfProducts }; db.Carts.Add(cart); db.CartProducts.Add(cartProduct); } db.SaveChanges(); }