private void AtualizaCategoriasContaConjunta(int idConta, int idCategoria)
 {
     if (_contaConjuntaRepository.Get(null, idConta).Any(x => x.IndicadorAprovado == "A") &&
         _contaConjuntaRepository.GetCategoria(idConta).All(x => x.Id != idCategoria))
     {
         _contaConjuntaRepository.PostCategoria(idConta, idCategoria);
     }
 }
Example #2
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();
        }