示例#1
0
        static void Main(string[] args)
        {
            VendingMachine    vm         = new VendingMachine();
            VendingMachineCLI newMachine = new VendingMachineCLI(vm);

            newMachine.Run();
        }
示例#2
0
        public string SelectProduct(string itemSelected)
        //this is where we decrement the count
        {
            //currentBalance = currentBalance - costOfItem;
            //machineBalance = fedMoney - costOfItem;

            VendingMachineItem itemImBuying = vendingDictionary[itemSelected];



            if (itemImBuying.NumberLeft <= 0)
            {
                return("These are sold out");
            }
            if (currentBalance <= itemImBuying.Price)
            {
                return("Please deposit more money");
            }
            else
            {
                currentBalance -= itemImBuying.Price;
                machineBalance += itemImBuying.Price;
                itemImBuying.NumberLeft--;
                itemImBuying.NumberSold++;
            }

            //if amountLeft = 0, return error message and returned to purchase menu.
            VendingMachineCLI.PrintToAuditFile($"Date and Time: {DateTime.UtcNow}|Item Slot: {itemImBuying.Slot}|Item Name: {itemImBuying.Name}|Item Price: {itemImBuying.Price.ToString("$0.00")}|Money fed: {fedMoney.ToString("$0.00")}|Current Balance: {currentBalance.ToString("$0.00")}");

            if (itemImBuying.Type.Equals("Chip"))
            {
                return("Crunch Crunch Yum");
            }
            else if (itemImBuying.Type.Equals("Candy"))
            {
                return("Munch Munch Yum");
            }
            else if (itemImBuying.Type.Equals("Drink"))
            {
                return("Glug Glug Yum");
            }
            else if (itemImBuying.Type.Equals("Gum"))
            {
                return("Chew Chew Yum");
            }
            //VendingMachineCLI.PrintToAuditFile($"{DateTime.UtcNow} {itemImBuying.Type} {itemImBuying.Name} {itemImBuying.Price} {fedMoney} {currentBalance}");
            return("");
        }
示例#3
0
        public void FinishTransaction()
        {
            currentBalance *= 100;

            quartersLeft    = (int)currentBalance / quarter;
            currentBalance -= quartersLeft * 25;
            dimesLeft       = (int)currentBalance / dime;
            currentBalance -= dimesLeft * 10;
            nickelsLeft     = (int)currentBalance / nickel;
            currentBalance -= nickelsLeft * 5;

            double changeGiven = ((double)quartersLeft * 25 + (double)dimesLeft * 10 + (double)nickelsLeft * 5) / 100;

            VendingMachineCLI.PrintToAuditFile($"Date and Time: {DateTime.UtcNow} | Change Given:  {changeGiven.ToString("c")} | Current Balance: {currentBalance.ToString("c")}");



            //give them quarters until change is less than .25, give them dimes until change is less than .10, give them nickels until chane is less than .05, then give pennies at .01
        }
示例#4
0
        public void RunVendingMachine()
        {
            balance = cashBox.GetBalance();

            while (!finished)
            {
                Menu.PrintUserOptions();
                input = VendingMachineCLI.GetString();
                Console.WriteLine();

                if (input == "1")
                {
                    Menu.DisplayMenu(balance, inventory);
                    Console.WriteLine("---------------------------------");
                }
                if (input == "2")
                {
                    Console.WriteLine("-----------------------------------------------------");
                    cashBox.DisplayOptions();
                    Console.WriteLine("Current Money Provided: " + balance.ToString("C2"));
                    VendingMachineCLI.InputIsTwoMainMenu();

                    input = VendingMachineCLI.GetString();

                    if (input == "1")
                    {
                        Console.WriteLine("Please enter a full dollar amount");
                        cashBox.AddCustomerBalance(Console.ReadLine());
                        oldBalance = balance;
                        balance    = cashBox.GetBalance();
                        logString  = "FEED MONEY: ";

                        Log.WriteLog(logString, oldBalance, balance);
                    }

                    if (input == "2")
                    {
                        Console.WriteLine("Enter a product code");

                        string code = Console.ReadLine().ToUpper();
                        //if
                        try
                        {
                            decimal price    = inventory.GetPrice(code);
                            string  priceStr = price.ToString("C2");
                            string  product  = inventory.GetProductName(code);
                            string  phrase   = inventory.GetPhrase(code);

                            if (balance < price)
                            {
                                cashBox.OutOfFunds();
                            }
                            else if (count < 1)
                            {
                                cashBox.SoldOut();
                            }
                            else
                            {
                                logString  = product + " " + code + " ";
                                count      = inventory.GetCount(code);
                                oldBalance = balance;
                                balance   -= price;
                                sale       = inventory.NewSale(code);
                                cashBox.AddMachineBalance(sale);
                                Log.WriteLog(logString, oldBalance, balance);
                                Console.WriteLine("---------------------------");
                                Console.WriteLine(phrase);
                                Console.WriteLine("Remaining Balance: " + balance);
                                Console.WriteLine("------");
                                Console.WriteLine("Press enter to continue");
                                input = Console.ReadLine();
                            }
                        }
                        catch (Exception)
                        {
                            inventory.CodeNotInInventory();
                        }
                    }
                    if (input == "3")
                    {
                        decimal change = balance;
                        Console.WriteLine(Change.GetChangeString(change));

                        oldBalance = balance;
                        balance    = 0M;
                        logString  = "GIVE CHANGE: ";
                        Log.WriteLog(logString, oldBalance, balance);
                    }

                    if (input == "4")
                    {
                        Console.WriteLine();
                        Log.WriteSalesReport(SalesReport.GetSales(inventory), cashBox.MachineBalance);
                    }
                }

                if (input == "3")
                {
                    Console.WriteLine("---------------------------------------------");
                    Console.WriteLine("Are you sure you want to exit? (Y)es or (N)o?");
                    Console.WriteLine("---------------------------------------------");
                    bool isSure = false;
                    while (!isSure)
                    {
                        string yOrNInput = Console.ReadLine().ToUpper();
                        if (yOrNInput == "Y")
                        {
                            finished = true;
                            Console.WriteLine();
                            Console.WriteLine("Goodbye!");
                            Console.ReadLine();
                            isSure = true;
                        }

                        else if (yOrNInput == "N")
                        {
                            isSure = true;
                        }

                        else
                        {
                            Console.WriteLine("Please Enter Y or N");
                        }
                    }

                    Console.WriteLine("--------------------------------------");
                }

                else if (input != "1" && input != "2" && input != "3")
                {
                    Console.WriteLine("Please enter a valid number from the menu to continue");
                    Console.WriteLine("-----------------------------------------------------");
                }
            }
        }