//------------------------------------------------------------------- public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte) { CResultAErreur result = base.TraitementAvantSauvegarde(contexte); if (!result) { return(result); } DataTable table = contexte.Tables[GetNomTable()]; if (table == null) { return(result); } ArrayList lst = new ArrayList(table.Rows); CNotificationModificationsAlarme notif = contexte.ExtendedProperties[c_cleNotification] as CNotificationModificationsAlarme; if (notif == null) { notif = new CNotificationModificationsAlarme(IdSession); contexte.ExtendedProperties[c_cleNotification] = notif; } foreach (DataRow row in lst) { if (row.RowState == DataRowState.Added || row.RowState == DataRowState.Modified) { notif.AddModifiedAlarm(new CAlarme(row)); } } return(result); }
//----------------------------------------------------------------------------------- void OnReceiveNotification(IDonneeNotification donnee) { CNotificationModificationsAlarme notification = donnee as CNotificationModificationsAlarme; if (notification == null) { return; } lock (typeof(CLockerNotificationAlarmes)) { TraiteNotification(notification); } }
public override CResultAErreur TraitementApresSauvegarde(CContexteDonnee contexte, bool bOperationReussie) { CResultAErreur result = base.TraitementApresSauvegarde(contexte, bOperationReussie); if (result) { CNotificationModificationsAlarme notif = contexte.ExtendedProperties[c_cleNotification] as CNotificationModificationsAlarme; if (notif != null) { CEnvoyeurNotification.EnvoieNotifications(new IDonneeNotification[] { notif }); contexte.ExtendedProperties.Remove(c_cleNotification); } } return(result); }
//----------------------------------------------------------------------------------- private void TraiteNotification(CNotificationModificationsAlarme notification) { HashSet <string> tableAlarmeAvant = UpdateNombreAlarmesNonAcquittees(); // Mise à jour des Alarmes CListeEntitesDeMemoryDb <CLocalAlarme> listeAlaremsMaj = new CListeEntitesDeMemoryDb <CLocalAlarme>(notification.MemoryDb); m_dataBase.AcceptChanges(); foreach (CLocalAlarme alarmeAjoutModif in listeAlaremsMaj) { if (alarmeAjoutModif.Parent == null) { CLocalAlarme alrm = m_dataBase.ImporteObjet(alarmeAjoutModif, true, true) as CLocalAlarme; /*if (alrm != null) * alrm.Row.Row.SetModified();*/ } } m_tableauAlarmesEnCours.UpdateDataBase(m_dataBase); m_tableauAlarmesRetombees.UpdateDataBase(m_dataBase); HashSet <string> tableAlarmeApres = UpdateNombreAlarmesNonAcquittees(); bool bSonnerie = false; foreach (string strIdAlarme in tableAlarmeApres) { if (!tableAlarmeAvant.Contains(strIdAlarme)) { bSonnerie = true; break; } } if (bSonnerie) { StartSonnerie(); } else { StopSonnerie(); } }
//---------------------------------------------------------------------------------------------- // Réception des notifications d'alarmes ici void m_recepteurAlarme_Notification(IDonneeNotification donnee) { CNotificationModificationsAlarme notificationAlarme = donnee as CNotificationModificationsAlarme; if (notificationAlarme == null) { return; } CListeEntitesDeMemoryDb <CLocalAlarme> lstAlarmes = new CListeEntitesDeMemoryDb <CLocalAlarme>(notificationAlarme.MemoryDb); foreach (CLocalAlarme alarme in lstAlarmes) { if (alarme.Childs.Count() == 0) { if (alarme.DateFin == null) { StartAlarme(alarme); } else { StopAlarme(alarme); } } } /* * 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); }