//---------------------------------------------------------------------------------------------- // 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); }
//---------------------------------------------------------------------------------------------- private void MaskAlarme(CEvenementAlarmMask evenement) { if (evenement.IdLienAccesAlarme <= 0 || evenement.DetailMasquage == null) { return; } CDictionnaireConcerne dic = null; int nIdElement = 0; if (evenement.IdSite != null) { nIdElement = evenement.IdSite.Value; dic = m_dicDirectementConcernesParSite; } if (evenement.IdEquipement != null) { nIdElement = evenement.IdEquipement.Value; dic = m_dicDirectementConcernesParEquipement; } if (evenement.IdLiaison != null) { nIdElement = evenement.IdLiaison.Value; dic = m_dicDirectementConcernesParLiaison; } List <CInfoElementDeSchemaSupervise> lst = null; EGraviteAlarmeAvecMasquage gravite = (EGraviteAlarmeAvecMasquage)evenement.NiveauMasquage; if (dic.TryGetValue((int)nIdElement, out lst)) { List <CInfoElementDeSchemaSupervise> lstAPrevenir = new List <CInfoElementDeSchemaSupervise>(lst); while (lstAPrevenir.Count != 0) { lstAPrevenir.Sort(); CInfoElementDeSchemaSupervise[] infos = lstAPrevenir.ToArray(); lstAPrevenir.Clear(); foreach (CInfoElementDeSchemaSupervise info in infos) { switch (evenement.DetailMasquage) { case EEvenementMasquage.DebutMasquageAdministrateur: info.SetMasquageAdministrateur(evenement.IdLienAccesAlarme, true); break; case EEvenementMasquage.FinMasquageAdministrateur: info.SetMasquageAdministrateur(evenement.IdLienAccesAlarme, false); break; case EEvenementMasquage.DebutMasquageBrigadier: info.SetMasquageBrigadier(evenement.IdLienAccesAlarme, true); break; case EEvenementMasquage.FinMasquageBrigadier: info.SetMasquageBrigadier(evenement.IdLienAccesAlarme, false); break; } CInfoElementDeSchemaSupervise parent = info.Parent; if (parent != null) { lstAPrevenir.Add(parent); } } } if (lst.Count != 0 && m_infoSchemaRacine != null) { List <CInfoElementDeSchemaSupervise> lstModifs = new List <CInfoElementDeSchemaSupervise>(); m_infoSchemaRacine.RecalculeToutLeMasquage(lstModifs); lock (typeof(CLockerRefresh)) { foreach (CInfoElementDeSchemaSupervise info in lstModifs) { if (info.IdElementDeSchema != null) { m_dicChangesDepuisDernierRefresh[info.IdElementDeSchema.Value] = true; } } } Refresh(); } } }
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; } } } } } } }