Exemplo n.º 1
0
        public async Task Execute(WithdrawInput input)
        {
            IAccount account;
            IDebit   debit;

            try
            {
                account = await _accountRepository.Get(input.AccountId);

                debit = account.Withdraw(_entityFactory, input.Amount);
            }
            catch (AccountNotFoundException notFoundEx)
            {
                _outputPort.NotFound(notFoundEx.Message);
                return;
            }
            catch (MoneyShouldBePositiveException outOfBalanceEx)
            {
                _outputPort.OutOfBalance(outOfBalanceEx.Message);
                return;
            }

            await _accountRepository.Update(account, debit);

            await _unitOfWork.Save();

            BuildOutput(debit, account);
        }
Exemplo n.º 2
0
        public async Task Execute(WithdrawInput input)
        {
            try
            {
                var account = await _accountRepository.Get(input.AccountId);

                var debit = await _accountService.Withdraw(account, input.Amount);

                await _unitOfWork.Save();

                BuildOutput(debit, account);
            }
            catch (AccountNotFoundException notFoundEx)
            {
                _outputPort.NotFound(notFoundEx.Message);
                return;
            }
            catch (MoneyShouldBePositiveException outOfBalanceEx)
            {
                _outputPort.OutOfBalance(outOfBalanceEx.Message);
                return;
            }
        }