public void ScenarioC() { BusniessLogic busniessLogic = new BusniessLogic(); CheckoutQuantities checkoutQuantities = new CheckoutQuantities { QuantitySkuA = 3, QuantitySkuB = 5, QuantitySkuC = 1, QuantitySkuD = 1 }; double testResult = busniessLogic.CalculateTotal(checkoutQuantities); Assert.AreEqual(280, testResult); }
private double CalculatePromotionType2(string sku, CheckoutQuantities cartQuantity) { try { double price = 0; int promotionQuantity = 0; DataAccessLayer dataAccessLayer = new DataAccessLayer(); var pricing = dataAccessLayer.GetPricing(); var promotionType2 = dataAccessLayer.GetPromotionType2(); var promotion = promotionType2.Where(x => x.SkuName == sku).FirstOrDefault(); var actualPricing = pricing.Where(x => x.SkuName == sku).FirstOrDefault(); if (sku == "C") { if (cartQuantity.QuantitySkuD <= cartQuantity.QuantitySkuC) { promotionQuantity = cartQuantity.QuantitySkuC - (cartQuantity.QuantitySkuC - cartQuantity.QuantitySkuD); cartQuantity.QuantitySkuC = cartQuantity.QuantitySkuC - promotionQuantity; cartQuantity.QuantitySkuD = cartQuantity.QuantitySkuD - promotionQuantity; } else { promotionQuantity = cartQuantity.QuantitySkuD - (cartQuantity.QuantitySkuD - cartQuantity.QuantitySkuC); cartQuantity.QuantitySkuD = cartQuantity.QuantitySkuD - promotionQuantity; cartQuantity.QuantitySkuC = 0; } price = promotionQuantity * promotion.PromotionPricing + cartQuantity.QuantitySkuC * actualPricing.Price; } else if (sku == "D") { price = cartQuantity.QuantitySkuD * actualPricing.Price; } return(price); } catch (Exception ex) { _logger.LogError("Error Occured in CaluculatePromotionType2", ex); throw ex; } }
static void Main(string[] args) { CheckoutQuantities quantities = new CheckoutQuantities(); Console.WriteLine("Please enter you quantity for the below SKU's"); Console.WriteLine("Enter quantity for SKU A"); quantities.QuantitySkuA = int.Parse(Console.ReadLine()); Console.WriteLine("Enter quantity for SKU B"); quantities.QuantitySkuB = int.Parse(Console.ReadLine()); Console.WriteLine("Enter quantity for SKU C"); quantities.QuantitySkuC = int.Parse(Console.ReadLine()); Console.WriteLine("Enter quantity for SKU D"); quantities.QuantitySkuD = int.Parse(Console.ReadLine()); BusniessLogic busniessLogic = new BusniessLogic(); double total = busniessLogic.CalculateTotal(quantities); Console.WriteLine("The total amount is " + total); }
public double CalculateTotal(CheckoutQuantities checkoutQuantities) { try { if (checkoutQuantities != null) { var priceSkuA = CalculateSkuAPrice(checkoutQuantities); var priceSkuB = CalculateSkuBPrice(checkoutQuantities); var priceSkuC = CalculateSkuCPrice(checkoutQuantities); var priceSkuD = CalculateSkuDPrice(checkoutQuantities); return(priceSkuA + priceSkuB + priceSkuC + priceSkuD); } else { return(0); } } catch (Exception ex) { _logger.LogError("Error occured in CalculateTotal", ex); throw ex; } }
private double CalculateSkuCPrice(CheckoutQuantities cartQuantity) { try { double priceOfC = 0; DataAccessLayer dataAccessLayer = new DataAccessLayer(); var applicablePromotionIds = dataAccessLayer.GetPromotionId("C"); foreach (var item in applicablePromotionIds) { switch (item.PromotionTypeName) { case "PromotionType2": priceOfC = CalculatePromotionType2("C", cartQuantity); break; } } return(priceOfC); } catch (Exception ex) { _logger.LogError("Error occured in CalculateSkuCPrice", ex); throw ex; } }