//------------------------------------------------------------
        public override CResultAErreur GetValue(object objet, string strPropriete)
        {
            CResultAErreur result = CResultAErreur.True;

            result.Data = null;
            string strIdChamp     = null;
            bool   bEntiteToChamp = false;

            if (

                /*Pour compatibilité, avant modifs de décembre 2015, le nom du champ était en fait le même qu'une propriété champ custom.
                 * En décembre 2015, ajout de la possiblité de retourner les valeurs display de champ custom dans les requêtes,
                 * ce qui a changé le nom de la propriétés
                 * */
                CInfoRelationEntiteToValeurChampCustom.DecomposeNomPropriete(strPropriete, ref strIdChamp) ||
                /*fin pour compatiblité*/
                CInfoRelationComposantFiltreEntiteToChampEntite.DecomposeNomPropriete(strPropriete, ref strIdChamp, ref bEntiteToChamp))
            {
                IElementAChamps eltAChamps = objet as IElementAChamps;
                if (eltAChamps == null)
                {
                    return(result);
                }
                result.Data = eltAChamps.GetValeurChamp(strIdChamp);
                CChampCustom champ = new CChampCustom(CContexteDonneeSysteme.GetInstance());
                if (result.Data != null && champ.ReadIfExists(CDbKey.CreateFromStringValue(strIdChamp)))
                {
                    if (!champ.IsChoixParmis())
                    {
                        result.Data = result.Data.ToString();
                    }
                    else
                    {
                        foreach (CValeurChampCustom valeur in champ.ListeValeurs)
                        {
                            if (valeur.Value.Equals(result.Data))
                            {
                                result.Data = valeur.Display;
                                return(result);
                            }
                        }
                    }
                }
            }
            else if (CInfoRelationEValeurChampCustomToDisplay.DecomposeNomPropriete(strPropriete, ref strIdChamp))
            {
                //Rien de spécial, il s'agit de la navigation vers la valeur du champ qui a déjà été reprise par le composant filtre to champ entité
                //car la propriété complète d'un definitionDisplayValue est donnée par GetKeyChamp qui ajoute un composant Element->ValeurChamp + ValeurChamp->Display value
                result.Data = objet;
            }

            return(result);
        }
        public COptimiseurProprieteDynamiqueChampCustomDisplayValue(CDbKey keyChamp)
        {
            m_dbKeyChamp = keyChamp;
            CChampCustom champ = new CChampCustom(CContexteDonneeSysteme.GetInstance());

            if (champ.ReadIfExists(keyChamp))
            {
                if (champ.IsChoixParmis())
                {
                    foreach (CValeurChampCustom valeur in champ.ListeValeurs)
                    {
                        m_dicValeurs[valeur.Value] = valeur.Display;
                    }
                }
            }
        }
Exemplo n.º 3
0
        /// //////////////////////////////////////////
        public override CResultAErreur MyEval(CContexteEvaluationExpression ctx, object[] listeParametres)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CDbKey dbKeyIdChamp    = null;
                object valeurRetournee = null;
                //TESTDBKEYOK : le premier paramètre peut être un Id ou un UniversalId de champ
                if (listeParametres.Length == 2)
                {
                    if (listeParametres[0] is int)
                    {
                        int nIdChamp = (int)listeParametres[0];
                        dbKeyIdChamp = CDbKey.GetNewDbKeyOnIdAUtiliserPourCeuxQuiNeGerentPasLeDbKey(nIdChamp);
                    }
                    else
                    {
                        dbKeyIdChamp = CDbKey.CreateFromStringValue((string)listeParametres[0]);
                    }

                    valeurRetournee = listeParametres[1];
                }

                if (listeParametres.Length == 1)
                {
                    //1 seul paramètre, ce doit être une expression variable avec une variable champ
                    C2iExpressionChamp exChamp = Parametres2i[0] as C2iExpressionChamp;
                    if (exChamp != null)
                    {
                        CDefinitionProprieteDynamiqueChampCustom def = exChamp.DefinitionPropriete as CDefinitionProprieteDynamiqueChampCustom;
                        if (def != null)
                        {
                            dbKeyIdChamp = def.DbKeyChamp;
                        }
                    }
                    valeurRetournee = listeParametres[0];
                }
                if (valeurRetournee == null || dbKeyIdChamp == null)
                {
                    result.Data = "";
                    return(result);
                }

                CContexteDonnee contexteDonnee = (CContexteDonnee)ctx.GetObjetAttache(typeof(CContexteDonnee));
                if (contexteDonnee == null)
                {
                    contexteDonnee = new CContexteDonnee(CSessionClient.GetSessionUnique().IdSession, true, false);
                    ctx.AttacheObjet(typeof(CContexteDonnee), contexteDonnee);
                }
                CChampCustom champ = new CChampCustom(contexteDonnee);
                if (champ.ReadIfExists(dbKeyIdChamp))
                {
                    if (!champ.IsChoixParmis())
                    {
                        result.Data = valeurRetournee.ToString();
                    }
                    else
                    {
                        foreach (CValeurChampCustom valeur in champ.ListeValeurs)
                        {
                            if (valeur.Value.Equals(valeurRetournee))
                            {
                                result.Data = valeur.Display;
                                return(result);
                            }
                        }
                    }
                }
                result.Data = "";
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }