Exemplo n.º 1
0
        public void MainMenu(IParking parking)
        {
            _parking = parking;
            bool exitMenu = false;

            var   startTimeSpan       = TimeSpan.Zero;
            var   periodTimeSpan      = TimeSpan.FromSeconds(parking.Settings.Timeout);
            Timer parkingPaymentTimer = null;
            Timer logTransactionTimer = null;

            try
            {
                parkingPaymentTimer = new Timer((e) =>
                {
                    parking.GetPaymentFromCar();
                }, null, periodTimeSpan, periodTimeSpan);

                logTransactionTimer = new Timer((e) =>
                {
                    parking.LogTransactionEveryMinute();
                }, null, TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(1));

                var menu = BuildMainMenu();

                while (!exitMenu)
                {
                    DisplayMainMenu(menu);

                    var menuChoice = GetMenuSelection(menu);

                    menuChoice.ItemHandler?.Invoke();

                    exitMenu = menuChoice.IsExitOption;
                }
            }
            finally
            {
                if (parkingPaymentTimer != null)
                {
                    parkingPaymentTimer.Dispose();
                }
                if (logTransactionTimer != null)
                {
                    logTransactionTimer.Dispose();
                }
            }
        }