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 bool Validate(IBanknote banknote, bool isPrint) { if (banknote.Value <= 0) { return(true); } if (banknote.Currency != Banknote.Currency) { return(NextHandlerValidate(banknote, isPrint)); } bool result; if (banknote.Value / Banknote.Value == 0) { result = NextHandlerValidate(banknote, isPrint); if (!result && isPrint) { Print(0); } return(result); } var updateBanknote = UpdateBanknote(banknote); if (isPrint) { Print(banknote.Value / Banknote.Value); } result = NextHandlerValidate(updateBanknote, isPrint); if (!result && isPrint) { Print(0); } return(result); }
private IBanknote UpdateBanknote(IBanknote banknote) { var amountBanknotes = banknote.Value / Banknote.Value; var costAmountBanknotes = amountBanknotes * Banknote.Value; var newValue = banknote.Value - costAmountBanknotes; return(new Banknote(banknote.Currency, newValue)); }
public virtual bool Validate(IBanknote banknote) { if (banknote.Currency == Currency && banknote.Value == Value) { return(true); } return(_nextHandler != null && _nextHandler.Validate(banknote)); }
public virtual List <string> GetCash(IBanknote banknote, List <string> alternatives) { if (_nextHandler == null) { return(alternatives); } return(_nextHandler.GetCash(banknote, alternatives)); }
public override List <string> GetCash(IBanknote banknote, List <string> alternatives) { int bValue; if (banknote.Currency == CurrencyType.Ruble && Int32.TryParse(banknote.Value, out bValue)) { var banknoteValues = new[] { 10, 50, 100, 500, 1000 }; var str = Changer.GetChange(banknoteValues, "$", bValue); alternatives.Add(str); } return(base.GetCash(banknote, alternatives)); }
protected void BanknoteController(Money money, IBanknote banknote) { if (money.Amount >= banknote.ValueOfBanknote) { banknote.Piece = (int)(money.Amount / banknote.ValueOfBanknote); money.Amount = money.Amount % banknote.ValueOfBanknote; money.ChangedList.Add(banknote); NextBanknote.Change(money); } else if (NextBanknote != null) { NextBanknote.Change(money); } }
public bool Validate(IBanknote banknote) { if (banknote.Value <= 0) { return(true); } if (banknote.Currency != Banknote.Currency) { return(NextHandlerValidate(banknote)); } if (banknote.Value / Banknote.Value == 0) { return(NextHandlerValidate(banknote)); } var updateBanknote = UpdateBanknote(banknote); return(NextHandlerValidate(updateBanknote)); }
public string Cash(IBanknote banknote) { return(handler.Cash(banknote)); }
public bool Validate(IBanknote banknote) { return(_handler.Validate(banknote)); }
public virtual bool NextHandlerValidate(IBanknote banknote) { return(_nextHandler != null && _nextHandler.Validate(banknote)); }
public override bool Validate(IBanknote banknote) { return(banknote.Value == Value && banknote.Currency == Currency || base.Validate(banknote)); }
public List <string> GetCash(IBanknote banknote, List <string> alternatives) { return(_handler.GetCash(banknote, alternatives)); }
public bool Validate(IBanknote banknote, bool isPrint) { return(_handler.Validate(banknote, isPrint)); }
public DefaultBanknoteHandler(BanknoteHandler nextHandler, IBanknote banknote) : base(nextHandler, banknote) { }
public string returnRightBanknotes(IBanknote banknote) { var bancomat = new Bancomat(); return(bancomat.Cash(banknote)); }
protected BanknoteHandler(BanknoteHandler nextHandler, IBanknote banknote) { this.nextHandler = nextHandler; Banknote = banknote; }
public bool Validate(IBanknote banknote) => _handler.Validate(banknote);