Пример #1
0
        private bool CanApplyFactorAcrossSpecial(int factor, TrolleySpecial special)
        {
            foreach (var trolleyQuantity in Quantities)
            {
                var specialQuantity = special.Quantities.First(x => x.Name == trolleyQuantity.Name);

                if (specialQuantity.Quantity * factor > trolleyQuantity.Quantity)
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #2
0
        private int FindBestFactor(List <int> factors, TrolleySpecial special)
        {
            var bestFactor = 1;

            foreach (var factor in factors)
            {
                if (factor > bestFactor && CanApplyFactorAcrossSpecial(factor, special))
                {
                    bestFactor = factor;
                }
            }

            return(bestFactor);
        }
Пример #3
0
        private decimal CalculateTotalUsingSpecial(int factor, TrolleySpecial special)
        {
            var total = special.Total * factor;

            foreach (var trolleyQuantity in Quantities)
            {
                var specialQuantity   = special.Quantities.First(x => x.Name == trolleyQuantity.Name);
                var remainingQuantity = trolleyQuantity.Quantity - specialQuantity.Quantity * factor;

                if (remainingQuantity > 0)
                {
                    var price = Products.First(x => x.Name == trolleyQuantity.Name).Price;
                    total += price * remainingQuantity;
                }
            }

            return(total);
        }
Пример #4
0
        private int FindBestFactorForSpecial(TrolleySpecial special)
        {
            var factors = CalculateFactors(special);

            return(FindBestFactor(factors, special));
        }