예제 #1
0
        public void Put(ContaConjuntaDto contaConjunta)
        {
            _contaConjuntaRepository.OpenTransaction();

            _contaConjuntaRepository.Put(contaConjunta);

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

            var msg = $"{(contaConjunta.IndicadorAprovado == "A" ? "Aceitou" : "Recusou")} seu convite para compartilhar a conta {conta.Nome.ToUpper()}";

            // IdTipo - 2: Aceitação de convite para conta conjunta. 3: Recuso de convite para conta conjunta
            var idTipoNotificacao = (short)(contaConjunta.IndicadorAprovado == "A" ? 2 : 3);

            _notificacaoRepository.Post(new NotificacaoDto
            {
                IdTipo           = idTipoNotificacao,
                IdUsuarioEnvio   = contaConjunta.IdUsuarioConvidado,
                IdUsuarioDestino = contaConjunta.IdUsuarioEnvio,
                Mensagem         = msg,
                ParametrosUrl    = null // Não implementado nessa versão do sistema
            });

            var usuarioEnvio = _usuarioRepository.Get(contaConjunta.IdUsuarioEnvio);

            msg = $"{(contaConjunta.IndicadorAprovado == "A" ? "Aceitou" : "Recusou")} o convite do {usuarioEnvio.Nome} para compartilhar a conta {conta.Nome.ToUpper()}";

            // Cadastra notificações para todos os usuarios (caso seja conta conjunta)
            _notificacaoService.Post(contaConjunta.IdUsuarioConvidado, contaConjunta.IdConta, idTipoNotificacao, msg, new List <int> {
                contaConjunta.IdUsuarioEnvio
            });

            // caso o usuario RECUSE o convite para conta conjunta
            if (contaConjunta.IndicadorAprovado != "A")
            {
                _contaConjuntaRepository.CommitTransaction();
                return;
            }

            // caso o usuario ACEITE o convite para conta conjunta

            var categoriasConta         = _lancamentoCategoriaRepository.GetCategoriasConta(contaConjunta.IdConta).ToList();
            var categoriasContaConjunta = _contaConjuntaRepository.GetCategoria(contaConjunta.IdConta).ToList();

            // insere as categorias que estão faltando ir para a tabela de categorias da conta conjunta
            foreach (var categoria in categoriasConta.Where(x => categoriasContaConjunta.All(y => y.Id != x.Id)))
            {
                _contaConjuntaRepository.PostCategoria(contaConjunta.IdConta, categoria.Id);
            }

            // exclui as categorias que estão na tabela de "contas conjuntas categorias" que não estão sendo utilizadas
            foreach (var categoriaContaConjunta in categoriasContaConjunta.Where(x => categoriasConta.All(y => y.Id != x.Id)))
            {
                _contaConjuntaRepository.DeleteCategoria(contaConjunta.IdConta, categoriaContaConjunta.Id);
            }

            _contaConjuntaRepository.CommitTransaction();
        }
예제 #2
0
        public void Delete(int idUsuario, int idConta)
        {
            if (_contaFinanceiraRepository.PossuiVinculos(idConta))
            {
                return;
            }

            _contaFinanceiraRepository.OpenTransaction();

            // excluindo categorias vinculadas a conta conjunta (caso a conta à ser excluida for uma conta conjunta)
            var categoriasContaConjunta = _contaConjuntaRepository.GetCategoria(idConta);

            foreach (var categoria in categoriasContaConjunta)
            {
                _contaConjuntaRepository.DeleteCategoria(idConta, categoria.Id);
            }

            // excluindo a conta
            _contaFinanceiraRepository.Delete(idUsuario, idConta);

            _contaFinanceiraRepository.CommitTransaction();
        }