public static void SaveMoney(bool isTransfer = false)
        {
            OverdraftManagement overdraftManagement = new OverdraftManagement();

            Console.Clear();
            Console.WriteLine("     ACCOUNT DEPOSIT MENU");
            Console.Write("How Much Do You Want To Save: ");

            double amountToSave = Convert.ToDouble(Console.ReadLine());

            overdraftManagement.PayOverdraft(LoggedInAccount, amountToSave);

            LoggedInAccount.AccountBalance += amountToSave;

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine($"You have succesfully Deposited {amountToSave} into your account.");
            Console.WriteLine($"New Balance is {LoggedInAccount.AccountBalance}");
            Menu.ShowContinueMenu();
        }
        public static void Transfer(string accountNumber, double amountToTransfer)
        {
            OverdraftManagement overdraftManagement = new OverdraftManagement();

            try
            {
                AccountHolder accountToTransferTo = FindByAccountNumber(accountNumber);

                if (accountNumber.Equals(LoggedInAccount.AccountNumber))
                {
                    throw new Exception("You cannot make a transfer to yourself");
                }

                if (accountToTransferTo == null)
                {
                    throw new Exception($"Account with account number {accountNumber} not does not exist. Please check and try again");
                }
                else
                {
                    if (LoggedInAccount.AccountBalance < amountToTransfer)
                    {
                        throw new Exception("Insufficient Balance.");
                    }
                    else
                    {
                        Console.Write($"Are you sure you want to transfer {amountToTransfer} to {accountToTransferTo.FirstName} {accountToTransferTo.LastName} (y/n): ");
                        string answer = Console.ReadLine().ToLower().Trim();
                        if (answer.Equals("y"))
                        {
                            if (LoggedInAccount.Pin == 0)
                            {
                                Console.WriteLine("You have to set your pin to continu..");
                                Menu.ShowContinueMenu();
                                ChangePin();
                            }
                            else
                            {
                                Console.Write("Enter your pin: ");
                                int enteredPin = Convert.ToInt32(Console.ReadLine());

                                if (enteredPin == LoggedInAccount.Pin)
                                {
                                    overdraftManagement.PayOverdraft(accountToTransferTo, amountToTransfer);
                                    accountToTransferTo.AccountBalance += amountToTransfer;
                                    LoggedInAccount.AccountBalance     -= amountToTransfer;
                                    Console.ForegroundColor             = ConsoleColor.Green;
                                    Console.WriteLine("Transfer Successful");
                                    Menu.ShowContinueMenu();
                                }
                                else
                                {
                                    throw new Exception("Incorrect pin");
                                }
                            }
                        }
                        else if (answer.Equals("n"))
                        {
                            throw new Exception("Operation Cancelled.");
                        }
                        else
                        {
                            throw new Exception("Invalid input");
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(e.Message);
                Menu.ShowContinueMenu();
            }
        }
        public static void HandleLoggedInAccountHolderMenu(string option)
        {
            LoanManagement      loanManagement      = new LoanManagement();
            OverdraftManagement overdraftManagement = new OverdraftManagement();

            switch (option)
            {
            case "0":
                HandleSubMenu("1");
                break;

            case "1":
                AccountHolderRepository.SaveMoney();
                HandleAccountHolderMenu("2");
                break;

            case "2":
                Menu.ResetMenuSettings();
                Console.WriteLine("     TRANSFER MENU");
                Console.Write("Enter account number: ");
                string accountNumber = Console.ReadLine();
                Console.Write("How much do you want to transfer: ");
                double amountToTransfer = Convert.ToDouble(Console.ReadLine());
                AccountHolderRepository.Transfer(accountNumber, amountToTransfer);
                HandleAccountHolderMenu("2");
                break;

            case "3":
                AccountHolderRepository.WithdrawMoney();
                HandleAccountHolderMenu("2");
                break;

            case "4":
                AccountHolderRepository.CheckBalance();
                HandleAccountHolderMenu("2");
                break;

            case "5":
                ShowLoanServiceMenu();
                string loanOption = Console.ReadLine();
                if (loanOption.Equals("0"))
                {
                    HandleAccountHolderMenu("2");
                }
                else if (loanOption.Equals("1"))
                {
                    ShowLoanMenu();
                    string minOption = Console.ReadLine();
                    if (minOption.Equals("0"))
                    {
                        HandleAccountHolderMenu("2");
                    }
                    else
                    {
                        HandleLoanMenu(minOption);
                    }
                }
                else if (loanOption.Equals("2"))
                {
                    if (loanManagement.checkLoanBalance(AccountHolderRepository.LoggedInAccount.Id, false))
                    {
                        Menu.ResetMenuSettings();
                        Console.WriteLine("     LOAN PAYBACK MENU");
                        Console.Write("How much do you want to pay: ");
                        double amountToPay = Convert.ToDouble(Console.ReadLine());
                        loanManagement.payBackLoan(AccountHolderRepository.LoggedInAccount.Id, amountToPay);
                    }
                    Menu.ShowContinueMenu();
                    HandleAccountHolderMenu("2");
                }
                else if (loanOption.Equals("3"))
                {
                    loanManagement.checkLoanBalance(AccountHolderRepository.LoggedInAccount.Id);
                    Menu.ShowContinueMenu();
                    HandleAccountHolderMenu("2");
                }

                break;

            case "6":
                ResetMenuSettings();
                Console.WriteLine("     OVERDRAFT MENU");
                Console.Write("How much overdraft?: ");
                double overdraftAmount = Convert.ToDouble(Console.ReadLine());
                if (overdraftAmount > 100000)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Overdraft limit exceeded. Maximum overdraft is 100,000");
                }
                else if (overdraftAmount <= AccountHolderRepository.LoggedInAccount.AccountBalance)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Overdraft less than or equal to account balance. Please proceed to withdrawal");
                }
                else
                {
                    if (!overdraftManagement.checkOverdraftBalance(AccountHolderRepository.LoggedInAccount.Id))
                    {
                        overdraftManagement.GetOverdraft(AccountHolderRepository.LoggedInAccount, overdraftAmount);
                    }
                }
                ShowContinueMenu();
                HandleAccountHolderMenu("2");

                break;

            case "7":
                ShowAccountHolderUpdateMenu();
                string updateOption = Console.ReadLine();
                UpdateAccountHolderMenu(AccountHolderRepository.LoggedInAccount.Id, updateOption);
                HandleAccountHolderMenu("2");
                break;

            case "8":
                AccountHolderRepository.ChangePassword();
                HandleAccountHolderMenu("2");
                break;

            case "9":
                AccountHolderRepository.SetPin();
                HandleAccountHolderMenu("2");
                break;

            default:
                break;
            }
        }