Exemple #1
0
        //----------------------------------------------------------------------------
        public List <CReferenceObjetDependant> GetDependances(CEntitiesManager manager, CObjetDonnee objet)
        {
            List <CReferenceObjetDependant> lst = new List <CReferenceObjetDependant>();

            if (objet == null)
            {
                return(lst);
            }
            if (!(objet is CObjetDonneeAIdNumerique))
            {
                return(lst);
            }
            foreach (RelationTypeIdAttribute rt in  CContexteDonnee.RelationsTypeIds)
            {
                if (rt.IsAppliqueToType(objet.GetType()) && objet.GetType().GetCustomAttribute <NoRelationTypeIdAttribute>() == null)
                {
                    Type tpRelId = CContexteDonnee.GetTypeForTable(rt.TableFille);
                    if (tpRelId != null && !manager.ConfigurationRecherche.IsIgnore(tpRelId))
                    {
                        CListeObjetsDonnees lstRT = new CListeObjetsDonnees(objet.ContexteDonnee, tpRelId);
                        lstRT.Filtre = new CFiltreData(rt.ChampType + "=@1 and " +
                                                       rt.ChampId + "=@2",
                                                       objet.GetType().ToString(),
                                                       ((CObjetDonneeAIdNumerique)objet).Id);
                        foreach (CObjetDonnee objetRT in lstRT)
                        {
                            lst.Add(new CReferenceObjetDependant(rt.NomConvivialPourParent, objetRT));
                        }
                    }
                }
            }
            return(lst);
        }
        //----------------------------------------------------------------------------
        public List <CReferenceObjetDependant> GetDependances(CEntitiesManager manager, CObjetDonnee objet)
        {
            List <CReferenceObjetDependant> lst = new List <CReferenceObjetDependant>();

            if (objet == null)
            {
                return(lst);
            }
            CStructureTable structure = CStructureTable.GetStructure(objet.GetType());

            foreach (CInfoRelation relation in structure.RelationsParentes)
            {
                Type tpParent = CContexteDonnee.GetTypeForTable(relation.TableParente);
                if (manager.ConfigurationRecherche.IsIgnore(tpParent))
                {
                    return(lst);
                }
                CObjetDonnee parent          = objet.GetParent(relation.ChampsFille, tpParent);
                bool         bHasUniversalId = tpParent.GetCustomAttribute <NoIdUniverselAttribute>(true) == null;
                string       strNomProp      = relation.NomConvivial;
                if (strNomProp.Length == 0)
                {
                    strNomProp = DynamicClassAttribute.GetNomConvivial(tpParent);
                }
                if (parent != null)
                {
                    if (bHasUniversalId)
                    {
                        lst.Add(new CReferenceObjetDependant(strNomProp, tpParent, parent.DbKey));
                    }
                    else
                    {
                        lst.Add(new CReferenceObjetDependant(strNomProp, tpParent,
                                                             parent.GetValeursCles()));
                    }
                }
            }
            return(lst);
        }
Exemple #3
0
 //----------------------------------------------------------------------------
 public static void Autoexec()
 {
     CEntitiesManager.RegisterFournisseurDependances(typeof(CChercheurRelationsTypeId));
 }
        //----------------------------------------------------------------------------
        public List <CReferenceObjetDependant> GetDependances(CEntitiesManager manager, CObjetDonnee objet)
        {
            List <CReferenceObjetDependant> lst = new List <CReferenceObjetDependant>();

            if (objet == null)
            {
                return(lst);
            }
            CStructureTable structure = CStructureTable.GetStructure(objet.GetType());

            foreach (CInfoRelation relation in structure.RelationsFilles)
            {
                Type tpFille = CContexteDonnee.GetTypeForTable(relation.TableFille);
                if (manager.ConfigurationRecherche.IsIgnore(tpFille))
                {
                    return(lst);
                }
                C2iRequeteAvancee requete = new C2iRequeteAvancee();
                requete.FiltreAAppliquer = CFiltreData.CreateFiltreAndSurValeurs(relation.ChampsFille, objet.GetValeursCles());
                requete.TableInterrogee  = relation.TableFille;
                bool bHasUniversalId = tpFille.GetCustomAttribute <NoIdUniverselAttribute>(true) == null;
                if (bHasUniversalId)
                {
                    requete.ListeChamps.Add(new C2iChampDeRequete(CObjetDonnee.c_champIdUniversel,
                                                                  new CSourceDeChampDeRequete(CObjetDonnee.c_champIdUniversel),
                                                                  typeof(string),
                                                                  OperationsAgregation.None,
                                                                  true));
                }
                else
                {
                    CStructureTable sFille = CStructureTable.GetStructure(tpFille);
                    foreach (CInfoChampTable infoChamp in sFille.ChampsId)
                    {
                        requete.ListeChamps.Add(new C2iChampDeRequete(infoChamp.NomChamp,
                                                                      new CSourceDeChampDeRequete(infoChamp.NomChamp),
                                                                      infoChamp.TypeDonnee,
                                                                      OperationsAgregation.None,
                                                                      true));
                    }
                }
                string strNomProp = relation.NomConvivial;
                if (strNomProp.Length == 0)
                {
                    strNomProp = "List of " + DynamicClassAttribute.GetNomConvivial(tpFille);
                }
                CResultAErreur result = requete.ExecuteRequete(objet.ContexteDonnee.IdSession);
                if (result && result.Data is DataTable)
                {
                    DataTable table = result.Data as DataTable;
                    foreach (DataRow row in table.Rows)
                    {
                        if (bHasUniversalId)
                        {
                            lst.Add(new CReferenceObjetDependant(strNomProp, tpFille, CDbKey.GetNewDbKeyOnUniversalIdANePasUtiliserEnDehorsDeCDbKeyAddOn((string)row[0])));
                        }
                        else
                        {
                            lst.Add(new CReferenceObjetDependant(strNomProp, tpFille,
                                                                 row.ItemArray));
                        }
                    }
                }
            }
            return(lst);
        }