Beispiel #1
0
        public Bank(string name)
        {
            BankName = name;

            // there are two existing customer for

            Person person1 = new Person(_person1Name);

            person1.UserName = "******";
            person1.Email    = "*****@*****.**";
            person1.Password = "******";

            Person person2 = new Person(_person2Name);

            person2.UserName = "******";
            person2.Email    = "*****@*****.**";
            person2.Password = "******";

            var money1 = new Money(2500);
            var money2 = new Money(1800);

            string          accountActivity = "create new account";
            BankTransection transection1    = new BankTransection(accountActivity, money1);
            BankTransection transection2    = new BankTransection(accountActivity, money2);

            Account acount1 = new Account(money1, person1);

            acount1.TransectionType.Add(transection1);

            Account acount2 = new Account(money2, person2);

            acount2.TransectionType.Add(transection2);

            List <Account> accountList = new List <Account>();

            accountList.Add(acount1);
            accountList.Add(acount2);

            _inMemoryDb = accountList;
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.DarkGreen;
            Console.WriteLine("\n************************************");
            Console.WriteLine("WELCOME TO XYZ BANKING CORPORATION");
            Console.WriteLine("************************************\n");
            Console.ResetColor();

            Console.ForegroundColor = ConsoleColor.DarkYellow;
            Console.WriteLine("Test User Detials");
            Console.WriteLine("\n1. Ishwor Ojha\n\nusername: user1\npassword: password1\n\n2. Raj Baral\n\nusername: user2\npassword: password2");
            Console.ResetColor();

            /* Test username and password:
             * ----------------------------
             | Id | username  | password  |
             |----------------------------|
             | 1  | user1     | password1 |
             | 2  | user2     | password2 |
             | -----------------------------
             */


            var bankName          = "";
            var bank              = new Bank(bankName);
            var currentPersonName = "";
            var personBalance     = 0;
            var currentUser       = new Person(currentPersonName);
            var currentAmount     = new Money(personBalance);

            var loggedInUserAct = new Account(currentAmount, currentUser);

            var commands = new ICommand[]
            {
                new CreateNewAccountCommand(),
                new LoginCommand(),
                new CheckBalanceCommand(),
                new DepositCommand(),
                new WithdrawCommand(),
                new TransectionDetailsCommand(),
                new LogoutCommand(),
                new ExitCommand()
            };

            while (true)
            {
                try
                {
                    Console.WriteLine("\nWhat would you like to do today?\n");

                    // This loop creates a list of commands:
                    for (int i = 0; i < commands.Length; i++)
                    {
                        Console.WriteLine("{0}. {1}", i + 1, commands[i].Description);
                    }

                    // Read until the input is valid.
                    var userChoice   = string.Empty;
                    var commandIndex = -1;
                    do
                    {
                        userChoice = Console.ReadLine();
                        int selectedOption;
                        if (int.TryParse(userChoice, out selectedOption))
                        {
                            if (selectedOption == 1)
                            {
                                //create new account
                                Console.WriteLine("Awesome! Let's create new account for you..!");
                                Console.WriteLine("\nYour Full Name:");
                                var personName = Console.ReadLine();

                                Console.WriteLine("\nYour Email Address:");
                                var personEmail = Console.ReadLine();

                                Console.WriteLine("\nThe amount you would like to deposit?");
                                var amount = Convert.ToDecimal(Console.ReadLine());

                                Console.WriteLine("\nSelect your user name?");
                                var userName = Console.ReadLine();

                                Console.WriteLine("\nSelect your password?");
                                var password = Console.ReadLine();

                                var person = new Person(personName);
                                person.UserName = userName;
                                person.Password = password;
                                person.Email    = personEmail;

                                var money = new Money(amount);
                                person.Money = money;
                                var activityType   = "create new account";
                                var createdAccount = bank.CreateAccount(person, money);

                                var bankTransection = new BankTransection(activityType, money);
                                createdAccount.TransectionType.Add(bankTransection);

                                Console.ForegroundColor = ConsoleColor.Green;
                                Console.WriteLine("Congratulation {0} your account has been created successfully!\nCurrent Balance Available: {1}\nAccount Name: {2}\nAccount Owner: {3}\nUser name: {4}\nPassword: {5}",
                                                  createdAccount.Owner.Name, createdAccount.Money.Value, createdAccount.Name, createdAccount.Owner.Name, createdAccount.Owner.UserName, createdAccount.Owner.Password);
                                Console.ResetColor();
                                Console.WriteLine(" ");
                            }
                            else if (selectedOption == 2)
                            {
                                // log in
                                // check if user already logged in
                                if (loggedInUserAct.Owner.UserName != null)
                                {
                                    Console.ForegroundColor = ConsoleColor.Red;
                                    Console.WriteLine("you were already logged in!");
                                    Console.ResetColor();
                                }
                                else
                                {
                                    //Login Attempts counter
                                    int loginAttempts = 0;

                                    //Simple iteration upto three times
                                    for (int i = 0; i < 3; i++)
                                    {
                                        Console.WriteLine("Enter username");
                                        string username = Console.ReadLine();
                                        Console.WriteLine("Enter password");
                                        string password = Console.ReadLine();

                                        loggedInUserAct = bank._inMemoryDb.Find(a => a.Owner.UserName == username && a.Owner.Password == password);
                                        if (loggedInUserAct == null)
                                        {
                                            Console.WriteLine("Invalid username or password.");
                                            loginAttempts++;
                                        }
                                        else
                                        {
                                            Console.ForegroundColor = ConsoleColor.DarkCyan;
                                            Console.WriteLine("\nWelcome {0}", loggedInUserAct.Owner.Name);
                                            Console.ResetColor();
                                            break;
                                        }
                                    }

                                    //Display the result
                                    if (loginAttempts > 2)
                                    {
                                        Console.ForegroundColor = ConsoleColor.Red;
                                        Console.WriteLine("We are not able to verify your identity! Please reset your password or try again later");
                                        Console.ResetColor();
                                        Console.ReadKey();
                                    }
                                }
                            }
                            else if (selectedOption == 3)
                            {
                                // check balance
                                if (loggedInUserAct.Owner.UserName != null)
                                {
                                    var checkBalance = bank.BalanceInquiry(loggedInUserAct.Owner);

                                    foreach (var item in checkBalance)
                                    {
                                        Console.ForegroundColor = ConsoleColor.Green;
                                        Console.WriteLine("Your available balance in account {0} is: ${1}\n", item.Name, string.Format("{0:#.00}", Convert.ToDecimal(item.Money.Value)));
                                        Console.ResetColor();
                                    }
                                }
                                else
                                {
                                    Console.ForegroundColor = ConsoleColor.Red;
                                    Console.WriteLine("you need to login first");
                                    Console.ResetColor();
                                }
                            }
                            else if (selectedOption == 4)
                            {
                                // Deposit
                                if (loggedInUserAct.Owner.UserName != null)
                                {
                                    Console.WriteLine("Choose the account you would like to deposit");
                                    decimal depositAmt = Convert.ToDecimal(Console.ReadLine());

                                    var moneyDeposit    = new Money(depositAmt);
                                    var account         = new Money(loggedInUserAct.Money.Value);
                                    var accountActivity = "Deposit";

                                    bank.Deposit(loggedInUserAct, moneyDeposit);

                                    // record deposit activity
                                    var bankTransection = new BankTransection(accountActivity, moneyDeposit);
                                    loggedInUserAct.AddTransections(bankTransection);

                                    Console.ForegroundColor = ConsoleColor.Green;
                                    Console.WriteLine("Deposit completed! The amount of ${0} has been added to your account!", string.Format("{0:#.00}", Convert.ToDecimal(depositAmt)));
                                    Console.ResetColor();
                                    Console.WriteLine(" ");
                                }
                                else
                                {
                                    Console.ForegroundColor = ConsoleColor.Red;
                                    Console.WriteLine("you need to login first");
                                    Console.ResetColor();
                                }
                            }
                            else if (selectedOption == 5)
                            {
                                // Withdraw
                                if (loggedInUserAct.Owner.UserName != null)
                                {
                                    Console.WriteLine("How much would you like to withdraw?");
                                    decimal withdrawAmt = Convert.ToDecimal(Console.ReadLine());

                                    var moneyToWithdraw     = new Money(withdrawAmt);
                                    var account             = new Money(loggedInUserAct.Money.Value);
                                    var accountActivityType = "Withdraw";

                                    bank.Withdraw(loggedInUserAct, moneyToWithdraw);

                                    // record deposit activity
                                    var bankTransection = new BankTransection(accountActivityType, moneyToWithdraw);
                                    loggedInUserAct.AddTransections(bankTransection);

                                    Console.ForegroundColor = ConsoleColor.Green;
                                    Console.WriteLine("Withdraw completed! Your account deducted by: ${0}", string.Format("{0:#.00}", Convert.ToDecimal(withdrawAmt)));
                                    Console.ResetColor();
                                    Console.WriteLine(" ");
                                }
                                else
                                {
                                    Console.ForegroundColor = ConsoleColor.Red;
                                    Console.WriteLine("you need to login first");
                                    Console.ResetColor();
                                }
                            }
                            else if (selectedOption == 6)
                            {
                                // transection history
                                if (loggedInUserAct.Owner.UserName != null)
                                {
                                    var accountTransection = bank.BalanceInquiry(loggedInUserAct.Owner);

                                    foreach (var i in accountTransection.SelectMany(k => k.TransectionType))
                                    {
                                        Console.ForegroundColor = ConsoleColor.Green;
                                        Console.WriteLine("You did {0} on {2} and the amount is ${1}\n", i.TransectionType, string.Format("{0:#.00}", Convert.ToDecimal(i.Money.Value)), i.TransectionDate);
                                        Console.ResetColor();
                                    }
                                }
                                else
                                {
                                    Console.ForegroundColor = ConsoleColor.Red;
                                    Console.WriteLine("you need to login first");
                                    Console.ResetColor();
                                }
                            }
                            else if (selectedOption == 7)
                            {
                                if (loggedInUserAct.Owner.UserName != null)
                                {
                                    Console.ForegroundColor = ConsoleColor.Green;
                                    Console.WriteLine("\nYou are successfully log out!");
                                    Console.ResetColor();
                                    Repeat();
                                }
                                else
                                {
                                    Console.ForegroundColor = ConsoleColor.Red;
                                    Console.WriteLine("you need to login first");
                                    Console.ResetColor();
                                }
                            }
                            else if (selectedOption == 8)
                            {
                                Environment.Exit(0);
                            }
                            else
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("Menu option 1 to 8 only allowed!");
                                Console.ResetColor();
                            }
                        }
                        else
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Console.WriteLine("Invalid Selection! Please select number 1, 2 . . . 8\n");
                            Console.ResetColor();
                        }
                    }while (!int.TryParse(userChoice, out commandIndex) || commandIndex > commands.Length);
                    commands[commandIndex - 1].Execute(bank);
                }
                catch (Exception ex)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Error occured: " + ex.Message);
                    Console.ResetColor();
                }
            }
        }