예제 #1
0
        public decimal GetSum(IDiscountProduct discount, List <IProduct> products)
        {
            var             allowProductTypes = discount.GetAllowProductTypes();
            var             denyProductTypes  = discount.GetDenyProductTypes();
            List <IProduct> discountProducts  = new List <IProduct>();

            _allowProductTypes = new List <ProductType>(allowProductTypes);
            decimal sum = 0;

            foreach (var product in products)
            {
                if (_allowProductTypes.Contains(product.Type) && !denyProductTypes.Contains(product.Type) && !product.IsCalculate)
                {
                    _allowProductTypes.Remove(product.Type);
                    sum += product.Price;
                    discountProducts.Add(product);
                    if (_allowProductTypes.Count == 0)
                    {
                        break;
                    }
                }
            }
            if (_allowProductTypes.Count == 0)
            {
                foreach (var product in discountProducts)
                {
                    product.IsCalculate = true;
                }

                return(sum * (1 - discount.GetDiscount() / 100));
            }
            return(0);
        }
예제 #2
0
        public decimal GetSum(IDiscountProduct discount, List <IProduct> products)
        {
            var             denyProductTypes = discount.GetDenyProductTypes();
            decimal         sum = 0;
            List <IProduct> discountProducts = new List <IProduct>();

            foreach (var product in products)
            {
                if (!denyProductTypes.Contains(product.Type) && !product.IsCalculate)
                {
                    sum += product.Price;
                    discountProducts.Add(product);
                }
            }
            if (discountProducts.Count == COUNT)
            {
                foreach (var product in discountProducts)
                {
                    product.IsCalculate = true;
                }

                return(sum * (1 - discount.GetDiscount() / 100));
            }
            return(0);
        }
        public decimal GetSum(IDiscountProduct discount, List <IProduct> products)
        {
            var             denyProductTypes = discount.GetDenyProductTypes();
            List <IProduct> discountProducts = new List <IProduct>();
            decimal         sum     = 0;
            var             thisDay = DateTime.Today;

            foreach (var product in products)
            {
                if (discount.GetBirthdayOfBuyer() == thisDay && (!denyProductTypes.Contains(product.Type) && !product.IsCalculate))
                {
                    sum += product.Price;
                    discountProducts.Add(product);
                }
            }

            foreach (var product in discountProducts)
            {
                product.IsCalculate = true;
            }

            return(sum * (1 - discount.GetDiscount() / 100));
        }
예제 #4
0
 public CuponsUnitOfWork(IDbContext context, IDiscountProduct makeDiscount)
 {
     _context      = context;
     _makeDiscount = makeDiscount;
 }
예제 #5
0
 public CuponsController(IDbContext context, IDiscountProduct makeDiscount)
 {
     _unitOfWork = new CuponsUnitOfWork(context, makeDiscount);
 }
예제 #6
0
 public void Add(IDiscountProduct discount)
 {
     _discounts.Add(discount);
 }
 public decimal GetSum(IDiscountProduct discount, List <IProduct> products)
 {
     return(_strategy.GetSum(discount, products));
 }