Exemple #1
0
        //-----------------------------------------------------------------------
        public List <CInfoAlarmeAffichee> GetAlarmsInfoFromDB()
        {
            List <CInfoAlarmeAffichee> lstInfoAlarmeAffichee = new List <CInfoAlarmeAffichee>();

            CListeObjetsDonnees lstAlarmes = new CListeObjetsDonnees(m_consultationEnCours.ContexteDonnee, typeof(CSpvAlarmeDonnee));

            //string clauseWhere = "HasNo( AlarmEnd." + CSpvAlarm.c_champALARM_ID + " )";

            /*
             * string clauseWhere = "Has( LienAccesAlarmeRep." +  CSpvLienAccesAlarme_Rep.c_champALARMEDONNEE_ID +
             *  " ) and LienAccesAlarmeRep.LienAccesAlarmes." + CSpvLienAccesAlarme.c_champCOMMUT +
             *  " = 0 and HasNo( AlarmeMasquee." + CSpvAlarmeDonneeCorrelation.c_champALARMEDONNEE_ID + " )";*/
            /*
             * string clauseWhere = "Has( LienAccesAlarmeRep." + CSpvLienAccesAlarme_Rep.c_champALARMEDONNEE_ID +
             *  " ) and LienAccesAlarmeRep.LienAccesAlarmes." + CSpvLienAccesAlarme.c_champCOMMUT +
             *  " = 0 and HasNo( SpvAlarme.AlarmeMasquee." + CSpvAlarmeDonneeCorrelation.c_champALARMEDONNEE_ID + " )";
             */
            string clauseWhere = "Has( LienAccesAlarmeRep." + CSpvLienAccesAlarme_Rep.c_champALARMEDONNEE_ID +
                                 " ) and LienAccesAlarmeRep.LienAccesAlarmes." + CSpvLienAccesAlarme.c_champCOMMUT +
                                 " = 0 and HasNo( AlarmeMasquee." + CSpvAlarmeDonneeCorrelation.c_champALARMEDONNEE_ID + " )";

            lstAlarmes.Filtre = new CFiltreDataAvance(CSpvAlarmeDonnee.c_nomTable, clauseWhere);

            //DateTime dateNow = DateTime.Now;
            DateTime dateNow = CDivers.GetSysdateNotNull();

            foreach (CSpvAlarmeDonnee alarme in lstAlarmes)
            {
                //       DateTime MaskBriDateMin = (DateTime)alarm.GetFirstAccesAccescRep().LienAccesAlarmes.MaskBriDateMin;
                //       DateTime MaskBriDateMax = (DateTime)alarm.GetFirstAccesAccescRep().LienAccesAlarmes.MaskBriDateMax;

                if (alarme.GetFirstAccesAccescRep().LienAccesAlarmes.MaskAdminDateMin <= dateNow &&
                    alarme.GetFirstAccesAccescRep().LienAccesAlarmes.MaskAdminDateMax >= dateNow)
                {
                    continue;
                }
                if (alarme.GetFirstAccesAccescRep().LienAccesAlarmes.MaskBriDateMin <= dateNow &&
                    alarme.GetFirstAccesAccescRep().LienAccesAlarmes.MaskBriDateMax >= dateNow)
                {
                    continue;
                }

                CInfoAlarmeAffichee infoAlarm = new CInfoAlarmeAffichee(alarme);

                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;
                    }
                }
                lstInfoAlarmeAffichee.Add(infoAlarm);
            }

            lstInfoAlarmeAffichee.Sort(new CTrieurInfoAlarmeAffichee(CSpvWin32Registre.TriConsultationAlarmeCroissant));
            return(lstInfoAlarmeAffichee);
        }
        public CMessageAlarmeNotification(string strMessage)
        {
            String[] strDonnees = strMessage.Split('#');
            m_nCodeMessage = (ECategorieMessageAlarme)int.Parse(strDonnees[(int)EChampsMessageAlarme.CodeMessage]);
            string[] strTempArray;

            try
            {
                switch (m_nCodeMessage)
                {
                case ECategorieMessageAlarme.AlarmStartStop:
                    m_nIdEvtAlarme     = int.Parse(strDonnees[(int)EChampsMessageAlarme.IDEvtAlarme]);
                    m_nIdAlarmData     = int.Parse(strDonnees[(int)EChampsMessageAlarme.IDAlarmData]);
                    m_nIdAlarmeGeree   = int.Parse(strDonnees[(int)EChampsMessageAlarme.IDAlarmeGeree]);
                    m_nIdObjetConcerne = int.Parse(strDonnees[(int)EChampsMessageAlarme.IDObjetEnAlarme]);

                    m_TypeObjetConcerne = (ETypeObjetEnAlarme)
                                          int.Parse(strDonnees[(int)EChampsMessageAlarme.TypeObjetEnAlarme]);

                    switch (m_TypeObjetConcerne)
                    {
                    case ETypeObjetEnAlarme.Equipement:
                        m_nIdEquipement = m_nIdObjetConcerne;
                        break;

                    case ETypeObjetEnAlarme.Site:
                        m_nIdSite = m_nIdObjetConcerne;
                        break;

                    case ETypeObjetEnAlarme.Liaison:
                        m_nIdLiaison = m_nIdObjetConcerne;
                        break;
                    }

                    if (int.TryParse(strDonnees[(int)EChampsMessageAlarme.IDDebutAlarme], out m_nTemp))
                    {
                        m_nIdDebutAlarme = m_nTemp;
                    }

                    m_strNomAlarmeGeree            = strDonnees[(int)EChampsMessageAlarme.NomAlarmeGeree];
                    m_strClasseAlarme              = strDonnees[(int)EChampsMessageAlarme.ClasseAlarme];
                    m_nNumeroObjetDeCollecteOuTrap =
                        CDivers.ConvertToint(strDonnees[(int)EChampsMessageAlarme.NumeroObjetDeCollecteOuTrap], 0);

                    m_TypeEvenementAlarme =
                        (EAlarmEvent)int.Parse(strDonnees[(int)EChampsMessageAlarme.TypeAlarmeX733]);

                    m_DateEvenementAlarme = DateTime.ParseExact(strDonnees[(int)EChampsMessageAlarme.DateAlarme],
                                                                "yyyy MM dd HH:mm:ss", null);
                    m_GraviteAlarme = (EGraviteAlarmeAvecMasquage)
                                      int.Parse(strDonnees[(int)EChampsMessageAlarme.Gravite]);

                    m_strNomSeuil  = strDonnees[(int)EChampsMessageAlarme.NomSeuil];
                    m_nValeurSeuil = CDivers.ConvertToint(strDonnees[(int)EChampsMessageAlarme.ValeurSeuil], 0);

                    m_strNumeroSortieAlarmeOuIP = strDonnees[(int)EChampsMessageAlarme.NumeroSortieAlarmeOuIP];

                    m_NatureAlarme         = (EAlarmNature)int.Parse(strDonnees[(int)EChampsMessageAlarme.NatureAlarme]);
                    m_strCommentaire       = strDonnees[(int)EChampsMessageAlarme.CommentaireAlarmeGeree];
                    m_strInfoAdditionnelle = strDonnees[(int)EChampsMessageAlarme.InformationAdditionnelle];
                    if (strDonnees[(int)EChampsMessageAlarme.IndicateurAAcquitter] == "")
                    {
                        m_bAAcquitter = false;
                    }
                    else
                    {
                        m_bAAcquitter = System.Convert.ToBoolean(int.Parse(strDonnees[(int)EChampsMessageAlarme.IndicateurAAcquitter]));
                    }
                    if (strDonnees[(int)EChampsMessageAlarme.IndicateurActiverSonnerie] == "")
                    {
                        m_bSonner = false;
                    }
                    else
                    {
                        m_bSonner = System.Convert.ToBoolean(int.Parse(strDonnees[(int)EChampsMessageAlarme.IndicateurActiverSonnerie]));
                    }
                    m_TypeSonnerie         = (ETypeSon)int.Parse(strDonnees[(int)EChampsMessageAlarme.TypeSonnerie]);
                    m_bPositionCommutateur =
                        System.Convert.ToBoolean(int.Parse(strDonnees[(int)EChampsMessageAlarme.IndicateurAlarmeOuCommutateur]));
                    m_strNomSite      = strDonnees[(int)EChampsMessageAlarme.NomDuSite];
                    m_strNomTypeObjet = strDonnees[(int)EChampsMessageAlarme.NomDuType];
                    m_strNomObjet     = strDonnees[(int)EChampsMessageAlarme.NomElement];

                    string   strServicesConcernes = strDonnees[(int)EChampsMessageAlarme.NomService];
                    string[] strSrv, strNomSrv, strTemp;
                    int[]    nIdSrv;
                    strSrv = strServicesConcernes.Split(new char[] { cSeparateur },
                                                        StringSplitOptions.RemoveEmptyEntries);
                    nIdSrv    = new int[strSrv.Length];
                    strNomSrv = new String[strSrv.Length];
                    for (int i = 0; i < strSrv.Length; i++)
                    {
                        strTemp      = strSrv[i].Split(new char[] { cSousSep });
                        nIdSrv[i]    = Convert.ToInt32(strTemp[0]);
                        strNomSrv[i] = strTemp[1];
                    }
                    m_IdServicesConcernes = nIdSrv;
                    m_ServicesConcernes   = strNomSrv;

                    m_strNomClientsConcernes = strDonnees[(int)EChampsMessageAlarme.NomClient];
                    if (m_strNomClientsConcernes.Contains(strSeparateur))
                    {
                        m_ClientsConcernes = m_strNomClientsConcernes.Split(new char[] { cSeparateur },
                                                                            StringSplitOptions.RemoveEmptyEntries);
                    }

                    m_strEtatServices = strDonnees[(int)EChampsMessageAlarme.EtatOperationnelService];
                    if (m_strEtatServices.Contains(strSeparateur) || m_strEtatServices.Length > 0)
                    {
                        strTempArray = m_strEtatServices.Split(new char[] { cSeparateur },
                                                               StringSplitOptions.RemoveEmptyEntries);
                        m_EtatServices = new double[strTempArray.Length];
                        for (int i = 0; i < strTempArray.Length; i++)
                        {
                            m_EtatServices[i] = double.Parse(strTempArray[i]);
                        }
                    }
                    m_strEtatsServices = strDonnees[(int)EChampsMessageAlarme.EtatOperationnelTousServices];
                    m_strVariablesTrap = strDonnees[(int)EChampsMessageAlarme.VariablesTrap];

                    if (m_strVariablesTrap.Length > 0 && m_strVariablesTrap.Substring(0, 9) == "Trap SNMP")
                    {
                        // Dans ce cas, le format est le suivant :
                        // Trap SNMP : EquipId;variables traps séparées par";"
                        // exemple : Trap SNMP : 8601;.1.3.6.1.4.1,i,0;.1.3.6.1.4.1.9485.1.0,i,3;
                        int nPos = m_strVariablesTrap.IndexOf(cSeparateur);
                        m_strVariablesTrap = m_strVariablesTrap.Substring(nPos + 1);
                        if (m_strVariablesTrap.Length > 0)
                        {
                            m_VariablesTrap = m_strVariablesTrap.Split(cSeparateur);
                        }
                    }

                    break;

                case ECategorieMessageAlarme.AcquittementListeAlarme:
                    m_nIdEvtAlarme            = int.Parse(strDonnees[(int)EChampsMessageAcquittementListe.IDAlarme]);
                    m_nIdListeAlarmeAcquittee = int.Parse(strDonnees[(int)EChampsMessageAcquittementListe.IDListeAlarme]);

                    break;

                case ECategorieMessageAlarme.AlarmMasqueeParUneAutre:
                    m_nIdEvtAlarme     = int.Parse(strDonnees[(int)EChampsMessageAlarmeFille.IDAlarme]);
                    m_nIdAlarmeGeree   = int.Parse(strDonnees[(int)EChampsMessageAlarmeFille.IDAlarmeGeree]);
                    m_nIdObjetConcerne = int.Parse(strDonnees[(int)EChampsMessageAlarmeFille.IDObjetEnAlarme]);

                    switch (m_TypeObjetConcerne)
                    {
                    case ETypeObjetEnAlarme.Equipement:
                        m_nIdEquipement = m_nIdObjetConcerne;
                        break;

                    case ETypeObjetEnAlarme.Site:
                        m_nIdSite = m_nIdObjetConcerne;
                        break;

                    case ETypeObjetEnAlarme.Liaison:
                        m_nIdLiaison = m_nIdObjetConcerne;
                        break;
                    }

                    if (int.TryParse(strDonnees[(int)EChampsMessageAlarmeFille.TypeObjetEnAlarme], out m_nTemp))
                    {
                        m_TypeObjetConcerne = (ETypeObjetEnAlarme)m_nTemp;
                    }
                    m_strClasseAlarme = strDonnees[(int)EChampsMessageAlarmeFille.ClasseAlarme];
                    m_nNumeroObjetDeCollecteOuTrap = int.Parse(strDonnees[(int)EChampsMessageAlarmeFille.NumeroObjetDeCollecteOuTrap]);
                    m_strNumeroSortieAlarmeOuIP    = strDonnees[(int)EChampsMessageAlarmeFille.NumeroSortieAlarmeOuIP];
                    m_strEtatsServices             = strDonnees[(int)EChampsMessageAlarmeFille.EtatOperationnelTousServices];
                    m_DateRetombeeFille            = CDivers.GetSysdateNotNull();

                    break;

                case ECategorieMessageAlarme.MasquageAccesAlarme:
                    m_nIdObjetConcerne = int.Parse(strDonnees[(int)EChampsMasquageAlarme.IDObjetConcerne]);

                    m_TypeObjetConcerne =
                        (ETypeObjetEnAlarme)int.Parse(strDonnees[(int)EChampsMasquageAlarme.TypeObjetConcerne]);

                    switch (m_TypeObjetConcerne)
                    {
                    case ETypeObjetEnAlarme.Equipement:
                        m_nIdEquipement = m_nIdObjetConcerne;
                        break;

                    case ETypeObjetEnAlarme.Site:
                        m_nIdSite = m_nIdObjetConcerne;
                        break;

                    case ETypeObjetEnAlarme.Liaison:
                        m_nIdLiaison = m_nIdObjetConcerne;
                        break;
                    }

                    m_strClasseAlarme = strDonnees[(int)EChampsMasquageAlarme.ClasseAlarme];
                    m_nNumeroObjetDeCollecteOuTrap =
                        int.Parse(strDonnees[(int)EChampsMasquageAlarme.NumeroObjetDeCollecteOuTrap]);

                    m_EvenementMasquage = (EEvenementMasquage)
                                          int.Parse(strDonnees[(int)EChampsMasquageAlarme.EvenementMasquage]);

                    m_nIdLienAccesAlarme =
                        int.Parse(strDonnees[(int)EChampsMasquageAlarme.IdLienAccesAlarme]);

                    m_strEtatsServices = strDonnees[(int)EChampsMasquageAlarme.EtatOperationnelTousServices];

                    break;

                default:
                    m_bMessagePourEM = true;
                    break;
                }
            }
            catch (Exception e)
            {
                throw new Exception(I.T("Error in decoding MESSALRM message (@1)|50002", e.Message));
            }
        }