/// <summary> /// Create client for particular bank /// </summary> /// <param name="clientDto"></param> /// <returns></returns> public async Task <ClientResponseDto> CreateClient(ClientRequestDto clientDto) { try { var userEntity = _mapper.Map <User>(clientDto); var clientEntity = _mapper.Map <Client>(clientDto); var usernameExist = _bankContext.Users.FirstOrDefault(x => x.UserName == userEntity.UserName); if (usernameExist != null) { throw new Exception("Username is already taken"); } userEntity.CreatedDate = DateTime.Now; _bankContext.Add(userEntity); _bankContext.SaveChanges(); clientEntity.UserId = userEntity.Id; clientEntity.CreatedDate = DateTime.Now; _bankContext.Add(clientEntity); _bankContext.SaveChanges(); return(new ClientResponseDto { UserName = userEntity.UserName, ClientId = clientEntity.Id, UserId = userEntity.Id }); } catch (Exception ex) { throw new Exception(ex.Message); } }
/// <summary> /// Add new client's account /// </summary> /// <param name="accountCreationRequestDto"></param> /// <param name="accountNumber"></param> /// <returns></returns> public async Task <AccountResponseDto> AddClientAccount(AccountCreationRequestDto accountCreationRequestDto, int accountNumber) { var accountEntity = _mapper.Map <Account>(accountCreationRequestDto); accountEntity.AccountNumber = accountNumber; accountEntity.CreatedDate = DateTime.Now; _bankContext.Add(accountEntity); _bankContext.SaveChanges(); var depositAccountSetting = _mapper.Map <DepositAccountSetting>(accountCreationRequestDto); depositAccountSetting.AccountId = accountEntity.Id; depositAccountSetting.CreatedDate = DateTime.Now; _bankContext.Add(depositAccountSetting); _bankContext.SaveChanges(); return(new AccountResponseDto { AccountNumber = accountEntity.AccountNumber, Balance = accountEntity.Balance, }); }