Exemplo n.º 1
0
        /// <summary>
        /// Processa o alerta de alunos com baixa frequência.
        /// </summary>
        public static void ExecJOB_AlertaAlunosBaixaFrequencia()
        {
            CFG_Alerta alerta = CFG_AlertaBO.GetEntity(new CFG_Alerta {
                cfa_id = (byte)CFG_AlertaBO.eChaveAlertas.AlertaAlunosBaixaFrequencia
            });

            if (alerta.cfa_periodoAnalise > 0 && !string.IsNullOrEmpty(alerta.cfa_assunto))
            {
                // Busca os usuários para envio da notificação
                DataTable dt = new GestaoEscolarServicoDAO().ExecJOB_AlertaAlunosBaixaFrequencia();
                List <sAlertaAlunosBaixaFrequencia> lstUsuarios = (from DataRow dr in dt.Rows
                                                                   select(sAlertaAlunosBaixaFrequencia) GestaoEscolarUtilBO.DataRowToEntity(dr, new sAlertaAlunosBaixaFrequencia())).ToList();
                List <int> lstEscolas = lstUsuarios.Select(p => p.esc_id).Distinct().ToList();
                DateTime   dataAtual  = DateTime.UtcNow;
                lstEscolas.ForEach(e =>
                {
                    NotificacaoDTO notificacao          = new NotificacaoDTO();
                    notificacao.SenderName              = "SGP";
                    notificacao.Recipient               = new DestinatarioNotificacao();
                    notificacao.Recipient.UserRecipient = new List <string>();
                    notificacao.MessageType             = 3;
                    notificacao.DateStartNotification   = string.Format("{0:yyyy-MM-ddTHH:mm:ss.0000000-00:00}", dataAtual);
                    notificacao.DateEndNotification     = alerta.cfa_periodoValidade > 0 ? string.Format("{0:yyyy-MM-ddTHH:mm:ss.0000000-00:00}", dataAtual.AddHours(alerta.cfa_periodoValidade)) : null;
                    notificacao.Title = alerta.cfa_nome;
                    List <sAlertaAlunosBaixaFrequencia> lstUsuariosEscola = lstUsuarios.FindAll(u => u.esc_id == e);
                    notificacao.Message = alerta.cfa_assunto
                                          .Replace("[NomeEscola]", lstUsuariosEscola.First().esc_nome.ToString())
                                          .Replace("[PercentualMinimoFrequencia]", lstUsuariosEscola.First().percentualBaixaFrequencia.ToString())
                                          .Replace("[Dias]", alerta.cfa_periodoAnalise.ToString())
                                          .Replace("[PulaLinha]", "<br/>");
                    lstUsuariosEscola.ForEach(ue => notificacao.Recipient.UserRecipient.Add(ue.usu_id.ToString()));
                    if (EnviarNotificacao(notificacao))
                    {
                        List <LOG_AlertaAlunosBaixaFrequencia> lstLog = new List <LOG_AlertaAlunosBaixaFrequencia>();
                        notificacao.Recipient.UserRecipient.ForEach(ur => lstLog.Add(new LOG_AlertaAlunosBaixaFrequencia {
                            usu_id = new Guid(ur), esc_id = e, lbf_dataEnvio = DateTime.Now
                        }));
                        LOG_AlertaAlunosBaixaFrequenciaBO.SalvarEmLote(lstLog);
                    }
                }
                                   );
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Processa o alerta de preenchimento de frequência.
        /// </summary>
        public static void ExecJOB_AlertaPreenchimentoFrequencias()
        {
            CFG_Alerta alerta = CFG_AlertaBO.GetEntity(new CFG_Alerta {
                cfa_id = (byte)CFG_AlertaBO.eChaveAlertas.AlertaPreenchimentoFrequencia
            });

            if (!string.IsNullOrEmpty(alerta.cfa_assunto))
            {
                // Busca os usuários para envio da notificação
                DataTable dt = new GestaoEscolarServicoDAO().ExecJOB_AlertaPreenchimentoFrequencias();
                List <sAlertaPreenchimentoFrequencia> lstUsuarios = (from DataRow dr in dt.Rows
                                                                     select(sAlertaPreenchimentoFrequencia) GestaoEscolarUtilBO.DataRowToEntity(dr, new sAlertaPreenchimentoFrequencia())).ToList();
                if (lstUsuarios.Any())
                {
                    DateTime       dataAtual   = DateTime.UtcNow;
                    NotificacaoDTO notificacao = new NotificacaoDTO();
                    notificacao.SenderName = "SGP";
                    notificacao.Recipient  = new DestinatarioNotificacao();
                    notificacao.Recipient.UserRecipient = new List <string>();
                    notificacao.MessageType             = 3;
                    notificacao.DateStartNotification   = string.Format("{0:yyyy-MM-ddTHH:mm:ss.0000000-00:00}", dataAtual);
                    notificacao.DateEndNotification     = alerta.cfa_periodoValidade > 0 ? string.Format("{0:yyyy-MM-ddTHH:mm:ss.0000000-00:00}", dataAtual.AddHours(alerta.cfa_periodoValidade)) : null;
                    notificacao.Title   = alerta.cfa_nome;
                    notificacao.Message = alerta.cfa_assunto.Replace("[PulaLinha]", "<br/>");
                    lstUsuarios.ForEach(ue => notificacao.Recipient.UserRecipient.Add(ue.usu_id.ToString()));
                    if (EnviarNotificacao(notificacao))
                    {
                        List <LOG_AlertaPreenchimentoFrequencia> lstLog = new List <LOG_AlertaPreenchimentoFrequencia>();
                        notificacao.Recipient.UserRecipient.ForEach(ur => lstLog.Add(new LOG_AlertaPreenchimentoFrequencia {
                            usu_id = new Guid(ur), lpf_dataEnvio = DateTime.Now
                        }));
                        LOG_AlertaPreenchimentoFrequenciaBO.SalvarEmLote(lstLog);
                    }
                }
            }
        }