public float Parse(List <SKUItems> listSKU) { float totalCost = 0; SKUItems eligibleItems1 = listSKU.Where(t => t.sKU.GetType() == offerSKU1.GetType()).FirstOrDefault(); SKUItems eligibleItems2 = listSKU.Where(t => t.sKU.GetType() == offerSKU2.GetType()).FirstOrDefault(); int maxEqual = 0; if (eligibleItems1 != null && eligibleItems2 != null) { if (eligibleItems1.count < eligibleItems2.count) { maxEqual = eligibleItems1.count; listSKU.Remove(eligibleItems1); listSKU.Where(t => t == eligibleItems2).FirstOrDefault().count -= maxEqual; } else if (eligibleItems2.count < eligibleItems1.count) { maxEqual = eligibleItems2.count; listSKU.Remove(eligibleItems2); listSKU.Where(t => t == eligibleItems1).FirstOrDefault().count -= maxEqual; } else { maxEqual = eligibleItems2.count; listSKU.Remove(eligibleItems1); listSKU.Remove(eligibleItems2); } } totalCost = maxEqual * cost; return(totalCost); }
public void ShouldPassScenario3() { // ARRANGE var productA = new SKUItems { Price = 50m, SKUId = "A" }; var productB = new SKUItems { Price = 30m, SKUId = "B" }; var productC = new SKUItems { Price = 20m, SKUId = "C" }; var productD = new SKUItems { Price = 15m, SKUId = "D" }; using (StreamReader r = new StreamReader(@"Settings.json")) { string data = r.ReadToEnd(); promtionRules = JsonConvert.DeserializeObject <List <PromotionRules> >(data); } var cart = new PromotionCart { Products = new List <SKUItems> { productA, productA, productA, productB, productB, productB, productB, productB, productC, productD } }; var testObj = new PromotionEngineCalculator(cart, promtionRules); // ACT PromotionCart result = testObj.Run(); // ASSERT const decimal expectedTotal = 280m; result.TotalValue.Should().Be(expectedTotal); }
public void ShouldPassMultipleItemsofSameProductDiscApplied() { // ARRANGE var productA = new SKUItems { Price = 50m, SKUId = "A" }; var productB = new SKUItems { Price = 30m, SKUId = "B" }; var productC = new SKUItems { Price = 20m, SKUId = "C" }; var productD = new SKUItems { Price = 15m, SKUId = "D" }; using (StreamReader r = new StreamReader(@"Settings.json")) { string data = r.ReadToEnd(); promtionRules = JsonConvert.DeserializeObject <List <PromotionRules> >(data); } var cart = new PromotionCart { Products = new List <SKUItems> { productA, productA, productA, productA, productA, productA, productA, productA, productA, productA, productA, productB, productB, productB, productB, productB, productD } }; //11 ProductsA = 550 , 5 productB = 150 , 1 productD =15 // - 60 For 3 set Disc applied , 2 No Discount , -30 2 sets Disc applied var testObj = new PromotionEngineCalculator(cart, promtionRules); // ACT PromotionCart result = testObj.Run(); // ASSERT const decimal expectedTotal = 625M; result.TotalValue.Should().Be(expectedTotal); }
//Add or Update SKUItem public void AddOrUpdateSKUItem(SKUItem sKUItem) { if (SKUItems == null) { SKUItems = new List <SKUItem>(); } else if (SKUItems.Exists(obj => obj.SKUId == sKUItem.SKUId)) { SKUItems.ForEach(obj => { if (obj.SKUId == sKUItem.SKUId) { obj.UnitPrice = sKUItem.UnitPrice; } }); } else { SKUItems.Add(sKUItem); } }
public void ShouldAcceptDeafultValues() { // ARRANGE var productA = new SKUItems { Price = 0m, SKUId = "A" }; var productB = new SKUItems { Price = 0m, SKUId = "B" }; var productC = new SKUItems { Price = 0m, SKUId = "C" }; var productD = new SKUItems { Price = 0m, SKUId = "D" }; var cart = new PromotionCart { Products = new List <SKUItems> { productA, productA, productA, productB, productB, productB, productB, productB, productC, productD } }; var testObj = new PromotionEngineCalculator(cart, promtionRules); // ACT PromotionCart result = testObj.Run(); // ASSERT const decimal expectedTotal = 0M; result.TotalValue.Should().Be(expectedTotal); }
//Get a SKU by SKUId public SKUItem GetSKUItem(string SKUId) => SKUItems.FirstOrDefault(obj => obj.SKUId.ToLower() == SKUId.ToLower());
public OrderHelper(SKUItems skuItem, int quantity) { _skuItem = skuItem; _quantity = quantity; }