public decimal Calculate(Order order) { #region if (order == null) { throw new ArgumentNullException(nameof(order)); } if (order.Quantity <= 0) { throw new ArgumentOutOfRangeException(nameof(order.Quantity)); } #endregion if (discountValidatorStrategy.CanDiscount(order)) { return(order.Amount - discountCalculatorStrategy.CalculateDiscount(order)); } else { return(order.Amount); } }
public decimal CalculateDiscount(Order order) { if (Log != null) { Log($"Calculating... {order.OrderNumber}"); } if (discountValidatorStrategy.CanDiscount(order)) { if (Log != null) { Log("Calculated"); } return(discountCalculatorStrategy.Discount(order)); } else { return(0); } }