// Method Purchase Screen public void PurchaseSubmenu() { while (true) { Console.WriteLine($"Current Balance: {vendingMachine.Balance:C}"); Console.WriteLine(); Console.WriteLine("1. Feed Money"); Console.WriteLine("2. Select Product"); Console.WriteLine("3. Finish Transaction"); Console.Write("Please make a selection: "); string input = Console.ReadLine(); if (input == "1") { Console.WriteLine(); Console.Write("Enter dollar amount to feed into the vending machine: "); if (int.TryParse(Console.ReadLine(), out int dollarsEntered)) { // Accepted dollar bills if ((dollarsEntered == 1) || (dollarsEntered == 2) || (dollarsEntered == 5) || (dollarsEntered == 10)) { Console.WriteLine(); vendingMachine.FeedMoney(dollarsEntered); } // Not an accepted bill amount else { Console.WriteLine(); Console.WriteLine($"The dollar amount you have entered is not valid."); } } // User tried to enter something other than integer else { Console.WriteLine(); Console.WriteLine($"The dollar amount you have entered is not valid."); } } else if (input == "2") { Console.WriteLine(); DisplayInventory(); Console.Write("Enter the item position to purchase: "); string possiblePurchase = Console.ReadLine().ToUpper(); Console.WriteLine(); vendingMachine.DispenseItem(possiblePurchase); } else if (input == "3") { Console.WriteLine(); Console.Write("Here is your change: "); Change change = vendingMachine.GiveChange(); Console.WriteLine($"{change.NumberOfQuarters} quarters, {change.NumberOfDimes} dimes, {change.NumberOfNickels} nickles"); Console.WriteLine(); while (vendingMachine.PurchasedItems.Count != 0) { //Console.WriteLine($"{vendingMachine.PurchasedItems[0].MakeSound()}"); //vendingMachine.PurchasedItems.RemoveAt(0); Console.WriteLine($"{vendingMachine.ConsumeItems()}"); } Console.ReadLine(); break; } else { Console.WriteLine("Please enter a valid selection!"); } } }
public void Run(VendingMachine vendingMachine) { Console.Clear(); while (true) { vendingMachine.DisplayItems(); Console.WriteLine($"1. Add Funds Balance: ${vendingMachine.Balance}"); Console.WriteLine("2. Enter Product ID"); Console.WriteLine("3. Finish vending"); Console.WriteLine("Q Quit"); Console.Write("Choice: "); string choice = Console.ReadLine(); Console.WriteLine(); if (choice == "1") { List <int> nums = new List <int>() { 1, 2, 5, 10 }; int enteredBills = 0; while (true) { Console.Write("Please Enter Dollar Amount 1,2,5 or 10 $"); try { enteredBills = int.Parse(Console.ReadLine()); break; } catch (FormatException) { Console.WriteLine("Choice not valid, please try again"); } } if (nums.Contains(enteredBills)) { // both logs the activity to add funds and add funds to the balance this.CreateLog(vendingMachine.Balance, vendingMachine.AddFunds(enteredBills), "FEED MONEY"); Console.Clear(); } else { Console.WriteLine("Invalid dollar amount"); } } else if (choice == "2") { Console.Write("Please enter LetterNumber item slot to purchase from: "); string itemSlot = Console.ReadLine().ToUpper(); Console.WriteLine(); if (!vendingMachine.Stock.ContainsKey(itemSlot)) { Console.WriteLine("Selection not valid\n"); } else if (vendingMachine.Stock.ContainsKey(itemSlot) && vendingMachine.Stock[itemSlot].Price < vendingMachine.Balance && vendingMachine.Stock[itemSlot].Quantity > 0) { // calling select product will return the update balance to be logged, log transaction this.CreateLog(vendingMachine.Balance, vendingMachine.SelectProduct(itemSlot), vendingMachine.LoggingInfo); Console.WriteLine($"{vendingMachine.Stock[itemSlot].Name} purchased\n"); } else if (vendingMachine.Stock[itemSlot].Price > vendingMachine.Balance) { Console.WriteLine("PLEASE ADD MORE FUNDS!\n"); } else if (vendingMachine.Stock[itemSlot].Quantity == 0) { Console.WriteLine("ITEM SOLD OUT!\n"); } } else if (choice == "3") { decimal beginningBalance = vendingMachine.Balance; decimal endingBalance; // makes change on remaining balance Console.WriteLine($"Here is the remaining balance of ${vendingMachine.Balance}"); Console.WriteLine(vendingMachine.MakeChange()); endingBalance = vendingMachine.Balance; // create log with starting balance, final balance $0, and message this.CreateLog(beginningBalance, endingBalance, "GIVE CHANGE"); Console.WriteLine(); Console.WriteLine("Time to mange!"); Console.WriteLine(vendingMachine.ConsumeItems()); vendingMachine.Cart.Clear(); } else if (choice.ToLower() == "q") { break; } else { Console.WriteLine("Choice Not Valid"); Console.WriteLine("Please try again"); Console.WriteLine(); } } }