Example #1
0
        /// <summary>
        /// Метод внесения средств в банкомат
        /// </summary>
        /// <param name="cashMachine">банкомат</param>
        /// <returns>признак успешной операции</returns>
        public bool DepositFundsToCashMachine(ICashMachine cashMachine)
        {
            // Временный список банкнот
            IList <Banknote> tempListOfBanknotes = CalculateBanknotes.DepositBanknotesByAmounOfCash(DepositAmount, cashMachine.BanknotesCountOfEachType);

            // Проверка: хватит ли места для банкнот в банкомате после внесения средств
            if (cashMachine.CurrentCountOfBanknotes + tempListOfBanknotes.Count < cashMachine.MaxCountOfBanknotes)
            {
                // Внесение средств
                foreach (var banknote in tempListOfBanknotes)
                {
                    cashMachine.AddBanknote(banknote);
                }

                return(true);
            }

            return(false);
        }
Example #2
0
        /// <summary>
        /// Выдача средств по умолчанию (без размена на выбранный номинал)
        /// </summary>
        /// <param name="cashMachine">банкомат</param>
        /// <returns>признак успешной операции</returns>
        public bool DefaultWithdraw(ICashMachine cashMachine)
        {
            IList <Banknote> tempBanknotes = CalculateBanknotes.WithdrawBanknotesByAmounOfCash(
                WithdrawAmount,
                cashMachine.BanknotesCountOfEachType,
                out int[] banknotesAmountClone);

            if (tempBanknotes != null)
            {
                // Выдача средств
                foreach (var banknote in tempBanknotes)
                {
                    cashMachine.RemoveBanknote(banknote);
                }

                // Замена массива с количеством банкнот каждого номинала на обработанный массив после операции выдачи
                Array.Copy(banknotesAmountClone, cashMachine.BanknotesCountOfEachType, BanknoteTypes.Length);

                return(true);
            }

            return(false);
        }