//////////////////////////////////////////////////////////////////////// public CFiltresDynamiquesForTables CalculeFiltresForTables() { CFiltresDynamiquesForTables filtres = new CFiltresDynamiquesForTables(); //Crée un filtre pour chaque les tables fullsnchro foreach (string strNomTable in CContexteDonnee.MappeurTableToClass.GetListeTables()) { Type tp = CContexteDonnee.GetTypeForTable(strNomTable); if (tp != null && tp.GetCustomAttributes(typeof(FullTableSyncAttribute), true).Length > 0) { CFiltreSynchronisation filtreTableFull = new CFiltreSynchronisation(strNomTable); filtreTableFull.TouteLaTable = true; filtreTableFull.IsAutoAdd = true; filtreTableFull.CreateFiltreForAllParents(); filtreTableFull.CreateFiltreForAllCompositions(); filtreTableFull.FiltreDynamique = CFiltreSynchronisation.GetFiltreDynamiqueSynchro(tp); filtres.AddFiltreSynchronisation(filtreTableFull); } } foreach (CFiltreSynchronisation filtre in m_listefiltresSynchronisation) { filtre.CalculeFiltresForTables(); filtres.AddFiltreSynchronisation(filtre); } return(filtres); }
//////////////////////////////////////////////////////////////////////// public CFiltresDynamiquesForTables CalculeFiltresForTables() { CFiltresDynamiquesForTables filtres = new CFiltresDynamiquesForTables(); CreateFiltreForAllParents(); CreateFiltreForAllCompositions(); filtres.AddFiltreSynchronisation(this); return(filtres); }
//////////////////////////////////////////////////////////////////////// /// <summary> /// Retourne les filtres finaux pour toutes les tables //Le data du result contient les filtresdata finaux /// </summary> /// <param name="nIdSession"></param> /// <param name="nIdUtilisateur">Id de l'utilisateur</param> /// <param name="listeUsersGroupe">Id des utilisateurs associés à celui ci</param> /// <returns></returns> public CResultAErreur GetFiltresFinaux(int nIdSession, CGroupeUtilisateursSynchronisation groupe) { CResultAErreur result = CResultAErreur.True; try { using (CContexteDonnee contexte = new CContexteDonnee(nIdSession, true, false)) { CFiltresDynamiquesForTables filtresForTables = CalculeFiltresForTables(); CFiltresSynchronisation filtres = new CFiltresSynchronisation(); foreach (string strNomTable in CContexteDonnee.MappeurTableToClass.GetListeTables()) { bool bShouldImporte = false; CFiltreDynamique filtreDynamique = filtresForTables.GetFiltreDynamiqueForTable(strNomTable, ref bShouldImporte); if (!bShouldImporte) { filtres.AddFiltreForTable(strNomTable, new CFiltreDataImpossible(), true); } else { if (filtreDynamique == null) { filtres.AddFiltreForTable(strNomTable, null, true); } else { //Trouve la variable contenant le groupe CVariableDynamique variable = null; foreach (CVariableDynamique v in filtreDynamique.ListeVariables) { if (v.Nom == CFiltreSynchronisation.c_nomVariableListeUtilisateurs) { variable = v; } } filtreDynamique.SetValeurChamp(variable, groupe.ListeIdsUtilisateurs); filtreDynamique.ContexteDonnee = contexte; CResultAErreur resultTmp = filtreDynamique.GetFiltreData(); CFiltreData filtreData = null; if (!result) { result.Erreur.EmpileErreurs(resultTmp.Erreur); result.EmpileErreur(I.T("Error in table @1|189", strNomTable)); } else { filtreData = (CFiltreData)resultTmp.Data; filtres.AddFiltreForTable(strNomTable, filtreData, true); } } } } result.Data = filtres; } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } return(result); }