예제 #1
0
 public decimal CalculateDiscount(Order order)
 {
     //1.Predykat
     if (canDiscountStrategy.CanDiscount(order))
     {
         // 2. Wartosc rabatu
         return(calculateDiscountStrategy.CalculateDiscount(order));
     }
     else
     {
         return(noDiscount);
     }
 }
        /// <summary>
        /// oblicza rabat dla danej strategii
        /// </summary>
        /// <param name="order"></param>
        /// <returns></returns>
        public decimal CalculateDiscount(Order order)
        {
            if (order == null)
            {
                throw new ArgumentNullException(nameof(order));
            }

            if (order.Total <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(order.Total));
            }

            if (canDiscountStrategy.CanDiscount(order))
            {
                Thread.Sleep(TimeSpan.FromMilliseconds(100));

                return(calculateDiscountStrategy.CalculateDiscount(order));
            }
            else
            {
                return(0m);
            }
        }