public void Apply(OrderLineItem lineItem, DateTime orderDate, Entity.IGroceryOrder groceryOrder) { if (IsApplicable(lineItem, orderDate, groceryOrder)) { ApplyImplementation(lineItem, orderDate, groceryOrder); } }
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); } }
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); }
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); } } }
protected abstract void ApplyImplementation(OrderLineItem lineItem, DateTime orderDate, Entity.IGroceryOrder groceryOrder);