public Task Handle(RegistrarLancamentoCommand request, CancellationToken cancellationToken) { var obterContaCorrente = _contaCorrenteRepository.GetEntity(x => x.NumeroConta == request.NumeroConta); if (obterContaCorrente == null) { _notifications.Handle(new DomainNotification("Lancamento", "Conta Corrente Inexistente"), cancellationToken); return(Task.CompletedTask); } var obterUltimoLancamento = _lancamentoRepository.ObterUltimoLancamento(obterContaCorrente.Id); var lancamento = new Model.Lancamentos(); if (obterUltimoLancamento == null) { lancamento = Model.Lancamentos.LancamentosFactory.NovoLancamentos(request.Valor, request.TipoOperacao, request.Valor, DateTime.Now, obterContaCorrente.Id); } else { var saldoAtualizado = request.TipoOperacao == Enum.TipoOperacao.CREDITO ? obterUltimoLancamento.Saldo + request.Valor : obterUltimoLancamento.Saldo - request.Valor; lancamento = Model.Lancamentos.LancamentosFactory.NovoLancamentos(request.Valor, request.TipoOperacao, saldoAtualizado, DateTime.Now, obterContaCorrente.Id); } if (!lancamento.EhValido()) { NotificarValidacoesErro(lancamento.ValidationResult); return(Task.CompletedTask); } _lancamentoRepository.Add(lancamento); Commit(); return(Task.CompletedTask); }