示例#1
0
        public string Cash(IBanknote banknote)
        {
            var value             = int.Parse(banknote.Value);
            var numberOfBanknotes = value / nominalValue;

            if (IsExisitsWholeRemainder(value, numberOfBanknotes))
            {
                var newBanknote = new Banknote(banknote.Currency, (value - nominalValue * numberOfBanknotes).ToString());
                return(nominalValue + "*" + numberOfBanknotes + " " + nextHandler.Cash(newBanknote));
            }
            if (numberOfBanknotes == 0)
            {
                if (nextHandler != null)
                {
                    var newBanknote = new Banknote(banknote.Currency, (value % nominalValue).ToString());
                    return(nextHandler.Cash(newBanknote));
                }
                return(banknote.Currency.ToString());
            }
            if (nextHandler != null)
            {
                var newBanknote = new Banknote(banknote.Currency,
                                               (int.Parse(banknote.Value) % nominalValue).ToString());
                return(nominalValue + "*" + numberOfBanknotes + " " + nextHandler.Cash(newBanknote));
            }
            if (nextHandler == null && value % nominalValue != 0)
            {
                return(numberOfBanknotes * 10 + value % nominalValue + " - не валидная сумма");
            }
            return(nominalValue + "*" + numberOfBanknotes + " " + banknote.Currency.ToString());
        }
示例#2
0
        public List <Tuple <IBanknote, int> > Cash(string banknote)
        {
            var banknotesCount = new List <Tuple <IBanknote, int> >();
            var inputValue     = ParseBanknote(banknote);

            return(_handler.Cash(banknotesCount, inputValue.Item1, inputValue.Item2));
        }
示例#3
0
        public List <Tuple <IBanknote, int> > Cash(
            List <Tuple <IBanknote, int> > banknotesCount,
            CurrencyType currency, int currentValue
            )
        {
            if (currency == Banknote.Currency)
            {
                var count = currentValue / Banknote.Value;
                currentValue -= count * Banknote.Value;
                if (count > 0)
                {
                    banknotesCount.Add(new Tuple <IBanknote, int>(Banknote, count));
                }
            }
            if (currentValue == 0)
            {
                return(banknotesCount);
            }

            if (_nextHandler == null)
            {
                Console.WriteLine("It is impossible to cash the transferred amount");
                return(new List <Tuple <IBanknote, int> >());
            }
            return(_nextHandler.Cash(banknotesCount, currency, currentValue));
        }
示例#4
0
 public string Cash(IBanknote banknote)
 {
     return(handler.Cash(banknote));
 }