public async Task Execute(DepositInput input) { IAccount account = await _accountRepository.Get(input.AccountId); if (account == null) { _outputHandler.Error($"The account {input.AccountId} does not exist or is already closed."); return; } ICredit credit = account.Deposit(_entityFactory, input.Amount); await _accountRepository.Update(account, credit); // Publish the event to the enterprice service bus await _serviceBus.PublishEventAsync(new Shared.Events.DepositCompleted() { AccountId = input.AccountId, Amount = input.Amount.ToMoney().ToDecimal() }); await _unitOfWork.Save(); DepositOutput output = new DepositOutput( credit, account.GetCurrentBalance() ); _outputHandler.Default(output); }
private void BuildOutput(ICredit credit, IAccount account) { var output = new DepositOutput( credit, account.GetCurrentBalance()); this._depositOutputPort.Standard(output); }
public void Default(DepositOutput output) { ViewModel = new ObjectResult(new DepositResponse( output.Transaction.Amount, output.Transaction.Description, output.Transaction.TransactionDate, output.UpdatedBalance )); }
private void BuildOutput(ICredit credit, IAccount account) { var output = new DepositOutput( credit, account.GetCurrentBalance() ); _outputHandler.Standard(output); }
public void Standard(DepositOutput depositOutput) { var depositResponse = new DepositResponse( depositOutput.Transaction.Amount.ToMoney().ToDecimal(), depositOutput.Transaction.Description, depositOutput.Transaction.TransactionDate, depositOutput.UpdatedBalance.ToDecimal()); ViewModel = new ObjectResult(depositResponse); }
/// <summary> /// </summary> /// <param name="depositOutput"></param> public void Standard(DepositOutput depositOutput) { var depositEntity = (Credit)depositOutput.Transaction; var depositResponse = new DepositResponse( depositEntity.Amount.ToMoney().ToDecimal(), Credit.Description, depositEntity.TransactionDate, depositOutput.UpdatedBalance.ToDecimal()); this.ViewModel = new ObjectResult(depositResponse); }
public void Default(DepositOutput depositOutput) { var depositResponse = new DepositResponse( depositOutput.Transaction.Amount, depositOutput.Transaction.Description, depositOutput.Transaction.TransactionDate, depositOutput.UpdatedBalance ); ViewModel = new ObjectResult(depositResponse); }
public async Task <IActionResult> Deposit([FromRoute] Guid accountId, DepositRequest request) { if (!ModelState.IsValid) { return(View()); } DepositOutput output = await _depositUseCase.Execute( request.AccountId, request.Amount); _presenter.Populate(output, this); return(_presenter.ViewModel); }
public void Populate(DepositOutput output) { if (output == null) { ViewModel = new NoContentResult(); return; } ViewModel = new ObjectResult(new CurrentAccountBalanceModel( output.Transaction.Amount, output.Transaction.Description, output.Transaction.TransactionDate, output.UpdatedBalance )); }
public async Task Deposit_ValidAccount_ShouldCompleteTask() { //ARRANGE var customerId = Guid.NewGuid(); var account = new Account(customerId); var amount = new Amount(10); _accountReadOnlyRepository.Setup(m => m.Get(account.Id)).Returns(Task.FromResult(account)); _accountWriteOnlyRepository.Setup(m => m.Update(account, It.IsAny <Credit>())).Returns(Task.CompletedTask); //ACT DepositOutput outPut = await depositUseCase.Execute(account.Id, amount); //ASSERT _accountReadOnlyRepository.Verify(v => v.Get(account.Id), Times.Once()); _accountWriteOnlyRepository.Verify(v => v.Update(account, It.IsAny <Credit>()), Times.Once()); Assert.Equal(amount.ToString(), outPut.UpdatedBalance.ToString()); Assert.NotNull(outPut.Transaction); }
public async void Deposit_Valid_Amount(string accountId, decimal amount) { var mockAccountReadOnlyRepository = new Mock <IAccountReadOnlyRepository>(); var mockAccountWriteOnlyRepository = new Mock <IAccountWriteOnlyRepository>(); Account account = new Account(Guid.Parse(accountId)); mockAccountReadOnlyRepository.SetupSequence(e => e.Get(It.IsAny <Guid>())) .ReturnsAsync(account); DepositUseCase sut = new DepositUseCase( mockAccountReadOnlyRepository.Object, mockAccountWriteOnlyRepository.Object ); DepositOutput output = await sut.Execute( Guid.Parse(accountId), amount); Assert.Equal(100, output.UpdatedBalance); }
public async Task Execute(DepositInput input) { IAccount account = await _accountRepository.Get(input.AccountId); if (account == null) { _outputHandler.Error($"The account {input.AccountId} does not exist or is already closed."); return; } ICredit credit = account.Deposit(_entityFactory, input.Amount); await _accountRepository.Update(account, credit); await _unitOfWork.Save(); DepositOutput output = new DepositOutput( credit, account.GetCurrentBalance()); _outputHandler.Default(output); }
public void Standard(DepositOutput output) { Deposits.Add(output); }
public void Populate(DepositOutput response, Controller controller) { ViewModel = controller.View(); }
public void Standard(DepositOutput output) => this.StandardOutput = output;
public void Default(DepositOutput output) { Deposits.Add(output); }
public void Standard(DepositOutput output) => this.Deposits.Add(output);