Esempio n. 1
0
#pragma warning disable IDE0060 // Remove unused parameter
        static void Main(string[] args)
#pragma warning restore IDE0060 // Remove unused parameter
        {
            ProductController = new ProductController();
            ConsoleController = new ConsoleController();

            //Start the employee screen
            var employeeScreen = new IO.EmployeeConsole();
            var orderPrinter   = new IO.OrderPrinter();

            //Setup till-specific instances
            var tillDrawer        = new TillDrawer(DefaultCashSet());
            var inputHandler      = new EventHandlers.InputHandler();
            var paymentcontroller = new PaymentController(tillDrawer);
            var cart           = new ShoppingCart(ProductController, paymentcontroller);
            var orderControler = new OrderController();

            //Subscribe to events
            //Listeners to EmployeeScreen
            employeeScreen.InputRequested += inputHandler.GetAndHandleInput;

            //Listeners to inputhandler
            inputHandler.BarcodeScanned        += cart.EditCart;
            inputHandler.ProgramClosing        += HandleEmployeeTillClosing;
            inputHandler.CartContentRequested  += cart.DisplayCartContent;
            inputHandler.PaymentStarted        += cart.StartPayment;
            inputHandler.InstructionsRequested += employeeScreen.PrintInstructions;
            inputHandler.TillContentRequested  += paymentcontroller.TillDrawer.PrintContents;
            inputHandler.OrderRequested        += orderControler.DisplayOrder;
            inputHandler.CatalogueRequested    += ProductController.PrintCatalogue;

            //Listeners to ShoppingCart
            cart.CartContentChanged += ConsoleController.PrintNewItem;
            cart.ChangeRequested    += paymentcontroller.DetermineChange;
            cart.PaymentCompleted   += orderPrinter.PrintOrder;
            cart.PaymentCompleted   += cart.ResetContent;

            //Listeners to paymentcontroller
            paymentcontroller.ChangeFound     += ConsoleController.Print;
            paymentcontroller.PaymentPossible += cart.FinalizeTransaction;

            //Start the process
            employeeScreen.PrintInstructions();
            while (runProcess)
            {
                employeeScreen.GetInput();
            }
        }
 public PaymentController(TillDrawer tillDrawer)
 {
     this.TillDrawer = tillDrawer;
 }