Exemplo n.º 1
0
        public void Post(ContaConjuntaDto contaConjunta)
        {
            var usuarioConvidado = _usuarioRepository.Get(null, contaConjunta.EmailUsuarioConvidado);

            if (usuarioConvidado == null)
            {
                _notification.Add("Não foi encontrado nenhum usuário com o e-mail informado.");
                return;
            }

            if (usuarioConvidado.Id == contaConjunta.IdUsuarioEnvio)
            {
                _notification.Add("O e-mail informado não pode ser o mesmo do usuário desta conta");
                return;
            }

            if (_contaConjuntaRepository.Get(null, contaConjunta.IdConta).Any(x => x.IdUsuarioConvidado == usuarioConvidado.Id && contaConjunta.IndicadorAprovado == "A"))
            {
                _notification.Add("O usuário já esta vinculado com esta conta");
                return;
            }

            contaConjunta.IdUsuarioConvidado = usuarioConvidado.Id;

            _contaConjuntaRepository.OpenTransaction();

            _contaConjuntaRepository.Post(contaConjunta);

            var conta = _contaFinanceiraRepository.Get(contaConjunta.IdConta);

            _notificacaoRepository.Post(new NotificacaoDto
            {
                IdTipo           = 1, // Convite para conta conjunta
                IdUsuarioEnvio   = contaConjunta.IdUsuarioEnvio,
                IdUsuarioDestino = contaConjunta.IdUsuarioConvidado,
                Mensagem         = $"Deseja compartilhar sua conta {conta.Nome.ToUpper()} com você",
                ParametrosUrl    = null // Não implementado nessa versão do sistema
            });

            // Cadastra notificações para todos os usuarios (caso seja conta conjunta)
            var msg = $"Enviou um convite para compartilhar a conta {conta.Nome.ToUpper()} com o usuário {usuarioConvidado.Nome}";

            _notificacaoService.Post(contaConjunta.IdUsuarioEnvio, conta.Id, 1, msg, new List <int> {
                contaConjunta.IdUsuarioConvidado
            });                                                                                                                           // 1: Convite para conta conjunta

            _contaConjuntaRepository.CommitTransaction();
        }
        public void Post(TransferenciaDto transferencia)
        {
            var contaOrigem  = _contaFinanceiraRepository.Get(transferencia.IdContaOrigem);
            var contaDestino = _contaFinanceiraRepository.Get(transferencia.IdContaDestino);
            var msg          = $"Transferiu ({transferencia.Descricao} o valor de R$ {transferencia.Valor:##.###,##}) da conta {contaOrigem.Nome.ToUpper()} para a conta {contaDestino.Nome.ToUpper()}";

            _transferenciaRepository.OpenTransaction();
            _notificacaoService.Post(transferencia.IdUsuarioCadastro, contaOrigem.Id, 7, msg); // 7: Cadastro de transferência em conta conjunta
            _notificacaoService.Post(transferencia.IdUsuarioCadastro, contaDestino.Id, 7, msg);
            _transferenciaRepository.Post(transferencia);
            _transferenciaRepository.CommitTransaction();
        }
Exemplo n.º 3
0
        public void Post(LancamentoDto lancamento)
        {
            _lancamentoRepository.OpenTransaction();

            // caso seja conta conjunta aprovada
            AtualizaCategoriasContaConjunta(lancamento.IdConta, lancamento.IdCategoria);

            var conta = _contaFinanceiraRepository.Get(lancamento.IdConta);
            var msg   = $"Cadastrou uma nova {(lancamento.IndicadorReceitaDespesa == "R" ? "receita" : "despesa")} ({lancamento.Descricao}) na conta {conta.Nome.ToUpper()}";

            // Cadastra notificações para todos os usuarios (caso seja conta conjunta)
            _notificacaoService.Post(lancamento.IdUsuarioCadastro, lancamento.IdConta, 4, msg); // 4: Cadastro de lançamento em conta conjunta

            if (string.IsNullOrEmpty(lancamento.IndicadorFixoParcelado))
            {
                _lancamentoRepository.Post(lancamento);
                _lancamentoRepository.CommitTransaction();
                return;
            }

            // get periodos

            if (!lancamento.IdPeriodo.HasValue)
            {
                _notification.Add("Favor informar o periodo para lançamentos fixo/parcelado");
                return;
            }

            var periodo = _lancamentoRepository.GetPeriodo((byte)lancamento.IdPeriodo);

            if (periodo == null)
            {
                _notification.Add("Os dados do periodo informado não foram encontrados");
                return;
            }

            var idCompromisso = _compromissoRepository.Post(new CompromissoDto
            {
                Descricao             = lancamento.Descricao,
                IdPeriodo             = (byte)lancamento.IdPeriodo,
                DataInicio            = lancamento.Data,
                TotalParcelasOriginal = lancamento.TotalParcelasOriginal,
                IdUsuarioCadastro     = lancamento.IdUsuarioCadastro,
                DataCadastro          = DateTime.Now,
                IdConta = lancamento.IdConta
            });

            if (_notification.Any)
            {
                return;
            }

            var cont = 1;

            if (lancamento.IndicadorFixoParcelado == "F")
            {
                var dataLimite = DateTime.Today.AddYears(2);
                while (lancamento.Data <= dataLimite)
                {
                    var idLancamento = _lancamentoRepository.Post(lancamento);
                    _compromissoRepository.PostCompromissoLancamento(idCompromisso, idLancamento, cont++);
                    lancamento.Data = AddDate(lancamento.Data, periodo);
                }

                _lancamentoRepository.CommitTransaction();
                return;
            }

            // lançamentos parcelados

            if (!lancamento.TotalParcelasOriginal.HasValue || lancamento.TotalParcelasOriginal < 2)
            {
                _notification.Add("Favor informar mais que 1(uma) parcela");
                return;
            }

            for (; cont <= lancamento.TotalParcelasOriginal; cont++)
            {
                var idLancamento = _lancamentoRepository.Post(lancamento);
                _compromissoRepository.PostCompromissoLancamento(idCompromisso, idLancamento, cont);
                lancamento.Data = AddDate(lancamento.Data, periodo);
            }

            _lancamentoRepository.CommitTransaction();
        }