public void GivenValidData_InputCreated()
        {
            var actual = new CalculaJurosInput(
                new ValorInicial(1),
                new Meses(1));

            Assert.NotNull(actual);
        }
        public async Task <IActionResult> CalculaJuros(
            [FromServices] IMediator mediator,
            [FromServices] CalculaJurosPresenter presenter,
            [FromQuery][Required] CalculaJurosRequest request)
        {
            var input = new CalculaJurosInput(
                new ValorInicial(request.ValorInicial),
                new Meses(request.Meses));

            await mediator.PublishAsync(input)
            .ConfigureAwait(false);

            return(presenter.ViewModel);
        }
        public async Task Execute(CalculaJurosInput input)
        {
            if (input is null)
            {
                this._outputPort.WriteError(Messages.InputIsNull);
                return;
            }

            var juro = await _financeiroIntegration.GetTaxaJuros().ConfigureAwait(false);

            decimal valor = input.ValorInicial.ToDecimal();

            for (int n = 0; n < input.Meses.ToInt(); n++)
            {
                valor = (valor * (1 + juro.ToDecimal()));
            }

            Resultado resultado = new Resultado(Convert.ToDecimal(Math.Truncate(100 * valor) / 100));

            this.BuildOutput(resultado);
        }