示例#1
0
        private int GetCountOf(BoughtProducts boughtProducts, string productName)
        {
            var product = _repository.FindBy(productName);

            Guard.Operation(product != null, "Repository error: null reference received");
            return(boughtProducts.CountOf(product));
        }
示例#2
0
        public IReadOnlyList <AppliedDiscount> Calculate(BoughtProducts boughtProducts)
        {
            int firstProductCount  = GetCountOf(boughtProducts, FirstProductName);
            int secondProductCount = GetCountOf(boughtProducts, SecondProductName);
            int discountAmount     = Math.Min(firstProductCount, secondProductCount);
            var appliedDiscount    = new AppliedDiscount(DiscountName, -discountAmount * CombinedDiscount);

            return(new List <AppliedDiscount>()
            {
                appliedDiscount
            });
        }
示例#3
0
        public void BuyProduct(int index)
        {
            Product prod = AvailableProducts[index];

            if (prod.Price > Balance)
            {
                Console.Clear();
                Console.WriteLine("You need to insert more money");
                Console.ReadLine();
                InsertMoney();
            }
            else
            {
                Balance = Balance - prod.Price;
                BoughtProducts.Add(prod);
                ProdSum.Add(prod.Price);
            }
        }
        public IReadOnlyList <AppliedDiscount> Calculate(BoughtProducts boughtProducts)
        {
            var productGroups = boughtProducts.GroupedByProduct;

            return(productGroups.Where(g => g.Value >= VolumeThreshold).Select(CreateAppliedDiscount).ToList());
        }
 internal IReadOnlyList <AppliedDiscount> CalculateDiscounts(BoughtProducts boughtProducts) =>
 _discounts.SelectMany(d => d.Calculate(boughtProducts)).ToList();