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