public async Task <bool> Adicionar(LancamentoOV lancamentoOV) { try { if (!ValidarLancamento.Validar(lancamentoOV, _repositorioDeContaCorrente)) { return(false); } var lancamento = new Lancamento { ContaOrigem = lancamentoOV.ContaOrigem, ContaDestino = lancamentoOV.ContaDestino, Valor = lancamentoOV.Valor }; // inverte a operacao caso o valor seja negativo if (lancamentoOV.Valor < 0) { lancamento.ContaOrigem = lancamentoOV.ContaDestino; lancamento.ContaDestino = lancamentoOV.ContaOrigem; lancamento.Valor *= (-1); } // Alterar o saldo da Origem var contaOrigem = await _repositorioDeContaCorrente.Obter(lancamento.ContaOrigem); contaOrigem.SaldoDaConta -= lancamento.Valor; _repositorioDeContaCorrente.Alterar(contaOrigem); // Alterar o saldo do destino var contaDestino = await _repositorioDeContaCorrente.Obter(lancamento.ContaDestino); contaDestino.SaldoDaConta += lancamento.Valor; _repositorioDeContaCorrente.Alterar(contaDestino); // Adicionar Lancamento _repositorioDeLancamento.Adicionar(lancamento); return(true); } catch (Exception ex) { throw ex; } }