/// <summary> /// Increments the quantity of a product in the shopping cart /// </summary> /// <param name="product">The Product whose quantity to increment</param> public OrderDetail IncrementProduct(ProductBase product) { OrderDetail orderDetail = Order.OrderDetails.Find(p => p.Product.Id == product.Id); if (orderDetail == null) { throw new Exception("Product is not in shopping cart!"); } orderDetail.Quantity++; UpdateShippingCharges(); return(orderDetail); }
/// <summary> /// Removes all quantities of a product in the shopping cart, clears all promocodes if no items remain /// </summary> /// <param name="product">The Product to remove</param> public void RemoveProduct(ProductBase product) { OrderDetail orderDetail = Order.OrderDetails.Find(p => p.Product.Id == product.Id); if (!(orderDetail == null)) { Order.OrderDetails.Remove(orderDetail); } if (Order.OrderDetails.Count == 0) { PromoCodes.Clear(); } }
/// <summary> /// Decrements the quantity of a product in the shopping cart, removes if none remaining after decrement /// </summary> /// <param name="product">The Product whose quantity to decrement</param> public OrderDetail DecrementProduct(ProductBase product) { OrderDetail orderDetail = Order.OrderDetails.Find(p => p.Product.Id == product.Id); if (!(orderDetail == null) && orderDetail.Quantity > 0) { orderDetail.Quantity--; } if (orderDetail.Quantity == 0) { RemoveProduct(product); } UpdateShippingCharges(); return(orderDetail); }
/// <summary> /// Adds a product to the shopping cart /// </summary> /// <param name="product">The Product to add</param> public void AddProduct(ProductBase product) { if (Order.OrderDetails.Exists(p => p.Product.Id == product.Id)) { throw new Exception("Product is already in shopping cart!"); } var orderDetail = new OrderDetail() { Product = product, PlacedInCart = DateTime.Now, Quantity = 1, UnitPrice = product.Price, Shipping = product.Shipping }; Order.OrderDetails.Add(orderDetail); UpdateShippingCharges(); }