/// <summary>
 /// Initialise l'arbre
 /// </summary>
 /// <param name="typeObjets">Type des objets contenus dans l'abre</param>
 /// <param name="strProprieteListeFils">Propriete à appeler sur un élément pour obtenir ses fils</param>
 /// <param name="strChampParent">Champ de la table contenant l'id du parent</param>
 /// <param name="strProprieteAffichee">Propriete affichée dans l'abre</param>
 /// <returns></returns>
 public CResultAErreur Init(
     CObjetDonneeAIdNumeriqueAuto objetRoot,
     string strProprieteListeFils,
     string strChampParent,
     string strProprieteAffichee,
     CFiltreData filtre)
 {
     m_typeObjets              = objetRoot.GetType();;
     m_objetRoot               = objetRoot;
     m_strProprieteListeFils   = strProprieteListeFils;
     m_strChampParent          = strChampParent;
     m_strDefProprieteAffichee = strProprieteAffichee;
     SetupFormuleLibelle();
     if (filtre != null &&
         filtre.HasFiltre)
     {
         m_filtre = filtre;
     }
     PrepareFiltre();
     Nodes.Clear();
     FillNodes(null, null);
     return(CResultAErreur.True);
 }
Ejemplo n.º 2
0
        private void CFormImportObjetDonnee_Load(object sender, System.EventArgs e)
        {
            // Lance la traduction du formulaire
            sc2i.win32.common.CWin32Traducteur.Translate(this);

            DataTable tableSource       = m_dataset.Tables[0];
            DataRow   rowSource         = tableSource.Rows[0];
            DataTable tablePresentation = new DataTable("Presentation");

            tablePresentation.Columns.Add("NOM", typeof(string));
            tablePresentation.Columns.Add("VALEUR", typeof(string));
            CStructureTable structure = CStructureTable.GetStructure(m_objetDestination.GetType());

            foreach (CInfoChampTable infoChamp in structure.Champs)
            {
                DataRow row = tablePresentation.NewRow();
                row["NOM"] = infoChamp.NomConvivial;
                object val = rowSource[infoChamp.NomChamp];
                row["VALEUR"] = val == null?"NULL":val.ToString();
                tablePresentation.Rows.Add(row);
            }
            m_grid.DataSource = tablePresentation;

            DataGridTableStyle style = new DataGridTableStyle();

            style.MappingName = tablePresentation.TableName;
            DataGridColumnStyle col = new DataGridTextBoxColumn();

            col.MappingName = "NOM";
            col.Width       = m_grid.Width / 3;
            style.GridColumnStyles.Add(col);
            col             = new DataGridTextBoxColumn();
            col.MappingName = "VALEUR";
            col.Width       = m_grid.Width * 2 / 3;
            style.GridColumnStyles.Add(col);
            m_grid.TableStyles.Add(style);
        }
Ejemplo n.º 3
0
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(Process);

            contexteEval.AttacheObjet(typeof(CContexteDonnee), contexte.ContexteDonnee);

            // Evalue la formule de l'entité destination
            result = ExpressionEntiteDestination.Eval(contexteEval);
            if (!result)
            {
                result.EmpileErreur(I.T("Error during @1 formula evaluation|216", ExpressionEntiteDestination.ToString()));
                return(result);
            }
            CObjetDonneeAIdNumeriqueAuto objetDestination = (CObjetDonneeAIdNumeriqueAuto)result.Data;

            // Evalue la formule de l'entité source
            result = ExpressionEntiteSource.Eval(contexteEval);
            if (!result)
            {
                result.EmpileErreur(I.T("Error during @1 formula evaluation|216", ExpressionEntiteSource.ToString()));
                return(result);
            }
            CObjetDonneeAIdNumeriqueAuto objetSource = (CObjetDonneeAIdNumeriqueAuto)result.Data;

            if (m_bCopieComplete)
            {
                //Copie toutes les propriétés, sauf les champs
                if (objetSource == null || objetDestination == null)
                {
                    return(result);
                }
                Type      tp    = objetDestination.GetType();
                DataTable table = objetDestination.Row.Table;
                if (table == null)
                {
                    return(result);
                }
                List <string> keys = new List <string>();
                foreach (DataColumn col in table.PrimaryKey)
                {
                    keys.Add(col.ColumnName);
                }
                objetDestination.ContexteDonnee.CopyRow(objetSource.Row, objetDestination.Row, keys.ToArray());
                IElementAChamps eltChampsDest   = objetDestination as IElementAChamps;
                IElementAChamps eltChampsSource = objetSource as IElementAChamps;
                if (eltChampsDest == null || eltChampsSource == null)
                {
                    return(result);
                }
                foreach (CRelationElementAChamp_ChampCustom relation in eltChampsSource.RelationsChampsCustom)
                {
                    eltChampsDest.SetValeurChamp(relation.ChampCustom, relation.Valeur);
                }
            }
            else
            {
                // Faire la copie de l'objet
                for (int i = 0; i < m_lstProprietesDynamiquesACopier.Length; i++)
                {
                    CDefinitionProprieteDynamique definitionPropriete = m_lstProprietesDynamiquesACopier[i];

                    // Si c'est un champs custom
                    if (definitionPropriete is CDefinitionProprieteDynamiqueChampCustom)
                    {
                        if (!(objetSource is IElementAChamps))
                        {
                            result.EmpileErreur(I.T("@1 : Incorrect custom field of source object|298", definitionPropriete.Nom));
                            return(result);
                        }
                        if (!(objetDestination is IElementAChamps))
                        {
                            result.EmpileErreur(I.T("@1 : Incorrect custom field of destination object|299", definitionPropriete.Nom));
                            return(result);
                        }
                        // Get la valeur du champ custom de l'objet source
                        object valeurChamp = ((IElementAChamps)objetSource).GetValeurChamp(((CDefinitionProprieteDynamiqueChampCustom)definitionPropriete).DbKeyChamp.StringValue);
                        // Set la valeur du champ custom de l'objet destination
                        result = ((IElementAChamps)objetDestination).SetValeurChamp(
                            ((CDefinitionProprieteDynamiqueChampCustom)definitionPropriete).DbKeyChamp.StringValue,
                            valeurChamp);
                    }
                    // Si c'est un champ normal de la base
                    else
                    {
                        string strProp = definitionPropriete.NomProprieteSansCleTypeChamp;
                        // Get la valeur de propriété de l'objet source
                        object valeurProp = CInterpreteurTextePropriete.GetValue(objetSource, strProp);
                        // Set la valeut de propriété de l'objet destination

                        if (!CInterpreteurTextePropriete.SetValue(objetDestination, strProp, valeurProp))
                        {
                            result.EmpileErreur(I.T("Property @1 : Failed to set the value|300", strProp));
                            return(result);
                        }
                    }
                }
            }

            return(result);
        }
        //-----------------------------------------------------------------------------
        private CResultAErreur AfficheEtapeFormulaire(CEtapeWorkflow etape, bool bDansNouvelOnglet)
        {
            CResultAErreur          result         = CResultAErreur.True;
            CBlocWorkflowFormulaire blocFormulaire = etape.TypeEtape != null ? etape.TypeEtape.Bloc as CBlocWorkflowFormulaire : null;

            if (blocFormulaire == null)
            {
                result.EmpileErreur(I.T("Error while initializing workflow step|20557"));
                return(result);
            }

            //trouve l'élément à éditer
            CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(etape);

            if (blocFormulaire.FormuleElementEditePrincipal == null)
            {
                result.EmpileErreur(I.T("Step @1 doesn't define element to edit|20558",
                                        etape.TypeEtape.Libelle));
                return(result);
            }
            result = blocFormulaire.FormuleElementEditePrincipal.Eval(ctxEval);
            if (!result)
            {
                return(result);
            }
            CObjetDonneeAIdNumeriqueAuto objet = result.Data as CObjetDonneeAIdNumeriqueAuto;

            if (objet == null)
            {
                result.EmpileErreur(I.T("Element to edit for step @1 is invalid|20559"),
                                    etape.TypeEtape.Libelle);
                return(result);
            }

            CFormEditionStandard formStandard;

            if (blocFormulaire.IsStandardForm)
            {
                CReferenceTypeForm refType = CFormFinder.GetRefFormToEdit(objet.GetType());
                formStandard = null;
                try
                {
                    if (refType != null)
                    {
                        formStandard = refType.GetForm(objet) as CFormEditionStandard;
                    }
                }
                catch (Exception e)
                { }
                if (formStandard == null)
                {
                    result.EmpileErreur(I.T("System can not edit @1|20560",
                                            DynamicClassAttribute.GetNomConvivial(objet.GetType())));
                    return(result);
                }
            }
            else
            {
                //CFormulaire formulaire = new CFormulaire(etape.ContexteDonnee);
                //if (!formulaire.ReadIfExists(
                //    blocFormulaire.IdFormulairePrincipal == null ? -1 : blocFormulaire.IdFormulairePrincipal.Value))
                //{
                //    result.EmpileErreur(I.T("Form for step @1 is invalid|20561",
                //        etape.TypeEtape.Libelle));
                //    return result;
                //}
                CFormEditionStdPourFormulaire frm = new CFormEditionStdPourFormulaire(objet);
                //frm.IdFormulaireAffiche = formulaire.Id;
                frm.IdsFormulairesAffiches = blocFormulaire.ListeDbKeysFormulaires;
                formStandard = frm;
            }
            CFormMain.GetInstance().SetEtapeActive(null, null);

            if (formStandard != null && blocFormulaire.RestrictionExceptionContext.Length > 0)
            {
                formStandard.ContexteModification = blocFormulaire.RestrictionExceptionContext;
            }


            if (bDansNouvelOnglet)
            {
                CFormMain.GetInstance().AffichePageDansNouvelOnglet(formStandard);
            }
            else
            {
                CFormMain.GetInstance().AffichePage(formStandard);
            }

            AppliqueEtape(etape, formStandard);
            return(result);
        }
Ejemplo n.º 5
0
        //-----------------------------------------------------------
        private CResultAErreurType <CObjetDonneeAIdNumeriqueAuto> CloneObjet(
            CContexteDonnee contexte,
            CObjetDonneeAIdNumeriqueAuto source,
            Dictionary <CObjetDonneeAIdNumeriqueAuto, CObjetDonneeAIdNumeriqueAuto> dicClones)
        {
            CResultAErreurType <CObjetDonneeAIdNumeriqueAuto> result = new CResultAErreurType <CObjetDonneeAIdNumeriqueAuto>();

            if (dicClones.ContainsKey(source))
            {
                result.DataType = dicClones[source];
                return(result);
            }
            if (dicClones.ContainsValue(source))
            {
                //C'est un objet qu'on a cloné, on ne va as le recloner encore
                result.DataType = source;
                return(result);
            }
            CObjetDonneeAIdNumeriqueAuto clone = Activator.CreateInstance(source.GetType(), new object[] { contexte }) as CObjetDonneeAIdNumeriqueAuto;

            clone.CreateNewInCurrentContexte();
            dicClones[source] = clone;
            //Copie la ligne
            DataTable table = source.Row.Table;

            if (table == null)
            {
                return(result);
            }
            List <string> keys = new List <string>();

            foreach (DataColumn col in table.PrimaryKey)
            {
                keys.Add(col.ColumnName);
            }
            clone.ContexteDonnee.CopyRow(source.Row, clone.Row, keys.ToArray());

            //Copie toutes les valeurs de champ custom
            IElementAChamps eltChampsDest   = clone as IElementAChamps;
            IElementAChamps eltChampsSource = source as IElementAChamps;

            if (eltChampsDest != null && eltChampsSource != null)
            {
                foreach (CRelationElementAChamp_ChampCustom relation in eltChampsSource.RelationsChampsCustom)
                {
                    eltChampsDest.SetValeurChamp(relation.ChampCustom, relation.Valeur);
                }
            }

            //Copie les relations filles sélectionnées
            List <CDefinitionProprieteDynamique> lst = null;

            if (TryGetValue(source.GetType(), out lst))
            {
                foreach (CDefinitionProprieteDynamique def in lst)
                {
                    CDefinitionProprieteDynamique defInverse = def.GetDefinitionInverse(source.GetType());
                    if (defInverse != null)//On sait affecter le parent
                    {
                        CResultAErreur resTmp = CInterpreteurProprieteDynamique.GetValue(source, def);
                        if (resTmp && result.Data is IEnumerable)
                        {
                            IEnumerable en = result.Data as IEnumerable;
                            foreach (object obj in en)
                            {
                                CObjetDonneeAIdNumeriqueAuto objDonnee = obj as CObjetDonneeAIdNumeriqueAuto;
                                if (objDonnee != null)
                                {
                                    result = CloneObjet(contexte, objDonnee, dicClones);
                                    if (result)
                                    {
                                        resTmp = CInterpreteurProprieteDynamique.SetValue(result.DataType, defInverse, clone);
                                        if (!resTmp)
                                        {
                                            result.EmpileErreur(resTmp.Erreur);
                                            return(result);
                                        }
                                    }

/*????                                    else
 *                                      return result;*/
                                }
                            }
                        }
                    }
                }
            }

            result.DataType = clone;
            return(result);
        }
Ejemplo n.º 6
0
        /// //////////////////////////////////////////////////////////////
        public CResultAErreur Supprimer(ArrayList listeElementsASupprimer)
        {
            using (CWaitCursor waiter = new CWaitCursor())
            {
                CResultAErreur result = CResultAErreur.True;
                if (listeElementsASupprimer.Count <= 0)
                {
                    return(result);
                }

                string strListeIds = "";
                CObjetDonneeAIdNumeriqueAuto objetPourSuppressionGlobale = null;
                //Crée une liste de tous les ids éléments  à supprimer
                try
                {
                    foreach (CObjetDonneeAIdNumeriqueAuto objet in listeElementsASupprimer)
                    {
                        strListeIds += objet.Id.ToString() + ",";
                        if (objetPourSuppressionGlobale == null)
                        {
                            objetPourSuppressionGlobale = objet;
                        }
                    }
                    strListeIds = strListeIds.Substring(0, strListeIds.Length - 1);

                    using (CContexteDonnee contexteToDelete = new CContexteDonnee(objetPourSuppressionGlobale.ContexteDonnee.IdSession, true, false))
                    {
                        result = contexteToDelete.SetVersionDeTravail(objetPourSuppressionGlobale.ContexteDonnee.IdVersionDeTravail, true);
                        if (!result)
                        {
                            return(result);
                        }
                        contexteToDelete.BeginModeDeconnecte();


                        CListeObjetsDonnees liste = new CListeObjetsDonnees(contexteToDelete,
                                                                            objetPourSuppressionGlobale.GetType(), false);

                        liste.Filtre = new CFiltreData(
                            objetPourSuppressionGlobale.GetChampId() + " in (" +
                            strListeIds + ")");

                        result = CObjetDonneeAIdNumeriqueAuto.Delete(liste);
                        if (!result)
                        {
                            contexteToDelete.CancelModifsEtEndModeDeconnecte();
                            result.EmpileErreur(I.T("Error while deleting element|30032"));
                            return(result);
                        }
                        else
                        {
                            result = contexteToDelete.CommitModifsDeconnecte();
                        }
                    }
                }
                catch
                {
                    foreach (CObjetDonnee objet in listeElementsASupprimer)
                    {
                        result = objet.Delete();
                        if (!result)
                        {
                            CSc2iWin32DataClient.ContexteCourant.CancelModifsEtEndModeDeconnecte();
                            result.EmpileErreur(I.T("Error while deleting element|30032"));
                            break;
                        }
                    }
                    if (result)
                    {
                        result = CSc2iWin32DataClient.ContexteCourant.CommitModifsDeconnecte();
                    }
                }
                return(result);
            }
        }
Ejemplo n.º 7
0
        /// //////////////////////////////////////////////////////////////
        public CResultAErreur Ajouter(CListeObjetsDonnees listePourFormEdition,
                                      IEnumerable <CAffectationsProprietes> affectations)
        {
            CResultAErreur  result = CResultAErreur.True;
            CContexteDonnee ctx    = null;

            if (ObjetContainer != null)
            {
                ctx = ObjetContainer.ContexteDonnee;
            }
            else
            {
                ctx = CSc2iWin32DataClient.ContexteCourant;
            }
            CObjetDonneeAIdNumeriqueAuto objet = (CObjetDonneeAIdNumeriqueAuto)Activator.CreateInstance(m_typeObjet, new object[] { ctx });

            objet.CreateNew();

            if (ObjetContainer != null)
            {
                PropertyInfo prop = objet.GetType().GetProperty(m_strChampLienParent);
                if (prop == null)
                {
                    throw new Exception(I.T("The property @1 has not been found in the class @2 |30025", m_strChampLienParent, objet.GetType().ToString()));
                }
                //throw new Exception("La propriété '"+m_strChampLienParent+"' n'a pas"+
                //	" été trouvée dans la classe "+objet.GetType());
                MethodInfo method    = prop.GetSetMethod();
                object[]   container = { ObjetContainer };
                method.Invoke(objet, container);
            }
            bool bCancel = false;

            if (OnNewObjetDonnee != null)
            {
                OnNewObjetDonnee(this, objet, ref bCancel);
            }

            if (bCancel)
            {
                objet.CancelCreate();
                result.EmpileErreur(I.T("Creation canceled|20007"));
                return(result);
            }



            if (BeforeAfficheForm != null)
            {
                BeforeAfficheForm(null, null);
            }
            IFormNavigable frm = (IFormNavigable)NewCFormEdition(objet, listePourFormEdition);

            if (frm == null)
            {
                result.EmpileErreur(I.T("Impossible to add an element|30026"));
                return(result);
            }
            if (frm is CFormEditionStandard)
            {
                ((CFormEditionStandard)frm).AfterValideModification      += new ObjetDonneeEventHandler(frm_AfterValideCreateObjetDonnee);
                ((CFormEditionStandard)frm).AffectationsPourNouvelElement = affectations;
            }
            Navigateur.AffichePage(frm);

            if (!Navigateur.Visible)
            {
                CSc2iWin32DataNavigation.PushNavigateur(Navigateur);
                Navigateur.ShowDialog();
                CSc2iWin32DataNavigation.PopNavigateur();
            }
            return(result);
        }