Exemple #1
0
        private static void AccountOptions(string accNum, ReadifyBank Bank)
        {
            var end = false;

            while (!end)
            {
                try
                {
                    var account = Bank.AccountList.Where(a => a.AccountNumber == accNum).First();
                    Console.WriteLine("Customer Details");
                    Console.WriteLine(new string('-', 35));
                    Console.WriteLine("1) Deposit \n2) Withdrawal \n3) Transfer \n4) Balance \n5) Calculate Interest \n6) Mini Statement \n7) Close Account \n8) Back");
                    Console.WriteLine(new string('-', 35));
                    int Choice = 0;
                    int.TryParse(Console.ReadLine(), out Choice);
                    Console.Clear();
                    switch (Choice)
                    {
                    case 1:
                        Console.WriteLine("Enter deposit amount");
                        decimal deposit = 0;
                        if (decimal.TryParse(Console.ReadLine(), out deposit))
                        {
                            Console.WriteLine("Enter discription");
                            var discription = Console.ReadLine();
                            Bank.PerformDeposit(account, deposit, discription, DateTimeOffset.Now);
                            Console.Clear();
                        }
                        else
                        {
                            Console.WriteLine("Deposit not possible amount is invalid");
                        }
                        break;

                    case 2:
                        Console.WriteLine("Enter withdrawal amount");
                        decimal withdrawal = 0;
                        if (decimal.TryParse(Console.ReadLine(), out withdrawal))
                        {
                            Console.WriteLine("Enter discription");
                            var discription = Console.ReadLine();
                            Bank.PerformWithdrawal(account, withdrawal, discription, DateTimeOffset.Now);
                            Console.Clear();
                        }
                        else
                        {
                            Console.WriteLine("Withdrawal not possible amount is invalid");
                        }
                        break;

                    case 3:
                        Console.WriteLine("Enter account number to which you wish to transfer funds");
                        var accnum2 = Console.ReadLine();
                        if (Bank.AccountList.Where(a => a.AccountNumber == accnum2).Any())
                        {
                            Console.WriteLine("Enter transfer amount");
                            decimal transferamt = 0;
                            if (decimal.TryParse(Console.ReadLine(), out transferamt))
                            {
                                Console.WriteLine("Enter discription");
                                var discription = Console.ReadLine();
                                var account2    = Bank.AccountList.Where(a => a.AccountNumber == accnum2).First();
                                Bank.PerformTransfer(account, account2, transferamt, discription, DateTimeOffset.Now);
                            }
                            else
                            {
                                Console.WriteLine("Transfer not possible invalid amount");
                            }
                        }
                        else
                        {
                            Console.WriteLine("Invalid account number");
                        }
                        break;

                    case 4:
                        DisplayAccount(account);
                        break;

                    case 5:
                        var interest = Bank.CalculateInterestToDate(account, DateTimeOffset.Now);
                        Console.WriteLine("Interest to date for {0} - {1}", account.AccountNumber, interest);
                        break;

                    case 6:
                        IEnumerable <IStatementRow> ministatement = Bank.GetMiniStatement(account);
                        foreach (IStatementRow sr in ministatement)
                        {
                            Console.WriteLine("Account Number - {0} \nDate - {1} \nAmount - {2} \nBalance -{3} \nDiscription - {4}", sr.Account.AccountNumber, sr.Date, sr.Amount, sr.Balance, sr.Description);
                            Console.WriteLine(new string('*', 35));
                        }
                        Console.Clear();
                        break;

                    case 7:
                        //Press y for yes
                        Console.WriteLine("Are you sure you want to delete this account?\nYes(Y)");
                        var choice = Console.ReadLine();
                        if (choice.ToUpper().Equals("Y"))
                        {
                            IEnumerable <IStatementRow> statement = Bank.CloseAccount(account, DateTimeOffset.Now);
                            foreach (IStatementRow sr in statement)
                            {
                                Console.WriteLine("Account Number - {0} \nDate - {1} \nAmount - {2} \nBalance -{3} \nDiscription - {4}", sr.Account.AccountNumber, sr.Date, sr.Amount, sr.Balance, sr.Description);
                                Console.WriteLine(new string('*', 35));
                            }
                            Console.WriteLine("Account closed");
                            end = true;
                            Console.Clear();
                        }
                        break;

                    case 8:
                        end = true;
                        break;
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message.ToString());
                }
            }
        }