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);
        }
Ejemplo n.º 2
0
        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()}"));
        }