public void TransactionMenu() { TransactionSession session = new TransactionSession(); bool validTransInput = false; while (!validTransInput) { Console.WriteLine("(1) Feed Money"); Console.WriteLine("(2) Select Product"); Console.WriteLine("(3) Finish Transaction"); Console.WriteLine($"Current Money Provided: ${session.Balance}"); Console.WriteLine(); Console.Write("Selection: "); string transInput = Console.ReadLine(); switch (transInput) { case "1": // Feed Money Console.Clear(); Console.Write("Please enter an accepted dollar amount (1, 2, 5, 10): "); decimal billValue = 0.0M; string inputFeed = Console.ReadLine(); while (!decimal.TryParse(inputFeed, out billValue)) { Console.Clear(); Console.WriteLine($"\'{inputFeed}\' is not an accepted dollar amount! Try again!"); Console.Write("Please enter an accepted dollar amount (1, 2, 5, 10): "); inputFeed = Console.ReadLine(); } while (!session.Deposit(billValue)) { Console.Clear(); Console.WriteLine($"\'{billValue}\' is not an accepted dollar amount! Try again!"); Console.Write("Please enter an accepted dollar amount (1, 2, 5, 10): "); billValue = decimal.Parse(Console.ReadLine()); } Console.Clear(); vendingMachine.WriteLineToLog("FEED MONEY:", billValue, session.Balance); // 10/01/2018 12:00:00 PM FEED MONEY: $5.00 $5.00 // Date Time "FEED MONEY:" amount_added balance break; case "2": // Select Product Console.Clear(); Display(); Console.Write("Select an item code: "); string input = Console.ReadLine(); string inputCode = input.ToUpper(); if (!vendingMachine.IsValidCode(inputCode)) { Console.Clear(); Console.WriteLine($"\'{input}\' is not a valid item code"); Console.WriteLine(); } else { if (!vendingMachine.IsInStock(inputCode)) { Console.Clear(); Console.WriteLine($"\'{inputCode}\' is out of stock"); Console.WriteLine(); } else { // buy the item if (vendingMachine.HaveEnoughToBuy(inputCode, session)) { decimal startingBalance = session.Balance; VendingMachineItem theItem = vendingMachine.BuyItem(inputCode, session); Console.Clear(); Console.WriteLine($"User obtained one (1) {theItem.Name}"); Console.WriteLine(); Console.WriteLine(theItem.Text); Console.WriteLine(); vendingMachine.WriteLineToLog($"{theItem.Name} {theItem.ItemCode}", startingBalance, session.Balance); } else { Console.Clear(); Console.WriteLine("Funds not sufficient ;("); Console.WriteLine(); } } } // 10/01/2018 12:00:20 PM Crunchie B4 $10.00 $8.50 // Date Time itemName itemCode balanceBefore balanceAfter break; case "3": // Finish Transaction Console.Clear(); if (session.Balance > 0) { decimal changeBack = session.Balance; string change = session.FinishTransaction(); Console.WriteLine("Change returned:"); Console.WriteLine(); Console.WriteLine(change); Console.WriteLine(); vendingMachine.WriteLineToLog("GIVE CHANGE:", changeBack, session.Balance); } validTransInput = true; // 10/01/2018 12:01:35 PM GIVE CHANGE: $7.50 $0.00 // Date Time "GIVE CHANGE:" balanceBefore balanceAfter break; default: // If input is not 1, 2, or 3 Console.Clear(); Console.WriteLine($"\'{transInput}\' is not a valid selection dammit! Try again!"); Console.WriteLine(); Console.WriteLine("(1) Feed Money"); Console.WriteLine("(2) Select Product"); Console.WriteLine("(3) Finish Transaction"); Console.WriteLine($"Current Money Provided: ${session.Balance}"); transInput = Console.ReadLine(); break; } } }
public void Display() { while (true) { Console.WriteLine(); Console.WriteLine("(1) Feed Money"); Console.WriteLine("(2) Select Product"); Console.WriteLine("(3) Finish Transaction"); Console.WriteLine("Current Money Provided: $" + vm.Balance); string userInput = Console.ReadLine(); if (userInput == "1") { Console.WriteLine("Please enter $1, $2, $5, or $10: "); //How to handle if entered with $? Decimal.TryParse(Console.ReadLine(), out decimal cash); if (cash == 1.00M || cash == 2.00M || cash == 5.00M || cash == 10.00M) { Console.WriteLine("Money Provided: $" + cash); vm.AddMoney(cash); Console.WriteLine("Your new balance is: $" + vm.Balance); } else { Console.WriteLine("Sorry, that's an invalid amount."); } } else if (userInput == "2") { Console.WriteLine("Please enter your selection: "); string input = (Console.ReadLine()).ToUpper(); if (!vm.IsValidSlot(input)) { Console.WriteLine("Invalid product code. Please try again."); } else if (!vm.IsInStock(input)) { Console.WriteLine("Sorry, item is sold out"); } else { VendingItem userDesiredProduct = vm.GetItemAtSlot(input); decimal cost = userDesiredProduct.Cost; if (vm.Balance < cost) { Console.WriteLine("Please provide more cash"); } else { boughtItems.Add(vm.BuyItem(input)); Console.WriteLine("Dispensing..."); Console.WriteLine("Current Balance: $" + vm.Balance); } } } else if (userInput == "3") { Console.WriteLine("Current Balance: $" + vm.Balance); Console.WriteLine("Your change is " + vm.ReturnChange()); foreach (VendingItem item in boughtItems) { Console.WriteLine("Consuming item(s): " + item.MakeEatNoise()); } boughtItems.Clear(); } else { Console.WriteLine("Please try again."); } } }
public void RunInterface() { bool done = false; while (!done) { // display main menu options Console.WriteLine("(1) Display Vending Machine Items"); Console.WriteLine("(2) Purchase"); Console.WriteLine("(3) End"); string mainMenuOption = Console.ReadLine(); string purchaseMenuOption = ""; // Main menu cases switch (mainMenuOption) { case "1": // display ItemName Price Quantity foreach (VendingMachineItem item in vendingMachine.items) { Console.WriteLine($"{item.Slot} {item.ProductName} ${item.Price} {item.Quantity}"); } break; case "2": bool purchaseDone = false; while (!purchaseDone) { // display purchase menu options Console.WriteLine("(1) Feed Money"); Console.WriteLine("(2) Select Product"); Console.WriteLine("(3) Finish Transaction"); Console.WriteLine($"Current Money Provided: {vendingMachine.CurrentMoney}"); purchaseMenuOption = Console.ReadLine(); // Purchase menu cases switch (purchaseMenuOption) { case "1": // feed money Console.Write("Enter dollar amount to insert: "); int feeding = int.Parse(Console.ReadLine()); vendingMachine.FeedMoney(feeding); break; case "2": // select product foreach (VendingMachineItem item in vendingMachine.items) { Console.WriteLine($"{item.Slot} {item.ProductName} ${item.Price} {item.Quantity}"); } Console.Write("Enter an item slot code: "); string desiredSlot = Console.ReadLine(); Console.Write(vendingMachine.BuyItem(desiredSlot)); Console.ReadLine(); break; case "3": // finish transaction //vendingMachine.CoinOut(); Console.Write("Please take your change."); Console.ReadLine(); purchaseDone = true; break; default: break; } Console.Clear(); } break; case "3": // end done = true; break; default: break; } Console.ReadLine(); } }