internal IPromotion GetManager(string sku)
        {
            IPromotion promotion = null;

            switch (sku.ToUpper())
            {
            case "A":
                promotion = new PromotionA(new A());
                break;

            case "B":
                promotion = new PromotionB(new B());
                break;

            case "C":
                promotion = new PromotionC(new C());
                break;

            case "D":
                promotion = new PromotionD(new D());
                break;

            default:
                break;
            }
            return(promotion);
        }
Ejemplo n.º 2
0
        public override int ApplyPromotionAndCalculateTotal(List <Order> skuOrders)
        {
            int  finalPrice           = 0;
            bool ispromotionCDApplied = false;

            foreach (var item in skuOrders)
            {
                if (item.skuItem == SKUItems.A)
                {
                    var promotionA = new PromotionAorB();
                    finalPrice += promotionA.applyPromotionAorB(item.quantity, (int)PromotionQuantity.A, (int)PromotionValue.A,
                                                                (int)SKUItems.A);
                }
                else if (item.skuItem == SKUItems.B)
                {
                    var promotionB = new PromotionAorB();
                    finalPrice += promotionB.applyPromotionAorB(item.quantity, (int)PromotionQuantity.B, (int)PromotionValue.B,
                                                                (int)SKUItems.B);
                }
                else if (item.skuItem == SKUItems.C)
                {
                    if (!ispromotionCDApplied)
                    {
                        var promotionC = new PromotionC();
                        finalPrice          += promotionC.applyPromotionC(skuOrders, item.quantity);
                        ispromotionCDApplied = true;
                    }
                }

                else if (item.skuItem == SKUItems.D)
                {
                    if (!ispromotionCDApplied)
                    {
                        var promotionD = new PromotionD();
                        finalPrice          += promotionD.applyPromotionD(skuOrders, item.quantity);
                        ispromotionCDApplied = true;
                    }
                }
            }
            return(finalPrice);
        }