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); }
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; } }