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); }
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); } }