public ItemGeneral Purchase(string slotID) { if (!inventory.ContainsKey(slotID)) { throw new InvalidSlotSelectionException($"{slotID} does not exist."); } if (inventory[slotID].Count == 0) { throw new OutOfStockException($"There are no items left in {slotID}"); } if (this.currentBalance < inventory[slotID][0].Cost) { throw new InsufficientFundsException($"You are short by ${inventory[slotID][0].Cost - this.currentBalance}"); } this.currentBalance -= inventory[slotID][0].Cost; ItemGeneral itemToDispense = inventory[slotID][0]; inventory[slotID].Remove(inventory[slotID][0]); return(itemToDispense); //for (int i = 0; i < Slots.Length; i++) //{ // if (slotID == Slots[i]) // { // if (inventory[slotID].Count > 0) // { // if (this.currentBalance >= inventory[slotID][0].Cost) // { //this.currentBalance -= inventory[slotID][0].Cost; //ItemGeneral itemToDispense = inventory[slotID][0]; //inventory[slotID].Remove(inventory[slotID][0]); //return itemToDispense; // } // } // } //} //return null; }
public ItemGeneral Purchase(string slotID) { //try //{ for (int i = 0; i < Slots.Length; i++) { if (slotID == Slots[i]) { if (inventory[slotID].Count > 0) { if (this.currentBalance >= inventory[slotID][0].Cost) { this.currentBalance -= inventory[slotID][0].Cost; ItemGeneral im = inventory[slotID][0]; inventory[slotID].Remove(inventory[slotID][0]); return(im); } } } } return(null); }
private void DisplayPurchaseMenu() { while (true) { Console.WriteLine("Please Choose Below"); Console.WriteLine("1) Feed Money"); Console.WriteLine("2) Select Product"); Console.WriteLine("3) Finish Transaction"); string inputTwo = Console.ReadLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); if (inputTwo == "1") { Console.WriteLine("Please enter amount in 1's, 5's, 10's or 20's"); string money = Console.ReadLine(); decimal record = Convert.ToDecimal(money); vendomatic.FeedMoney(int.Parse(money)); Console.WriteLine("Current balance is $" + vendomatic.CurrentBalance); log.RecordDeposit(record, vendomatic.CurrentBalance); } else if (inputTwo == "2") { Console.WriteLine("Enter selected product code"); string userSelection = Console.ReadLine(); try { ItemGeneral purchasedItem = vendomatic.Purchase(userSelection); itemsBought.Add(purchasedItem); Console.WriteLine($"Here is your {purchasedItem.Name} and current balance is " + vendomatic.CurrentBalance); log.RecordPurchase(purchasedItem.Name, userSelection, vendomatic.CurrentBalance, vendomatic.CurrentBalance - purchasedItem.Cost); } catch (VendingMachineException ex) { Console.WriteLine(ex.Message); } } else if (inputTwo == "3") { Change coins = vendomatic.ReturnChange(); log.RecordFinalChange(vendomatic.CurrentBalance); for (int i = 0; i < itemsBought.Count; i++) { Console.WriteLine(itemsBought[i].Consume()); } Console.WriteLine("Your money back is:"); Console.WriteLine("In Quarters " + coins.Quarters); Console.WriteLine("In Dimes " + coins.Dimes); Console.WriteLine("In Nickles " + coins.Nickels); Console.WriteLine("Current Vendo Matic Balace is " + vendomatic.CurrentBalance); break; } } }