Esempio 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(int idUsuarioEnvio, int idConta, short idTipo, string mensagem, List <int> idsUsuarioNaoEnviar = null)
        {
            var usuariosVinculados = _contaConjuntaRepository.Get(null, idConta).Where(x => x.IndicadorAprovado == "A").ToList();

            if (!usuariosVinculados.Any())
            {
                return;
            }

            var usuariosNotificacao = usuariosVinculados.Select(x => new { Id = x.IdUsuarioEnvio }).ToList();

            usuariosNotificacao.AddRange(usuariosVinculados.Select(x => new { Id = x.IdUsuarioConvidado }));
            usuariosNotificacao = usuariosNotificacao.Distinct().Where(x => x.Id != idUsuarioEnvio).ToList();

            if (idsUsuarioNaoEnviar != null)
            {
                usuariosNotificacao = usuariosNotificacao.Where(x => !idsUsuarioNaoEnviar.Contains(x.Id)).ToList();
            }

            foreach (var usuario in usuariosNotificacao)
            {
                _notificacaoRepository.Post(new NotificacaoDto
                {
                    IdTipo           = idTipo,
                    IdUsuarioEnvio   = idUsuarioEnvio,
                    IdUsuarioDestino = usuario.Id,
                    Mensagem         = mensagem,
                    ParametrosUrl    = null // Não implementado nessa versão do sistema
                });
            }
        }