public void AddLine(Product product, int quantity) { if (CartLines.Where(cl => cl.Product == product).Count() != 0) { CartLine cl = CartLines.Where(x => x.Product.Equals(product)).FirstOrDefault(); cl.Quantity += quantity; } else { _lines.Add(new CartLine() { Product = product, Quantity = quantity }); } }
/// <summary> /// Ürünün kategorileri ve üst kategorileri , kampanyanın kategorisne eşitse ve toplam adet kampanya kurallarını sağlıyosa indirim yapılabilir. /// </summary> /// <param name="campaigns"></param> public void ApplyDiscounts(params ICampaign[] campaigns) { double totalCampaignDiscount = 0; foreach (var campaign in campaigns) { if (CartLines.FindAll(x => x.Product.Category.GetParentCategories().Exists(a => a == campaign.Category)).Sum(y => y.Quantity) >= campaign.ProductQuantity) { double discount = calculateDiscount(TotalPrice, campaign.Rate, campaign.DiscountType); TotalPrice -= discount; totalCampaignDiscount += discount; } } CampaignDiscount = totalCampaignDiscount; }
/// <summary> /// Sepete ürün ve adet bilgisini ekleme /// </summary> /// <param name="product"></param> /// <param name="quantity"></param> public void AddItem(IProduct product, int quantity) { var cardLines = CartLines.Where(x => x.Product == product).ToList(); if (cardLines != null && cardLines.Count() > 0) { cardLines.First().Quantity += quantity; } else { CartLines.Add(new CartLine() { Product = product, Quantity = quantity }); } this.TotalPrice = this.OriginalCartPrice; }
public virtual void Clear() { CartLines.Clear(); }