示例#1
0
        public static void MainMenu(PaymentTerminal terminal)
        {
            bool isRunning = true;

            while (isRunning)
            {
                System.Console.WriteLine("Welcome to our VendingMachine!");
                System.Console.WriteLine("Please select an option:");
                System.Console.WriteLine("1) Make a purchase");
                System.Console.WriteLine("2) Exit");
                int option = Convert.ToInt32(Console.ReadLine());
                switch (option)
                {
                default:
                    System.Console.WriteLine("Invalid option, try again!");
                    break;

                case 1:
                    MakeAPurchase(terminal);
                    break;

                case 2:
                    isRunning = false;
                    break;
                }
            }
        }
示例#2
0
        static void Main(string[] args)
        {
BuyProduct:
            PaymentTerminal paymentTerminal = new PaymentTerminal();
            Payment payment = paymentTerminal.GetPayment();

            Console.WriteLine($"Payment type selected: {payment.ToString()}");

            Console.WriteLine("\nAvailable products:");
            foreach (ContainableItem containableItem in VendingMachine.Instance.Items)
            {
                Console.WriteLine($"Id: {containableItem.Position.Id}\t ProductName: {containableItem.Product.Name}"
                                  + $"\t Price: {containableItem.Product.Price}");
            }

            int id = GetSelectedId();

            paymentTerminal.Pay(id, payment);
            Console.WriteLine("Try again? Y/N");
            string answer = Console.ReadLine();

            if (answer.ToUpper().Equals("Y"))
            {
                goto BuyProduct;
            }

            GenerateReports();
            Console.ReadKey();
        }
示例#3
0
        public static void MakeAPurchase(PaymentTerminal terminal)
        {
            System.Console.WriteLine("Please select the ID of the desired product from the list below:");
            for (int index = 0; index < terminal.dispenser.containableItemsCollection.Count(); index++)
            {
                System.Console.WriteLine($"ID: {terminal.dispenser.containableItemsCollection.Get(index).Position.ID} -> {terminal.dispenser.containableItemsCollection.Get(index).Product.ToString()}");
            }
            System.Console.WriteLine("Your option: ");
            int option = Convert.ToInt32(Console.ReadLine());

            System.Console.WriteLine("Choose payment method:");
            System.Console.WriteLine("1) Banknotes");
            System.Console.WriteLine("2) Coins");
            System.Console.WriteLine("3) Credit Card");
            int paymentOption = Convert.ToInt32(Console.ReadLine());

            System.Console.WriteLine("Please insert money!");
            int     moneyInserted = Convert.ToInt32(Console.ReadLine());
            Payment payment       = null;

            switch (paymentOption)
            {
            default:
                System.Console.WriteLine("Invalid option!");
                break;

            case 1:
                payment = new BanknotePayment(moneyInserted);
                break;

            case 2:
                payment = new CoinPayment(moneyInserted);
                break;

            case 3:
                payment = new CreditCardPayment(moneyInserted);
                break;
            }

            try
            {
                terminal.Pay(option, payment);
                System.Console.WriteLine($"{terminal.dispenser.dispensedProduct.ToString()}");
            }
            catch (VendingMachine.CreditCardRejectedException e)
            {
                System.Console.WriteLine("Credit card rejected!");
            }
            catch (VendingMachine.NotEnoughMoneyException e)
            {
                System.Console.WriteLine($"Not enough money! Refund: {terminal.Refund}");
            }
            catch (VendingMachine.ProductUnavailableException e)
            {
                System.Console.WriteLine("Product unavailable!");
            }
        }
示例#4
0
        static void Main(string[] args)
        {
            ContainableItemsCollection produse = new ContainableItemsCollection();

            produse.LocationOverlap += LocationOverlap;
            AddingProducts(produse);
            Dispenser       dispenser       = new Dispenser(produse);
            PaymentTerminal paymentTerminal = new PaymentTerminal(dispenser);

            VendingMachineConsole(produse, paymentTerminal);
        }
示例#5
0
 static private void DeclarationsAndInitializations()
 {
     itemArray = new ContainableItem[] {
         new ContainableItem(new Product("Poiana cu lapte", 5.2m, new Category("mancare"), 5), new Position(1, 1, 1, 1)),
         new ContainableItem(new Product("Nestea 0.5L", 10m, new Category("bautura"), 2), new Position(1, 2, 2, 2)),
         new ContainableItem(new Product("Pepsi 0.5L", 4.6m, new Category("bautura"), 53), new Position(1, 3, 1, 3)),
         new ContainableItem(new Product("Mouse PC", 30.6m, new Category("altele"), 17), new Position(2, 1, 1, 4))
     };
     collection      = new ContainableItemCollection(itemArray);
     dispenser       = new Dispenser(collection);
     paymentTerminal = new PaymentTerminal();
 }
示例#6
0
        static void Main(string[] args)
        {
            int             paymentType = 0, id = 0, moreProducts = 1;
            PaymentTerminal payConsole = new PaymentTerminal();
            ContainableItem lays       = new ContainableItem(new Product(new ProductCategory("Snacks"), "Lays", 50, 10, 3), new Position(1, 1, 2, 2));
            ContainableItem M_m        = new ContainableItem(new Product(new ProductCategory("Sweets"), "M&M", 30, 20, 1), new Position(2, 1, 1, 1));
            ContainableItem milk       = new ContainableItem(new Product(new ProductCategory("Milk Products"), "Milk", 20, 40, 2), new Position(3, 1, 2, 3));

            ContainableItemsCollection.AddItem(lays);
            ContainableItemsCollection.AddItem(M_m);
            ContainableItemsCollection.AddItem(milk);

            ContainableItemsCollection.ShowList();
            while (moreProducts != 0)
            {
                try {
                    Console.WriteLine("Product id:");
                    id = Int32.Parse(Console.ReadLine());
                    Console.WriteLine("How do you want to pay? 1-Coins, 2-Banknote, 3-CreditCard, 0-Back");
                    paymentType = Int32.Parse(Console.ReadLine());
                } catch (Exception e) { Console.WriteLine(e); }

                switch (paymentType)
                {
                case 1:
                    Payment payCoin = new Coin();
                    payConsole.Pay(id, payCoin);
                    break;

                case 2:
                    Payment payBanknote = new Banknote();
                    payConsole.Pay(id, payBanknote);
                    break;

                case 3:
                    Payment payCreditCard = new CreditCard();
                    payConsole.Pay(id, payCreditCard);
                    break;

                default:
                    break;
                }
                Console.WriteLine(Dispenser.Message);
                try {
                    Console.WriteLine("Do you want to buy another product? 1-Yes 0-No");
                    moreProducts = Int32.Parse(Console.ReadLine());
                } catch (Exception e) { Console.WriteLine(e); }
            }

            DataAcquisition.GetInstance().GenerateReports();
        }
示例#7
0
        public static void Main(string[] args)
        {
            List <Position>            positions  = new List <Position>();
            List <ProductCategory>     categories = new List <ProductCategory>();
            ContainableItemsCollection collection = new ContainableItemsCollection();

            VendingMachineSetup(positions, categories, collection);
            Dispenser       dispenser       = new Dispenser(collection);
            PaymentTerminal paymentTerminal = new PaymentTerminal(dispenser);

            paymentTerminal.ProductDispensed += ProductDispensed;
            MainMenu(paymentTerminal);
            dispenser.Report();
        }
示例#8
0
        static void Main(string[] args)
        {
            DeclarationsAndInitializations();
            DisplayMenu();
            paymentTerminal = new PaymentTerminal(dispenser);
            string ProductIdString;
            int    ProductId = -1;

            while (ProductId != 0)
            {
                if (ProductId == 0)
                {
                    break;
                }
                ProductIdString = Console.ReadLine();
                ProductId       = Convert.ToInt32(ProductIdString);
                System.Console.WriteLine($"Trebuie sa platiti {MenuFlow(ProductId)}");
            }
        }
示例#9
0
        static void SaleOperation(ContainableItemsCollection produse, PaymentTerminal paymentTerminal)
        {
            int idProduct = -1;
            int option    = -1;

            while (option != 0 && idProduct != 0)
            {
                Node temp = produse.GetFirst();
                for (int i = 0; i < produse.Count(); i++)
                {
                    Console.WriteLine(temp.ContainableItem.ToString());
                    temp = temp.To;
                }
                Console.WriteLine("ID Product:");
                int.TryParse(Console.ReadLine(), out idProduct);
                Console.WriteLine("Payment Option: (1-Coins;2-Banknote;3-Card)");
                int.TryParse(Console.ReadLine(), out option);
                paymentTerminal.Pay(idProduct, option);
            }
        }
示例#10
0
        private static void VendingMachineConsole(ContainableItemsCollection produse, PaymentTerminal paymentTerminal)
        {
            Boolean repeat = true;

            while (repeat)
            {
                try
                {
                    SaleOperation(produse, paymentTerminal);
                }
                catch (MyException myException)
                {
                    Console.WriteLine($"{myException.Problem}\nDo you want to try again?(anything/n)");
                    if (Console.ReadLine() == "n")
                    {
                        repeat = false;
                        Console.WriteLine("Have a nice day");
                    }
                }
            }
            Data.Instance.WritingCsv();
        }
示例#11
0
        static void Main(string[] args)
        {
            ProductCategory productCategory1 = new ProductCategory()
            {
                Name = "Ciocolata"
            };

            ProductCategory productCategory2 = new ProductCategory()
            {
                Name = "Suc"
            };

            Position position1 = new Position()
            {
                Row    = 1,
                Column = 2,
                Size   = 3,
                Id     = 1
            };

            Position position2 = new Position()
            {
                Row    = 2,
                Column = 1,
                Size   = 4,
                Id     = 2
            };

            Product product1 = new Product()
            {
                Category = productCategory1,
                Price    = 4.5,
                Quantity = 3,
                Name     = "Milka"
            };

            Product product2 = new Product()
            {
                Category = productCategory2,
                Price    = 6.3,
                Quantity = 2,
                Name     = "Sprite"
            };

            Product product3 = new Product()
            {
                Category = productCategory1,
                Price    = 3.1,
                Quantity = 1,
                Name     = "Poiana"
            };

            ContainableItem containableItem1 = new ContainableItem()
            {
                Position = position2,
                Product  = product1
            };

            ContainableItem containableItem2 = new ContainableItem()
            {
                Position = position1,
                Product  = product2
            };

            ContainableItem containableItem3 = new ContainableItem()
            {
                Position = position1,
                Product  = product3
            };

            ContainableItemsCollection containableItemsCollection = new ContainableItemsCollection();
            Dispenser dispenser = new Dispenser(containableItemsCollection);

            PaymentTerminal paymentTerminal = new PaymentTerminal(dispenser);
            Payment         payment         = new BanknotePayment();

            containableItemsCollection.AddProduct(containableItem1);
            containableItemsCollection.AddProduct(containableItem2);
            containableItemsCollection.AddProduct(containableItem3);

            //  containableItemsCollection.RemoveAt(2);

            for (int i = 0; i < containableItemsCollection.Count(); i++)
            {
                Console.WriteLine(containableItemsCollection.GetItem(i));
            }

            Console.WriteLine("After dispense:");

            paymentTerminal.Pay(0, payment, 50);

            //Product dispenseProduct = dispenser.Dispense(0);
            // Console.WriteLine(dispenseProduct);
        }