private static void BuyItemByIndex(IVendingMachine machine, int index) { int numberOfItemsThatCanBePurchased = machine.HowManyItemsCanBeBought(index); string nameOfItem = machine.GetCurrentCatalogue()[index].GetItemType().Name; if (numberOfItemsThatCanBePurchased == 0) { Console.WriteLine($"You don't have balance to purchase any {nameOfItem}! Please top up balance from Main Menu"); GoBackToMainMenu(machine); } else { Console.WriteLine($"You can at most buy {numberOfItemsThatCanBePurchased} with your balance of ${machine.GetWalletBalance()}."); Console.WriteLine("How many do you want to buy?"); string input = Console.ReadLine(); if (IsResponseInteger(input)) { int responseInt = GetResponseInteger(input); if (responseInt > 0 && responseInt <= numberOfItemsThatCanBePurchased) { List <IItem> items = machine.PurchaseItem(index, responseInt); Console.WriteLine($"Congratulations! You purchased {responseInt} {nameOfItem}"); DisplayCurrentCatalogue(machine); GoBackToMainMenu(machine); } else { Console.WriteLine("Wrong Input"); GoBackToMainMenu(machine); } } else { Console.WriteLine("Wrong Input"); GoBackToMainMenu(machine); } } }