public async Task Execute(RegisterInput input) { ICustomer customer; if (_userService.GetCustomerId() is CustomerId customerId) { try { customer = await _customerRepository.GetBy(customerId); _outputPort.CustomerAlreadyRegistered($"Customer already exists."); return; } catch (CustomerNotFoundException) { } } customer = _entityFactory.NewCustomer(input.SSN, _userService.GetUserName()); var account = _entityFactory.NewAccount(customer); var credit = account.Deposit( _entityFactory, input.InitialAmount); customer.Register(account); var user = _entityFactory.NewUser( customer, _userService.GetExternalUserId()); await _customerRepository.Add(customer); await _accountRepository.Add(account, credit); await _userRepository.Add(user); await _unitOfWork.Save(); BuildOutput(_userService.GetExternalUserId(), customer, account); }
public async Task Execute(RegisterInput input) { if (_userService.GetCustomerId() is CustomerId customerId) { if (await _customerService.IsCustomerRegistered(customerId)) { _outputPort.CustomerAlreadyRegistered($"Customer already exists."); return; } } var customer = await _customerService.CreateCustomer(input.SSN, _userService.GetUserName()); var account = await _accountService.OpenCheckingAccount(customer.Id, input.InitialAmount); var user = await _securityService.CreateUserCredentials(customer.Id, _userService.GetExternalUserId()); customer.Register(account.Id); await _unitOfWork.Save(); BuildOutput(_userService.GetExternalUserId(), customer, account); }