Example #1
0
        public static void EnviaSMSAsync(GDASession session, string codMensagem, string remetente, string destinatario, string mensagem, bool smsAdmin)
        {
            if (mensagem.Length >= 150)
            {
                mensagem = mensagem.Substring(0, 149);
            }

            FilaSms sms = new FilaSms
            {
                CodMensagem = codMensagem,
                NomeLoja    = remetente,
                CelCliente  = destinatario,
                Mensagem    = mensagem,
                DataCad     = DateTime.Now,
                SmsAdmin    = smsAdmin
            };

            FilaSmsDAO.Instance.Insert(session, sms);
        }
Example #2
0
        private void ProcessaFilaEmailSms()
        {
            var lstDataEnvioSmsAdmin = PCPConfig.EmailSMS.HorariosEnvioEmailSmsAdmin;

            try
            {
                // Envio de e-mail para administradores
                if (PCPConfig.EmailSMS.EnviarEmailAdministrador)
                {
                    foreach (DateTime d in lstDataEnvioSmsAdmin)
                    {
                        if (DateTime.Now.Hour == d.Hour && DateTime.Now.Minute >= d.Minute)
                        {
                            Email.EnviaEmailAdministradores();
                        }
                    }
                }

                var email = FilaEmailDAO.Instance.GetNext();

                if (email?.IdEmail > 0 && FilaEmailDAO.Instance.Exists(email.IdEmail))
                {
                    try
                    {
                        var anexos = AnexoEmailDAO.Instance.GetByEmail(email.IdEmail);

                        Email.EnviaEmail(_context, email.IdLoja, email.EmailDestinatario, email.Assunto, email.Mensagem,
                                         email.EmailEnvio, anexos != null && anexos.Length > 0 ? anexos : null);

                        FilaEmailDAO.Instance.IndicaEnvio(email.IdEmail);
                    }
                    catch (Exception ex)
                    {
                        FilaEmailDAO.Instance.SetLast((int)email.IdEmail);
                        ErroDAO.Instance.InserirFromException("ProcessaEmail (1)", ex);
                    }
                }
            }
            catch (Exception ex)
            {
                // Salva a exceção de envio de email aqui, pois caso ocorra algum erro ao enviar o email de administradores por exemplo,
                // não impeça de enviar o sms para os administradores.
                ErroDAO.Instance.InserirFromException(
                    string.Format("ProcessaFilaEmail - Message: {0} - InnerException: {1} - InnerExceptionMessage: {2}",
                                  ex.Message, ex.InnerException != null ? ex.InnerException.ToString() : string.Empty,
                                  ex.InnerException != null ? ex.InnerException.Message : string.Empty), ex);
            }

            try
            {
                // Envio de SMS para administradores
                if (PCPConfig.EmailSMS.EnviarSMSAdministrador)
                {
                    foreach (DateTime d in lstDataEnvioSmsAdmin)
                    {
                        if (DateTime.Now.Hour == d.Hour && DateTime.Now.Minute >= d.Minute)
                        {
                            SMS.EnviaSMSAdministradores();
                        }
                    }
                }

                if (PCPConfig.EmailSMS.EnviarSMSPedidoPronto || PCPConfig.EmailSMS.EnviarSMSAdministrador)
                {
                    FilaSms sms = FilaSmsDAO.Instance.GetNext(!PCPConfig.EmailSMS.EnviarSMSPedidoPronto);
                    if (sms != null)
                    {
                        try
                        {
                            // Chamado 14031
                            System.Net.ServicePointManager.Expect100Continue = false;

                            if (System.Configuration.ConfigurationManager.AppSettings["EnvioNovoSMS"] == "true")
                            {
                                var resposta = ZenviaSMS.EnviaSMS(sms.CodMensagem, sms.NomeLoja, sms.CelCliente, sms.Mensagem);

                                if (resposta.Response.StatusCode == 0)
                                {
                                    FilaSmsDAO.Instance.IndicaEnvio(true, sms.IdSms, resposta.Response.StatusCode, resposta.Response.DetailDescription);
                                }
                                else
                                {
                                    FilaSmsDAO.Instance.SetLast(sms.IdSms, resposta.Response.DetailDescription);
                                }
                            }
                            else
                            {
                                SMSSend.responseSendMessage resposta = SMS.EnviaSMSOld(sms.CodMensagem, sms.NomeLoja, sms.CelCliente, sms.Mensagem);
                                FilaSmsDAO.Instance.IndicaEnvio(true, sms.IdSms, resposta.result, resposta.resultDesc);
                            }
                        }
                        catch (Exception ex)
                        {
                            FilaSmsDAO.Instance.SetLast(sms.IdSms, string.Empty);
                            ErroDAO.Instance.InserirFromException("EnviarSMS", ex);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                // Salva a exceção de envio de SMS aqui, pois caso ocorra algum erro ao enviar o SMS de administradores por exemplo,
                // a informação não se perca
                ErroDAO.Instance.InserirFromException(
                    string.Format("ProcessaFilaSMS - Message: {0} - InnerException: {1} - InnerExceptionMessage: {2}",
                                  ex.Message, ex.InnerException != null ? ex.InnerException.ToString() : string.Empty,
                                  ex.InnerException != null ? ex.InnerException.Message : string.Empty), ex);
            }
        }