コード例 #1
0
ファイル: CContrainte.cs プロジェクト: ykebaili/Timos
        //------------------------------------------------------------------------------------
        public CFiltreDataAvance GetFiltreForRechercheRessourcesSurAttributs()
        {
            //Crée le filtre sur les types de ressource qui lèvent le type de contrainte
            CFiltreDataAvance filtreFinal = new CFiltreDataAvance(
                CRessourceMaterielle.c_nomTable,
                CTypeRessource.c_nomTable + "." +
                CRelationTypeContrainte_TypeRessource.c_nomTable + "." +
                CTypeContrainte.c_champId + "=@1",
                TypeContrainte.Id);

            CFiltreData filtreAttributs = GetFiltreSurAttributsRessource();

            if (filtreAttributs != null && !(filtreAttributs is CFiltreDataAvance))
            {
                filtreAttributs = CFiltreDataAvance.ConvertFiltreToFiltreAvance(CAttributRessource.c_nomTable, filtreAttributs);
            }
            if (filtreAttributs != null)
            {
                CFiltreDataAvance filtreAv = (CFiltreDataAvance)filtreAttributs;
                filtreAv.ChangeTableDeBase(CRessourceMaterielle.c_nomTable, CAttributRessource.c_nomTable);
            }

            filtreFinal = (CFiltreDataAvance)CFiltreData.GetAndFiltre(filtreAttributs, filtreFinal);

            return(filtreFinal);
        }
コード例 #2
0
        //----------------------------------------------------------------------------
        private void InitListesPlannifieurs(bool bMajChamps)
        {
            CFiltreData filtrePlanifieurs = new CFiltreDataAvance(CActeur.c_nomTable,
                                                                  "HAS(" + CDonneesActeurUtilisateur.c_nomTable + "." +
                                                                  CDonneesActeurUtilisateur.c_champId + ")");

            CFiltreData filtrePrePlanifieurs = filtrePlanifieurs.GetClone();

            bool bAppliquerProfils = true;

            if (bAppliquerProfils)
            {
                CTypeIntervention typeIntervention = (CTypeIntervention)m_cmbTypeIntervention.ElementSelectionne;
                if (typeIntervention != null && typeIntervention.ProfilPlanifieur != null)
                {
                    CListeObjetsDonnees lstTmp    = typeIntervention.ProfilPlanifieur.GetElementsForSource(Intervention, null);
                    CFiltreDataAvance   filtreTmp = CFiltreDataAvance.ConvertFiltreToFiltreAvance(CDonneesActeurUtilisateur.c_nomTable, lstTmp.FiltrePrincipal);
                    filtreTmp.ChangeTableDeBase(CActeur.c_nomTable, CDonneesActeurUtilisateur.c_nomTable);
                    filtrePlanifieurs = CFiltreData.GetAndFiltre(filtrePlanifieurs, filtreTmp);
                }
                if (typeIntervention != null && typeIntervention.ProfilPreplanifieur != null)
                {
                    CListeObjetsDonnees lstTmp    = typeIntervention.ProfilPreplanifieur.GetElementsForSource(Intervention, null);
                    CFiltreDataAvance   filtreTmp = CFiltreDataAvance.ConvertFiltreToFiltreAvance(CDonneesActeurUtilisateur.c_nomTable, lstTmp.FiltrePrincipal);
                    filtreTmp.ChangeTableDeBase(CActeur.c_nomTable, CDonneesActeurUtilisateur.c_nomTable);
                    filtrePrePlanifieurs = CFiltreData.GetAndFiltre(filtrePrePlanifieurs, filtreTmp);
                }
            }

            m_txtSelectPreplanificateur.InitAvecFiltreDeBase <CActeur>(
                "IdentiteComplete",
                filtrePrePlanifieurs,
                true);
            m_txtSelectPlanificateur.InitAvecFiltreDeBase <CActeur>(
                "IdentiteComplete",
                filtrePlanifieurs,
                true);
        }
コード例 #3
0
        //------------------------------------------------------------------------
        public int[] GetIdsRessourcesLevant(int nIdContrainte, CFiltreDataAvance filtreParam)
        {
            Hashtable tblIdsRessourcesLevant = new Hashtable();

            using (CContexteDonnee contexteDonnee = new CContexteDonnee(IdSession, true, false))
            {
                CContrainte contrainte = new CContrainte(contexteDonnee);
                if (!contrainte.ReadIfExists(nIdContrainte))
                {
                    throw new Exception(I.T("Constraint Id @1 doesn't exist|197", nIdContrainte.ToString()));
                }


                // Liste des ressources levants de façon explicite (Relation directe)
                CListeObjetsDonnees listeRelationRessourceFiltre = contrainte.RelationRessourceListe;

                // Applique un filtre prédéfini par l'utilisateur de cette fonction
                CFiltreDataAvance filtreTmp = null;
                if (filtreParam != null)
                {
                    filtreTmp = (CFiltreDataAvance)filtreParam.GetClone();
                    filtreTmp.ChangeTableDeBase(CRelationContrainte_Ressource.c_nomTable, CRessourceMaterielle.c_nomTable);
                    listeRelationRessourceFiltre.Filtre = filtreTmp;
                }
                foreach (CRelationContrainte_Ressource rel in listeRelationRessourceFiltre)
                {
                    tblIdsRessourcesLevant[rel.Ressource.Id] = true;
                }

                if (contrainte.TypeContrainte != null)
                {
                    // Construit une filtre avancé sur les attributs de la contrainte
                    CFiltreData filtreAttributsRessources = contrainte.GetFiltreForRechercheRessourcesSurAttributs();

                    // Liste de toutes les resssources de la base
                    CListeObjetsDonnees lstRessources = new CListeObjetsDonnees(contexteDonnee, typeof(CRessourceMaterielle));
                    // Applique le filtre d'attributs à la liste
                    filtreAttributsRessources = CFiltreData.GetAndFiltre(filtreAttributsRessources, filtreParam);
                    lstRessources.Filtre      = filtreAttributsRessources;
                    // On obtient la liste des ressource ayant au moins un attribut en commun avec la Contrainte

                    // Vérifie le résultat de la recherche en fonction des options
                    // Si la ressource doit avoir au moins un des attributs de la contrainte
                    //Toutes les ressources trouvées sont bonnes !
                    if (!contrainte.TypeContrainte.OptionTousAttributsRessourceLevant)
                    {
                        foreach (CRessourceMaterielle res in lstRessources)
                        {
                            tblIdsRessourcesLevant[res.Id] = true;
                        }
                    }
                    else
                    {
                        CResultAErreur result = lstRessources.ReadDependances("AttributsListe");
                        if (!result)
                        {
                            throw new CExceptionErreur(result.Erreur);
                        }

                        // Sinon la ressource doit avoir tous les attributs de la contrainte
                        CFiltreData filtreTousLesAttributs = contrainte.GetFiltreSurAttributsRessource();

                        // Recherche dans la liste des resources possibles
                        foreach (CRessourceMaterielle res in lstRessources)
                        {
                            CListeObjetsDonnees attributsRessource = res.AttributsListe;
                            attributsRessource.InterditLectureInDB = true;
                            attributsRessource.Filtre = filtreTousLesAttributs;

                            string strRessource = res.Libelle;
                            int    nNbAttribs   = attributsRessource.Count;
                            nNbAttribs = contrainte.AttributsListe.Count;

                            // La ressource doit avoir tous les attributs de la contrainte
                            if (attributsRessource.Count == contrainte.AttributsListe.Count)
                            {
                                tblIdsRessourcesLevant[res.Id] = true;
                            }
                        }
                    }
                }

                List <int> lstRetour = new List <int>();
                foreach (int nId in tblIdsRessourcesLevant.Keys)
                {
                    lstRetour.Add(nId);
                }
                return(lstRetour.ToArray());
            }
        }