Exemplo n.º 1
0
        // 1 - carregar e-mails que devem ser copiados
        // 2 - Chamar servico de disparo de e-mail
        // 3 - Registrar o envio
        public void enviarEmail(List <NotificacaoSistemaEnvio> listaEnvios)
        {
            var listaIdsEnviados = new List <int>();

            var listaIdsExcluidos = new List <int>();

            foreach (var ONotificacaoEnvio in listaEnvios)
            {
                if (!UtilValidation.isEmail(ONotificacaoEnvio.email))
                {
                    listaIdsExcluidos.Add(ONotificacaoEnvio.id);

                    continue;
                }

                var ORetorno = enviarEmail(ONotificacaoEnvio, ONotificacaoEnvio.ToEmailList());

                //Regisrar o envio do e-mail
                if (!ORetorno.flagError)
                {
                    listaIdsEnviados.Add(ONotificacaoEnvio.id);
                }

                if (ORetorno.flagError)
                {
                    listaIdsExcluidos.Add(ONotificacaoEnvio.id);
                }
            }

            if (listaIdsEnviados.Any())
            {
                db.NotificacaoSistemaEnvio.Where(x => listaIdsEnviados.Contains(x.id))
                .Update(x => new NotificacaoSistemaEnvio()
                {
                    dtEnvioEmail = DateTime.Now, flagEnvioEmail = true
                });
            }

            if (listaIdsExcluidos.Any())
            {
                db.NotificacaoSistemaEnvio.Where(x => listaIdsExcluidos.Contains(x.id))
                .Update(x => new NotificacaoSistemaEnvio()
                {
                    flagExcluido = true, motivoExclusao = "Os e-mails configurados não são válidos."
                });
            }
        }
        //Atributos

        //Servicos

        //
        public void enviarEmail(NotificacaoSistema ONotificacao, List <NotificacaoSistemaEnvio> listaEnvios)
        {
            var listaIdsEnviados = new List <int>();

            var listaExcluidos = new List <UtilRetorno>();

            foreach (var ONotificacaoEnvio in listaEnvios)
            {
                var listaEmailsEnvio = ONotificacaoEnvio.ToEmailList();

                var flagEnviado = false;

                var ORetorno = UtilRetorno.newInstance(false);

                foreach (var stringEmail in listaEmailsEnvio)
                {
                    ORetorno = this.enviarEmail(ONotificacao, ONotificacaoEnvio, new List <string> {
                        stringEmail
                    });

                    if (!ORetorno.flagError)
                    {
                        flagEnviado = true;

                        continue;
                    }

                    ORetorno.info = ONotificacaoEnvio.id;
                }

                if (flagEnviado)
                {
                    listaIdsEnviados.Add(ONotificacaoEnvio.id);
                }

                if (!flagEnviado)
                {
                    listaExcluidos.Add(ORetorno);
                }
            }

            if (listaIdsEnviados.Any())
            {
                db.NotificacaoSistemaEnvio.Where(x => listaIdsEnviados.Contains(x.id))
                .Update(x => new NotificacaoSistemaEnvio()
                {
                    dtEnvioEmail = DateTime.Now, flagEnvioEmail = true
                });
            }

            if (listaExcluidos.Any())
            {
                var idsEnviosExcluidos = listaExcluidos.Select(x => x.info.toInt()).Distinct().ToList();

                var listaEnviosExcluidos = db.NotificacaoSistemaEnvio.Where(x => idsEnviosExcluidos.Contains(x.id)).ToList();

                listaEnviosExcluidos.ForEach(x => {
                    x.flagExcluido = true;

                    x.motivoExclusao = listaExcluidos.FirstOrDefault(c => c.info.toInt() == x.id)?.listaErros?.FirstOrDefault() ?? "Os e-mails configurados não são válidos.";
                });

                db.SaveChanges();
            }

            var idsMembrosNotificados = listaEnvios.Where(x => listaIdsEnviados.Contains(x.id) && x.idReferencia > 0)
                                        .Select(x => x.idReferencia.toInt())
                                        .ToList();
        }
        // 1 - carregar e-mails que devem ser copiados
        // 2 - Chamar servico de disparo de e-mail
        // 3 - Registrar o envio
        public void enviarEmail(List <NotificacaoSistemaEnvio> listaEnvios)
        {
            var listaIdsEnviados = new List <int>();

            var listaIdsExcluidos = new List <int>();

            var listaIdsRemovidos = new List <int>();

            var idsAssociados = listaEnvios.Select(x => x.idReferencia.toInt()).ToList();

            var listaAssociados = db.Associado.condicoesSeguranca().Where(x => idsAssociados.Contains(x.id))
                                  .Select(x => new { x.id, x.idOrganizacao, Pessoa = new { x.Pessoa.nome, x.Pessoa.login } })
                                  .ToListJsonObject <Associado>();

            var ONotificacao = listaEnvios.FirstOrDefault().NotificacaoSistema;

            foreach (var ONotificacaoEnvio in listaEnvios)
            {
                var OAssociado = listaAssociados.FirstOrDefault(x => x.id == ONotificacaoEnvio.idReferencia);

                if (OAssociado == null)
                {
                    listaIdsRemovidos.Add(ONotificacaoEnvio.id);

                    continue;
                }

                if (!UtilValidation.isEmail(ONotificacaoEnvio.email))
                {
                    listaIdsExcluidos.Add(ONotificacaoEnvio.id);

                    continue;
                }

                var ORetorno = enviarEmail(OAssociado, ONotificacao, ONotificacaoEnvio.ToEmailList());

                //Regisrar o envio do e-mail
                if (!ORetorno.flagError)
                {
                    listaIdsEnviados.Add(ONotificacaoEnvio.id);
                }

                if (ORetorno.flagError)
                {
                    listaIdsExcluidos.Add(ONotificacaoEnvio.id);
                }
            }

            if (listaIdsEnviados.Any())
            {
                db.NotificacaoSistemaEnvio.Where(x => listaIdsEnviados.Contains(x.id))
                .Update(x => new NotificacaoSistemaEnvio()
                {
                    dtEnvioEmail = DateTime.Now, flagEnvioEmail = true
                });
            }

            if (listaIdsExcluidos.Any())
            {
                db.NotificacaoSistemaEnvio.Where(x => listaIdsExcluidos.Contains(x.id))
                .Update(x => new NotificacaoSistemaEnvio()
                {
                    flagExcluido = true, motivoExclusao = "Os e-mails configurados não são válidos."
                });
            }

            if (listaIdsRemovidos.Any())
            {
                db.NotificacaoSistemaEnvio
                .Where(x => listaIdsRemovidos.Contains(x.id))
                .Update(x => new NotificacaoSistemaEnvio()
                {
                    flagExcluido = true, motivoExclusao = "O associado informado não existe ou não foi localizado."
                });
            }
        }
Exemplo n.º 4
0
        // 1 - Carregar uma cobranca registrada
        // 2 - Carregar os dados da anuidade
        // 3 - carregar e-mails que devem ser copiados
        // 4 - Chamar servico de disparo de e-mail
        // 5 - Registrar o envio
        public void enviarEmail(List <NotificacaoSistemaEnvio> listaEnvios)
        {
            var idsAssociadosContribuicao = listaEnvios.Select(x => x.idReferencia).ToList();

            var listaContribuicoes = this.OAssociadoContribuicaoResumoBL.listar(0, 0).Where(x => idsAssociadosContribuicao.Contains(x.id)).ToList();

            var listaIdsEnviados  = new List <int>();
            var listaExcluidos    = new List <UtilRetorno>();
            var listaIdsRemovidos = new List <int>();

            foreach (var ONotificacaoEnvio in listaEnvios)
            {
                var OAssociadoContribuicao = listaContribuicoes.FirstOrDefault(x => x.id == ONotificacaoEnvio.idReferencia);

                if (OAssociadoContribuicao == null)
                {
                    listaIdsRemovidos.Add(ONotificacaoEnvio.id);
                    continue;
                }

                var ORetorno = this.enviarEmail(ONotificacaoEnvio.NotificacaoSistema, OAssociadoContribuicao, ONotificacaoEnvio.ToEmailList());

                if (!ORetorno.flagError)
                {
                    listaIdsEnviados.Add(ONotificacaoEnvio.id);
                }

                if (ORetorno.flagError)
                {
                    ORetorno.info = ONotificacaoEnvio.id;

                    listaExcluidos.Add(ORetorno);
                }
            }

            if (listaIdsEnviados.Any())
            {
                db.NotificacaoSistemaEnvio
                .Where(x => listaIdsEnviados.Contains(x.id))
                .Update(x => new NotificacaoSistemaEnvio()
                {
                    dtEnvioEmail = DateTime.Now, flagEnvioEmail = true
                });
            }

            if (listaExcluidos.Any())
            {
                var idsEnviosExcluidos = listaExcluidos.Select(x => x.info.toInt()).Distinct().ToList();

                var listaEnviosExcluidos = db.NotificacaoSistemaEnvio.Where(x => idsEnviosExcluidos.Contains(x.id)).ToList();

                listaEnviosExcluidos.ForEach(x => {
                    x.flagExcluido = true;

                    x.motivoExclusao = listaExcluidos.FirstOrDefault(c => c.info.toInt() == x.id)?.listaErros?.FirstOrDefault() ?? "Os e-mails configurados não são válidos.";
                });

                db.SaveChanges();
            }

            if (listaIdsRemovidos.Any())
            {
                db.NotificacaoSistemaEnvio
                .Where(x => listaIdsRemovidos.Contains(x.id))
                .Update(x => new NotificacaoSistemaEnvio()
                {
                    flagExcluido = true, motivoExclusao = "A cobrança informada não existe ou não foi localizada."
                });
            }
        }