/// <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); }
/// <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); }