Esempio n. 1
0
        /// <summary>
        /// Пробуем внести указанное кол-во указанных купюр
        /// </summary>
        /// <returns>Удобочитаемый статус запрошенной операции</returns>
        string InputTransaction()
        {
            string result = "";

            // Проверяем - Можно ли принять все купюры полностью
            //
            int quantity = requestedAmount;

            int amount       = 0;
            int amountInATM  = 0;
            int maxAmountATM = 0;

            foreach (Banknote b in listATM)
            {
                int nominal = 0;
                if (int.TryParse(b.Title, out nominal))
                {
                    if (nominal == requestedBanknote)
                    {
                        amountInATM  = b.CurAmount;
                        maxAmountATM = b.MaxAmount;

                        amount = maxAmountATM - amountInATM;
                        break;
                    }
                }
            }
            if (amount < quantity)
            {
                // Если банкомат почти заполнен - то вносим разницу до заполнения купюрами этого типа
                //
                quantity = amount;
            }

            // Устанавливаем ту сумму, которую пользователь может реально внести в банкомат
            //
            outputAmount = requestedBanknote * quantity;

            // Списываем эту сумму со счета держателя карты
            //
            CurrentCardholder.Balans += outputAmount;

            // Удаляем выданные купюры из банкомата
            //
            foreach (Banknote b in listATM)
            {
                int nominal = 0;
                if (int.TryParse(b.Title, out nominal))
                {
                    if (nominal == requestedBanknote)
                    {
                        b.CurAmount += quantity;

                        // Запоминаем  для целей вывода информации о проведенной транзакции
                        amount = b.CurAmount;
                        break;
                    }
                }
            }
            result = $"Внесено: {quantity} купюр(-а) по {requestedBanknote} руб.";


            // Выводим информацию о 3-х последних успешных транзакциях в соответствующий список
            //

            // listLastTransInfo.Clear();
            if (listLastTransInfo.Count > 2)
            {
                listLastTransInfo.RemoveAt(0);
            }

            LastTransInfo li = new LastTransInfo {
                Title = requestedBanknote, BeforeAmount = amountInATM, Amount = quantity, AfterAmount = amount
            };

            listLastTransInfo.Add(li);

            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// Пробуем выдать запрошенную сумму запрошенными купюрами
        /// </summary>
        /// <returns>Удобочитаемый статус запрошенной операции</returns>
        string OutputTransaction()
        {
            string result = "";

            // Проверяем - Можно ли выдать сумму полностью указанными купюрами
            //
            int quantity = requestedAmount / requestedBanknote;

            int amount      = 0;
            int amountInATM = 0;

            foreach (Banknote b in listATM)
            {
                int nominal = 0;
                if (int.TryParse(b.Title, out nominal))
                {
                    if (nominal == requestedBanknote)
                    {
                        amountInATM = b.CurAmount;
                        amount      = amountInATM - quantity;
                        break;
                    }
                }
            }
            if (amount <= 0)
            {
                // Если необходимых купюр недостаточно - то выдаем все купюры этого типа
                //
                quantity = amountInATM;
            }

            // Устанавливаем ту сумму, которую можем реально выдать держателю карты
            //
            outputAmount = requestedBanknote * quantity;

            // Списываем эту сумму со счета держателя карты
            //
            CurrentCardholder.Balans -= outputAmount;

            // Удаляем выданные купюры из банкомата
            //
            foreach (Banknote b in listATM)
            {
                int nominal = 0;
                if (int.TryParse(b.Title, out nominal))
                {
                    if (nominal == requestedBanknote)
                    {
                        b.CurAmount -= quantity;

                        // Запоминаем  для целей вывода информации о проведенной транзакции
                        amount = b.CurAmount;
                        break;
                    }
                }
            }
            result = $"Выдано: {quantity} купюр(-а) по {requestedBanknote} руб.";

            // Выводим информацию о 3-х последних успешных транзакциях в соответствующий список
            //

            // listLastTransInfo.Clear();
            if (listLastTransInfo.Count > 2)
            {
                listLastTransInfo.RemoveAt(0);
            }

            LastTransInfo li = new LastTransInfo {
                Title = requestedBanknote, BeforeAmount = amountInATM, Amount = -quantity, AfterAmount = amount
            };

            listLastTransInfo.Add(li);

            return(result);
        }