public async Task <Result <string> > PerformOperationAsync(LancamentoRequest lancamentoRequest, CancellationToken cancellationToken) { if (lancamentoRequest == null) { return(new Result <string>(null, HttpStatusCode.BadRequest, Failure.GenerateOneFailure("Object is null."))); } Result <decimal> result; switch (lancamentoRequest.EOperacao) { case EOperacao.Deposito: { result = await _lancamentoService.DepositAsync(lancamentoRequest); break; } case EOperacao.Saque: { result = await _lancamentoService.WithdrawAsync(lancamentoRequest); break; } case EOperacao.Transferencia: { result = await _lancamentoService.TransferAsync(lancamentoRequest); break; } default: return(new Result <string>(null, HttpStatusCode.BadRequest, Failure.GenerateOneFailure("Operation kind not supported."))); } if (!result.StatusCode.IsSuccessStatusCode()) { return(new Result <string>(null, result.StatusCode, result.Failures)); } return (await _lancamentoService.InsertOneAsync(lancamentoRequest, cancellationToken)); }