Esempio n. 1
0
        public ItemGeneral Purchase(string slotID)
        {
            if (!inventory.ContainsKey(slotID))
            {
                throw new InvalidSlotSelectionException($"{slotID} does not exist.");
            }
            if (inventory[slotID].Count == 0)
            {
                throw new OutOfStockException($"There are no items left in {slotID}");
            }
            if (this.currentBalance < inventory[slotID][0].Cost)
            {
                throw new InsufficientFundsException($"You are short by ${inventory[slotID][0].Cost - this.currentBalance}");
            }

            this.currentBalance -= inventory[slotID][0].Cost;
            ItemGeneral itemToDispense = inventory[slotID][0];

            inventory[slotID].Remove(inventory[slotID][0]);
            return(itemToDispense);


            //for (int i = 0; i < Slots.Length; i++)
            //{
            //    if (slotID == Slots[i])
            //    {
            //        if (inventory[slotID].Count > 0)
            //        {
            //            if (this.currentBalance >= inventory[slotID][0].Cost)
            //            {
            //this.currentBalance -= inventory[slotID][0].Cost;
            //ItemGeneral itemToDispense = inventory[slotID][0];
            //inventory[slotID].Remove(inventory[slotID][0]);
            //return itemToDispense;
            //            }
            //        }
            //    }
            //}

            //return null;
        }
Esempio n. 2
0
        public ItemGeneral Purchase(string slotID)
        {
            //try
            //{

            for (int i = 0; i < Slots.Length; i++)
            {
                if (slotID == Slots[i])
                {
                    if (inventory[slotID].Count > 0)
                    {
                        if (this.currentBalance >= inventory[slotID][0].Cost)
                        {
                            this.currentBalance -= inventory[slotID][0].Cost;
                            ItemGeneral im = inventory[slotID][0];
                            inventory[slotID].Remove(inventory[slotID][0]);
                            return(im);
                        }
                    }
                }
            }

            return(null);
        }
Esempio n. 3
0
        private void DisplayPurchaseMenu()
        {
            while (true)
            {
                Console.WriteLine("Please Choose Below");
                Console.WriteLine("1) Feed Money");
                Console.WriteLine("2) Select Product");
                Console.WriteLine("3) Finish Transaction");
                string inputTwo = Console.ReadLine();
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine();

                if (inputTwo == "1")
                {
                    Console.WriteLine("Please enter amount in 1's, 5's, 10's or 20's");
                    string  money  = Console.ReadLine();
                    decimal record = Convert.ToDecimal(money);
                    vendomatic.FeedMoney(int.Parse(money));

                    Console.WriteLine("Current balance is $" + vendomatic.CurrentBalance);
                    log.RecordDeposit(record, vendomatic.CurrentBalance);
                }
                else if (inputTwo == "2")
                {
                    Console.WriteLine("Enter selected product code");
                    string userSelection = Console.ReadLine();

                    try
                    {
                        ItemGeneral purchasedItem = vendomatic.Purchase(userSelection);

                        itemsBought.Add(purchasedItem);
                        Console.WriteLine($"Here is your {purchasedItem.Name} and current balance is " + vendomatic.CurrentBalance);
                        log.RecordPurchase(purchasedItem.Name, userSelection, vendomatic.CurrentBalance, vendomatic.CurrentBalance - purchasedItem.Cost);
                    }
                    catch (VendingMachineException ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
                else if (inputTwo == "3")
                {
                    Change coins = vendomatic.ReturnChange();
                    log.RecordFinalChange(vendomatic.CurrentBalance);

                    for (int i = 0; i < itemsBought.Count; i++)
                    {
                        Console.WriteLine(itemsBought[i].Consume());
                    }
                    Console.WriteLine("Your money back is:");
                    Console.WriteLine("In Quarters " + coins.Quarters);
                    Console.WriteLine("In Dimes " + coins.Dimes);
                    Console.WriteLine("In Nickles " + coins.Nickels);

                    Console.WriteLine("Current Vendo Matic Balace is " + vendomatic.CurrentBalance);

                    break;
                }
            }
        }