コード例 #1
0
        public static List <IPricingRule> GetPricingRulesGivenInTheChallenge()
        {
            var items = GetItemsGivenInTheChallenge();

            var ruleB = new NItemsForXPricingRule(items[1], 2, 20);
            var ruleC = new NItemsForXPricingRule(items[2], 3, 10);
            var ruleD = new Buy1Get1FreePricingRule(items[3]);
            var ruleE = new NItemsForThePriceOfXItemsPricingRule(items[4], 3, 2);

            return(new List <IPricingRule> {
                ruleB, ruleC, ruleD, ruleE
            });
        }
コード例 #2
0
        // This simple console app is an example of how the interface may be used
        static void Main(string[] args)
        {
            // Create the items that were given in the challenge
            var itemA = new Item {
                Id = 'A', Price = 8
            };
            var itemB = new Item {
                Id = 'B', Price = 12
            };
            var itemC = new Item {
                Id = 'C', Price = 4
            };
            var itemD = new Item {
                Id = 'D', Price = 7
            };
            var itemE = new Item {
                Id = 'E', Price = 5
            };

            // Create the rules for the items that were given in the challenge
            // A doesn't have a pricing rule that would apply a discount so we skip it
            var ruleB = new NItemsForXPricingRule(itemB, 2, 20);
            var ruleC = new NItemsForXPricingRule(itemC, 3, 10);
            var ruleD = new Buy1Get1FreePricingRule(itemD);
            var ruleE = new NItemsForThePriceOfXItemsPricingRule(itemE, 3, 2);

            var pricingRules = new List <IPricingRule> {
                ruleB, ruleC, ruleD, ruleE
            };

            // Initialize our UnidaysDiscountChallenge with the set of pricing rules
            var example = new UnidaysDiscountChallenge(pricingRules);

            // Add some items to the basket
            example.AddToBasket(itemD);
            example.AddToBasket(itemD);

            // Get amount to pay
            var result = example.CalculateTotalPrice();

            var totalPrice     = result.Total;
            var deliveryCharge = result.DeliveryCharge;
            var overallTotal   = totalPrice + deliveryCharge;

            Console.WriteLine("Items in the basket: DD");
            Console.WriteLine($"\nPrice after discounts: £{totalPrice:0.00}");
            Console.WriteLine($"Delivery charge: £{deliveryCharge:0.00}");
            Console.WriteLine($"Overall total: £{overallTotal:0.00}");
        }