コード例 #1
0
        //
        public UtilRetorno enviar(NotificacaoSistema ONotificacao)
        {
            var idsPessoas = ONotificacao.listaPessoa.Select(x => x.idPessoa).ToList();

            var listaDispositivos = this.OPessoaDeviceConsultaBL.listar("").Where(x => idsPessoas.Contains(x.idPessoa))
                                    .Select(x => new {
                x.idPessoa, x.idDevice, x.token
            }).ToListJsonObject <PessoaDevice>();

            var ORetorno = new UtilRetorno();

            if (ORetorno.flagError)
            {
                return(ORetorno);
            }

            var OMensageiroApp = MensageiroAppFactoryBL.getInstance.factory(ONotificacao);

            if (OMensageiroApp == null)
            {
                return(UtilRetorno.newInstance(true, "Não foi possível encontrar as configurações de envio do gateway selecionado para envio da mensagem."));
            }

            ORetorno = OMensageiroApp.enviar(ONotificacao, listaDispositivos);

            return(ORetorno);
        }
コード例 #2
0
        //
        private NotificacaoSistema gerarNotificacao()
        {
            var OConfigNotificacao = ConfiguracaoNotificacaoBL.getInstance.carregar(User.idOrganizacao());

            var OConfigSistema = ConfiguracaoSistemaBL.getInstance.carregar(User.idOrganizacao());

            var ONotificacao = new NotificacaoSistema();

            ONotificacao.flagEmail = true;

            ONotificacao.flagTodosAssociados = false;

            ONotificacao.flagAssociadosEspecificos = true;

            ONotificacao.flagSistema = false;

            ONotificacao.flagMobile = false;

            ONotificacao.idTipoNotificacao = TipoNotificacaoConst.ASSOCIADO_RECUPERACAO_SENHA;

            ONotificacao.titulo = OConfigNotificacao.tituloEmailRecuperacaoSenhaAssociado.Replace("#NOME_ORGANIZACAO#", OConfigSistema.tituloSistema);

            ONotificacao.notificacao = OConfigNotificacao.corpoEmailRecuperacaoSenhaAssociado;

            this.ONotificacaoSistemaCadastroBL.salvar(ONotificacao);

            return(ONotificacao);
        }
コード例 #3
0
        //
        private NotificacaoSistema gerarNotificacao(string senhaProvisoria)
        {
            var ONotificacao = new NotificacaoSistema();

            ONotificacao.flagEmail = true;

            ONotificacao.flagTodosAssociados = false;

            ONotificacao.flagAssociadosEspecificos = true;

            ONotificacao.flagSistema = false;

            ONotificacao.flagMobile = false;

            ONotificacao.idTipoNotificacao = TipoNotificacaoConst.ASSOCIADO_NOVA_SENHA;

            ONotificacao.titulo = "Sinctec Digital - Senha de Acesso";

            ONotificacao.notificacao = "Caro #NOME#, <br /><br /> Você está recebendo uma nova senha para acessar as plataformas digitais da SINCTEC.<br />" +
                                       "Estes dados são referentes à conta SINCTEC nº <strong>#NUMERO_CONTA#</strong>" +
                                       "Pedimos que não empreste ou informe seus dados.<br />" +
                                       "Você pode alterar sua senha de acesso através do site na área dos membros SINCTEC ou em nosso aplicativo.<br />" +
                                       "Sua nova senha está logo abaixo: <br /><br /><br />" +
                                       "<strong>#SENHA#</strong>";

            ONotificacao.notificacao = ONotificacao.notificacao.Replace("#SENHA#", senhaProvisoria);

            this.ONotificacaoSistemaCadastroBL.salvar(ONotificacao);

            return(ONotificacao);
        }
コード例 #4
0
        //
        private void vincularAssociados(NotificacaoSistema ONotificacao, List <NotificacaoSistemaEnvio> listaEnvios)
        {
            foreach (var OEnvio in listaEnvios)
            {
                OEnvio.idNotificacao = ONotificacao.id;
            }

            using (var ctx = new DataContext()) {
                ctx.Configuration.AutoDetectChangesEnabled = false;

                ctx.Configuration.ValidateOnSaveEnabled = false;

                listaEnvios.ForEach(x => {
                    x.setDefaultInsertValues();
                });

                ctx.NotificacaoSistemaEnvio.AddRange(listaEnvios);

                ctx.SaveChanges();
            }

            var listaParametros = new List <object>();

            listaParametros.Add(listaEnvios);
            listaParametros.Add(ONotificacao);

            this.onNotificacaoCadastrada.subscribe(new OnNotificacaoCadastradaHandler());

            this.onNotificacaoCadastrada.publish((listaParametros as object));
        }
コード例 #5
0
        //Definir qual título receita irá fazer os tratamentos
        public IMensageiroAppBL factory(NotificacaoSistema ONotificacao)
        {
            if (ONotificacao.idGatewayPush == GatewayNotificacaoConst.ONESIGNAL)
            {
            }

            return(null);
        }
コード例 #6
0
        //
        private void vincularAssociados(NotificacaoSistema ONotificacao, List <ItemListaAssociado> listaAssociados)
        {
            var listaNotificacoesVinculadas = new List <NotificacaoSistemaEnvio>();

            foreach (var OAssociado in listaAssociados)
            {
                var listaEmails = new List <string> {
                    OAssociado.email, OAssociado.emailSecundario
                };

                foreach (var email in listaEmails)
                {
                    var OEnvio = new NotificacaoSistemaEnvio();

                    OEnvio.idNotificacao = ONotificacao.id;

                    OEnvio.idReferencia = OAssociado.id;

                    OEnvio.nome = OAssociado.nome;

                    OEnvio.email = email;

                    if (!UtilValidation.isEmail(OEnvio.email))
                    {
                        OEnvio.flagExcluido = true;

                        OEnvio.motivoExclusao = "O e-mail configurado não é válido.";
                    }

                    listaNotificacoesVinculadas.Add(OEnvio);
                }
            }

            using (var ctx = this.db) {
                ctx.Configuration.AutoDetectChangesEnabled = false;

                ctx.Configuration.ValidateOnSaveEnabled = false;

                listaNotificacoesVinculadas.ForEach(x => {
                    x.setDefaultInsertValues();
                });

                ctx.NotificacaoSistemaEnvio.AddRange(listaNotificacoesVinculadas);

                ctx.SaveChanges();
            }

            var listaParametros = new List <object>();

            listaParametros.Add(listaNotificacoesVinculadas);

            listaParametros.Add(ONotificacao);

            this.onNotificacaoCadastrada.subscribe(new OnNotificacaoCadastradaHandler());

            this.onNotificacaoCadastrada.publish((listaParametros as object));
        }
コード例 #7
0
        public ActionResult notificacaoOneSignal()
        {
            var ONotificacao = new NotificacaoSistema();

            ONotificacao.titulo = $"Título da mensagem: {DateTime.Now}";

            ONotificacao.notificacao = $"Esta é uma mensagem de testes enviada em {DateTime.Now}";

            var Retorno = new NotificacaoOneSignal().enviar(ONotificacao);

            return(Json(Retorno, JsonRequestBehavior.AllowGet));
        }
コード例 #8
0
        /// <summary>
        ///
        /// </summary>
        public UtilRetorno gerarNotificacao(object Origem)
        {
            ListaAssociadosDTO OListaAssociadosDTO = (ListaAssociadosDTO)Origem;

            var ORetorno = UtilRetorno.newInstance(false);

            var OMensagem = this.MensagemEmailConsultaBL.listar(IdentificacaoMensagemEmailConst.ASSOCIADO_LINK_ATUALIZACAO).FirstOrDefault() ?? new MensagemEmail();

            if (OMensagem.titulo.isEmpty())
            {
                OMensagem.titulo = AssociadoEmailsConst.tituloEmailAtualizacaoCadastral;
            }

            if (OMensagem.corpoEmail.isEmpty())
            {
                OMensagem.corpoEmail = AssociadoEmailsConst.corpoEmailAtualizacaoCadastral;
            }

            var ONotificacao = new NotificacaoSistema();

            ONotificacao.flagEmail = true;

            ONotificacao.flagTodosAssociados = false;

            ONotificacao.flagAssociadosEspecificos = true;

            ONotificacao.flagSistema = false;

            ONotificacao.flagMobile = false;

            ONotificacao.idTipoNotificacao = TipoNotificacaoConst.ASSOCIADO_ATUALIZACAO_CADASTRAL;

            ONotificacao.titulo = OMensagem.titulo;

            ONotificacao.notificacao = OMensagem.corpoEmail;

            ONotificacao.dtProgramacaoEnvio = DateTime.Now;

            var flagSucesso = false;

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

                ORetorno.listaErros.Add("Houve algum problema ao gerar o e-mail de atualização cadastral. Tente novamente mais tarde.");

                return(ORetorno);
            }


            return(ORetorno);
        }
コード例 #9
0
        public static INotificacaoSistemaEnvioCobrancaBL factory(NotificacaoSistema ONotificacao)
        {
            if (ONotificacao.idTipoNotificacao == TipoNotificacaoConst.COBRANCA_CONTRIBUICAO)
            {
                return(new NotificacaoSistemaEnvioCobrancaContribuicaoBL());
            }

            if (ONotificacao.idTipoNotificacao == TipoNotificacaoConst.COBRANCA_PARCELA)
            {
            }

            return(null);
        }
コード例 #10
0
        /// <summary>
        /// Carregar registro pelo ID
        /// </summary>
        public NotificacaoSistema carregar(int id)
        {
            var query = from NS in db.NotificacaoSistema
                        where
                        NS.id == id &&
                        NS.flagExcluido == false
                        select NS;

            query = query.condicoesSeguranca();

            NotificacaoSistema ONotificacaoSistema = query.FirstOrDefault();

            return(ONotificacaoSistema);
        }
コード例 #11
0
        //Customizado para essa classe especifica
        public UtilRetorno enviar(NotificacaoSistemaEnvio OEnvio, NotificacaoSistema ONotificacao)
        {
            this.ONotificacaoSistema = ONotificacao;

            Dictionary <string, object> infos = new Dictionary <string, object>();

            infos["nome"] = OEnvio.nome ?? "";

            infos["email"] = this.To.FirstOrDefault()?.Address ?? "";

            infos["personalizacao"] = OEnvio.personalizacao;

            return(this.enviar(infos, ONotificacao.titulo));
        }
コード例 #12
0
        //
        public UtilRetorno enviar(Associado OAssociado, NotificacaoSistema ONotificacao)
        {
            this.ONotificacao = ONotificacao;

            var OConfig = ConfiguracaoNotificacaoBL.getInstance.carregar(this.idOrganizacao);

            Dictionary <string, object> infos = new Dictionary <string, object>();

            infos["nome"] = OAssociado.Pessoa.nome;

            infos["login"] = OAssociado.Pessoa.login;

            string tituloEmail = OConfig.reenvioSenhaAssociadoTitulo.Replace("#NOME_ORGANIZACAO#", OConfiguracaoSistema.tituloSistema);

            return(this.enviar(infos, tituloEmail));
        }
コード例 #13
0
        //
        public bool salvar(NotificacaoSistema ONotificacao, List <NotificacaoSistemaEnvio> listaEnvios)
        {
            var ONotificacaoGerada = this.gerarNotificacao(ONotificacao);

            if (ONotificacaoGerada.id == 0)
            {
                return(false);
            }

            if (listaEnvios.Any())
            {
                this.vincularAssociados(ONotificacao, listaEnvios);
            }

            return(true);
        }
コード例 #14
0
        //
        private NotificacaoSistema gerarNotificacao(NotificacaoSistema ONotificacao)
        {
            ONotificacao.idTipoNotificacao = TipoNotificacaoConst.AVULSA;

            ONotificacao.flagTodosAssociados = false;

            ONotificacao.flagAssociadosEspecificos = false;

            ONotificacao.flagAssociadosAdimplentes = false;

            ONotificacao.flagAssociadosInadimplentes = false;

            this.ONotificacaoSistemaCadastroBL.salvar(ONotificacao);

            return(ONotificacao);
        }
コード例 #15
0
        /// <summary>
        /// Atualizar ou criar uma nova notificacao
        /// </summary>
        public bool salvar(NotificacaoSistema ONotificacaoSistema)
        {
            ONotificacaoSistema.titulo = ONotificacaoSistema.titulo.abreviar(100);

            if (!(ONotificacaoSistema.idTemplate > 0))
            {
                ONotificacaoSistema.notificacao = ONotificacaoSistema.notificacao.abreviar(8000);
            }

            if (ONotificacaoSistema.id == 0)
            {
                return(this.inserir(ONotificacaoSistema));
            }

            return(this.atualizar(ONotificacaoSistema));
        }
コード例 #16
0
        /// <summary>
        /// Configurar envio de notificacao para firebase cloud messaging
        /// </summary>
        public UtilRetorno enviar(NotificacaoSistema Notificacao)
        {
            var Retorno = new UtilRetorno();

            string serverKey = "AAAATgqR4Z4:APA91bEbh4nRYC0Rpw92WuxSGQDGikzxMk1yR0_anj_6oBHaJnAdn61ycE7_UpYBQK1elUPVmuG44tPL_fRU54Z4FuPkzfWJFsy9IhCdwvmStSeWrc3AAntLwaMmPFehJhT_yjwudX8b";

            string hostFCM = "https://fcm.googleapis.com/fcm/send";

            try {
                var httpWebRequest = (HttpWebRequest)WebRequest.Create(hostFCM);

                httpWebRequest.ContentType = "application/json";

                httpWebRequest.Headers.Add($"Authorization:key={serverKey}");

                httpWebRequest.Method = "POST";

                using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) {
                    var objectJson = new { notification = new { body = Notificacao.notificacao, title = Notificacao.titulo } };

                    string json = JsonConvert.SerializeObject(objectJson);

                    streamWriter.Write(json);

                    streamWriter.Flush();
                }

                var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

                var streamResult = httpResponse.GetResponseStream();

                using (var streamReader = new StreamReader(streamResult)) {
                    Retorno.info = streamReader.ReadToEnd();
                }

                Retorno.flagError = false;
            } catch (Exception ex) {
                Retorno.flagError = true;

                Retorno.listaErros.Add($"Não foi possível estabalecer conexão com FCM. Detalhes: {ex.Message}");

                UtilLog.saveError(ex, "Erro conexão FCM");
            }

            return(Retorno);
        }
コード例 #17
0
        //
        private NotificacaoSistema gerarNotificacao(NotificacaoSistema ONotificacao)
        {
            if (ONotificacao.flagMobile == true)
            {
            }

            ONotificacao.idTipoNotificacao = TipoNotificacaoConst.AVULSA;

            ONotificacao.flagSistema = false;

            ONotificacao.flagTodosUsuarios = false;

            ONotificacao.flagUsuariosEspecificos = false;

            this.ONotificacaoSistemaCadastroBL.salvar(ONotificacao);

            return(ONotificacao);
        }
コード例 #18
0
        //
        private NotificacaoSistema gerarNotificacao(Contribuicao OContribuicao)
        {
            var ONotificacao = new NotificacaoSistema();

            ONotificacao.idOrganizacao             = OContribuicao.idOrganizacao;
            ONotificacao.flagEmail                 = true;
            ONotificacao.flagTodosAssociados       = false;
            ONotificacao.flagAssociadosEspecificos = true;
            ONotificacao.flagSistema               = false;
            ONotificacao.flagMobile                = false;

            ONotificacao.idTipoNotificacao = TipoNotificacaoConst.COBRANCA_CONTRIBUICAO;
            ONotificacao.titulo            = OContribuicao.emailCobrancaTitulo;
            ONotificacao.notificacao       = OContribuicao.emailCobrancaHtml;

            this.ONotificacaoSistemaCadastroBL.salvar(ONotificacao);

            return(ONotificacao);
        }
コード例 #19
0
        /// <summary>
        /// Excluir um registro pelo ID
        /// </summary>
        public UtilRetorno excluir(int id)
        {
            NotificacaoSistema ONotificacaoSistema = this.db.NotificacaoSistema.Find(id);

            if (ONotificacaoSistema == null)
            {
                return(UtilRetorno.newInstance(true, "O registro não foi localizado."));
            }

            ONotificacaoSistema.flagExcluido = true;

            ONotificacaoSistema.idUsuarioAlteracao = User.id();

            ONotificacaoSistema.dtAlteracao = DateTime.Now;

            db.SaveChanges();

            return(UtilRetorno.newInstance(false, "O registro foi removido com sucesso."));
        }
コード例 #20
0
        /// <summary>
        ///
        /// </summary>
        private void vincularDestinos(List <EventoInscricao> listaInscricoes, NotificacaoSistema ONotificacao, TarefaSistema OTarefaSistema)
        {
            var listaNotificacoesVinculadas = new List <NotificacaoSistemaEnvio>();

            foreach (var OInscricao in listaInscricoes)
            {
                var listaEmail = new List <string>();

                listaEmail.Add(OInscricao.emailPrincipal);
                listaEmail.Add(OInscricao.emailSecundario);

                foreach (var email in listaEmail)
                {
                    var OEnvio = new NotificacaoSistemaEnvio();

                    OEnvio.idNotificacao = ONotificacao.id;

                    OEnvio.idReferencia = OInscricao.id;

                    OEnvio.nome = OInscricao.nomeInscrito;

                    OEnvio.email = email;

                    OEnvio.idTarefa = OTarefaSistema?.id;

                    string parametrosPersonalizados = this.montarParametrosPersonalizados(OInscricao).abreviar(8000);

                    OEnvio.personalizacao = parametrosPersonalizados;

                    if (!UtilValidation.isEmail(OEnvio.email))
                    {
                        OEnvio.flagExcluido = true;

                        OEnvio.motivoExclusao = "O e-mail configurado não é válido.";
                    }

                    listaNotificacoesVinculadas.Add(OEnvio);
                }
            }

            this.NotificacaoSistemaCadastroBL.salvarDetalhesNotificacao(listaNotificacoesVinculadas);
        }
コード例 #21
0
        /// <summary>
        ///
        /// </summary>
        private void vincularDestinos(ListaAssociadosDTO OListaAssociadosDTO, NotificacaoSistema ONotificacao)
        {
            var listaAssociados = OListaAssociadosDTO.listaAssociados;

            var listaNotificacoesVinculadas = new List <NotificacaoSistemaEnvio>();

            foreach (var OAssociado in listaAssociados)
            {
                var listaEmailsAssociado = OAssociado.Pessoa.ToEmailList();

                var listaEmail = new List <string>();

                listaEmail.AddRange(listaEmailsAssociado);

                foreach (var email in listaEmail)
                {
                    var OEnvio = new NotificacaoSistemaEnvio();

                    OEnvio.idNotificacao = ONotificacao.id;

                    OEnvio.idReferencia = OAssociado.id;

                    OEnvio.nome = OAssociado.Pessoa.nome;

                    OEnvio.email = email;


                    string parametrosPersonalizados = this.montarParametrosPersonalizados(OAssociado, email).abreviar(8000);

                    OEnvio.personalizacao = parametrosPersonalizados;

                    if (!UtilValidation.isEmail(OEnvio.email))
                    {
                        OEnvio.flagExcluido = true;

                        OEnvio.motivoExclusao = "O e-mail configurado não é válido.";
                    }

                    listaNotificacoesVinculadas.Add(OEnvio);
                }
            }
        }
コード例 #22
0
        /// <summary>
        /// Persistir o objecto e atualizar informações
        /// </summary>
        private bool atualizar(NotificacaoSistema ONotificacaoSistema)
        {
            NotificacaoSistema dbNotificacaoSistema = this.db.NotificacaoSistema.Find(ONotificacaoSistema.id);

            var tipoEntry = db.Entry(dbNotificacaoSistema);

            ONotificacaoSistema.setDefaultUpdateValues();

            if (ONotificacaoSistema.idUnidade == 0)
            {
                ONotificacaoSistema.idUnidade = null;
            }

            tipoEntry.CurrentValues.SetValues(ONotificacaoSistema);

            tipoEntry.ignoreFields();

            db.SaveChanges();

            return(ONotificacaoSistema.id > 0);
        }
コード例 #23
0
        //Chamador das ações do evento
        public void execute(object source)
        {
            try {
                var listaParametros = source as List <object>;

                this.listaNotificacoesEnvio = (listaParametros[0] as List <NotificacaoSistemaEnvio>);

                this.ONotificacaoSistema = (listaParametros[1] as NotificacaoSistema);

                this.senhaProvisoria = listaParametros[2] as string;

                if (listaNotificacoesEnvio == null)
                {
                    throw new Exception("Nenhum item de notificação foi enviado para geração das ocorrências.");
                }

                this.gerarOcorrencia();
            } catch (Exception ex) {
                UtilLog.saveError(ex, "Erro no manipulador de evento: OnNovaSenhaEnviadaHandler");
            }
        }
コード例 #24
0
        /// <summary>
        /// Persistir o objecto e salvar na base de dados
        /// </summary>
        private bool inserir(NotificacaoSistema ONotificacaoSistema)
        {
            ONotificacaoSistema.idUnidade = User.idUnidade();

            ONotificacaoSistema.setDefaultInsertValues();

            foreach (var ONotificacaoPessoa in ONotificacaoSistema.listaPessoa)
            {
                ONotificacaoPessoa.setDefaultInsertValues();
            }

            if (ONotificacaoSistema.idUnidade == 0)
            {
                ONotificacaoSistema.idUnidade = null;
            }

            db.NotificacaoSistema.Add(ONotificacaoSistema);

            db.SaveChanges();

            return(ONotificacaoSistema.id > 0);
        }
コード例 #25
0
        //Chamador das ações do evento
        public void execute(object source)
        {
            try {
                var listaParametros = source as List <object>;

                this.listaNotificacoesEnvio = (listaParametros[0] as List <NotificacaoSistemaEnvio>);

                this.ONotificacaoSistema = (listaParametros[1] as NotificacaoSistema);

                if (listaNotificacoesEnvio == null)
                {
                    throw new Exception("Nenhum item de notificação foi enviado para geração de tarefa.");
                }


                if (this.ONotificacaoSistema.flagMobile == true)
                {
                    this.enviarMensagemApp();
                }
            } catch (Exception ex) {
                UtilLog.saveError(ex, "Erro no manipulador de evento: OnNotificacaoCadastradaHandler");
            }
        }
コード例 #26
0
        //
        public UtilRetorno enviar(NotificacaoSistema ONotificacao, AssociadoContribuicaoResumoVW OAssociadoContribuicao)
        {
            this.AssociadoContribuicao = OAssociadoContribuicao;

            this.ONotificacao = ONotificacao;

            string urlPagamento = UtilConfig.linkPgtoTitulo(OAssociadoContribuicao.idTituloReceita.toInt());

            Dictionary <string, object> infos = new Dictionary <string, object>();

            infos["nome"] = OAssociadoContribuicao.nomeAssociado;

            infos["descricaoPagamento"] = OAssociadoContribuicao.descricaoContribuicao;

            infos["valor"] = OAssociadoContribuicao.valorAtual.ToString("C");

            infos["dtVencimento"] = OAssociadoContribuicao.dtVencimentoAtual.ToShortDateString();

            infos["linkPgto"] = urlPagamento;

            string tituloEmail = ONotificacao.titulo;

            return(this.enviar(infos, tituloEmail));
        }
コード例 #27
0
        /// <summary>
        /// Configurar envio de notificacao para firebase cloud messaging
        /// </summary>
        public UtilRetorno enviar(NotificacaoSistema Notificacao)
        {
            var Retorno = new UtilRetorno();

            string host = "https://onesignal.com/api/v1/notifications";

            string appId = "ca6e04fb-99b7-47aa-8283-7b421530d386";

            string apiKey = "Yjk0ZDhhYmYtNThjNy00NGNmLTgwNWMtMmM4M2IyYjM3NzU4";


            var request = WebRequest.Create(host) as HttpWebRequest;

            request.KeepAlive   = true;
            request.Method      = "POST";
            request.ContentType = "application/json; charset=utf-8";

            request.Headers.Add("authorization", $"Basic {apiKey}");

            var obj = new {
                app_id            = appId,
                contents          = new { en = Notificacao.notificacao },
                included_segments = new string[] { "All" }
            };

            var param = JsonConvert.SerializeObject(obj);

            byte[] byteArray = Encoding.UTF8.GetBytes(param);

            string responseContent = null;

            try {
                using (var writer = request.GetRequestStream()) {
                    writer.Write(byteArray, 0, byteArray.Length);
                }

                using (var response = request.GetResponse() as HttpWebResponse) {
                    using (var reader = new StreamReader(response.GetResponseStream())) {
                        responseContent = reader.ReadToEnd();
                    }
                }

                Retorno.info = responseContent;
            } catch (WebException ex) {
                Retorno.flagError = true;

                Retorno.listaErros.Add($"Não foi possível estabalecer conexão com OneSignal. Detalhes: {ex.Message}");

                UtilLog.saveError(ex, "Erro conexão OneSignal");

                System.Diagnostics.Debug.WriteLine(ex.Message);

                System.Diagnostics.Debug.WriteLine(new StreamReader(ex.Response.GetResponseStream()).ReadToEnd());
            } catch (Exception ex) {
                Retorno.flagError = true;

                Retorno.listaErros.Add($"Não foi possível estabalecer conexão com OneSignal. Detalhes: {ex.Message}");

                UtilLog.saveError(ex, "Erro conexão OneSignal");
            }

            return(Retorno);
        }
コード例 #28
0
        //
        private UtilRetorno enviarEmail(NotificacaoSistema ONotificacao, NotificacaoSistemaEnvio OEnvio, List <string> listaEmails)
        {
            IEnvioAtualizacaoCadastro EnvioEmail = EnvioAtualizacaoCadastro.factory(OEnvio.idOrganizacao, listaEmails, null);

            return(EnvioEmail.enviar(OEnvio, ONotificacao));
        }
コード例 #29
0
        //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 - Chamada do servico para disparo do e-mail
        private UtilRetorno enviarEmail(Associado OAssociado, NotificacaoSistema ONotificacao, List <string> listaEmails)
        {
            IEnvioNovaSenha EnvioEmail = EnvioNovaSenha.factory(OAssociado.idOrganizacao, listaEmails, null);

            return(EnvioEmail.enviar(OAssociado, ONotificacao));
        }