Пример #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
        /*
         * 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);
            }
        }
Пример #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;
                                }
                            }
                        }
                    }
                }
            }
        }
Пример #4
0
        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);
                    }
                }
            }
        }