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()); }
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)); }
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)); }
public string Cash(IBanknote banknote) { return(handler.Cash(banknote)); }