public ActionResult Purchase(int row, int col) { StatusViewModel result = null; try { var item = _vm.PurchaseItem(row, col); result = new StatusViewModel(eStatus.Success, item.Category.Noise); } catch (Exception ex) { result = new StatusViewModel(eStatus.Error, ex.Message); } var jsonResult = Json(result); return(GetAuthenticatedJson(jsonResult, _vm.Role.IsCustomer || _vm.Role.IsServiceman || _vm.Role.IsExecutive)); }
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); } } }
private void DisplayPurchaseMenu() { while (true) { PrintTitle(); Console.WriteLine(" (1) Insert money"); Console.WriteLine(" (2) Make a selection"); Console.WriteLine(" (3) Finish Transaction"); Console.WriteLine(" (R) Return to Main Menu"); Console.WriteLine(); Console.WriteLine($" Current balance: {_vm.RunningTotal.ToString("C")}"); Console.Write(" Please make a choice: ");; string choice = Console.ReadLine().ToLower(); Console.WriteLine(); if (choice == Option_InsertMoney) { Console.Write(" How much money do you want to enter? ($1, $2, $5, $10): "); int moneyIn = int.Parse(Console.ReadLine()); _vm.FeedMoney(moneyIn); } else if (choice == Option_MakeSelection) { PrintTitle(); Console.WriteLine($" Current balance: {_vm.RunningTotal.ToString("C")}"); DisplayInventory(); Console.WriteLine(); Console.Write(" Please select a slot id: "); string slot = Console.ReadLine().ToUpper(); Console.WriteLine(); try { int col = int.Parse(slot[0].ToString()); int row = int.Parse(slot[1].ToString()); var purchasedItem = _vm.PurchaseItem(row, col); Console.WriteLine(" Here are your " + purchasedItem.Product.Name); Console.WriteLine(" " + purchasedItem.Category.Noise); } catch (InvalidProductSelection) { Console.WriteLine("Invalid slot id"); } catch (InsufficientFundsException) { Console.WriteLine("Insufficient funds"); } catch (SoldOutException) { Console.WriteLine("Product is sold out"); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { Console.WriteLine(); Console.WriteLine(" Thank you for using Vendo-Matic!"); Console.ReadKey(); } } else if (choice == Option_ReturnChange) { DisplayReturnedChange(); Console.ReadKey(); } else if (choice == Option_ReturnToPreviousMenu) { Console.WriteLine(" Returning to previous menu. "); Console.ReadKey(); return; } else { DisplayInvalidOption(); } } }