コード例 #1
0
        /// <summary>
        /// Add product in cart
        /// </summary>
        /// <param name="product">Product to be added in cart</param>
        /// <returns>Total cost of the Product(s)</returns>
        public double Add(IProduct product)
        {
            var productCartItem = _cart.FirstOrDefault(x => x.Product.Id == product.Id);

            if (productCartItem == null)
            {
                var cartItem = new CartItem()
                {
                    Product = product
                };

                _cart.Add(cartItem);
                productCartItem = cartItem;
            }

            var discounts = _discountDb.GetProductDiscounts(productCartItem.Product);

            productCartItem.Count = productCartItem.Count + 1;
            var productTotalPrice = 0.0;

            if (discounts != null && discounts.Count > 0)
            {
                foreach (var discount in discounts)
                {
                    productTotalPrice = productTotalPrice + discount.Apply(_cart);
                }
            }
            else
            {
                productTotalPrice = productCartItem.TotalPrice + product.Price;
            }

            productCartItem.TotalPrice = productTotalPrice;

            return(productTotalPrice);
        }