예제 #1
0
        public VendingMachine(string stockPath)
        {
            Stocker stock = new Stocker(stockPath);

            stockList = stock.CreateStockList();
            MakeSlots();
            StockSlots(stockList);
        }
        protected override bool ExecuteSelection(string choice)
        {
            string selection = "";

            switch (choice)
            {
            case "1":    // Feed money option
                Console.Clear();
                Console.WriteLine("*** Feed money ***");
                Console.WriteLine($"*** Current balance: {VendOMatic.Balance:C} ***");
                Console.WriteLine("1. Add 1¢");
                Console.WriteLine("2. Add 5¢");
                Console.WriteLine("3. Add 10¢");
                Console.WriteLine("4. Add 25¢");
                Console.WriteLine("5. Add $1");
                Console.WriteLine("6. Add $2");
                Console.WriteLine("7. Add $5");
                Console.WriteLine("8. Add $10");
                Console.WriteLine("Q. Quit");

                selection = Console.ReadLine().Trim();
                selection = selection.Substring(0, 1).ToUpper();
                if (selection != "Q")
                {
                    this.AddMoney(selection);
                }
                Console.WriteLine();
                return(true);

            case "2":    // Purchase
                VendOMatic.ShowContents();
                Console.Write("Please enter a slot ID: ");
                selection = Console.ReadLine().Trim();
                this.MakePurchase(selection);
                return(true);

            case "3":    // Finish transaction
                //  Print out the change we recieve using our change object
                Console.WriteLine(this.TotalChange.TotalValue(VendOMatic.Balance));

                //  Restock the vending machine
                Stocker stocker = new Stocker();
                FileLog.Log("GIVE CHANGE", VendOMatic.Balance, 0.0M);
                VendOMatic.Load(stocker.Restock());

                //  Eat everything
                this.Customer.Eat();
                Console.ReadKey();
                return(false);

            case "Q":
                return(false);
            } // End switch
            return(true);
        }     // End ExecuteSelection
예제 #3
0
        public void RunVendor()
        {
            string filepath = Path.Combine(Environment.CurrentDirectory, "vendingmachine.csv");
            Dictionary <string, Inventory> todaysInventory = Stocker.UsingPathToLoadStocker(filepath);

            Console.WriteLine();
            Console.WriteLine("Welcome to the Umbrella Corp. Vendo3000.");
            Console.WriteLine();
            string input = "";

            VendingMachine activeVendingMachine = new VendingMachine();

            activeVendingMachine.currentInventory = todaysInventory;

            while (input != "5746")
            {
                Console.WriteLine($"Current Balance: {(Convert.ToDouble(activeVendingMachine.currentBalance) / 100).ToString("C")}");
                Console.WriteLine("1) Deposit Money");
                Console.WriteLine("2) Display Snack Options");
                Console.WriteLine("3) Purchase Snack");
                Console.WriteLine("4) Finished and Get Change");
                input = (Console.ReadLine());


                if (input == "1")
                {
                    //Deposit Money
                    Console.WriteLine("How much would you like to deposit in dollars? Please use only $1, $5, $10");
                    int depositedAmount = int.Parse(Console.ReadLine());
                    if (depositedAmount == 1 || depositedAmount == 5 || depositedAmount == 10)
                    {
                        activeVendingMachine.FeedMoney(depositedAmount);
                    }
                    else
                    {
                        Console.WriteLine("That is machine only accepts $1 bills, $5 bills, or $10 bills.");
                    }
                }
                else if (input == "2")
                {
                    Console.WriteLine("---------------------------------------------------------------------------");
                    Console.WriteLine($"|{todaysInventory["A1"].RealTimeItem.NameOfProduct} |   {todaysInventory["A2"].RealTimeItem.NameOfProduct}   |   {todaysInventory["A3"].RealTimeItem.NameOfProduct}  | {todaysInventory["A4"].RealTimeItem.NameOfProduct} |          |");
                    Console.WriteLine($"|    {(todaysInventory["A1"].RealTimeItem.PriceOfProduct * .01).ToString("C")}     |     {(todaysInventory["A2"].RealTimeItem.PriceOfProduct * .01).ToString("C")}    |      {(todaysInventory["A3"].RealTimeItem.PriceOfProduct * .01).ToString("C")}     |      {(todaysInventory["A4"].RealTimeItem.PriceOfProduct * .01).ToString("C")}    |          |");
                    Console.WriteLine("|     A1       |      A2      |       A3       |      A4       |    $$    |");
                    Console.WriteLine("----------------------------------------------------------------   |__|   |");
                    Console.WriteLine($"|  {todaysInventory["B1"].RealTimeItem.NameOfProduct}     |   {todaysInventory["B2"].RealTimeItem.NameOfProduct}   |  {todaysInventory["B3"].RealTimeItem.NameOfProduct}     |   {todaysInventory["B4"].RealTimeItem.NameOfProduct}    |          |");
                    Console.WriteLine($"|    {(todaysInventory["B1"].RealTimeItem.PriceOfProduct * .01).ToString("C")}     |    {(todaysInventory["B2"].RealTimeItem.PriceOfProduct * .01).ToString("C")}     |     {(todaysInventory["B3"].RealTimeItem.PriceOfProduct * .01).ToString("C")}      |     {(todaysInventory["B4"].RealTimeItem.PriceOfProduct * .01).ToString("C")}     |__________|");
                    Console.WriteLine("|     B1       |      B2      |       B3       |      B4       | o o  o o |");
                    Console.WriteLine("---------------------------------------------------------------- o o  o o |");
                    Console.WriteLine($"|    {todaysInventory["C1"].RealTimeItem.NameOfProduct}      |  {todaysInventory["C2"].RealTimeItem.NameOfProduct}    |{todaysInventory["C3"].RealTimeItem.NameOfProduct} |     {todaysInventory["C4"].RealTimeItem.NameOfProduct}     | o o  o o |");
                    Console.WriteLine($"|    {(todaysInventory["C1"].RealTimeItem.PriceOfProduct * .01).ToString("C")}     |    {(todaysInventory["C2"].RealTimeItem.PriceOfProduct * .01).ToString("C")}     |      {(todaysInventory["C3"].RealTimeItem.PriceOfProduct * .01).ToString("C")}     |     {(todaysInventory["C4"].RealTimeItem.PriceOfProduct * .01).ToString("C")}     | o o  o o |");
                    Console.WriteLine("|     C1       |      C2      |       C3       |      C4       |__________|");
                    Console.WriteLine("----------------------------------------------------------------          |");
                    Console.WriteLine("|              |    Little    |                |               |          |");
                    Console.WriteLine($"|  {todaysInventory["D1"].RealTimeItem.NameOfProduct}     | {(todaysInventory["D2"].RealTimeItem.NameOfProduct).Substring(7,11)}  |   {todaysInventory["D3"].RealTimeItem.NameOfProduct}     |  {todaysInventory["D4"].RealTimeItem.NameOfProduct}   |          |");
                    Console.WriteLine($"|   {(todaysInventory["D1"].RealTimeItem.PriceOfProduct * .01).ToString("C")}      |    {(todaysInventory["D2"].RealTimeItem.PriceOfProduct * .01).ToString("C")}     |     {(todaysInventory["D3"].RealTimeItem.PriceOfProduct * .01).ToString("C")}      |     {(todaysInventory["D4"].RealTimeItem.PriceOfProduct * .01).ToString("C")}     |          |");
                    Console.WriteLine("|     D1       |      D2      |       D3       |      D4       |          |");
                    Console.WriteLine("---------------------------------------------------------------------------");
                    Console.WriteLine("|                                                                         |");
                    Console.WriteLine("|                 __________________________                              |");
                    Console.WriteLine("|                |                          |                             |");
                    Console.WriteLine("|                |__________________________|                             |");
                    Console.WriteLine("|                                                                       NB|");
                    Console.WriteLine("---------------------------------------------------------------------------");
                }
                else if (input == "3")
                {
                    Console.WriteLine("Please enter the snack ID for the item that you would like to purchase:");
                    string slotID = Console.ReadLine().ToUpper();

                    if (activeVendingMachine.currentInventory.ContainsKey(slotID))
                    {
                        if (activeVendingMachine.currentBalance >= activeVendingMachine.currentInventory[slotID].RealTimeItem.PriceOfProduct)
                        {
                            if (activeVendingMachine.currentInventory[slotID].Quantity > 0)
                            {
                                int priorBalance = activeVendingMachine.currentBalance;
                                activeVendingMachine.Purchase(slotID);

                                Console.WriteLine($"You have selected {activeVendingMachine.currentInventory[slotID].RealTimeItem.NameOfProduct} for {(Convert.ToDouble(activeVendingMachine.currentInventory[slotID].RealTimeItem.PriceOfProduct)/100).ToString("C")}.");
                                PurchaseLog.AddToLog(activeVendingMachine, slotID, priorBalance);
                                TechnicianProductReport newProductReport = new TechnicianProductReport();
                                newProductReport.UpdateDictionary(activeVendingMachine, slotID);
                            }
                            else
                            {
                                Console.WriteLine("Sorry we are out of this product.");
                            }
                        }
                        else
                        {
                            Console.WriteLine("You have not given this vending machine enough money. Please deposit more money.");
                        }
                    }
                    else
                    {
                        Console.WriteLine("This is not a valid snack ID");
                    }
                }
                else if (input == "4")
                {
                    //Get Change
                    ChangeDispenser changeToBeOrNotToBeDispensed = new ChangeDispenser(activeVendingMachine.currentBalance);
                    Console.WriteLine($"You have been dispensed {(Convert.ToDouble(activeVendingMachine.currentBalance)/100).ToString("C")}. \nPlease take your change: {changeToBeOrNotToBeDispensed.Quarters} Quarters, {changeToBeOrNotToBeDispensed.Dimes} Dimes, {changeToBeOrNotToBeDispensed.Nickels} Nickels.");
                    activeVendingMachine.currentBalance = 0;

                    break;
                }
                else if (input == "216")
                {
                    TechnicianProductReport newReport = new TechnicianProductReport();
                    newReport.CreateReport(activeVendingMachine);
                }
                else
                {
                    Console.WriteLine("Invalid choice, please try again.");
                }
            }
        }