public Task ExecuteAsync(Guid accountId, decimal amount, string currency) { var modelState = new ApplicationResult(); if (accountId == Guid.Empty) { modelState.Add(nameof(accountId), "AccountId is required."); } if (currency != Currency.Dollar.Code && currency != Currency.Euro.Code && currency != Currency.Real.Code && currency != Currency.MexicanPeso.Code) { modelState.Add(nameof(currency), $"Currency {currency} is invalid."); } if (amount <= 0) { modelState.Add(nameof(amount), "Amount should be positive and greather than zero."); } if (modelState.IsValid) { return(_useCase.ExecuteAsync(accountId, amount, currency)); } _outputPort?.Invalid(modelState); return(Task.CompletedTask); }
public async Task <IActionResult> Deposit( [FromServices] IDepositMoneyUseCase useCase, [FromRoute][Required] Guid accountId, [FromBody][Required] DepositRequest request) { useCase.SetOutputPort(this); await useCase.ExecuteAsync(accountId, request.Amount, request.Currency); return(this._viewModel !); }