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);
            }
        }
Пример #2
0
        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);
            }
        }