Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 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;
     }
 }
Exemplo n.º 5
0
 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;
     }
 }