public CartViewModel AddToCart(CartViewModel cartModel, AddToCartViewModel addToCartModel) { var cartProduct = cartModel.Products.SingleOrDefault(p => p.ProductId == addToCartModel.ProductId); var product = _productWebService.GetProductById(addToCartModel.ProductId); bool productQuantityUpdated = false; if (!_productWebService.ProductQuantityIsOk(addToCartModel.ProductId, addToCartModel.SizeId)) { return(null); } else { productQuantityUpdated = _productWebService.ReduceProductQuantity(addToCartModel.ProductId, addToCartModel.SizeId, 1); } if (!productQuantityUpdated) { return(null); } if (cartProduct == null) { //product not found in cart, add new cartModel.Products.Add(new ProductItemViewModel() { ProductId = addToCartModel.ProductId, Brand = product.Brand.BrandName, Quantity = 1, Size = product.Sizes.SingleOrDefault(p => p.Id == addToCartModel.SizeId).Size, Price = product.Price }); } else { var size = product.Sizes.SingleOrDefault(p => p.Id == addToCartModel.SizeId); if (size == null) { //product found but size not found, add new cartModel.Products.Add(new ProductItemViewModel() { ProductId = addToCartModel.ProductId, Brand = product.Brand.BrandName, Quantity = 1, Size = product.Sizes.SingleOrDefault(p => p.Id == addToCartModel.SizeId).Size, Price = product.Price }); } else if (addToCartModel.SizeId == size.Id) { cartProduct.Quantity++; } } return(cartModel); }
public IActionResult AddToCart(ProductViewModel model) { UpdateCart( _cartWebService.AddToCart( GetCart(), model.AddToCart)); string productName = ProductHelper.BuildProductUrl( _productWebService.GetProductById(model.AddToCart.ProductId).ProductName); TempData["AddedToCart"] = true; return(Redirect($"https://{HttpContext.Request.Host}{HttpContext.Request.Path}/{productName.ToLower()}")); }