//v1
        internal static void CreateAndOpenAccount(string accNo, string accName, AccountType type, Currencies accCurr)
        {
            AccountFactoryArgs args = new AccountFactoryArgs()
            {
                AccountCurrency = accCurr,
                AccountNumber   = accNo,
                AccountName     = accName,
                AccountType     = type
            };
            Account newAccount = AccountFactory.CreateAccount(args);

            InMemoryDataStore.Accounts.Add(newAccount);
        }
        /// <summary>
        /// Creates an Account
        /// </summary>
        /// <param name="args">Account Args</param>
        /// <returns>Account</returns>
        internal static Account CreateAccount(AccountFactoryArgs args)
        {
            Account res = null;

            switch (args.AccountType)
            {
            case AccountType.CustomerAccount:
                res = new CustomerAccount(args.AccountNumber, args.AccountName, args.AccountCurrency);
                break;

            case AccountType.CorporateAccount:
                res = new CorporateAccount(args.AccountNumber, args.AccountName, args.AccountCurrency);
                break;

            case AccountType.SuspenseAccount:
                res = new SuspenseAccount(args.AccountNumber, args.AccountName, args.AccountCurrency);
                break;
            }
            return(res);
        }