Exemplo n.º 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());
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
 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));
        }
Exemplo n.º 7
0
 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);
     }
 }
Exemplo n.º 8
0
        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));
        }
Exemplo n.º 9
0
 public string Cash(IBanknote banknote)
 {
     return(handler.Cash(banknote));
 }
Exemplo n.º 10
0
 public bool Validate(IBanknote banknote)
 {
     return(_handler.Validate(banknote));
 }
Exemplo n.º 11
0
 public virtual bool NextHandlerValidate(IBanknote banknote)
 {
     return(_nextHandler != null && _nextHandler.Validate(banknote));
 }
Exemplo n.º 12
0
 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));
 }
Exemplo n.º 14
0
 public bool Validate(IBanknote banknote, bool isPrint)
 {
     return(_handler.Validate(banknote, isPrint));
 }
Exemplo n.º 15
0
 public DefaultBanknoteHandler(BanknoteHandler nextHandler, IBanknote banknote)
     : base(nextHandler, banknote)
 {
 }
Exemplo n.º 16
0
        public string returnRightBanknotes(IBanknote banknote)
        {
            var bancomat = new Bancomat();

            return(bancomat.Cash(banknote));
        }
Exemplo n.º 17
0
 protected BanknoteHandler(BanknoteHandler nextHandler, IBanknote banknote)
 {
     this.nextHandler = nextHandler;
     Banknote         = banknote;
 }
Exemplo n.º 18
0
 public bool Validate(IBanknote banknote) => _handler.Validate(banknote);