Пример #1
0
        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);
        }
Пример #2
0
        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);
        }