//Method that processes the request or passes it to the next handler public virtual bool DepositRequest(int amount, int denom, Account currAccount, ATM currATM, ref int sum_deposit) { if (amount + currATM.GetCurrNotesAmount() > currATM.GetMaxNotesAmount()) { return(false); } else if (denom == Denomination) { //то добавляем в ATM -> новое количество купюр addNewBills(amount); //добавляем к текущему количеству купюр currATM.SetCurrNotesAmount(amount); //это сумма денег, выполняем транзакцию int currTransactionSum = amount * denom; sum_deposit += currTransactionSum; return(true); } else { return(next.DepositRequest(amount, denom, currAccount, currATM, ref sum_deposit)); } }
public void doDeposit(int amount, int denomination, Account currAccount, ref int sum_deposit) { while (true) { //sender pass the request to first handler in the pipeline var isDeposible = bills50s.DepositRequest(amount, denomination, currAccount, this, ref sum_deposit); if (!isDeposible) { MessageBox.Show($"Failed to deposit ${amount}!"); //привышено количество максимальное купюр в банкомате } } }