Exemple #1
0
        public IEnumerable <IElementDeSchemaReseau> GetSupportingElementsSortedFrom(IElementDeSchemaReseau element)
        {
            CListeObjetsDonnees           lstSupports = LiensSupportants;
            HashSet <int>                 setFaits    = new HashSet <int>();
            List <IElementDeSchemaReseau> lstElements = new List <IElementDeSchemaReseau>();

            if (element != null)
            {
                List <CLienReseau> lstLiens = new List <CLienReseau>();
                FillLiensSupportFrom(element, lstLiens, setFaits, lstSupports.ToList <CLienReseau>());
                lstElements.Add(element);
                foreach (CLienReseau lien in lstLiens)
                {
                    if (lien.Element1.Equals(element))
                    {
                        lstElements.Add(lien.Element2);
                    }
                    else
                    {
                        lstElements.Add(lien.Element1);
                    }
                }
            }
            return(lstElements);
        }
Exemple #2
0
        public IEnumerable <CLienReseau> GetSupportingSortedFrom(IElementDeSchemaReseau element)
        {
            CListeObjetsDonnees lstSupports = LiensSupportants;
            HashSet <int>       setFaits    = new HashSet <int>();
            List <CLienReseau>  lstLiens    = new List <CLienReseau>();

            FillLiensSupportFrom(element, lstLiens, setFaits, lstSupports.ToList <CLienReseau>());
            return(lstLiens.AsReadOnly());
        }
        public void Init(IEnumerable <CCategorieGED> lstCategories)
        {
            m_panelCategories.SuspendDrawing();
            if (lstCategories == null || lstCategories.Count() == 0)
            {
                List <CCategorieGED> lstTmp = new List <CCategorieGED>();
                CListeObjetsDonnees  lst    = new CListeObjetsDonnees(CSc2iWin32DataClient.ContexteCourant, typeof(CCategorieGED));
                lstTmp        = lst.ToList <CCategorieGED>();
                lstCategories = lstTmp;
            }
            //Prépare l'arborescence
            List <CCategorieGED> lstOrdonnee = new List <CCategorieGED>();

            lstOrdonnee.AddRange(lstCategories);
            lstOrdonnee.Sort((x, y) => x.CodeSystemeComplet.CompareTo(y.CodeSystemeComplet));
            HashSet <CCategorieGED> setFaites = new HashSet <CCategorieGED>();

            foreach (CCategorieGED cat in lstOrdonnee)
            {
                AddCat(cat, setFaites, lstOrdonnee, 0);
            }
        }
Exemple #4
0
        // /////////////////////////////////////////////////////////
        /// <summary>
        /// Le data du result contient un IBaseGantt
        /// </summary>
        /// <returns></returns>
        public static CResultAErreur CreateGantt(
            CMetaProjet metaProjet,
            CParametreNiveauArbreGanttGroupe groupeRacine,
            CFiltreData filtreElements)
        {
            CResultAErreur result = CResultAErreur.True;
            if (metaProjet == null)
                return result;
            CElementDeGanttMetaProjet elementRacine = new CElementDeGanttMetaProjet(null, metaProjet);
            if (!result)
                return result;
            List<CProjet> lstProjets = new List<CProjet>();

            bool bLectureDansContexteCourant = false;
            //S'il y a des éléments modifiés, ajoutés ou supprimés dans
            //les relations, charge manuellement
            DataTable table = metaProjet.ContexteDonnee.GetTableSafe(CRelationMetaProjet_Projet.c_nomTable);
            if ( table != null )
            {
                if ( table.Select ( "", "", DataViewRowState.Added | DataViewRowState.Deleted | DataViewRowState.ModifiedCurrent ).Length > 0 )
                {
                    bLectureDansContexteCourant = true;
                    //Il y a des modifs, on ne peut donc pas appliquer le filtre,
                    //et on doit aller chercher les projets manuellement
                    foreach ( CRelationMetaProjet_Projet rel in metaProjet.RelationsProjets )
                    {
                        List<CProjet> lstTmp = new List<CProjet>();
                        lstTmp.Add ( rel.Projet );
                        while ( lstTmp.Count > 0 )
                        {
                            List<CProjet> lstSuivante = new List<CProjet>();
                            foreach ( CProjet prj in lstTmp )
                            {
                                lstProjets.Add ( prj );
                                lstSuivante.AddRange ( prj.ProjetsFils.ToList<CProjet>());
                            }
                            lstTmp = lstSuivante;
                        }
                    }
                }
            }
            if (!bLectureDansContexteCourant)
            {
                CFiltreData filtre = result.Data as CFiltreData;
                filtre = CFiltreData.GetAndFiltre(filtreElements,
                    new CFiltreDataAvance(
                        CProjet.c_nomTable,
                        CRelationMetaProjet_Projet.c_nomTable + "." +
                        CMetaProjet.c_champId + "=@1",
                        metaProjet.Id));

                filtre.IntegrerFilsHierarchiques = !metaProjet.HideChildProjects;
                CListeObjetsDonnees lstObjetProjets = new CListeObjetsDonnees(metaProjet.ContexteDonnee, typeof(CProjet), filtre);
                lstObjetProjets.PreserveChanges = true;
                lstObjetProjets.ModeSansTri = true;
                lstProjets.AddRange(lstObjetProjets.ToList<CProjet>());
                if ( metaProjet.HideChildProjects )
                    lstObjetProjets.ReadDependances("LiensEnTantQueProjetA.ProjetB", "LiensEnTantQueProjetB.ProjetA", "ContraintesPropres", "AnomaliesDuProjet");
                else
                    lstObjetProjets.ReadDependances("ProjetsFils", "LiensEnTantQueProjetA.ProjetB", "LiensEnTantQueProjetB.ProjetA", "ContraintesPropres", "AnomaliesDuProjet");
                CUtilElementAChamps.ReadChampsCustom(lstObjetProjets);
            }

            CContexteDonnee contexteDeTravail = metaProjet.ContexteDonnee;

            return PrepareGantt(groupeRacine, result, elementRacine, lstProjets, contexteDeTravail);
        }
Exemple #5
0
        // /////////////////////////////////////////////////////////
        /// <summary>
        /// Le data du result contient un IBaseGantt
        /// </summary>
        /// <returns></returns>
        public static CResultAErreur CreateGantt ( 
            CProjet projet, 
            CParametreNiveauArbreGanttGroupe groupeRacine,
            CFiltreData filtreElements )
        {
            CResultAErreur result = CResultAErreur.True;
            if (projet == null)
                return result;
            CElementDeGanttProjet elementRacine = new CElementDeGanttProjet(null, projet);
            if (!result)
                return result;
            List<CProjet> lstProjets = new List<CProjet>();
            if (!projet.IsNew())//Si le projet est nouveau, on ne peut pas filtrer
                //car les éléments ne sont pas encore en base
            {
                CFiltreData filtre = result.Data as CFiltreData;
                filtre = CFiltreData.GetAndFiltre(filtreElements,
                    new CFiltreData(CProjet.c_champCodeSystemeComplet + " like @1 and " +
                        CProjet.c_champId + "<>@2",
                        projet.CodeSystemeComplet + "%",
                        projet.Id));
                CListeObjetsDonnees lstObjetProjets = new CListeObjetsDonnees(projet.ContexteDonnee, typeof(CProjet), filtre);

                lstObjetProjets.PreserveChanges = true;
                lstObjetProjets.ModeSansTri = true;
                lstProjets.AddRange(lstObjetProjets.ToList<CProjet>());


                lstObjetProjets.ReadDependances("ProjetsFils","LiensEnTantQueProjetA", "LiensEnTantQueProjetB", "ContraintesPropres", "AnomaliesDuProjet");
                CUtilElementAChamps.ReadChampsCustom(lstObjetProjets);
            }
            //Il faut ajouter les projets qui ne sont pas encore en base et qui n'ont donc pas de code system
            List<CProjet> lstALire = new List<CProjet>();
            lstALire.Add(projet);
            DataRelation relation = null;
            foreach ( DataRelation rel in projet.ContexteDonnee.Tables[CProjet.c_nomTable].ChildRelations )
            {
                if ( rel.ChildTable.TableName == CProjet.c_nomTable )
                {
                    relation = rel;
                    break;
                }
            }
            while (lstALire.Count > 0 && relation != null)
            {
                List<CProjet> prochaineGeneration = new List<CProjet>();
                foreach (CProjet test in lstALire)
                {
                    DataRow[] rowsDeps = test.Row.Row.GetChildRows(relation);
                    foreach (DataRow row in rowsDeps)
                    {
                        if (row.RowState != DataRowState.Deleted)
                        {
                            CProjet prj = new CProjet(row);
                            if (prj.IsNew() && !lstProjets.Contains(prj) )
                            {
                                lstProjets.Add(prj);
                                
                            }
                            prochaineGeneration.Add(prj);
                        }
                    }
                }
                lstALire = prochaineGeneration;
            }
           
            

            
            //Comme on est passé par un filtre Avancé, les nouveaux éléments ne sont
            //pas dans la liste. On les ajoute donc !
            //Vérifie qu'il y a des éléments dont l'id est négatif
            CListeObjetsDonnees lstTmp = new CListeObjetsDonnees(projet.ContexteDonnee,
                typeof(CProjet));
            lstTmp.Filtre = new CFiltreData(CProjet.c_champId + "<@1", 0);
            lstTmp.InterditLectureInDB = true;
            if (lstTmp.Count > 0)//Il y a des projets tous neufs dans le contexte
            {
                foreach (CProjet projetTmp in new ArrayList(lstProjets))
                {
                    //N'utilise pas ProjetsFils pour ne pas lire dans la base
                    CListeObjetsDonnees lstFils = new CListeObjetsDonnees(projet.ContexteDonnee,
                        typeof(CProjet),
                        new CFiltreData(CProjet.c_champIdParent + "=@1", projetTmp.Id));
                    lstFils.InterditLectureInDB = true;
                    lstFils.Filtre = new CFiltreData(CProjet.c_champId + "<0");
                    foreach (CProjet projetFils in lstFils)
                        if (!lstProjets.Contains(projetFils))
                            lstProjets.Add(projetFils);
                }
                //Les nouveaux sous projet du projet principal doivent également être ajoutés
                CListeObjetsDonnees lstFilsPrincipal = projet.ProjetsFils;
                lstFilsPrincipal.Filtre = new CFiltreData(CProjet.c_champId + "<0");
                foreach (CProjet projetFils in lstFilsPrincipal)
                    if (!lstProjets.Contains(projetFils))
                        lstProjets.Add(projetFils);
            }
            CContexteDonnee contexteDeTravail = projet.ContexteDonnee;

            return PrepareGantt(groupeRacine,result, elementRacine, lstProjets, contexteDeTravail);
        }
        //---------------------------------------------
        private void FillListeInterventionsAPlanifier()
        {
            m_timerRefreshInterventionsPlanifiees.Stop();
            IElementAIntervention element = m_controlePlanning.ElementAInterventionSelectionne;

            if (element == null)
            {
                m_chkIntersSurSiteSelectionné.Visible = false;
            }
            else
            {
                m_chkIntersSurSiteSelectionné.Text = I.T("Filter on @1|20658", element.DescriptionElement);
            }
            m_panelTachesPrePlanifiees.Visible = true;

            DateTime dateDebut = m_controlePlanning.DateDebut.Date;

            DateTime dateFin = m_controlePlanning.DateFin.Date.AddDays(1);

            m_lblDatesListe.Text = I.T("from @1 to @2|20652", dateDebut.ToShortDateString(),
                                       dateFin.ToShortDateString());

            if (m_listeEntitesSelectionnee != null)
            {
                m_chkIntersSurListe.Text = m_listeEntitesSelectionnee.Libelle;
            }
            if (m_filtreDynamicSelectionnee != null)
            {
                m_chkIntersFiltre.Text = m_filtreDynamicSelectionnee.Libelle;
            }


            CListeObjetsDonnees listeInters = new CListeObjetsDonnees(m_contexteDonnee, typeof(CIntervention));

            listeInters.PreserveChanges = true;

            CFiltreData filtre = new CFiltreDataAvance(CIntervention.c_nomTable,
                                                       "(" + CIntervention.c_champDateDebutPreplanifiee + "<@1 and " +
                                                       CIntervention.c_champDateFinPrePlanifiee + ">@2) or (" +
                                                       CFractionIntervention.c_nomTable + "." +
                                                       CFractionIntervention.c_champDateDebutPlanifie + "<@1 and " +
                                                       CFractionIntervention.c_nomTable + "." +
                                                       CFractionIntervention.c_champDateFinPlanifiee + ">@2)",
                                                       dateFin,
                                                       dateDebut);

            if (m_chkIntersSurSiteSelectionné.Checked && element is CSite)
            {
                filtre = CFiltreData.GetAndFiltre(filtre,
                                                  new CFiltreData(CIntervention.c_champIdElementLie + "=@1",
                                                                  element.Id));
            }
            if (m_chkIntersNonPlanifiées.Checked)
            {
                filtre = CFiltreData.GetAndFiltre(filtre,
                                                  new CFiltreDataAvance(CIntervention.c_nomTable,
                                                                        "HasNo(" + CFractionIntervention.c_nomTable + "." +
                                                                        CFractionIntervention.c_champId + ")"));
            }
            if (m_chkIntersNonAffectées.Checked)
            {
                filtre = CFiltreData.GetAndFiltre(filtre,
                                                  new CFiltreDataAvance(CIntervention.c_nomTable,
                                                                        "Hasno(" + CIntervention_Intervenant.c_nomTable + "." +
                                                                        CIntervention_Intervenant.c_champId + ")"));
            }
            listeInters.Filtre = filtre;

            if (m_setIdsInterventionsVisiblesCalculéDefiltreEtListe == null)
            {
                CalculeSetIdsInterventionsVisibles();
            }


            List <CIntervention> lstFiltree = listeInters.ToList <CIntervention>();

            foreach (CIntervention inter in listeInters.ToArrayList())
            {
                if (m_chkIntersNonPlanifiées.Checked && inter.Fractions.Count > 0)
                {
                    lstFiltree.Remove(inter);
                }
                if (m_chkIntersNonAffectées.Checked && inter.RelationsIntervenants.Count > 0)
                {
                    lstFiltree.Remove(inter);
                }
                if (inter.Id >= 0 && m_setIdsInterventionsVisiblesCalculéDefiltreEtListe != null &&
                    !m_setIdsInterventionsVisiblesCalculéDefiltreEtListe.Contains(inter.Id))
                {
                    lstFiltree.Remove(inter);
                }
            }
            m_wndListeInterAPlanifier.ListeSource = lstFiltree;
            m_wndListeInterAPlanifier.Refresh();
        }
        ////////////////////////////////////////////////////////////
        public static CResultAErreur CanDelete(CListeObjetsDonnees liste)
        {
            CResultAErreur result = CResultAErreur.True;

            if (liste.Count == 0)
            {
                return(result);
            }
            bool bPasObjetAIdNumeriqueAuto = false;

            foreach (CObjetDonnee objet in liste)
            {
                if (!(objet is CObjetDonneeAIdNumerique))
                {
                    bPasObjetAIdNumeriqueAuto = true;
                    result = objet.CanDelete();
                }
                else
                {
                    result = ((CObjetDonneeAIdNumerique)objet).MyCanDelete();
                }
                if (!result)
                {
                    return(result);
                }
            }
            if (bPasObjetAIdNumeriqueAuto)
            {
                return(result);
            }
            Type   typeElements   = liste.TypeObjets;
            string strListeIds    = "";
            int    nCount         = liste.Count;
            int    nTailleParBloc = 500;
            string strNomTable    = CContexteDonnee.GetNomTableForType(liste.TypeObjets);
            //Copie de la liste, pour sécuriser le parcours
            List <CObjetDonneeAIdNumerique> lstElements = liste.ToList <CObjetDonneeAIdNumerique>();

            //Travaille par bloc de 500 enregistrements pour les contrôles
            for (int nBloc = 0; nBloc < nCount; nBloc += nTailleParBloc)
            {
                StringBuilder bl   = new StringBuilder();
                int           nMin = Math.Min(nBloc + nTailleParBloc, nCount);
                //Liste des éléments du bloc en cours
                for (int nElement = nBloc; nElement < nMin; nElement++)
                {
                    bl.Append(lstElements[nElement].Id);
                    bl.Append(',');
                }
                if (bl.Length > 0)
                {
                    bl.Remove(bl.Length - 1, 1);

                    //Liste des objets du bloc en cours
                    CListeObjetsDonnees listePartielle = new CListeObjetsDonnees(liste.ContexteDonnee, liste.TypeObjets, false);
                    listePartielle.Filtre = new CFiltreData(
                        liste.ContexteDonnee.GetTableSafe(strNomTable).PrimaryKey[0].ColumnName + " in (" +
                        bl.ToString() + ")");;
                    listePartielle.InterditLectureInDB = true;                    //Pas besoin de lire car les éléments sont déjà dans le contexte de données

                    listePartielle.Filtre.IntegrerLesElementsSupprimes = liste.Filtre != null?
                                                                         liste.Filtre.IntegrerLesElementsSupprimes:
                                                                         (liste.FiltrePrincipal != null?liste.FiltrePrincipal.IntegrerLesElementsSupprimes:false);

                    listePartielle.Filtre.IgnorerVersionDeContexte = liste.Filtre != null ?
                                                                     liste.Filtre.IgnorerVersionDeContexte:
                                                                     (liste.FiltrePrincipal != null ? liste.FiltrePrincipal.IgnorerVersionDeContexte : false);

                    strListeIds = bl.ToString();
                    foreach (CInfoRelation relation in CContexteDonnee.GetListeRelationsTable(strNomTable))
                    {
                        if (relation.TableParente == strNomTable)                    //Relation fille
                        {
                            if (!relation.Composition)                               //Ce n'est pas une composition, il ne faut pas qu'il y ait de fils
                            {
                                if (!relation.PasserLesFilsANullLorsDeLaSuppression) //Sinon, ce n'est pas grave !
                                {
                                    IObjetServeur objServeur = liste.ContexteDonnee.GetTableLoader(relation.TableFille);
                                    //Ceux pour lesquels les dépendances sont chargés n'ont pas besoin de regarder la base
                                    StringBuilder strIdsAVoirDansLaBase = new StringBuilder();
                                    DataRelation  dataRel = null;
                                    foreach (DataRelation childRel in liste.ContexteDonnee.GetTableSafe(relation.TableParente).ChildRelations)
                                    {
                                        bool bCestElle = false;
                                        if (childRel.ChildTable.TableName == relation.TableFille)
                                        {
                                            if (childRel.ChildColumns.Length == relation.ChampsFille.Length)
                                            {
                                                bCestElle = true;
                                                for (int nCol = 0; nCol < childRel.ChildColumns.Length; nCol++)
                                                {
                                                    if (childRel.ChildColumns[nCol].ColumnName != relation.ChampsFille[nCol])
                                                    {
                                                        bCestElle = false;
                                                        break;
                                                    }
                                                }
                                            }
                                        }
                                        if (bCestElle)
                                        {
                                            dataRel = childRel;
                                            break;
                                        }
                                    }
                                    if (dataRel != null)
                                    {
                                        foreach (CObjetDonneeAIdNumerique objetTmp in listePartielle)
                                        {
                                            string strFKName = objetTmp.ContexteDonnee.GetForeignKeyName(dataRel);
                                            if (objetTmp.IsDependanceChargee(strFKName))
                                            {
                                                DataRow[] rowsFilles = objetTmp.Row.Row.GetChildRows(dataRel);
                                                if (rowsFilles.Length > 0)
                                                {
                                                    result.EmpileErreur(I.T("Cannot delete element @1, @2 elements (@3) are linked|190",
                                                                            objetTmp.DescriptionElement,
                                                                            rowsFilles.Length.ToString(),
                                                                            relation.TableFille));
                                                    return(result);
                                                }
                                            }
                                            else
                                            {
                                                strIdsAVoirDansLaBase.Append(objetTmp.Id);
                                                strIdsAVoirDansLaBase.Append(',');
                                            }
                                        }
                                        if (strIdsAVoirDansLaBase.Length > 0)
                                        {
                                            strIdsAVoirDansLaBase.Remove(strIdsAVoirDansLaBase.Length - 1, 1);
                                        }
                                    }
                                    else
                                    {
                                        strIdsAVoirDansLaBase.Append(strListeIds);
                                    }
                                    if (strIdsAVoirDansLaBase.Length > 0)
                                    {
                                        CFiltreData filtre = new CFiltreData(relation.ChampsFille[0] + " in (" +
                                                                             strIdsAVoirDansLaBase.ToString() + ")");
                                        int nNb = objServeur.CountRecords(relation.TableFille, filtre);
                                        if (nNb != 0)
                                        {
                                            Type tp = CContexteDonnee.GetTypeForTable(relation.TableFille);
                                            result.EmpileErreur(I.T("Cannot delete '@1' elements because '@2' elements are dependent|160", DynamicClassAttribute.GetNomConvivial(typeElements), DynamicClassAttribute.GetNomConvivial(tp)));
                                            return(result);
                                        }
                                    }
                                }
                            }
                            else                            //C'est une composition
                            {
                                CListeObjetsDonnees listeDep = listePartielle.GetDependancesFilles(relation, liste.Filtre != null && liste.Filtre.IntegrerLesElementsSupprimes ||
                                                                                                   liste.FiltrePrincipal != null && liste.FiltrePrincipal.IntegrerLesElementsSupprimes);
                                result = CanDelete(listeDep);
                                if (!result)
                                {
                                    return(result);
                                }
                            }
                        }
                    }
                    //Peut-on supprimer les relationsTypeId
                    foreach (RelationTypeIdAttribute relation in CContexteDonnee.RelationsTypeIds)
                    {
                        Type tpLiens = CContexteDonnee.GetTypeForTable(relation.TableFille);
                        if (relation.AppliquerContrainteIntegrite && !relation.CanDeleteToujours && relation.IsAppliqueToType(typeElements))
                        {
                            CListeObjetsDonnees listeTypeId = new CListeObjetsDonnees(liste.ContexteDonnee, tpLiens, false);
                            CFiltreData         filtre      = new CFiltreData(
                                relation.ChampType + "=@1 and " +
                                relation.ChampId + " in (" + strListeIds + ")",
                                typeElements.ToString());
                            listeTypeId.Filtre = filtre;
                            if (relation.Composition)
                            {
                                result = CanDelete(listeTypeId);
                                if (!result)
                                {
                                    return(result);
                                }
                            }
                            else
                            {
                                int nNb = listeTypeId.CountNoLoad;
                                if (nNb != 0)
                                {
                                    Type tp = CContexteDonnee.GetTypeForTable(relation.TableFille);
                                    result.EmpileErreur(I.T("Cannot delete the required elements because elements @1 exist in database|161", DynamicClassAttribute.GetNomConvivial(tpLiens)));
                                    return(result);
                                }
                            }
                        }
                    }

                    if (IsUtiliseDansVersionFuture(liste, strListeIds))
                    {
                        result.EmpileErreur(I.T("Cannot delete these elements because they will be used in future versions|187"));
                        return(result);
                    }
                }
            }

            return(result);
        }
Exemple #8
0
 public void OnGereDemasquage(object state)
 {
     if (m_bIsDemasquageEnCours)
     {
         return;
     }
     m_bIsDemasquageEnCours = true;
     try
     {
         lock (typeof(CLockerTraitementAlarme))
         {
             CResultAErreur result = AssureSessionEtContexte();
             if (!result)
             {
                 return;
             }
             CListeObjetsDonnees lstParametres = new CListeObjetsDonnees(m_contexteDonnee, typeof(CParametrageFiltrageAlarmes));
             lstParametres.Filtre = new CFiltreData(
                 CParametrageFiltrageAlarmes.c_champDateDebutValidite + "<=@1 and " +
                 CParametrageFiltrageAlarmes.c_champDateFinValidite + ">=@2",
                 DateTime.Now,
                 DateTime.Now.AddDays(-1).AddHours(-2));
             List <CParametrageFiltrageAlarmes> lst  = lstParametres.ToList <CParametrageFiltrageAlarmes>();
             HashSet <CAlarme> lstAlarmesARecalculer = new HashSet <CAlarme>();
             foreach (CParametrageFiltrageAlarmes parametre in lst)
             {
                 bool bOldIsApplicable = parametre.IsAppliquableEnCeMoment;
                 parametre.RecalcIsApplicableEnCeMoment();
                 if (bOldIsApplicable != parametre.IsAppliquableEnCeMoment &&
                     !parametre.IsAppliquableEnCeMoment)
                 {
                     //Il faut démasquer
                     CListeObjetsDonnees lstAlarmes = new CListeObjetsDonnees(m_contexteDonnee, typeof(CAlarme));
                     lstAlarmes.Filtre = new CFiltreData(CAlarme.c_champIdMasquagePropre + "=@1 and " +
                                                         CAlarme.c_champDateFin + " is null",
                                                         parametre.Id);
                     foreach (CAlarme alrm in lstAlarmes)
                     {
                         alrm.MasquagePropre = null;
                         lstAlarmesARecalculer.Add(alrm);
                     }
                 }
             }
             lstParametres.Filtre = new CFiltreData(
                 CParametrageFiltrageAlarmes.c_champDateDebutValidite + "<=@1 and " +
                 CParametrageFiltrageAlarmes.c_champDateFinValidite + ">=@2",
                 DateTime.Now,
                 DateTime.Now.AddDays(-1));
             lstParametres.PreserveChanges = true;
             IEnumerable <IParametrageFiltrageAlarmes> parametres = lstParametres.ToList <IParametrageFiltrageAlarmes>();
             foreach (CAlarme alarme in lstAlarmesARecalculer)
             {
                 CParametrageFiltrageAlarmes p = CUtilMasquageAlarmes.GetParametreAAppliquer(alarme, DateTime.Now, parametres) as CParametrageFiltrageAlarmes;
                 if (p != null)
                 {
                     alarme.MasquagePropre = p;
                 }
             }
             result = m_contexteDonnee.SaveAll(true);
         }
     }
     catch (Exception e)
     {
     }
     finally
     {
         m_bIsDemasquageEnCours = false;
     }
 }