public void TransactionMenu()
        {
            TransactionSession session = new TransactionSession();

            bool validTransInput = false;

            while (!validTransInput)
            {
                Console.WriteLine("(1) Feed Money");
                Console.WriteLine("(2) Select Product");
                Console.WriteLine("(3) Finish Transaction");
                Console.WriteLine($"Current Money Provided: ${session.Balance}");
                Console.WriteLine();
                Console.Write("Selection: ");
                string transInput = Console.ReadLine();

                switch (transInput)
                {
                case "1":
                    // Feed Money
                    Console.Clear();
                    Console.Write("Please enter an accepted dollar amount (1, 2, 5, 10): ");
                    decimal billValue = 0.0M;
                    string  inputFeed = Console.ReadLine();

                    while (!decimal.TryParse(inputFeed, out billValue))
                    {
                        Console.Clear();
                        Console.WriteLine($"\'{inputFeed}\' is not an accepted dollar amount! Try again!");
                        Console.Write("Please enter an accepted dollar amount (1, 2, 5, 10): ");
                        inputFeed = Console.ReadLine();
                    }

                    while (!session.Deposit(billValue))
                    {
                        Console.Clear();
                        Console.WriteLine($"\'{billValue}\' is not an accepted dollar amount! Try again!");
                        Console.Write("Please enter an accepted dollar amount (1, 2, 5, 10): ");
                        billValue = decimal.Parse(Console.ReadLine());
                    }

                    Console.Clear();
                    vendingMachine.WriteLineToLog("FEED MONEY:", billValue, session.Balance);

                    // 10/01/2018 12:00:00 PM FEED MONEY: $5.00 $5.00
                    // Date Time "FEED MONEY:" amount_added balance
                    break;

                case "2":
                    // Select Product
                    Console.Clear();
                    Display();

                    Console.Write("Select an item code: ");
                    string input     = Console.ReadLine();
                    string inputCode = input.ToUpper();

                    if (!vendingMachine.IsValidCode(inputCode))
                    {
                        Console.Clear();
                        Console.WriteLine($"\'{input}\' is not a valid item code");
                        Console.WriteLine();
                    }
                    else
                    {
                        if (!vendingMachine.IsInStock(inputCode))
                        {
                            Console.Clear();
                            Console.WriteLine($"\'{inputCode}\' is out of stock");
                            Console.WriteLine();
                        }
                        else
                        {
                            // buy the item
                            if (vendingMachine.HaveEnoughToBuy(inputCode, session))
                            {
                                decimal            startingBalance = session.Balance;
                                VendingMachineItem theItem         = vendingMachine.BuyItem(inputCode, session);
                                Console.Clear();
                                Console.WriteLine($"User obtained one (1) {theItem.Name}");
                                Console.WriteLine();
                                Console.WriteLine(theItem.Text);
                                Console.WriteLine();

                                vendingMachine.WriteLineToLog($"{theItem.Name} {theItem.ItemCode}", startingBalance, session.Balance);
                            }
                            else
                            {
                                Console.Clear();
                                Console.WriteLine("Funds not sufficient ;(");
                                Console.WriteLine();
                            }
                        }
                    }

                    // 10/01/2018 12:00:20 PM Crunchie B4 $10.00 $8.50
                    // Date Time itemName itemCode balanceBefore balanceAfter
                    break;

                case "3":
                    // Finish Transaction
                    Console.Clear();
                    if (session.Balance > 0)
                    {
                        decimal changeBack = session.Balance;
                        string  change     = session.FinishTransaction();
                        Console.WriteLine("Change returned:");
                        Console.WriteLine();
                        Console.WriteLine(change);
                        Console.WriteLine();
                        vendingMachine.WriteLineToLog("GIVE CHANGE:", changeBack, session.Balance);
                    }
                    validTransInput = true;
                    // 10/01/2018 12:01:35 PM GIVE CHANGE: $7.50 $0.00
                    // Date Time "GIVE CHANGE:" balanceBefore balanceAfter
                    break;

                default:
                    // If input is not 1, 2, or 3
                    Console.Clear();
                    Console.WriteLine($"\'{transInput}\' is not a valid selection dammit! Try again!");
                    Console.WriteLine();
                    Console.WriteLine("(1) Feed Money");
                    Console.WriteLine("(2) Select Product");
                    Console.WriteLine("(3) Finish Transaction");
                    Console.WriteLine($"Current Money Provided: ${session.Balance}");
                    transInput = Console.ReadLine();
                    break;
                }
            }
        }
Esempio n. 2
0
        public void Display()
        {
            while (true)
            {
                Console.WriteLine();
                Console.WriteLine("(1) Feed Money");
                Console.WriteLine("(2) Select Product");
                Console.WriteLine("(3) Finish Transaction");
                Console.WriteLine("Current Money Provided: $" + vm.Balance);

                string userInput = Console.ReadLine();

                if (userInput == "1")
                {
                    Console.WriteLine("Please enter $1, $2, $5, or $10: "); //How to handle if entered with $?
                    Decimal.TryParse(Console.ReadLine(), out decimal cash);
                    if (cash == 1.00M || cash == 2.00M || cash == 5.00M || cash == 10.00M)
                    {
                        Console.WriteLine("Money Provided: $" + cash);
                        vm.AddMoney(cash);
                        Console.WriteLine("Your new balance is: $" + vm.Balance);
                    }
                    else
                    {
                        Console.WriteLine("Sorry, that's an invalid amount.");
                    }
                }
                else if (userInput == "2")
                {
                    Console.WriteLine("Please enter your selection: ");
                    string input = (Console.ReadLine()).ToUpper();

                    if (!vm.IsValidSlot(input))
                    {
                        Console.WriteLine("Invalid product code. Please try again.");
                    }
                    else if (!vm.IsInStock(input))
                    {
                        Console.WriteLine("Sorry, item is sold out");
                    }

                    else
                    {
                        VendingItem userDesiredProduct = vm.GetItemAtSlot(input);
                        decimal     cost = userDesiredProduct.Cost;

                        if (vm.Balance < cost)
                        {
                            Console.WriteLine("Please provide more cash");
                        }
                        else
                        {
                            boughtItems.Add(vm.BuyItem(input));
                            Console.WriteLine("Dispensing...");
                            Console.WriteLine("Current Balance: $" + vm.Balance);
                        }
                    }
                }
                else if (userInput == "3")
                {
                    Console.WriteLine("Current Balance: $" + vm.Balance);
                    Console.WriteLine("Your change is " + vm.ReturnChange());
                    foreach (VendingItem item in boughtItems)
                    {
                        Console.WriteLine("Consuming item(s): " + item.MakeEatNoise());
                    }
                    boughtItems.Clear();
                }
                else
                {
                    Console.WriteLine("Please try again.");
                }
            }
        }
Esempio n. 3
0
        public void RunInterface()
        {
            bool done = false;

            while (!done)
            {
                // display main menu options
                Console.WriteLine("(1) Display Vending Machine Items");
                Console.WriteLine("(2) Purchase");
                Console.WriteLine("(3) End");
                string mainMenuOption     = Console.ReadLine();
                string purchaseMenuOption = "";

                // Main menu cases
                switch (mainMenuOption)
                {
                case "1":
                    // display ItemName Price Quantity
                    foreach (VendingMachineItem item in vendingMachine.items)
                    {
                        Console.WriteLine($"{item.Slot} {item.ProductName} ${item.Price} {item.Quantity}");
                    }
                    break;

                case "2":
                    bool purchaseDone = false;
                    while (!purchaseDone)
                    {
                        // display purchase menu options
                        Console.WriteLine("(1) Feed Money");
                        Console.WriteLine("(2) Select Product");
                        Console.WriteLine("(3) Finish Transaction");
                        Console.WriteLine($"Current Money Provided: {vendingMachine.CurrentMoney}");
                        purchaseMenuOption = Console.ReadLine();
                        // Purchase menu cases
                        switch (purchaseMenuOption)
                        {
                        case "1":
                            // feed money
                            Console.Write("Enter dollar amount to insert: ");
                            int feeding = int.Parse(Console.ReadLine());
                            vendingMachine.FeedMoney(feeding);
                            break;

                        case "2":
                            // select product
                            foreach (VendingMachineItem item in vendingMachine.items)
                            {
                                Console.WriteLine($"{item.Slot} {item.ProductName} ${item.Price} {item.Quantity}");
                            }
                            Console.Write("Enter an item slot code: ");
                            string desiredSlot = Console.ReadLine();
                            Console.Write(vendingMachine.BuyItem(desiredSlot));
                            Console.ReadLine();
                            break;

                        case "3":
                            // finish transaction
                            //vendingMachine.CoinOut();
                            Console.Write("Please take your change.");
                            Console.ReadLine();
                            purchaseDone = true;
                            break;

                        default:
                            break;
                        }
                        Console.Clear();
                    }
                    break;

                case "3":
                    // end
                    done = true;
                    break;

                default:
                    break;
                }
                Console.ReadLine();
            }
        }