//---------------------------------------------------------------------------------------------- // Réception des notifications d'alarmes ici void m_recepteurAlarme_Notification(IDonneeNotification donnee) { CDonneeNotificationAlarmes donneeAlarme = donnee as CDonneeNotificationAlarmes; if (donneeAlarme == null) { return; } CEvenementAlarm[] lstAlarmes = donneeAlarme.Alarmes; foreach (CEvenementAlarm evAlarme in lstAlarmes) { if (evAlarme is CEvenementAlarmStartStop) { CEvenementAlarmStartStop evtAlarmStartStop = (CEvenementAlarmStartStop)evAlarme; if (evtAlarmStartStop.Gravite == EGraviteAlarmeAvecMasquage.EndAlarm) { if (evtAlarmStartStop.IdAlarmData > 0) { int nIdAlarmeData = evtAlarmStartStop.IdAlarmData; StopAlarme(nIdAlarmeData); } } else { StartAlarme(new CInfoAlarmeAffichee(evtAlarmStartStop)); } } else if (evAlarme is CEvenementAlarmMasqueeParUneAutre) { CEvenementAlarmMasqueeParUneAutre evenementAlarm = (CEvenementAlarmMasqueeParUneAutre)evAlarme; //if (evenementAlarm.AlarmStartId > 0) // StopAlarme(evenementAlarm.AlarmStartId); if (evenementAlarm.IdAlarmeData > 0) { StopAlarme(evenementAlarm.IdAlarmeData); } } else if (evAlarme is CEvenementAlarmMask) { CEvenementAlarmMask evenementAlarm = (CEvenementAlarmMask)evAlarme; if (evenementAlarm.IdLienAccesAlarme > 0) { MaskAlarme(evenementAlarm); } } } List <CInfoElementDeSchemaSupervise> lstConcernes = new List <CInfoElementDeSchemaSupervise>(); OnChangementDansLaBase(lstConcernes); }
/* * bool IsFrequentAlarm(CInfoAlarmeAffichee infoAlarm) * { * if (infoAlarm.CodeAlarmeNature == (int)EAlarmNature.Frequente) * { * m_NbAlFreq++; * return true; * } * else * return false; * }*/ bool IsFrequentAlarm(CEvenementAlarmStartStop evAlarm) { if (evAlarm.NatureAlarme == EAlarmNature.Frequente) { m_NbAlFreq++; return(true); } else { return(false); } }
void OnReceiveNotificationAlarmEnCours(IDonneeNotification donnee) { CDonneeNotificationAlarmes donneeAlarme = donnee as CDonneeNotificationAlarmes; if (donneeAlarme == null) { return; } CEvenementAlarm[] lstAlarmes = donneeAlarme.Alarmes; foreach (CEvenementAlarm evAl in lstAlarmes) { if (evAl is CEvenementAlarmStartStop) { CEvenementAlarmStartStop evAlarme = (CEvenementAlarmStartStop)evAl; if (IsFrequentAlarm(evAlarme)) { MAJFrequentButtonText(); continue; } CInfoAlarmeAffichee infoAlarm = new CInfoAlarmeAffichee(evAlarme); if (m_consultationEnCours.Parametres.FormuleFiltre != null) { CContexteEvaluationExpression contexte = new CContexteEvaluationExpression(infoAlarm); CResultAErreur result = m_consultationEnCours.Parametres.FormuleFiltre.Eval(contexte); if (!Convert.ToBoolean(result.Data)) { continue; } } if (evAlarme.Gravite == EGraviteAlarmeAvecMasquage.EndAlarm && evAlarme.IdAlarmeDebut > 0) { for (int i = 0; i < m_lstViewEnCours.GetCount(); i++) { infoAlarm = (CInfoAlarmeAffichee)m_lstViewEnCours.GetObjectFromList(i); if (infoAlarm != null && infoAlarm.IdSpvEvtAlarme == evAlarme.IdAlarmeDebut) { if (m_consultationEnCours.Parametres.DelaiMasquageTerminnees > 0) { infoAlarm.DateEffacement = DateTime.Now.AddMinutes(m_consultationEnCours.Parametres.DelaiMasquageTerminnees); } m_lstViewEnCours.RemoveObjet(infoAlarm); infoAlarm.DateFin = evAlarme.DateEvenementAlarme; m_lstViewRetombe.AddObject(infoAlarm, CSpvWin32Registre.TriConsultationAlarmeCroissant); break; } } } else { m_lstViewEnCours.AddObject(new CInfoAlarmeAffichee(evAlarme), CSpvWin32Registre.TriConsultationAlarmeCroissant); SetVoyantAlarme(); } } else if (evAl is CEvenementAlarmMasqueeParUneAutre) { for (int i = 0; i < m_lstViewEnCours.GetCount(); i++) { CInfoAlarmeAffichee infoAlarm = (CInfoAlarmeAffichee)m_lstViewEnCours.GetObjectFromList(i); if (infoAlarm != null && infoAlarm.IdSpvEvtAlarme == ((CEvenementAlarmMasqueeParUneAutre)evAl).AlarmStartId) { m_lstViewEnCours.RemoveObjet(infoAlarm); // infoAlarm.DateFin = evAlarme.EventAlarmRetombee.StopAlarmDate; // m_lstViewRetombe.AddObject(infoAlarm); break; } } } else if (evAl is CEvenementAlarmMask) { CEvenementAlarmMask evAlarme = (CEvenementAlarmMask)evAl; if (evAlarme.NiveauMasquage != EMasquage.NonMasque) { if (evAlarme.LocalName == (new CMaskedBy(EMaskedBy.Administrateur)).Libelle) { m_NbMaskAdm++; } else { m_NbMaskBrig++; } } else { if (evAlarme.LocalName == (new CMaskedBy(EMaskedBy.Administrateur)).Libelle) { m_NbMaskAdm--; } else { m_NbMaskBrig--; } } MAJAdminButtonText(); MAJBrigButtonText(); } else if (evAl is CEvenementAlarmAcknowledge) { CEvenementAlarmAcknowledge evAlarme = (CEvenementAlarmAcknowledge)evAl; if (evAlarme.IdAlarmeAcquittee == 0) // Acquittement de liste { if (evAlarme.IdListeAlarmeAcquittee == m_consultationEnCours.Id) // Cette liste { TraiteAquitteAlarmes(); } } else { // Acquittement d'une alarme précise bool bTrouve = false; for (int i = 0; i < m_lstViewEnCours.GetCount(); i++) { CInfoAlarmeAffichee infoAlarm = (CInfoAlarmeAffichee)m_lstViewEnCours.GetObjectFromList(i); if (infoAlarm != null && infoAlarm.IdSpvEvtAlarme == evAlarme.IdAlarmeAcquittee) { infoAlarm.EstAcquittee = true; bTrouve = true; break; } } if (!bTrouve) // l'alarme doit être dans les retombées { for (int i = 0; i < m_lstViewRetombe.GetCount(); i++) { CInfoAlarmeAffichee infoAlarm = (CInfoAlarmeAffichee)m_lstViewRetombe.GetObjectFromList(i); if (infoAlarm != null && infoAlarm.IdSpvEvtAlarme == evAlarme.IdAlarmeAcquittee) { infoAlarm.EstAcquittee = true; if (m_consultationEnCours.Parametres.DelaiMasquageTerminnees > 0) { infoAlarm.DateEffacement = DateTime.Now.AddMinutes(m_consultationEnCours.Parametres.DelaiMasquageTerminnees); } break; } } } } } } }
public static void SendMails(List <CEvenementAlarm> lstEvents, CContexteDonnee ctxDonnee) { /* * foreach (CEvenementAlarm eventAl in lstEvents) * { * if (eventAl.CategorieMessageAlarme == ECategorieMessageAlarme.AlarmStartStop) * { * if (eventAl.EventAlarmStartStop.AlarmInfo.SeverityCode == (int)EGraviteAlarmeAvecMasquage.EndAlarm) * continue; * * CListeObjetsDonnees lstConsult = new CListeObjetsDonnees(ctxDonnee, typeof(CConsultationAlarmesEnCoursInDb)); * lstConsult.Filtre = new CFiltreDataAvance(CConsultationAlarmesEnCoursInDb.c_nomTable, * CConsultationAlarmesEnCoursInDb.c_champActiverEMail + " = 1 and Has( Emails." + * CParamlArmEC_EMail.c_champParamAlarmECId + " )", null); * * foreach (CConsultationAlarmesEnCoursInDb consult in lstConsult) * { * int id = consult.Id;//test * if (consult.Parametres.FormuleFiltre != null) * { * CContexteEvaluationExpression contexte = new CContexteEvaluationExpression(eventAl.EventAlarmStartStop.AlarmInfo); * if (!consult.Parametres.FormuleFiltre.Eval(contexte)) * continue; * } * * List<string> lstColumnNames = new List<string>(); * ArrayList arrayData = new ArrayList(); * StringBuilder stblMessage = new StringBuilder(); * string [] arrayDest; * string stSubject; * string stSender; * string st; * int i = 0; * * lstColumnNames = consult.Parametres.GetColumnNames(); * arrayData = consult.Parametres.GetDataToDisplay(eventAl.EventAlarmStartStop.AlarmInfo); * * foreach(string stColumnName in lstColumnNames) * { * st = stColumnName + " : " + arrayData[i]; * stblMessage.AppendLine(st); * i++; * } * * stSubject = I.T("Alarm @1|60000", eventAl.EventAlarmStartStop.AlarmInfo.AlarmeGeree.Name); * * arrayDest = new string[consult.Emails.Count]; * i=0; * foreach(CParamlArmEC_EMail paramlArmEC_EMail in consult.Emails) * { * arrayDest[i] = paramlArmEC_EMail.Email; * i++; * } * * IDatabaseRegistre registre = (IDatabaseRegistre)C2iFactory.GetNew2iObjetServeur(typeof(IDatabaseRegistre), ctxDonnee.IdSession); * stSender = (string)registre.GetValeurString("SENDER_ADDRESS",""); * * int[] docsArray = new int[0]; * CMailSC2I mail = new CMailSC2I(stSender, stSubject, stblMessage.ToString(), * arrayDest, docsArray); * * IExpediteurMail expediteur = (IExpediteurMail)C2iFactory.GetNewObjetForSession("CExpediteurMail", typeof(IExpediteurMail), ctxDonnee.IdSession); * CResultAErreur result = expediteur.SendMail(mail); * } * } * } * }*/ foreach (CEvenementAlarm eventAlarme in lstEvents) { if (eventAlarme.GetType() == typeof(CEvenementAlarmStartStop)) { CEvenementAlarmStartStop eventAl = (CEvenementAlarmStartStop)eventAlarme; if (eventAl.Gravite == EGraviteAlarmeAvecMasquage.EndAlarm) { continue; } CInfoAlarmeAffichee infoAlarmeAffichee = new CInfoAlarmeAffichee(eventAl); CListeObjetsDonnees lstConsult = new CListeObjetsDonnees(ctxDonnee, typeof(CConsultationAlarmesEnCoursInDb)); lstConsult.Filtre = new CFiltreDataAvance(CConsultationAlarmesEnCoursInDb.c_nomTable, CConsultationAlarmesEnCoursInDb.c_champActiverEMail + " = 1 and Has( Emails." + CParamlArmEC_EMail.c_champParamAlarmECId + " )", null); foreach (CConsultationAlarmesEnCoursInDb consult in lstConsult) { int id = consult.Id;//test if (consult.Parametres.FormuleFiltre != null) { CContexteEvaluationExpression contexte = new CContexteEvaluationExpression(infoAlarmeAffichee); if (!consult.Parametres.FormuleFiltre.Eval(contexte)) { continue; } } List <string> lstColumnNames = new List <string>(); ArrayList arrayData = new ArrayList(); StringBuilder stblMessage = new StringBuilder(); string[] arrayDest; string stSubject; string stSender; string st; int i = 0; lstColumnNames = consult.Parametres.GetColumnNames(); arrayData = consult.Parametres.GetDataToDisplay(infoAlarmeAffichee); foreach (string stColumnName in lstColumnNames) { st = stColumnName + " : " + arrayData[i]; stblMessage.AppendLine(st); i++; } stSubject = I.T("Alarm @1|60000", eventAl.NomAlarmeGeree); arrayDest = new string[consult.Emails.Count]; i = 0; foreach (CParamlArmEC_EMail paramlArmEC_EMail in consult.Emails) { arrayDest[i] = paramlArmEC_EMail.Email; i++; } IDatabaseRegistre registre = (IDatabaseRegistre)C2iFactory.GetNew2iObjetServeur(typeof(IDatabaseRegistre), ctxDonnee.IdSession); stSender = (string)registre.GetValeurString("SENDER_ADDRESS", m_strExpMailParDefaut); int[] docsArray = new int[0]; CMailSC2I mail = new CMailSC2I(stSender, stSubject, stblMessage.ToString(), arrayDest, null, null, docsArray); IExpediteurMail expediteur = (IExpediteurMail)C2iFactory.GetNewObjetForSession("CExpediteurMail", typeof(IExpediteurMail), ctxDonnee.IdSession); CResultAErreur result = expediteur.SendMail(mail); } } } }