Ejemplo n.º 1
0
        private bool GetIsValidPromotion(ComboPromotion promotion)
        {
            var result = comboPromotions
                         .FirstOrDefault(i => new ComboComparer().Compare(i, promotion) == 0);

            return(result == null);
        }
        public double CalculateTotalOrderAmount(List <Cart> cartItems)
        {
            double result = 0;

            var cartWithPromotion = AllocatePromotions(cartItems);

            // quantity promotion
            IPromotionStrategy qunatityPromotion = new QuantityPromotion(_query);

            result += qunatityPromotion.ApplyPromotion(cartWithPromotion);

            // quantity promotion
            IPromotionStrategy comboPromotion = new ComboPromotion(_query);

            result += comboPromotion.ApplyPromotion(cartWithPromotion);

            return(result);
        }
Ejemplo n.º 3
0
        public void Setup()
        {
            CartScenario1 = new Cart();
            CartScenario2 = new Cart();
            CartScenario3 = new Cart();

            var a = new Item("A", 50);
            var b = new Item("B", 30);
            var c = new Item("C", 20);
            var d = new Item("D", 15);

            var promotion1 = new PriceForQuantityPromotion(a, 3, 130);
            var promotion2 = new PriceForQuantityPromotion(b, 2, 45);
            var promotion3 = new ComboPromotion(new List <Tuple <Item, int> > {
                Tuple.Create(c, 1), Tuple.Create(d, 1)
            }, 30);

            var promotions = new List <Promotion>()
            {
                promotion1, promotion2, promotion3
            };

            CartScenario1.AddPromotions(promotions);
            CartScenario2.AddPromotions(promotions);
            CartScenario3.AddPromotions(promotions);

            CartScenario1.AddItem(new CartItem(a, 1));
            CartScenario1.AddItem(new CartItem(b, 1));
            CartScenario1.AddItem(new CartItem(c, 1));

            CartScenario2.AddItem(new CartItem(a, 5));
            CartScenario2.AddItem(new CartItem(b, 5));
            CartScenario2.AddItem(new CartItem(c, 1));

            CartScenario3.AddItem(new CartItem(a, 3));
            CartScenario3.AddItem(new CartItem(b, 5));
            CartScenario3.AddItem(new CartItem(c, 1));
            CartScenario3.AddItem(new CartItem(d, 1));
        }
 public ComboPromotionService(ComboPromotion promotion)
 {
     Promotion = promotion;
 }