public async Task <ActionResult> DepositMoneyOperation(AccountOperationViewModel data) { var result = await Task.Run(() => this.DepositWithdrawOperation(data, (s, d) => s.DepositMoney(d.AccountNumber, d.Sum))); return(result); }
public async Task <IActionResult> Index(int id, AccountOperationViewModel formModel) { _logger.LogInformation($"Get index operation with id: {id}, view model : {formModel}"); var viewModel = await _mediator.Send(new GetAccountOperationQuery(id, formModel.StartPeriod, formModel.EndPeriod)); ViewBag.CanTransfer = await _mediator.Send(new TransferValidationCommand(id)); ViewBag.CorrectAmount = viewModel.Amount > 0; return(View(viewModel)); }
public async Task Index_Get_WhenIdAndFormModelNotNull() { //arrange var id = 3; var testViewModel = new AccountOperationViewModel() { Operations = GetFakeOperations(), Amount = 20000 }; var loggerMock = new Mock <ILogger <OperationController> >(); var accountMock = new Mock <IAsyncRepository <BankAccount> >(); var mediatorMock = new Mock <IMediator>(); mediatorMock.Setup(m => m.Send(It.IsAny <GetAccountOperationQuery>(), It.IsAny <CancellationToken>())) .ReturnsAsync(testViewModel) .Verifiable(); mediatorMock.Setup(m => m.Send(It.IsAny <TransferValidationCommand>(), It.IsAny <CancellationToken>())) .ReturnsAsync(true) .Verifiable(); var controller = new OperationController(mediatorMock.Object, accountMock.Object, loggerMock.Object); //act var result = await controller.Index(id, testViewModel); //assert var viewResult = Assert.IsType <ViewResult>(result); var model = Assert.IsAssignableFrom <AccountOperationViewModel>(viewResult.Model); Assert.Equal(expected: 20000, model.Amount); Assert.Equal(2, model.Operations.Count); }
private ActionResult DepositWithdrawOperation( AccountOperationViewModel data, Action <IAccountService, AccountOperationViewModel> operation) { if (!ModelState.IsValid) { TempData["isError"] = true; return(View("DepositOrWithdrawMoney")); } try { operation(_accountService, data); TempData["isError"] = false; } catch (Exception e) { ModelState.AddModelError(nameof(data.AccountNumber), e.Message); TempData["isError"] = true; return(View("DepositOrWithdrawMoney")); } return(RedirectToAction(nameof(this.AccountOperations))); }