/// <summary> /// Method creates new account with given parameters and saves data to storage. /// </summary> /// <param name="accountOwner"> /// Account owner - required data to create account. /// </param> /// <param name="type"> /// Account type - required data to create account. /// </param> /// <param name="creator"> /// Account number generation strategy injected as method argument. /// </param> public void OpenAccount(string accountOwner, AccountType type, IAccountNumberCreateService creator) { Account newAccount = AccountMapper.CreateAccount(type, creator.GenerateAccountNumber(AccountDTO.id), accountOwner, 0, 0); AccountDTO.id++; this.repository.Create(newAccount.ToAccountDTO()); }
/// <summary> /// Creating new account according to given account type /// </summary> /// <param name="type">AccountType instance represents account type</param> /// <param name="name">Name of customer</param> /// <param name="surname">Surname of customer</param> /// <param name="email">Email of customer</param> /// <param name="passport">Passport number (additional)</param> public void OpenAccount(AccountEntity account) { CheckIfExist(account); HolderEntity holder = holdersRepository.Read().ToHolder().FirstOrDefault(x => x.IdentificationNumber == account.AccountHolder.IdentificationNumber); if (holder == null) { holder = account.AccountHolder; } account.AccountNumber = numberGenerator.GenerateAccountNumber(); accountsRepository.Create(account.ToDalAccount()); holder.Accounts.Add(account.AccountNumber); //тут заменить для работы с DAL.Fake (был список строк с номерами аккаунтов) holdersRepository.Update(holder.ToDalHolder()); }