Esempio n. 1
0
        public OrderTest()
        {
            _bikes = LoadJsonFile <Dictionary <string, Bike> >("testBikes.json");

            var rules = LoadJsonFile <List <Discount <Line> > >("testRules.json");

            _discountRulesEngine = new DiscountRulesEngine <Line>(rules);
        }
Esempio n. 2
0
        public decimal CalculateDiscountPercentage(Customer customer)
        {
            // Use c# Reflection to create rule instances of the existing rules in this
            // assembley and return into a rules IEnumerable for processing
            // Nb - rules should be stateless
            var ruleType = typeof(IDiscountRule);
            IEnumerable <IDiscountRule> rules = this.GetType().Assembly.GetTypes()
                                                .Where(p => ruleType.IsAssignableFrom(p) && !p.IsInterface)
                                                .Select(r => Activator.CreateInstance(r) as IDiscountRule);

            var engine = new DiscountRulesEngine(rules);

            return(engine.CalculateDiscountPercentage(customer));
        }
Esempio n. 3
0
 public Order(string company, DiscountRulesEngine <Line> discountRulesEngine)
 {
     Company = company;
     _discountRulesEngine = discountRulesEngine;
 }