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); }
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); }