public List <VendingMachineItem> ReadFile() { List <VendingMachineItem> stock = new List <VendingMachineItem>(); using (StreamReader sr = new StreamReader("vendingmachine.csv")) { while (!sr.EndOfStream) { string line = sr.ReadLine(); string [] parts = line.Split('|'); VendingMachineItem vmi = new VendingMachineItem(parts[3], parts[1], decimal.Parse(parts[2]), parts[0]); stock.Add(vmi); } } return(stock); }
public void AddItemToCart(VendingMachineItem item) { ShoppingCart.Add(item); }
public void ReturnToInventory(VendingMachineItem item) { Inventory[item.SlotID].Add(item); }
public void RemoveItemFromInventory(VendingMachineItem item) { Inventory[item.SlotID].Remove(item); }
public void PayForItem(VendingMachineItem item) { CurrentMoneyProvided -= item.PriceOfItem; }
/// <summary> /// Displays the purchase menu /// </summary> public void Display() { while (true) { Console.WriteLine(); Console.WriteLine("Make a delicious unhealthy purchase"); Console.WriteLine(); Console.WriteLine("___ 1 <<--->> Feed Me Money! ___"); Console.WriteLine(); Console.WriteLine("___ 2 <<--->> Select your junk food ___"); Console.WriteLine(); Console.WriteLine("___ 3 <<--->> Finish Transaction ___"); Console.WriteLine(); Console.WriteLine("___ Q <<--->> Return to Main Menu ___"); Console.WriteLine(); Console.WriteLine($" ***Your balance is ${vm.Balance} ***"); Console.WriteLine(); Console.Write("____What option do you want to select? ____ "); Console.WriteLine(); Console.WriteLine(); string input = Console.ReadLine().ToUpper(); Console.WriteLine(); if (input == "1") { Console.WriteLine("How much money do you want to waste on junk (in whole dollars)?"); Console.WriteLine(); string moneyGiven = Console.ReadLine(); Console.WriteLine(); try { decimal amount = decimal.Parse(moneyGiven); vm.FeedMoney(amount); Console.WriteLine($" ***Your balance is ${vm.Balance} ***"); Console.WriteLine(); Console.WriteLine("Hit Enter to go back to select your junk food."); Console.WriteLine(); } catch (FormatException ex) { Console.WriteLine("What in tarnation did you just do? Let's try again."); Console.WriteLine(); Console.WriteLine("Hit Enter to go back to select your junk food."); Console.WriteLine(); } } else if (input == "2") { Console.WriteLine(); Console.WriteLine($" ***Your balance is ${vm.Balance} ***"); Console.WriteLine(); Console.WriteLine("Displaying Vending Machine Items"); Console.WriteLine(); Console.WriteLine("**** Here are your wonderful snack options ****"); Console.WriteLine(); List <VendingMachineItem> stock = vm.Stock; foreach (VendingMachineItem item in stock) { Console.WriteLine($"{item.SlotIdentifier.PadLeft(10)} {item.Name.PadRight(20)} {item.Price}\t Qty. ({item.Quantity}) "); } Console.WriteLine(); Console.WriteLine("Which junk food would you like to put in your pie hole?"); Console.WriteLine(); string selection = Console.ReadLine().ToUpper(); Console.WriteLine(); try { VendingMachineItem vmi = vm.SelectProduct(selection); string noises = vmi.GetsConsumed(vmi.Type); Console.WriteLine(); Console.WriteLine($"Here is your junk food ... {vmi.Name}, {noises}."); Console.WriteLine(); Console.WriteLine($" ***Your balance is ${vm.Balance} ***"); Console.WriteLine(); Console.WriteLine("Hit ENTER to make another unhealthy eating decision or finish your transaction."); Console.WriteLine(); } catch (VendingMachineException ex) { Console.WriteLine(ex.Message); Console.WriteLine(); Console.WriteLine("Hit Enter to go back to select your junk food."); } } else if (input == "3") { Change change = new Change(); string customerChange = change.CalculatedChange(vm.Balance); Console.WriteLine(customerChange); vm.ClearBalance(); Console.WriteLine(); Console.WriteLine($"__* The Last Resort Vending Machine's balance is ${vm.Balance} *__"); Console.WriteLine(); Console.WriteLine("****Keep the change, ya filthy animal!****"); Console.WriteLine(); break; } else if (input == "Q") { Console.WriteLine("Hit ENTER to return to main menu."); break; } else { Console.WriteLine("HAHAHA What was that? Hit ENTER and try that again!"); } Console.ReadLine(); } }
public void Display() { while (true) { Console.WriteLine(); Console.WriteLine("Purchase Menu"); Console.WriteLine("1] >> Feed Money "); Console.WriteLine("2] >> Select Product"); Console.WriteLine("3] >> Finish Transaction"); Console.WriteLine("Q] >> Return to Main Menu"); Console.Write("Please make a selection: "); string input = Console.ReadLine(); if (input == "1") { Console.WriteLine(""); // Feeding Money vm.FeedMoney(vm); Console.Clear(); } else if (input == "2") { Console.WriteLine(""); // Selecting Product (string slotID, bool enoughMoney, bool notSoldOut) = vm.SelectProduct(); if (enoughMoney && slotID != "Q" && notSoldOut) { itemToConsume = vm.CurrentStock[slotID].SlotItem; vm.Dispense(vm, slotID); Console.WriteLine($"{vm.CurrentStock[slotID].SlotItem.ProductName} dispensing now . . ."); System.Threading.Thread.Sleep(3000); } if (!notSoldOut) { Console.WriteLine(); Console.WriteLine("Item is sold out!"); System.Threading.Thread.Sleep(2000); } Console.Clear(); } else if (input == "3") { if (vm.Balance == 0) { Console.WriteLine(); Console.WriteLine("Transaction Cancelled"); Console.WriteLine(); System.Threading.Thread.Sleep(1000); Console.WriteLine($"Returning to main menu now . . ."); System.Threading.Thread.Sleep(2000); Console.Clear(); } else { Console.WriteLine(""); // Finishing Transaction vm.GiveChange(vm); Console.WriteLine(); System.Threading.Thread.Sleep(1500); Customer customer = new Customer(); if (itemToConsume != null) { string result = customer.Consume(itemToConsume.Type); Console.WriteLine(result); Console.WriteLine(); } System.Threading.Thread.Sleep(2000); Console.WriteLine($"Returning to main menu now . . ."); System.Threading.Thread.Sleep(3500); Console.Clear(); } } else if (input.ToUpper() == "Q") { Console.WriteLine("Returning to main menu"); break; } else { Console.WriteLine("Please try again"); } } }
public double SelectProduct(double customerBalance) { Console.Clear(); //if customers balance is 0 and tries to select product if (customerBalance <= 0.0) { Console.WriteLine("You must deposit money before making a selection!"); Console.ReadLine(); return(customerBalance); } //message: must deposit money first //return to purchase menu Console.WriteLine($"Your balance is: {customerBalance:C}"); if (customerBalance > 0.75) { DisplayItemList(); } bool isIncorrect = true; string customerInput = ""; while (isIncorrect) { Console.WriteLine("Enter the slot number to purchase: "); customerInput = Console.ReadLine().ToUpper(); if (!itemInventory.ContainsKey(customerInput)) { Console.WriteLine("That is an incorrect slot number"); isIncorrect = true; } else { isIncorrect = false; } } foreach (KeyValuePair <string, VendingMachineItem> item in itemInventory) { string slot = item.Key; VendingMachineItem vendItem = item.Value; if (customerInput == slot) { if (customerBalance >= vendItem.Price && vendItem.Count > 0) { //customer balance is updated customerBalance -= vendItem.Price; //inventory is updated vendItem.Count--; vendItem.Sales++; //balance of vending machine is updated this.SalesTotal += vendItem.Price; //item is dispensed Console.WriteLine($"Here is your {vendItem.Name}"); //user receives a message vendItem.MakeSound(vendItem.Type); audit.AddToTheFile(vendItem.Name, slot, vendItem.Price, customerBalance); } else if (customerBalance < vendItem.Price) { Console.WriteLine("You don't have enough money for that item."); Console.WriteLine("Press (esc) to leave and get more money or (Enter) to buy something else"); ConsoleKey keyInput = Console.ReadKey().Key; if (keyInput == ConsoleKey.Escape) { break; } else if (keyInput == ConsoleKey.Enter) { continue; } } else if (vendItem.Count == 0) { Console.WriteLine($"SOLD OUT"); } } } //customer returns to purchase menu return(customerBalance); }
public void VendingMachine() { string itemName = ""; decimal price = 0m; string type = ""; int quantity = 0; string slot = ""; decimal grossSales = 0m; VendingMachineItem vendingMachineItem = new VendingMachineItem(itemName, price, type, quantity, slot); List <VendingMachineItem> vendingMachineStockList = vendingMachineItem.GetVendingMachineItems(); Reports reports = new Reports(); List <string> recordActivityList = new List <string>(); //Makes sure the program loops bool stillOpen = true; while (stillOpen) { string secondSelection = ""; decimal moneyEntered = 0m; decimal balance = 0m; MoneyTransactions moneyTransactions = new MoneyTransactions(moneyEntered, balance, price); string purchaseItemName = ""; Purchase_Order purchaseOrder = new Purchase_Order(purchaseItemName); decimal balanceRemaining = 0m; ExceptionChecks exceptionChecks = new ExceptionChecks(); decimal moneyInMachine = 0m; //main menu Console.WriteLine("(1) Display Vending Machine Items"); Console.WriteLine("(2) Purchase"); Console.WriteLine("(3) Exit"); string firstSelection = Console.ReadLine(); if (firstSelection == "1") { for (int i = 0; i < vendingMachineStockList.Count; i++) { Console.Write($"Slot: {vendingMachineStockList[i].Slot} "); Console.Write($"Price: {vendingMachineStockList[i].Price} "); Console.Write($"Item: {vendingMachineStockList[i].ItemName} "); //check quantity if (vendingMachineStockList[i].Quantity == 0) { Console.Write("SOLD OUT"); } Console.WriteLine(); } } else if (firstSelection == "2") { while (secondSelection != "3") { Console.WriteLine("(1) Feed Money"); Console.WriteLine("(2) Select Product"); Console.WriteLine("(3) Finish Transaction"); secondSelection = Console.ReadLine(); if (secondSelection == "1") { string activity = "Feed Money"; Console.WriteLine("Please feed money in whole dollar amounts ex: (1, 2, 5, 10)"); string dollarAmountFed = Console.ReadLine(); if (dollarAmountFed == "1" || dollarAmountFed == "2" || dollarAmountFed == "5" || dollarAmountFed == "10") { //handles all cases where user input is invalid moneyInMachine = moneyTransactions.CountEnteredMoney(dollarAmountFed); Console.WriteLine($"Balance: ${moneyInMachine}"); decimal amountFed = decimal.Parse(dollarAmountFed); recordActivityList = reports.RecordActivity(activity, amountFed, moneyInMachine); reports.AuditLine(recordActivityList); } else { Console.WriteLine("Error: Please feed money in whole dollar amounts ex: (1, 2, 5, 10)"); } } else if (secondSelection == "2") { Console.WriteLine("Please select Item slot you wish to Purchase"); for (int i = 0; i < vendingMachineStockList.Count; i++) { Console.Write($"Slot: {vendingMachineStockList[i].Slot} "); Console.Write($"Price: {vendingMachineStockList[i].Price} "); Console.Write($"Item: {vendingMachineStockList[i].ItemName} "); if (vendingMachineStockList[i].Quantity == 0) { Console.Write("SOLD OUT"); } Console.WriteLine(); } string customerSelection = Console.ReadLine(); bool isSlotValid = exceptionChecks.CheckIfSlotIsValid(customerSelection, vendingMachineStockList); if (!isSlotValid) { Console.WriteLine("Error: Invalid Selection"); } else { string itemPurchased = purchaseOrder.GetItemPurchaseName(customerSelection, vendingMachineStockList); decimal itemPrice = moneyTransactions.GetItemPrice(customerSelection, vendingMachineStockList); bool isItemInStock = exceptionChecks.CheckIfItemInStock(customerSelection, vendingMachineStockList); decimal currentBalance = moneyTransactions.GetCurrentBalance(); bool canBalanceCoverPrice = exceptionChecks.CheckIfBalanceCanCoverPrice(itemPrice, currentBalance); if (!canBalanceCoverPrice) { Console.WriteLine("Error: Not Enough Money"); } else if (!isItemInStock) { Console.WriteLine("Error: Item Is Sold Out"); } else { //handles updating balanceRemaining, getting item price, getting item putchased balanceRemaining = moneyTransactions.GetBalanceAfterPurchase(customerSelection, vendingMachineStockList); //adds to Reports for grossSales grossSales = moneyTransactions.GrossSales(customerSelection, vendingMachineStockList); //updates the user Console.WriteLine($"Item: {itemPurchased} Cost: {itemPrice} Balance Remaining: {balanceRemaining}"); //prints special type message vendingMachineItem.CheckTypePrintMessage(customerSelection, vendingMachineStockList); //updates stock vendingMachineStockList = purchaseOrder.UpdateVendingMachineStock(customerSelection, vendingMachineStockList); string itemNameSlot = $"{itemPurchased} {customerSelection}"; recordActivityList = reports.RecordActivity(itemNameSlot, itemPrice, balanceRemaining); reports.AuditLine(recordActivityList); } } } else if (secondSelection == "3") { string activity = "Give Change"; List <int> change = moneyTransactions.Change(); decimal endingBalance = change[3]; Console.WriteLine($"quarters: {change[0]} dimes: {change[1]} nickels: {change[2]}"); recordActivityList = reports.RecordActivity(activity, balanceRemaining, endingBalance); reports.AuditLine(recordActivityList); } else { //handles 2nd menu selections Console.WriteLine("Error: Must enter a valid selcetion"); } } } else if (firstSelection == "3") { //closes program stillOpen = false; } else if (firstSelection == "4") { //hidden main menu option reports.SalesReport(grossSales, vendingMachineStockList); } else { //handles main menu selections Console.WriteLine("Error: Must enter a valid selcetion"); } } }