예제 #1
0
        //----------------------------------------------------------------------------------------------
        // 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);
        }
예제 #2
0
        //----------------------------------------------------------------------------------------------
        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();
                }
            }
        }
예제 #3
0
        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;
                                }
                            }
                        }
                    }
                }
            }
        }