Esempio n. 1
0
        public virtual IEnumerable <int> CashOut(Banknote banknote)
        {
            if (!IsAvailable(banknote))
            {
                foreach (var banknoteObject in _nextHandler.CashOut(banknote))
                {
                    yield return(banknoteObject);
                }
                yield break;
            }
            var nominal   = banknote.Nominal;
            var quotient  = nominal / Value;
            var remainder = nominal % Value;

            foreach (var banknoteObject in Enumerable.Repeat(Value, quotient))
            {
                yield return(banknoteObject);
            }
            if (remainder == 0)
            {
                yield break;
            }
            foreach (var banknoteObject in _nextHandler.CashOut(new Banknote
            {
                Currency = banknote.Currency,
                Nominal = remainder
            }))
            {
                yield return(banknoteObject);
            }
        }
Esempio n. 2
0
        private Banknote GetBanknote(string banknote)
        {
            var bankNote = new Banknote
            {
                Currency = ParseCurrency(banknote),
                Nominal  = ParseValue(banknote)
            };

            return(bankNote);
        }
Esempio n. 3
0
        public virtual bool Validate(Banknote banknote)
        {
            if (!IsAvailable(banknote))
            {
                return(_nextHandler != null && _nextHandler.Validate(banknote));
            }
            var remainder = banknote.Nominal % Value;

            if (remainder == 0)
            {
                return(true);
            }
            var transformed = new Banknote
            {
                Currency = banknote.Currency,
                Nominal  = remainder
            };

            return(_nextHandler != null && _nextHandler.Validate(transformed));
        }
Esempio n. 4
0
 protected bool IsAvailable(Banknote banknote)
 {
     return(AcceptableCurrencies.Contains(banknote.Currency));
 }