Exemple #1
0
        //------------------------------------------------------------------------------------------
        public CResultAErreur Execute(CContexteExecutionMacro contexteExecution)
        {
            CResultAErreur result = CResultAErreur.True;

            //Initialise les valeurs des variables
            foreach (KeyValuePair <string, CDbKey> kv in m_dicVariableToInitialId)
            {
                IVariableDynamique var = GetVariable(kv.Key);
                if (var != null && kv.Value != null)
                {
                    Type tpObjet = var.TypeDonnee.TypeDotNetNatif;
                    if (typeof(CObjetDonneeAIdNumerique).IsAssignableFrom(tpObjet))
                    {
                        try
                        {
                            CObjetDonneeAIdNumerique obj = Activator.CreateInstance(tpObjet, new object[] { contexteExecution.ContexteDonnee }) as CObjetDonneeAIdNumerique;
                            if (obj != null && obj.ReadIfExists(kv.Value))
                            {
                                SetValeurChamp(kv.Key, obj);
                            }
                        }
                        catch { }
                    }
                }
            }

            IVariableDynamique variable = VariableCible;

            if (variable == null)
            {
                result.EmpileErreur("#Macro target is not specified");
                return(result);
            }
            if (contexteExecution.Cible != null && variable.TypeDonnee.TypeDotNetNatif != contexteExecution.Cible.GetType())
            {
                result.EmpileErreur("#Macro must be applied on " + DynamicClassAttribute.GetNomConvivial(variable.TypeDonnee.TypeDotNetNatif));
                return(result);
            }
            SetValeurChamp(variable.IdVariable, contexteExecution.Cible);
            if (Formulaire != null)
            {
                if (CFormFormulairePopup.EditeElement(Formulaire, this, "MACRO"))
                {
                    foreach (CMacroObjet macObj in Objets)
                    {
                        macObj.Execute(contexteExecution);
                    }
                }
            }
            return(result);
        }
Exemple #2
0
        //-----------------------------------------------------
        internal CResultAErreur Execute(CContexteExecutionMacro contexteExecution)
        {
            CContexteEvaluationExpression ctx   = new CContexteEvaluationExpression(Macro);
            CObjetDonneeAIdNumerique      cible = null;
            CResultAErreur result = CResultAErreur.True;

            if (FormuleCondition != null)
            {
                result = FormuleCondition.Eval(ctx);
                if (!result)
                {
                    return(result);
                }
                if (!(result.Data is bool))
                {
                    return(result);
                }
                if (!(bool)result.Data)
                {
                    return(result);
                }
            }
            switch (TypeOperation.Code)
            {
            case CTypeOperationSurObjet.TypeOperation.Ajout:
                CObjetDonneeAIdNumeriqueAuto objAuto = Activator.CreateInstance(m_typeObjet, new object[] { contexteExecution.ContexteDonnee }) as CObjetDonneeAIdNumeriqueAuto;
                if (objAuto != null)
                {
                    objAuto.CreateNewInCurrentContexte();
                }
                cible = objAuto;

                break;

            case CTypeOperationSurObjet.TypeOperation.Aucune:
                break;

            case CTypeOperationSurObjet.TypeOperation.Modification:
            case CTypeOperationSurObjet.TypeOperation.Suppression:
                result = FormuleSelectionObjet.Eval(ctx);
                if (!result)
                {
                    return(result);
                }
                if (result)
                {
                    cible = result.Data as CObjetDonneeAIdNumerique;
                }
                break;

            default:
                break;
            }
            if (cible != null)
            {
                Macro.SetValeurChamp(IdVariableAssociee, cible);
            }
            Macro.SetValeurChamp(Macro.VariableCurrentElement, cible);
            foreach (CMacroObjetValeur valeur in Valeurs)
            {
                valeur.Execute(cible);
            }

            return(result);
        }