public async Task Handler(AdicionarLancamentoCommand request) { var lancamento = new Lancamento(request.Id, request.Data, request.Valor, request.Descricao, request.Conta, request.Tipo); if (!EntidadeValida(lancamento)) { return; } await _lancamentoRepository.Adicionar(lancamento).ConfigureAwait(false); if (Commit()) { await _mediator.PublicarEvento(new LancamentoAdicionadoEvent(lancamento.Id, lancamento.Data, lancamento.Valor, lancamento.Descricao, lancamento.Conta, lancamento.Tipo)).ConfigureAwait(false); } }
public async Task <IActionResult> Create(LancamentoViewModel lancamentoViewModel) { if (!ModelState.IsValid) { return(View(lancamentoViewModel)); } DateTime novaDtaVencimento = lancamentoViewModel.DataVencimento; for (int i = 0; i <= lancamentoViewModel.QtdeParcela; i++) { lancamentoViewModel.Ativo = true; lancamentoViewModel.DataCadastro = DateTime.Now; lancamentoViewModel.DataVencimento = novaDtaVencimento.AddMonths(i); var lancamento = _mapper.Map <Lancamento>(lancamentoViewModel); await _lancamentoRepository.Adicionar(lancamento); } TempData["MensagemSucesso"] = "Salvo com sucesso"; return(RedirectToAction(nameof(Index))); }
public async Task <bool> Handle(AdicionarLancamentoCommand request, CancellationToken cancellationToken) { var lancamento = new Lancamentos(request.Valor); var titularContaOrigem = _contaRepository.ObterTitularDaContaPorCPF(request.OrigemConta.Cpf).Result; var titularContaDestino = _contaRepository.ObterTitularDaContaPorCPF(request.DestinoConta.Cpf).Result; if (request.OrigemConta.Cpf.Equals(request.DestinoConta.Cpf) && request.OrigemConta.Numero.Equals(request.DestinoConta.Numero)) { Notificar("Conta origem e destino possuem os mesmos dados, verifique o cpf e o numero da conta"); return(false); } if (titularContaOrigem == null) { Notificar("Conta origem não existe no CPF informado"); } if (titularContaDestino == null) { Notificar("Conta destino não existe no CPF informado"); } if (ExisteNotificacao()) { return(false); } var contaO = ContaCorrente.ContaFactory.AtualizarConta( titularContaOrigem.ContaId, titularContaOrigem.Id, titularContaOrigem, titularContaOrigem.ContaCorrente.Numero, titularContaOrigem.ContaCorrente.Saldo); var contaD = ContaCorrente.ContaFactory.AtualizarConta( titularContaDestino.ContaId, titularContaDestino.Id, titularContaDestino, titularContaDestino.ContaCorrente.Numero, titularContaDestino.ContaCorrente.Saldo); lancamento.AtribuirConta(contaO); if (!ExecutarValidacao(lancamento) || !ExecutarValidacao(contaO) || !ExecutarValidacao(contaD)) { return(false); } contaO.RealizarTransferencia(contaD, lancamento); using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { await _contaRepository.Atualizar(contaO); await _contaRepository.Atualizar(contaD); await _lancamentoRepository.Adicionar(lancamento); scope.Complete(); scope.Dispose(); } return(true); }
public Lancamento Adicionar(Lancamento entity) { //Tudo : Adicionar regra de negócio return _lancamentoRepository.Adicionar(entity); }
public void Adicionar(Lancamento lancamento) { repository.Adicionar(lancamento); }