Esempio n. 1
0
 public void Apply(OrderLineItem lineItem, DateTime orderDate, Entity.IGroceryOrder groceryOrder)
 {
     if (IsApplicable(lineItem, orderDate, groceryOrder))
     {
         ApplyImplementation(lineItem, orderDate, groceryOrder);
     }
 }
Esempio n. 2
0
 public void Apply(Entity.IGroceryOrder groceryOrder)
 {
     //foreach (OrderLineItem lineItem in groceryOrder.LineItems)
     for (int idx = 0; idx < groceryOrder.LineItems.Count; idx++)
     {
         OrderLineItem lineItem = groceryOrder.LineItems[idx] as OrderLineItem;
         Apply(lineItem, groceryOrder.OrderDate, groceryOrder);
     }
 }
Esempio n. 3
0
        protected bool IsApplicable(OrderLineItem lineItem, DateTime orderDate, Entity.IGroceryOrder groceryOrder)
        {
            bool result = false;

            result = (Product == lineItem.Product &&
                      orderDate >= Period.From &&
                      (Period.To == null || orderDate <= Period.To));

            return(result);
        }
Esempio n. 4
0
        private void Apply(OrderLineItem lineItem, DateTime orderDate, Entity.IGroceryOrder groceryOrder)
        {
            //foreach(Promotion promotion in this)
            for (int idx = 0; idx < this.Count; idx++)
            {
                Promotion promotion = this[idx];

                if (promotion.Product == lineItem.Product &&
                    orderDate >= promotion.Period.From &&
                    (promotion.Period.To == null || orderDate <= promotion.Period.To))
                {
                    promotion.Apply(lineItem, orderDate, groceryOrder);
                }
            }
        }
Esempio n. 5
0
 protected abstract void ApplyImplementation(OrderLineItem lineItem, DateTime orderDate, Entity.IGroceryOrder groceryOrder);