示例#1
0
        public void DisplayMainMenu(Utility.MainMenuOptions newOptions)
        {
            // Check if Register New Customer option is set.
            Console.WriteLine((newOptions & Utility.MainMenuOptions.REGISTER_NEW_CUSTOMER) == Utility.MainMenuOptions.REGISTER_NEW_CUSTOMER ? "(1) Register new customer." : "");

            // Check if Change Customer option is set.
            Console.WriteLine((newOptions & Utility.MainMenuOptions.CHANGE_CUSTOMER) == Utility.MainMenuOptions.CHANGE_CUSTOMER ? "(2) Change customer." : "");

            // Check if Open New Account option is set.
            Console.WriteLine((newOptions & Utility.MainMenuOptions.OPEN_NEW_ACCOUNT) == Utility.MainMenuOptions.OPEN_NEW_ACCOUNT ? "(3) Open new account." : "");

            // Check if Close Account option is set.
            Console.WriteLine((newOptions & Utility.MainMenuOptions.CLOSE_ACCOUNT) == Utility.MainMenuOptions.CLOSE_ACCOUNT ? "(4) Close account." : "");

            // Check if Deposit Amount option is set.
            Console.WriteLine((newOptions & Utility.MainMenuOptions.DEPOSIT_AMOUNT) == Utility.MainMenuOptions.DEPOSIT_AMOUNT ? "(5) Deposit to account." : "");

            // Check if Withdraw Amount option is set.
            Console.WriteLine((newOptions & Utility.MainMenuOptions.WITHDRAW_AMOUNT) == Utility.MainMenuOptions.WITHDRAW_AMOUNT ? "(6) Withdraw from account." : "");

            // Check if Transfer Amount option is set.
            Console.WriteLine((newOptions & Utility.MainMenuOptions.TRANSFER_AMOUNT) == Utility.MainMenuOptions.TRANSFER_AMOUNT ? "(7) Transfer between accounts." : "");

            // Check if Pay Loan Installment option is set.
            Console.WriteLine((newOptions & Utility.MainMenuOptions.PAY_LOAN_INSTALLMENT) == Utility.MainMenuOptions.PAY_LOAN_INSTALLMENT ? "(8) Pay loan installment." : "");

            // Check if Display Accounts option is set.
            Console.WriteLine((newOptions & Utility.MainMenuOptions.DISPLAY_ALL_ACCOUNTS) == Utility.MainMenuOptions.DISPLAY_ALL_ACCOUNTS ? "(9) Display all accounts." : "");

            // Check if Display Transactions option is set.
            Console.WriteLine((newOptions & Utility.MainMenuOptions.DISPLAY_ALL_TRANSACTIONS) == Utility.MainMenuOptions.DISPLAY_ALL_TRANSACTIONS ? "(0) Display all transactions for an account." : "");

            // Display exit program option.
            Console.WriteLine();
            Console.WriteLine("(Q) Exit Program.");
            Console.WriteLine();
            Console.WriteLine();
        }
        /// <summary>
        /// Main Program Running Loop.
        /// </summary>
        /// <param name="isGameLoopActive">Last loop run state.</param>
        /// <returns>Returns, True if the main loop is going to run again. Otherwise, False.</returns>
        private bool MainProgramLoop(bool isGameLoopActive)
        {
            // Define cleared flag sets.
            Utility.MainMenuOptions menuOption = 0;
            Utility.OperationState? userReturn = 0;

            // Clear display for next menu draw.
            workingDisplay?.ClearDisplay();

            // Get avaliable options for Main Menu.
            menuOption = GetCurrentMainMenuOptions();

            // If customer is selected, display customer.
            if (activeCustomer != null)
            {
                CustomerHeader();
            }

            // Display Main Menu.
            workingDisplay?.DisplayMainMenu(menuOption);

            // Get user menu selection.
            userReturn = workingDisplay?.GetUserSelection(menuOption);

            // Process user input value.
            if (userReturn != null)
            {
                switch (userReturn.GetValueOrDefault(Utility.OperationState.INVALID_OPTION))
                {
                case Utility.OperationState.REGISTER:
                    RegisterNewCustomer();
                    break;

                case Utility.OperationState.CHANGE_USER:
                    SwitchCustomers();
                    break;

                case Utility.OperationState.OPEN_ACCOUNT:
                    OpenNewAccount();
                    break;

                case Utility.OperationState.CLOSE_ACCOUNT:
                    CloseAccount();
                    break;

                case Utility.OperationState.DEPOSIT:
                    DepositToAccount();
                    break;

                case Utility.OperationState.WITHDRAW:
                    WithdrawFromAccount();
                    break;

                case Utility.OperationState.TRANSFER:
                    TransferBetweenAccounts();
                    break;

                case Utility.OperationState.PAY_LOAN:
                    PayLoanInstallment();
                    break;

                case Utility.OperationState.DISPLAY_ACCOUNTS:
                    DisplayCustomerAccounts();
                    break;

                case Utility.OperationState.DISPLAY_TRANSACTIONS:
                    DisplayTransactionsForAccount();
                    break;

                case Utility.OperationState.EXIT_PROGRAM:
                    isGameLoopActive = false;
                    break;

                case Utility.OperationState.INVALID_OPTION:
                default:
                    InvalidSelection();
                    break;
                }
            }
            else
            {
                InvalidSelection();
            }

            return(isGameLoopActive);
        }
        /// <summary>
        /// Gets the current selection option for Main Menu.
        /// </summary>
        /// <returns>Returns bit-flag set enumerator representing all avaliable menu options.</returns>
        private Utility.MainMenuOptions GetCurrentMainMenuOptions()
        {
            Utility.MainMenuOptions result = 0;

            // Check if new customers can be created.
            if (workingCustomerStorage != null)
            {
                result |= Utility.MainMenuOptions.REGISTER_NEW_CUSTOMER;

                // Check if more that one customer exists to switch between.
                if (workingCustomerStorage.GetAllCustomers().Length > 1)
                {
                    result |= Utility.MainMenuOptions.CHANGE_CUSTOMER;
                }
            }

            // Check if current customer exists.
            if (activeCustomer != null)
            {
                // Check if accounts can be created.
                if (workingAccountStorage != null)
                {
                    result |= Utility.MainMenuOptions.OPEN_NEW_ACCOUNT;
                    List <Account> allAccounts = activeCustomer.GetAllAccounts();

                    // Check if customer has accounts that can be closed.
                    if (allAccounts.Count > 0)
                    {
                        result |= Utility.MainMenuOptions.CLOSE_ACCOUNT;
                        result |= Utility.MainMenuOptions.DISPLAY_ALL_ACCOUNTS;
                        result |= Utility.MainMenuOptions.DISPLAY_ALL_TRANSACTIONS;

                        // Check if customer has more that one account, to allow transferring.
                        if (allAccounts.Count > 1)
                        {
                            // Check if atleast two accounts can be part of transfer.
                            if (CheckCustomerAccountsForTransferable(allAccounts))
                            {
                                result |= Utility.MainMenuOptions.TRANSFER_AMOUNT;
                            }
                        }

                        // Check if customer has a depositable account.
                        if (CheckCustomerAccountsForDepositable(allAccounts))
                        {
                            result |= Utility.MainMenuOptions.DEPOSIT_AMOUNT;
                        }

                        // Check if customer has a withdrawable account.
                        if (CheckCustomerAccountsForWithdrawable(allAccounts))
                        {
                            result |= Utility.MainMenuOptions.WITHDRAW_AMOUNT;
                        }

                        // Check if customer has a loan account for paying installments to.
                        if (CheckCustomerAccountsForLoanPayable(allAccounts))
                        {
                            result |= Utility.MainMenuOptions.PAY_LOAN_INSTALLMENT;
                        }
                    }
                }
            }

            // Enable exit program.
            result |= Utility.MainMenuOptions.EXIT_PROGRAM;

            return(result);
        }
示例#4
0
        public Utility.OperationState GetUserSelection(Utility.MainMenuOptions menuOptions)
        {
            Utility.OperationState result = Utility.OperationState.INVALID_OPTION;

            // Wait for user input.
            Console.Write("Please select an option: ");
            string inputLine  = Console.ReadLine().Trim();
            int    inputValue = -1;

            // Check first value for selected user input.
            if (inputLine.Length > 0)
            {
                if (int.TryParse(inputLine.Substring(0, 1), out inputValue))
                {
                    // Check inputted value against avaliable options.
                    switch (inputValue)
                    {
                    case 1:
                        // Register new account.
                        if ((menuOptions & Utility.MainMenuOptions.REGISTER_NEW_CUSTOMER) == Utility.MainMenuOptions.REGISTER_NEW_CUSTOMER)
                        {
                            result = Utility.OperationState.REGISTER;
                        }
                        break;

                    case 2:
                        // Register new account.
                        if ((menuOptions & Utility.MainMenuOptions.CHANGE_CUSTOMER) == Utility.MainMenuOptions.CHANGE_CUSTOMER)
                        {
                            result = Utility.OperationState.CHANGE_USER;
                        }
                        break;

                    case 3:
                        // Open new account.
                        if ((menuOptions & Utility.MainMenuOptions.OPEN_NEW_ACCOUNT) == Utility.MainMenuOptions.OPEN_NEW_ACCOUNT)
                        {
                            result = Utility.OperationState.OPEN_ACCOUNT;
                        }
                        break;

                    case 4:
                        // Close account.
                        if ((menuOptions & Utility.MainMenuOptions.CLOSE_ACCOUNT) == Utility.MainMenuOptions.CLOSE_ACCOUNT)
                        {
                            result = Utility.OperationState.CLOSE_ACCOUNT;
                        }
                        break;

                    case 5:
                        // Deposit.
                        if ((menuOptions & Utility.MainMenuOptions.DEPOSIT_AMOUNT) == Utility.MainMenuOptions.DEPOSIT_AMOUNT)
                        {
                            result = Utility.OperationState.DEPOSIT;
                        }
                        break;

                    case 6:
                        // Withdraw.
                        if ((menuOptions & Utility.MainMenuOptions.WITHDRAW_AMOUNT) == Utility.MainMenuOptions.WITHDRAW_AMOUNT)
                        {
                            result = Utility.OperationState.WITHDRAW;
                        }
                        break;

                    case 7:
                        // Transfer.
                        if ((menuOptions & Utility.MainMenuOptions.TRANSFER_AMOUNT) == Utility.MainMenuOptions.TRANSFER_AMOUNT)
                        {
                            result = Utility.OperationState.TRANSFER;
                        }
                        break;

                    case 8:
                        // Pay loan.
                        if ((menuOptions & Utility.MainMenuOptions.PAY_LOAN_INSTALLMENT) == Utility.MainMenuOptions.PAY_LOAN_INSTALLMENT)
                        {
                            result = Utility.OperationState.PAY_LOAN;
                        }
                        break;

                    case 9:
                        // Display accounts.
                        if ((menuOptions & Utility.MainMenuOptions.DISPLAY_ALL_ACCOUNTS) == Utility.MainMenuOptions.DISPLAY_ALL_ACCOUNTS)
                        {
                            result = Utility.OperationState.DISPLAY_ACCOUNTS;
                        }
                        break;

                    case 0:
                        // Display transactions.
                        if ((menuOptions & Utility.MainMenuOptions.DISPLAY_ALL_TRANSACTIONS) == Utility.MainMenuOptions.DISPLAY_ALL_TRANSACTIONS)
                        {
                            result = Utility.OperationState.DISPLAY_TRANSACTIONS;
                        }
                        break;

                    default:
                        result = Utility.OperationState.INVALID_OPTION;
                        break;
                    }
                }
                else if (char.ToUpper(inputLine[0]) == 'Q')
                {
                    // Exit program called.
                    result = Utility.OperationState.EXIT_PROGRAM;
                }
            }

            return(result);
        }