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)));
        }
示例#3
0
        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);
        }
示例#4
0
 public Lancamento Adicionar(Lancamento entity)
 {
     //Tudo : Adicionar regra de negócio           
     return _lancamentoRepository.Adicionar(entity);
 }
示例#5
0
 public void Adicionar(Lancamento lancamento)
 {
     repository.Adicionar(lancamento);
 }