Beispiel #1
0
 public CInfoElementImport(CObjetDonnee element)
 {
     TypeElement = element.GetType();
     KeyElement  = element.DbKey;
 }
Beispiel #2
0
        //-----------------------------------------------------------------------------------
        public void OnFournisseurTermine(HashSet <CReferenceObjetDependant> setDependances)
        {
            lock (typeof(CLockerArbre))
            {
                List <TreeNode> nodesTypeToCreate = new List <TreeNode>();
                Dictionary <TreeNode, List <TreeNode> > nodesObjetToCreate = new Dictionary <TreeNode, List <TreeNode> >();
                Dictionary <Type, TreeNode>             dicTypeToNode      = new Dictionary <Type, TreeNode>();
                foreach (TreeNode node in m_arbre.Nodes)
                {
                    if (node.Tag is Type)
                    {
                        dicTypeToNode[(Type)node.Tag] = node;
                    }
                }
                m_lblProgression.SetInfo(I.T("Reading @1 element(s)|20014", setDependances.Count.ToString()));
                List <CObjetDonnee> lstObjets = CReferenceObjetDonnee.GetObjets(setDependances, m_objetRacine.ContexteDonnee);
                m_lblProgression.SetInfo(I.T("Adding @1 element(s)|20013", setDependances.Count.ToString()));
                foreach (CObjetDonnee objet in lstObjets)
                {
                    if (objet == null)
                    {
                        continue;
                    }
                    Type     tpObjet  = objet.GetType();
                    TreeNode nodeType = null;
                    if (!dicTypeToNode.TryGetValue(tpObjet, out nodeType))
                    {
                        nodeType = new TreeNode();
                        FillNodeType(nodeType, tpObjet);
                        dicTypeToNode[tpObjet] = nodeType;
                        nodesTypeToCreate.Add(nodeType);
                    }
                    bool bExiste = false;
                    if (objet != null)
                    {
                        foreach (TreeNode node in nodeType.Nodes)
                        {
                            CObjetDonnee objetEx = node.Tag as CObjetDonnee;

                            if (objetEx != null && objetEx.Equals(objet))
                            {
                                bExiste = true;
                                break;
                            }
                        }
                        if (!bExiste)
                        {
                            TreeNode nodeObjet = new TreeNode();
                            FillNodeObjet(nodeObjet, objet);
                            List <TreeNode> lstNodes = null;
                            if (!nodesObjetToCreate.TryGetValue(nodeType, out lstNodes))
                            {
                                lstNodes = new List <TreeNode>();
                                nodesObjetToCreate[nodeType] = lstNodes;
                            }
                            lstNodes.Add(nodeObjet);
                        }
                    }
                }
                Invoke((MethodInvoker) delegate
                {
                    m_arbre.BeginUpdate();
                    foreach (TreeNode node in nodesTypeToCreate)
                    {
                        m_arbre.Nodes.Add(node);
                    }
                    foreach (KeyValuePair <TreeNode, List <TreeNode> > kv in nodesObjetToCreate)
                    {
                        foreach (TreeNode nodeFils in kv.Value)
                        {
                            kv.Key.Nodes.Add(nodeFils);
                        }
                    }
                    m_arbre.EndUpdate();
                });
            }
        }
        //--------------------------------------------------------------------------------------------------------------------
        public override CResultAErreur ExecuterOperation(IDatabaseConnexion connection, IIndicateurProgression indicateur)
        {
            CResultAErreur result = CResultAErreur.True;

            if (!typeof(IObjetDonneeAIdNumerique).IsAssignableFrom(m_type) || !CObjetDonnee.TypeManageIdUniversel(m_type))
            {
                result.EmpileErreur(m_type.ToString() + " can not have Universal Id");
            }

            string strNomTable = CContexteDonnee.GetNomTableForType(m_type);

            CStructureTable structure  = CStructureTable.GetStructure(m_type);
            string          strChampId = structure.ChampsId[0].NomChamp;

            C2iRequeteAvancee requete = new C2iRequeteAvancee();

            requete.FiltreAAppliquer = new CFiltreData(CObjetDonnee.c_champIdUniversel + "=@1", "");
            requete.TableInterrogee  = CContexteDonnee.GetNomTableForType(m_type);
            requete.ListeChamps.Add(new C2iChampDeRequete(strChampId, new CSourceDeChampDeRequete(strChampId),
                                                          typeof(int),
                                                          OperationsAgregation.None, true));
            Console.WriteLine("Update Universal id on " + strNomTable);
            result = requete.ExecuteRequete(connection.IdSession);
            if (!result)
            {
                return(result);
            }
            string    strNomTableInDb = CContexteDonnee.GetNomTableInDbForNomTable(strNomTable);
            DataTable table           = result.Data as DataTable;
            int       nNb             = 0;
            bool      bWasInTrans     = connection.IsInTrans();

            if (bWasInTrans)
            {
                connection.CommitTrans();
            }
            DateTime dt = DateTime.Now;

            if (table.Rows.Count > 0)
            {
                if (table.Rows.Count > 10000 && connection is COracleDatabaseConnexion)
                {
                    string strQuery = "Update " + strNomTableInDb + " set " + CObjetDonnee.c_champIdUniversel +
                                      "=CONCAT('" + strNomTableInDb + "'," + strChampId + ")";
                    result = connection.RunStatement(strQuery);
                }
                else
                {
                    foreach (DataRow row in table.Rows)
                    {
                        string strQuery = "Update " + strNomTableInDb + " set " +
                                          CObjetDonnee.c_champIdUniversel + "='" + CUniqueIdentifier.GetNew() + "' where " +
                                          strChampId + "=" + row[0].ToString();
                        result = connection.ExecuteScalar(strQuery);
                        if (!result)
                        {
                            break;
                        }
                        nNb++;
                        if (nNb % 100 == 0)
                        {
                            TimeSpan sp   = DateTime.Now - dt;
                            double   fVal = (double)sp.TotalSeconds / (double)nNb * (double)(table.Rows.Count - nNb);
                            Console.WriteLine(strNomTableInDb + " " + nNb + "/" + table.Rows.Count + " reste " + fVal.ToString("0s"));
                        }
                    }
                }
            }
            if (bWasInTrans)
            {
                connection.BeginTrans();
            }
            return(result);

            /*
             *
             * //Trouve tous les éléments du type qui n'ont pas d'id universel
             * using (CContexteDonnee ctx = new CContexteDonnee(connection.IdSession, true, false))
             * {
             *  CListeObjetsDonnees lst = new CListeObjetsDonnees(ctx, m_type, false);
             *  lst.Filtre = new CFiltreData(CObjetDonnee.c_champIdUniversel + "=@1", "");
             *  lst.Filtre.IgnorerVersionDeContexte = true;
             *  lst.AppliquerFiltreAffichage = false;
             *
             *  foreach (IObjetDonnee objet in lst.ToArrayList())
             *  {
             *      objet.Row[CObjetDonnee.c_champIdUniversel] = CUniqueIdentifier.GetNew();
             *  }
             *  string strNomTable = CContexteDonnee.GetNomTableForType(m_type);
             *  CObjetServeur objetServeur = CContexteDonnee.GetTableLoader(strNomTable, null, connection.IdSession) as CObjetServeur;
             *  int nCount = ctx.Tables[strNomTable].Rows.Count;
             *  DataTable tableSource = ctx.Tables[strNomTable];
             *
             *   List<string> lstChampsExclus = new List<string>();
             *  HashSet<string> lstIDs = new HashSet<string>();
             *  CStructureTable structure = CStructureTable.GetStructure(m_type);
             *  foreach (CInfoChampTable info in structure.ChampsId)
             *      lstIDs.Add(info.NomChamp);
             *
             *  foreach (CInfoChampTable champ in structure.Champs)
             *      if (champ.NomChamp != CObjetDonnee.c_champIdUniversel && !lstIDs.Contains(champ.NomChamp))
             *          lstChampsExclus.Add(champ.NomChamp);
             *
             *  IDataAdapter adapter = objetServeur.GetDataAdapter(DataRowState.Modified, lstChampsExclus.ToArray());
             *
             *  for (int nRow = 0; nRow < nCount; nRow += 5000)
             *  {
             *
             *      using (DataSet dsCopie = new DataSet())
             *      {
             *          dsCopie.EnforceConstraints = false;
             *          DataTable tableCopie = ctx.Tables[strNomTable].Clone();
             *          tableCopie.BeginLoadData();
             *          dsCopie.Tables.Add(tableCopie);
             *          int nMax = Math.Min(nRow + 5000, nCount);
             *          DateTime dt = DateTime.Now;
             *          for (int n = nRow; n < nMax; n++)
             *          {
             *              tableCopie.ImportRow(tableSource.Rows[n]);
             *          }
             *          TimeSpan sp = DateTime.Now - dt;
             *          Console.WriteLine("Write 1" + strNomTable + " " + nRow + "/" + nCount+"  "+sp.TotalSeconds.ToString());
             *          adapter.Update(dsCopie);
             *          sp = DateTime.Now - dt;
             *          Console.WriteLine("Write 2" + strNomTable + " " + nRow + "/" + nCount + "  " + sp.TotalSeconds.ToString());
             *      }
             *  }
             * }
             * return result;*/
        }
 public CResultAErreur ExecuteAction(CObjetDonnee objet)
 {
     return(CExecuteurActionSur2iLink.ExecuteAction(m_controlSource, m_action, objet));
 }
Beispiel #5
0
 //---------------------------------------------------------------
 public CValeursProprietes(CObjetDonnee objet)
     : this(objet, false)
 {
 }
Beispiel #6
0
 ///////////////////////////////////////////////////
 public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
 {
     return(CResultAErreur.True);
 }
        /// <summary>
        /// /////////////////////////////////////////////////////////////////////////////////
        /// </summary>
        /// <param name="table"></param>
        /// <param name="result"></param>
        ///
        private static CResultAErreur TraitementAvantSauvegardeExterne(CContexteDonnee contexte, Hashtable tableData)
        {
            CResultAErreur result = CResultAErreur.True;

            ///Stef 22/07/08 : l'appel à shouldDeclenche peut
            ///nécessiter GetValeurChamp (si conditions sur des champs). Or, si un élément n'a pas
            ///de valeur pour un champ, l'appli va aller chercher la valeur par défaut de ce
            ///champ, si le champ n'est pas chargé, l'appli va le lire. Comme on est souvent
            ///dans un contexte sans gestion par tables complètes, on est mal, parce que
            ///ça va génerer une requête par champ.
            ///Donc, on lit tous les champs custom avant de commencer
            CListeObjetsDonnees listeChamps = new CListeObjetsDonnees(contexte, typeof(CChampCustom));

            listeChamps.PreserveChanges = true;            //Pour ne pas modifier les champs modifiés
            listeChamps.AssureLectureFaite();

            DateTime dt = DateTime.Now;
            CTraitementApresSauvegarde traitement = new CTraitementApresSauvegarde( );

            ArrayList lstTables = CContexteDonnee.GetTablesOrderInsert(contexte);

            //Pour empêcher de regarder deux fois les évenements d'un même objet
            //Type->Dictionnaire des ids vus
            Dictionary <Type, Dictionary <int, bool> > elementsVus = new Dictionary <Type, Dictionary <int, bool> >();

            DataRowChangeEventHandler handlerRedo = new DataRowChangeEventHandler(table_RowChanged);

            Dictionary <string, Dictionary <int, bool> > listeElementsARepasser = null;

            if (!m_listeElementsARepasser.TryGetValue(contexte, out listeElementsARepasser))
            {
                listeElementsARepasser             = new Dictionary <string, Dictionary <int, bool> >();
                m_listeElementsARepasser[contexte] = listeElementsARepasser;
            }

            bool bFirstPasse     = true;
            int  nLimiteurPasses = 0;

            while ((bFirstPasse | listeElementsARepasser.Count > 0) && nLimiteurPasses < 5)
            {
                nLimiteurPasses++;

                foreach (DataTable table in lstTables)
                {
                    if (table.Rows.Count > 0 && table.PrimaryKey.Length == 1)
                    {
                        string strChampCle = table.PrimaryKey[0].ColumnName;

                        Type tpObjets = CContexteDonnee.GetTypeForTable(table.TableName);
                        if (!typeof(CObjetDonneeAIdNumerique).IsAssignableFrom(tpObjets))
                        {
                            continue;
                        }

                        Type typeOriginal = tpObjets;

                        //Lors de la modif de champs custom, l'élement parent n'est pas forcement modifié
                        //Mais le champ peut l'être
                        if (tpObjets.IsSubclassOf(typeof(CRelationElementAChamp_ChampCustom)))
                        {
                            int  nLigne = 0;
                            bool bGoOut = false;
                            while (table.Rows.Count > nLigne && !bGoOut)
                            {
                                if (table.Rows[nLigne].RowState != DataRowState.Deleted)
                                {
                                    CRelationElementAChamp_ChampCustom rel = (CRelationElementAChamp_ChampCustom)contexte.GetNewObjetForRow(table.Rows[nLigne]);
                                    tpObjets    = rel.ElementAChamps.GetType();
                                    strChampCle = ((CObjetDonnee)rel.ElementAChamps).GetChampsId()[0];
                                    bGoOut      = true;
                                }
                                nLigne++;
                            }
                        }

                        //Les objets qui n'ont pas de relationTypeId ne peuvent pas avoir d'évenements
                        if (tpObjets.GetCustomAttributes(typeof(NoRelationTypeIdAttribute), true).Length > 0)
                        {
                            continue;
                        }

                        ArrayList lstEvenements = GetListeEvenementsAutoSur(tpObjets, contexte.IdVersionDeTravail);

                        //Id des éléments modifiés
                        List <int> listeIdsElementsAVerifierHandlers = new List <int>();
                        string     strPrimaryKey = "";
                        if (table.PrimaryKey.Length == 1 &&
                            table.PrimaryKey[0].DataType == typeof(int))
                        {
                            strPrimaryKey = table.PrimaryKey[0].ColumnName;
                        }

                        Dictionary <int, bool> tableIdsVues = null;
                        if (!elementsVus.TryGetValue(tpObjets, out tableIdsVues))
                        {
                            tableIdsVues          = new Dictionary <int, bool>();
                            elementsVus[tpObjets] = tableIdsVues;
                        }

                        Dictionary <int, bool> listeARepasserPourTable = null;
                        if (!listeElementsARepasser.TryGetValue(table.TableName, out listeARepasserPourTable))
                        {
                            listeARepasserPourTable = null;
                        }

                        List <CObjetDonnee> lstObjetsAvecEvenementsSpecifiques = new List <CObjetDonnee>();

                        //Stef 16/11/2012 :
                        //Si c'est un élément à champs, il est consideré comme modifié
                        //si un de ses champs custom est modifiés
                        //Ca a été fait parce que les handlers d'évenement n'étaient
                        //Pas pris en compte sur modif de champ custom
                        //On n'enlève pas pour autant l'ancienne méthode qui consiste
                        //à considérer l'élément modifié losrqu'on passe sur la table des
                        //valeurs de champs custom
                        if (typeof(IObjetDonneeAChamps).IsAssignableFrom(typeOriginal) && table.Rows.Count > 0)
                        {
                            //Regarde s'il y a des relations
                            IObjetDonneeAChamps objAChamp = contexte.GetNewObjetForRow(table.Rows[0]) as IObjetDonneeAChamps;
                            string strTableChamps         = objAChamp.GetNomTableRelationToChamps();
                            //Trouve la relation à la table
                            DataTable tableChamps = contexte.Tables[strTableChamps];
                            if (tableChamps != null)//Si la table champs n'est pas là, c'est
                            //qu'elle n'a pas été modifiée !! c'est logique çà
                            {
                                DataRelation rel = null;
                                foreach (DataRelation relTest in tableChamps.ParentRelations)
                                {
                                    if (relTest.ParentTable.TableName == table.TableName)
                                    {
                                        rel = relTest;
                                        break;
                                    }
                                }
                                if (rel != null)//On peut vérifier !
                                {
                                    foreach (DataRow row in new ArrayList(table.Rows))
                                    {
                                        if (row.RowState == DataRowState.Unchanged)//sinon, ce n'est pas la peine
                                        {
                                            DataRow[] rowsChamps = row.GetChildRows(rel);
                                            foreach (DataRow rowChamp in rowsChamps)
                                            {
                                                if (rowChamp.RowState != DataRowState.Unchanged)
                                                {
                                                    //Aloue l'objet pour s'assurer que la ligne est bien pleine
                                                    CObjetDonnee objTmp = contexte.GetNewObjetForRow(row);
                                                    objTmp.AssureData();
                                                    row.SetModified();
                                                    string strOldContexte = (string)row[CObjetDonnee.c_champContexteModification];
                                                    if (strOldContexte.Length == 0)
                                                    {
                                                        row[CObjetDonnee.c_champContexteModification] = rowChamp[CObjetDonnee.c_champContexteModification,
                                                                                                                 rowChamp.RowState == DataRowState.Deleted ? DataRowVersion.Original : DataRowVersion.Current] as string;
                                                    }
                                                    break;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        foreach (DataRow row in new ArrayList(table.Rows))
                        {
                            CObjetDonneeAIdNumerique objet = null;
                            if (lstEvenements.Count > 0)
                            {
                                if (row.RowState == DataRowState.Added ||
                                    row.RowState == DataRowState.Modified ||
                                    row.RowState == DataRowState.Deleted)
                                {
                                    objet = (CObjetDonneeAIdNumerique)((CContexteDonnee)table.DataSet).GetNewObjetForRow(row);
                                    if (objet.Row.RowState == DataRowState.Deleted)
                                    {
                                        objet.VersionToReturn = DataRowVersion.Original;
                                    }
                                    if (objet.Row.RowState != DataRowState.Deleted && EvenementAttribute.HasEventsSpecifiques(objet))
                                    {
                                        lstObjetsAvecEvenementsSpecifiques.Add(objet);
                                    }

                                    if (typeof(CRelationElementAChamp_ChampCustom).IsAssignableFrom(typeOriginal))
                                    {
                                        CRelationElementAChamp_ChampCustom rel = objet as CRelationElementAChamp_ChampCustom;
                                        objet = (CObjetDonneeAIdNumerique)((CRelationElementAChamp_ChampCustom)objet).ElementAChamps;
                                        if (objet.Row.RowState == DataRowState.Unchanged)
                                        {
                                            objet.Row.Row.SetModified();
                                        }
                                        if (objet.Row.RowState == DataRowState.Deleted)
                                        {
                                            objet.VersionToReturn = DataRowVersion.Original;
                                        }
                                        if (rel.ContexteDeModification.Length != 0 &&
                                            objet.ContexteDeModification.Length == 0)
                                        {
                                            objet.ContexteDeModification = rel.ContexteDeModification;
                                        }
                                    }
                                    if (!tableIdsVues.ContainsKey(objet.Id) || (
                                            listeARepasserPourTable != null && listeARepasserPourTable.ContainsKey(objet.Id)))
                                    {
                                        tableIdsVues[objet.Id] = true;
                                        foreach (CEvenement evt in lstEvenements)
                                        {
                                            if (!traitement.ContainsCouple(evt, (CObjetDonneeAIdNumerique)objet))
                                            {
                                                //Attention, si c'est une valeur de champ custom, envoie la valeur,
                                                //c'est elle qui sera testée.
                                                CInfoDeclencheurProcess infoDeclencheur = null;
                                                if (evt.ShouldDeclenche((CObjetDonneeAIdNumerique)objet, ref infoDeclencheur))
                                                {
                                                    infoDeclencheur.DbKeyEvenementDeclencheur = evt.DbKey;
                                                    infoDeclencheur.Info = evt.Libelle;
                                                    traitement.AddCoupleEvenementObjet(evt, (CObjetDonneeAIdNumerique)objet, infoDeclencheur);
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            //Regarde les handle d'évenement sur l'objet
                            if (strPrimaryKey != "" && (row.RowState == DataRowState.Modified))
                            {
                                listeIdsElementsAVerifierHandlers.Add((int)row[strPrimaryKey]);
                            }
                        }
                        if (listeARepasserPourTable != null)
                        {
                            listeARepasserPourTable.Clear();
                        }

                        if (listeIdsElementsAVerifierHandlers.Count > 0 && bFirstPasse)
                        {
                            //traitement par paquet de 500
                            for (int nIndexLot = 0; nIndexLot < listeIdsElementsAVerifierHandlers.Count; nIndexLot += 500)
                            {
                                int           nMin = Math.Min(nIndexLot + 500, listeIdsElementsAVerifierHandlers.Count);
                                StringBuilder bl   = new StringBuilder();
                                for (int nIndex = nIndexLot; nIndex < nMin; nIndex++)
                                {
                                    bl.Append(listeIdsElementsAVerifierHandlers[nIndex].ToString());
                                    bl.Append(",");
                                }
                                string strIdsElementsAVerifierHandlers = bl.ToString().Substring(0, bl.ToString().Length - 1);
                                //Recherche tous les handlers d'évenement pour les objets concernés
                                CListeObjetsDonnees listeHandler = new CListeObjetsDonnees(contexte, typeof(CHandlerEvenement));
                                listeHandler.Filtre = new CFiltreData(
                                    CHandlerEvenement.c_champIdCible + " in (" + strIdsElementsAVerifierHandlers + ") and " +
                                    CHandlerEvenement.c_champTypeCible + "=@1 and " +
                                    CHandlerEvenement.c_champTypeEvenement + "=@2",
                                    tpObjets.ToString(),
                                    (int)TypeEvenement.Modification);
                                listeHandler.PreserveChanges = true;
                                foreach (CHandlerEvenement handler in listeHandler)
                                {
                                    if (handler.Row.RowState != DataRowState.Deleted)
                                    {
                                        CObjetDonneeAIdNumerique objetTmp = (CObjetDonneeAIdNumerique)Activator.CreateInstance(tpObjets, new object[] { contexte });
                                        if (objetTmp.ReadIfExists(handler.IdElementCible))
                                        {
                                            CInfoDeclencheurProcess infoDeclencheur = null;
                                            if (handler.ShoulDeclenche(objetTmp, ref infoDeclencheur))
                                            {
                                                if (infoDeclencheur != null && handler.EvenementLie != null)
                                                {
                                                    infoDeclencheur.Info = handler.EvenementLie.Libelle;
                                                }
                                                traitement.AddCoupleHandlerObjet(handler, (CObjetDonneeAIdNumerique)objetTmp, infoDeclencheur);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        //Annule les évenements spécifiques, ils ont été traités !
                        foreach (CObjetDonnee objet in lstObjetsAvecEvenementsSpecifiques)
                        {
                            EvenementAttribute.ClearEvenements(objet);
                        }
                    }
                }

                //Execute ce qui peut être executé tout de suite
                foreach (DataTable table in contexte.Tables)
                {
                    table.RowChanged += handlerRedo;
                }
                listeElementsARepasser.Clear();
                foreach (CTraitementApresSauvegarde.CCoupleDeclencheurObjet couple in traitement.CouplesEvenementOuHandlerObjet)
                {
                    if (couple.Objet is CObjetDonneeAIdNumerique &&
                        couple.PeutEtreExecuteSurLePosteClient)
                    {
                        result = couple.OnDeclencheSurClient();
                        if (!result)
                        {
                            return(result);
                        }
                    }
                }
                foreach (DataTable table in contexte.Tables)
                {
                    table.RowChanged -= handlerRedo;
                }
                bFirstPasse = false;
            }

            if (traitement.CouplesEvenementOuHandlerObjet.Count != 0)
            {
                tableData[c_cleDonneeListeTraitements] = traitement;
            }
            m_listeElementsARepasser.Remove(contexte);
            return(result);
        }
 public CObjetDonneeResultEventArgs(CObjetDonnee objet)
     : base(objet)
 {
 }
 /// //////////////////////////////////////////////
 public TreeNode GetNodeFor(CObjetDonnee objet)
 {
     return(GetNodeFor(Nodes, objet));
 }
 public CObjetDonneeEventArgs(CObjetDonnee objet)
 {
     m_objetDonnee = objet;
 }
 public CObjetDonneeCancelEventArgs(CObjetDonnee objet)
     : base(objet)
 {
 }
        //-----------------------------------------------------------
        public void AlloueCombo()
        {
            if (m_variable == null)
            {
                return;
            }
            Type typeElement = m_variable.TypeDonnee.TypeDotNetNatif;

            if (m_variable is CVariableDynamiqueSelectionObjetDonnee)
            {
                typeElement = ((CVariableDynamiqueSelectionObjetDonnee)m_variable).FiltreSelection.TypeElements;
            }
            //Combos hiérarchiques
            if (typeof(IObjetDonneeAutoReference).IsAssignableFrom(typeElement) &&
                typeof(IObjetHierarchiqueACodeHierarchique).IsAssignableFrom(typeElement))
            {
                try
                {
                    if (!(m_combo is CComboBoxArbreObjetDonneesHierarchique) && m_combo != null)
                    {
                        m_combo.Visible = false;
                        m_combo.Parent.Controls.Remove(m_combo);
                        m_combo.Dispose();
                        m_combo = null;
                    }

                    CComboBoxArbreObjetDonneesHierarchique arbre;
                    if (m_combo is CComboBoxArbreObjetDonneesHierarchique)
                    {
                        arbre = (CComboBoxArbreObjetDonneesHierarchique)m_combo;
                    }
                    else
                    {
                        arbre = new CComboBoxArbreObjetDonneesHierarchique();
                        arbre.ElementSelectionneChanged += new EventHandler(arbre_ElementSelectionneChanged);
                    }
                    CFiltreData filtre      = null;
                    Type        tp          = m_variable.TypeDonnee.TypeDotNetNatif;
                    string      strChamp    = DescriptionFieldAttribute.GetDescriptionField(tp, "DescriptionElement", true);
                    string      strTextNull = "";
                    if (m_variable is CVariableDynamiqueSelectionObjetDonnee)
                    {
                        CVariableDynamiqueSelectionObjetDonnee varSel = (CVariableDynamiqueSelectionObjetDonnee)m_variable;
                        tp = ((CVariableDynamiqueSelectionObjetDonnee)m_variable).FiltreSelection.TypeElements;
                        CFiltreDynamique filtreDyn = varSel.FiltreSelection;
                        filtre      = GetFiltre(filtreDyn);
                        strChamp    = DescriptionFieldAttribute.GetDescriptionField(tp, "DescriptionElement", true);
                        strTextNull = varSel.TextNull;
                    }
                    if (m_variable is CChampCustom)
                    {
                        CFiltreDynamique filtreDyn = ((CChampCustom)m_variable).FiltreObjetDonnee;
                        filtre = GetFiltre(filtreDyn);
                    }

                    using (CContexteDonnee contexte = new CContexteDonnee(1, true, false))
                    {
                        CObjetDonnee objet = (CObjetDonnee)Activator.CreateInstance(tp, new object[] { contexte });
                        arbre.Init(tp,
                                   ((IObjetDonneeAutoReference)objet).ProprieteListeFils,
                                   ((IObjetDonneeAutoReference)objet).ChampParent,
                                   strChamp,
                                   filtre,
                                   null
                                   );
                        if (strTextNull != "")
                        {
                            arbre.TextNull = strTextNull;
                        }
                    }
                    m_combo = arbre;
                    return;
                }
                catch { }
            }
            IList lst = null;

            lst = m_variable.Valeurs;
            if (m_variable is CChampCustom && ((CChampCustom)m_variable).TypeDonneeChamp.TypeDonnee == TypeDonnee.tObjetDonneeAIdNumeriqueAuto &&
                lst is CListeObjetsDonnees)
            {
                CFiltreData      filtre    = ((CListeObjetsDonnees)lst).Filtre;
                CFiltreDynamique filtreDyn = ((CChampCustom)m_variable).FiltreObjetDonnee;
                if (filtreDyn != null)
                {
                    filtre = GetFiltre(filtreDyn);
                }

                ((CListeObjetsDonnees)lst).Filtre = filtre;
            }
            else
            {
                lst = m_variable.Valeurs;
            }
            C2iComboBox combo = null;

            if (lst is CListeObjetsDonnees && ((CListeObjetsDonnees)lst).TypeObjets != typeof(CValeurChampCustom))
            {
                CComboBoxListeObjetsDonnees cmbListe = null;
                if (m_combo is CComboBoxListeObjetsDonnees)
                {
                    cmbListe = (CComboBoxListeObjetsDonnees)m_combo;
                }
                else
                {
                    if (m_combo != null)
                    {
                        m_combo.Visible = false;
                        m_combo.Parent.Controls.Remove(m_combo);
                        m_combo.Dispose();
                        m_combo = null;
                    }
                    cmbListe = new CComboBoxListeObjetsDonnees();
                    cmbListe.SelectedValueChanged += new EventHandler(cmbListe_SelectedValueChanged);
                }
                cmbListe.NullAutorise = true;
                cmbListe.Init((CListeObjetsDonnees)lst,
                              DescriptionFieldAttribute.GetDescriptionField(m_variable.TypeDonnee.TypeDotNetNatif, "DescriptionElement"),
                              true);
                combo = cmbListe;
            }
            else
            {
                if (m_combo != null && m_combo.GetType() == typeof(C2iComboBox))
                {
                    combo = (C2iComboBox)m_combo;
                }
                else
                {
                    if (m_combo != null)
                    {
                        m_combo.Visible = false;
                        m_combo.Parent.Controls.Remove(m_combo);
                        m_combo.Dispose();
                        m_combo = null;
                    }
                    combo = new C2iComboBox();
                    combo.SelectionChangeCommitted += new EventHandler(combo_SelectionChangeCommitted);
                }
                combo.DisplayMember = "Display";
                combo.ValueMember   = "Value";
                combo.DataSource    = lst;
            }
            combo.DropDownStyle = ComboBoxStyle.DropDownList;
            combo.Sorted        = false;
            combo.IsLink        = false;
            if (m_combo == null)
            {
                combo.CreateControl();
            }
            m_combo = combo;
        }
 protected override void OnChangeElementEdite(object element)
 {
     if (element != null &&
         WndFiltreRapide != null)
     {
         CFiltreData filtreData;
         if (WndFiltreRapide.Filter != null)
         {
             CElementAVariablesDynamiques eltAVar = new CElementAVariablesDynamiques();
             CVariableDynamiqueStatique   var     = new CVariableDynamiqueStatique(eltAVar);
             var.Nom        = "EditedElement";
             var.IdVariable = "0";
             var.SetTypeDonnee(new CTypeResultatExpression(element.GetType(), false));
             eltAVar.AddVariable(var);
             eltAVar.SetValeurChamp(var, element);
             CFiltreDynamique filtreDyn = WndFiltreRapide.Filter;
             filtreDyn.ElementAVariablesExterne = eltAVar;
             filtreData = (CFiltreData)filtreDyn.GetFiltreData().Data;
         }
         else
         {
             filtreData = null;
         }
         Type typePropriete = null;
         if (WndFiltreRapide.Property != null)
         {
             typePropriete = WndFiltreRapide.Property.TypeDonnee.TypeDotNetNatif;
         }
         else if (WndFiltreRapide.Filter != null)
         {
             typePropriete = WndFiltreRapide.Filter.TypeElements;
         }
         if (typePropriete != null)
         {
             string strDesc = DescriptionFieldAttribute.GetDescriptionField(typePropriete, "DescriptionElement");
             C2iTextBoxFiltreRapide txtRapide = m_selectionneur as C2iTextBoxFiltreRapide;
             if (txtRapide != null)
             {
                 txtRapide.InitAvecFiltreDeBase(typePropriete, strDesc, filtreData, true);
             }
             else
             {
                 CComboBoxListeObjetsDonnees cmb = m_selectionneur as CComboBoxListeObjetsDonnees;
                 cmb.NullAutorise = true;
                 cmb.TextNull     = I.T("None|19");
                 if (cmb != null)
                 {
                     cmb.Init(
                         typePropriete,
                         filtreData,
                         strDesc,
                         true);
                 }
             }
             if (WndFiltreRapide.Property != null)
             {
                 CObjetDonnee valeur = CInterpreteurProprieteDynamique.GetValue(EditedElement, WndFiltreRapide.Property).Data as CObjetDonnee;
                 m_selectionneur.ElementSelectionne = valeur;
             }
         }
     }
 }
Beispiel #14
0
 //-----------------------------------------------------------
 public CInfoImportLigne(int nNumLigne, CObjetDonnee objet)
 {
     m_nNumLigne       = nNumLigne;
     m_infoElementRoot = new CInfoElementImport(objet);
 }
        //----------------------------------------------------------------------------
        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);
        }
        ////////////////////////////////////////////////////////////
        public override CResultAErreur Serialize(C2iSerializer serializer)
        {
            CResultAErreur result   = CResultAErreur.True;
            int            nVersion = GetNumVersion();

            result = serializer.TraiteVersion(ref nVersion);
            if (result)
            {
                result = base.Serialize(serializer);
            }
            if (!result)
            {
                return(result);
            }

            bool bHasConteneur;

            serializer.TraiteString(ref m_strNomTableFille);
            int nNbChampsFille = m_strChampsFille.Length;

            serializer.TraiteInt(ref nNbChampsFille);
            switch (serializer.Mode)
            {
            case ModeSerialisation.Ecriture:
                foreach (string strChamp in m_strChampsFille)
                {
                    string strTmp = strChamp;
                    serializer.TraiteString(ref strTmp);
                }
                break;

            case ModeSerialisation.Lecture:
                m_strChampsFille = new string[nNbChampsFille];
                for (int nChamp = 0; nChamp < nNbChampsFille; nChamp++)
                {
                    string strTmp = "";
                    serializer.TraiteString(ref strTmp);
                    m_strChampsFille[nChamp] = strTmp;
                }
                break;
            }

            switch (serializer.Mode)
            {
            case ModeSerialisation.Ecriture:
                bHasConteneur = m_objetConteneur != null;
                serializer.TraiteBool(ref bHasConteneur);
                if (bHasConteneur)
                {
                    Type tp = m_objetConteneur.GetType();
                    serializer.TraiteType(ref tp);
                    object[] lstValeurs = m_objetConteneur.GetValeursCles();
                    int      nNbValeurs = lstValeurs.Length;
                    serializer.TraiteInt(ref nNbValeurs);
                    foreach (object obj in lstValeurs)
                    {
                        object obj_tmp = obj;
                        serializer.TraiteObjetSimple(ref obj_tmp);
                    }
                }
                break;

            case ModeSerialisation.Lecture:
                bHasConteneur = false;
                serializer.TraiteBool(ref bHasConteneur);
                if (!bHasConteneur)
                {
                    m_objetConteneur = null;
                }
                else
                {
                    Type tp = null;
                    serializer.TraiteType(ref tp);
#if PDA
                    m_objetConteneur = (CObjetDonnee)Activator.CreateInstance(tp);
                    m_objetConteneur.ContexteDonnee = m_contexte;
#else
                    m_objetConteneur = (CObjetDonnee)Activator.CreateInstance(tp, new object[] { m_contexte });
#endif
                    int nNbCles = 0;
                    serializer.TraiteInt(ref nNbCles);
                    object[] lst = new object[nNbCles];
                    for (int nCle = 0; nCle < nNbCles; nCle++)
                    {
                        serializer.TraiteObjetSimple(ref lst[nCle]);
                    }
                    m_objetConteneur.PointeSurLigne(lst);
                }
                break;
            }

            if (serializer.Mode == ModeSerialisation.Lecture)
            {
                Init(m_objetConteneur, m_strNomTableFille, m_strChampsFille, m_bAppliquerFiltreParDefaut);
            }

            return(result);
        }
Beispiel #17
0
        //------------------------------------
        private CResultAErreur ImporteRow(DataRow row, CFiltreData filtreCle, CContexteDonnee contexteDestination)
        {
            CResultAErreur result = CResultAErreur.True;

            Dictionary <CDefinitionProprieteDynamique, object> dicValeurs = new Dictionary <CDefinitionProprieteDynamique, object>();
            List <object> lstValeurs = new List <object>();

            if (filtreCle != null)
            {
                filtreCle.Parametres.Clear();
            }
            foreach (CMappageChampImport mappage in Mappages)
            {
                object valeur = mappage.Origine.GetValeur(row);
                if (mappage.IsCle && filtreCle != null)
                {
                    if (valeur == null)
                    {
                        result.EmpileErreur("Can not import field @1 as key, because imported value is null|20045", mappage.ProprieteDestination.Nom);
                        return(result);
                    }
                    filtreCle.Parametres.Add(valeur);
                }
                dicValeurs[mappage.ProprieteDestination] = valeur;
            }
            CObjetDonnee objet   = Activator.CreateInstance(m_typeCible, new object[] { contexteDestination }) as CObjetDonnee;
            bool         bCreate = true;

            //Cherche si l'objet exite
            if (filtreCle != null)
            {
                bCreate = !objet.ReadIfExists(filtreCle, !m_bChargerTouteLaCible);
            }
            if (bCreate && (OptionImport & EOptionImport.Create) != EOptionImport.Create)
            {
                return(result);
            }
            if (!bCreate && (OptionImport & EOptionImport.Update) != EOptionImport.Update)
            {
                return(result);
            }
            if (bCreate)
            {
                objet.CreateNewInCurrentContexte(null);
            }
            bool bUpdate = false;

            foreach (KeyValuePair <CDefinitionProprieteDynamique, object> kv in dicValeurs)
            {
                object val = kv.Value;
                if (kv.Value is int && typeof(CObjetDonneeAIdNumerique).IsAssignableFrom(kv.Key.TypeDonnee.TypeDotNetNatif))
                {
                    CObjetDonneeAIdNumerique obj = Activator.CreateInstance(kv.Key.TypeDonnee.TypeDotNetNatif, new object[] { contexteDestination }) as CObjetDonneeAIdNumerique;
                    if (!obj.ReadIfExists((int)kv.Value, !m_bChargerTouteLaCible))
                    {
                        obj = null;
                    }
                    val = obj;
                }

                result = CInterpreteurProprieteDynamique.GetValue(objet, kv.Key);
                if (result)
                {
                    object valeurOrigine = result.Data;
                    if ((val == null && valeurOrigine != null) ||
                        (valeurOrigine == null && val != null) ||
                        (val != null && valeurOrigine != null && !val.Equals(valeurOrigine)))
                    {
                        result = CInterpreteurProprieteDynamique.SetValue(objet, kv.Key, val);
                        if (!result)
                        {
                            return(result);
                        }
                        bUpdate = true;
                    }
                }
            }
            if (bCreate)
            {
                m_nNbCreated++;
            }
            else if (bUpdate)
            {
                m_nNbUpdated++;
            }

            return(result);
        }
 ////////////////////////////////////////////////////////////
 public CListeObjetsDonneesContenus(CObjetDonnee objetParent, string strNomTableFille, string[] strChampsFille)
     : base(objetParent.ContexteDonnee, CContexteDonnee.GetTypeForTable(strNomTableFille))
 {
     Init(objetParent, strNomTableFille, strChampsFille, true);
 }
Beispiel #19
0
        //-------------------------------------------------------------------
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CTableParametrable tb = (CTableParametrable)objet;
                if (tb.Libelle == "")
                {
                    result.EmpileErreur(I.T("Custom Table label cannot be empty|373"));
                }

                CListeObjetsDonnees lst = new CListeObjetsDonnees(tb.ContexteDonnee, typeof(CTableParametrable));

                //Nom unique dans son parent
                if (tb.ElementLie == null)
                {
                    lst.Filtre = new CFiltreData(
                        CTableParametrable.c_champLibelle + " = @1 AND " + CTableParametrable.c_champId + " <> @2", tb.Libelle, tb.Id);
                }
                else
                {
                    IElementATableParametrable elt = tb.ElementLie;
                    if (elt is CSite)
                    {
                        lst.Filtre = new CFiltreData(CTableParametrable.c_champLibelle + "=@1 and " +
                                                     CSite.c_champId + "=@2 and " +
                                                     CTableParametrable.c_champId + "<>@3",
                                                     tb.Libelle,
                                                     ((CSite)elt).Id,
                                                     tb.Id);
                    }
                    if (elt is CEquipement)
                    {
                        lst.Filtre = new CFiltreData(CTableParametrable.c_champLibelle + "=@1 and " +
                                                     CEquipement.c_champId + "=@2 and " +
                                                     CTableParametrable.c_champId + "<>@3",
                                                     tb.Libelle,
                                                     ((CEquipement)elt).Id,
                                                     tb.Id);
                    }
                }
                if (lst.CountNoLoad != 0)
                {
                    result.EmpileErreur(I.T("The Custom Table '@1' already exists|374", tb.Libelle));
                }

                if (tb.TypeTable == null)
                {
                    result.EmpileErreur(I.T("Custom Table '@1' must have a Custom Table Type|392", tb.Libelle));
                }

                if (tb.Site != null && tb.Equipement != null)
                {
                    result.EmpileErreur(I.T("Custom Table '@1' cannot be linked to both Site (@2) Site and Equipment (@3)|393", tb.Libelle, tb.Site.Libelle, tb.Equipement.Libelle));
                }

                if (tb.ElementLie != null && tb.TypeTable != null)
                {
                    bool typetablecompatible         = false;
                    CListeObjetsDonnees lstTypesPoss = tb.ElementLie.TypesTableParametrablePossibles;
                    foreach (CTypeTableParametrable tt in lstTypesPoss)
                    {
                        if (tt.Equals(tb.TypeTable))
                        {
                            typetablecompatible = true;
                            break;
                        }
                    }

                    if (!typetablecompatible)
                    {
                        result.EmpileErreur(I.T("The Custom Table Type '@1' of the custom table '@2' isn't compatible with element '@3'|394", tb.TypeTable.Libelle, tb.Libelle, tb.ElementLie.DescriptionElement));
                    }
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
        ////////////////////////////////////////////////////////////
        private void Init(
            CObjetDonnee objetParent,
            string strNomTableFille,
            string[] strChampsFille,
            bool bAppliquerFiltreParDefaut)
        {
            m_strNomTableFille = strNomTableFille;
            m_strChampsFille   = strChampsFille;
            m_objetConteneur   = objetParent;
            if (!RemplissageProgressif)
            {
                objetParent.AssureDependances(strNomTableFille, strChampsFille);
            }

            /*Stef 26042012 : suppression de cette optimisation,
             * le problème est que si on ajoute des fils, alors, le filtre ne les voit plus !
             * DataTable tableFille = ContexteDonnee.GetTableSafe(strNomTableFille);
             * if (!RemplissageProgressif && tableFille != null && tableFille.PrimaryKey.Length == 1 &&
             *  tableFille.PrimaryKey[0].DataType == typeof(int))
             * {
             *  string strFK = ContexteDonnee.GetForeignKeyName(objetParent.GetNomTable(), strNomTableFille, strChampsFille);
             *  DataRow[] rows = objetParent.Row.Row.GetChildRows(strFK);
             *  if (rows.Length == 0)
             *      m_filtrePrincipal = new CFiltreDataImpossible();
             *  else
             *  {
             *      DataColumn colKey = tableFille.PrimaryKey[0];
             *      StringBuilder bl = new StringBuilder();
             *      foreach (DataRow row in rows)
             *      {
             *          bl.Append(row[colKey]);
             *          bl.Append(',');
             *      }
             *      bl.Remove(bl.Length - 1, 1);
             *      m_filtrePrincipal = new CFiltreData(colKey.ColumnName + " in (" + bl.ToString() + ")");
             *  }
             * }
             * else*/
            m_filtrePrincipal = CFiltreData.CreateFiltreAndSurValeurs(strChampsFille, objetParent.GetValeursCles());

            m_bAppliquerFiltreParDefaut = bAppliquerFiltreParDefaut;
#if PDA
            CObjetDonnee objet = (CObjetDonnee)Activator.CreateInstance(CContexteDonnee.GetTypeForTable(strNomTableFille));
            objet.ContexteDonnee = m_objetConteneur.ContexteDonnee;
#else
            CObjetDonnee objet = (CObjetDonnee)Activator.CreateInstance(CContexteDonnee.GetTypeForTable(strNomTableFille), new object[] { m_objetConteneur.ContexteDonnee });
#endif
            CFiltreData filtre = bAppliquerFiltreParDefaut?objet.FiltreStandard:null;
            if (filtre != null)
            {
                m_filtrePrincipal = CFiltreData.GetAndFiltre(m_filtrePrincipal, filtre);
            }

            if (!RemplissageProgressif)
            {
                //Puisque les objets sont lus, il n'y a aucune raison d'aller relire cette liste depuis
                //La base de données
                InterditLectureInDB = true;
                m_bIsToRead         = false;
            }
        }
        /*/// //////////////////////////////////////////////////////////////////
         * private static void CCreateur2iFormulaire_AfterCreateControl ( Control ctrl, C2iWnd wnd, object elementEdite )
         * {
         *      if ( wnd is C2iWndLink && ctrl is LinkLabel )
         *      {
         *              ctrl.Tag = new CInfoLinkLabel((C2iWndLink)wnd, elementEdite);
         *              ((LinkLabel)ctrl).LinkClicked += new LinkLabelLinkClickedEventHandler(CExecuteurActionSur2iLink_Click);
         *      }
         * }
         *
         * static void CCreateur2iFormulaire_AfterChangeElementEdite(Control ctrl, C2iWnd wnd, object elementEdite)
         * {
         *      if (wnd is C2iWndLink && ctrl is LinkLabel)
         *      {
         *              ctrl.Tag = new CInfoLinkLabel((C2iWndLink)wnd, elementEdite);
         *      }
         * }*/

        /*/// //////////////////////////////////////////////////////////////////
         * private static void CExecuteurActionSur2iLink_Click ( object sender, LinkLabelLinkClickedEventArgs args )
         * {
         *      if (sender is LinkLabel && ((LinkLabel)sender).Tag is CInfoLinkLabel)
         *      {
         *              CInfoLinkLabel info = (CInfoLinkLabel)((LinkLabel)sender).Tag;
         *              C2iWndLink link = info.WndLink;
         *              object cible = info.Cible;
         *              CResultAErreur result = CResultAErreur.True;
         *              if ( link.ActionAssociee != null )
         *              {
         *                      Form frm = ((Control)sender).FindForm();
         *                      if (cible == null)
         *                      {
         *                              if (frm != null && frm is IFormEditObjetDonnee)
         *                                      cible = ((IFormEditObjetDonnee)frm).GetObjetEdite();
         *                      }
         *                      if (frm != null && frm is CFormEditionStandard)
         *                      {
         *                              if (((CFormEditionStandard)frm).EtatEdition)
         *                              {
         *                                      if (CFormAlerte.Afficher(I.T("This action will save your data. Continue ?|1253"),
         *                                              EFormAlerteType.Question) == DialogResult.No)
         *                                              return;
         *                                      if (!((CFormEditionStandard)frm).OnClickValider())
         *                                              return;
         *                                      ((CFormEditionStandard)frm).OnClickModifier();
         *                              }
         *
         *                      }
         *                      if ( frm != null && frm is CFormListeStandard )
         *                      {
         *                              if ( link.ActionAssociee.GetType() == typeof ( CActionSur2iLinkAfficheFormulaireCustom ) ||
         *                                      link.ActionAssociee.GetType() == typeof ( CActionSur2iLinkAfficherFormulaire ) ||
         *                                      link.ActionAssociee.GetType() == typeof ( CActionSur2iLinkAfficherListe ))
         *                                              cible = ((CFormListeStandard)frm).ElementSelectionne;
         *                              else if ( link.ActionAssociee.GetType() == typeof ( CActionSur2iLinkExecuterProcess ) )
         *                                              cible = ((CFormListeStandard)frm).ElementsCoches;
         *                      }
         *                      result = ExecuteAction(link.ActionAssociee, cible);
         *                      if ( !result )
         *                              CFormAlerte.Afficher ( result.Erreur );
         *              }
         *      }
         * }*/

        /// <summary>
        /// //////////////////////////////////////////////////////////////////
        /// </summary>
        /// <param name="action"></param>
        /// <returns></returns>
        public static CResultAErreur ExecuteAction(object sender, CActionSur2iLink action, object objetCible)
        {
            CResultAErreur result = CResultAErreur.True;
            Form           frm    = null;

            if (!action.AutoriserEnEdition && sender != null && sender is Control)
            {
                frm = ((Control)sender).FindForm();
                object cible = objetCible;
                if (cible == null)
                {
                    if (frm != null && frm is IFormEditObjetDonnee)
                    {
                        cible = ((IFormEditObjetDonnee)frm).GetObjetEdite();
                    }
                }
                if (frm != null && frm is IFormEditObjetDonnee)
                {
                    if (((IFormEditObjetDonnee)frm).EtatEdition)
                    {
                        if (CFormAlerte.Afficher(I.T("This action will save your data. Continue ?|1253"),
                                                 EFormAlerteType.Question) == DialogResult.No)
                        {
                            return(result);
                        }
                        if (!((IFormEditObjetDonnee)frm).ValiderModifications())
                        {
                            return(result);
                        }
                        CObjetDonnee obj = ((IFormEditObjetDonnee)frm).GetObjetEdite();
                        if (obj != null)
                        {
                            if (cible is CObjetDonnee)
                            {
                                cible = ((CObjetDonnee)cible).GetObjetInContexte(obj.ContexteDonnee);
                            }
                        }
                        //((CFormEditionStandard)frm).OnClickModifier();
                    }
                }
                if (frm != null && frm is CFormListeStandard)
                {
                    if (
                        action.GetType() == typeof(CActionSur2iLinkAfficherFormulaire) ||
                        action.GetType() == typeof(CActionSur2iLinkAfficherListe))
                    {
                        cible = ((CFormListeStandard)frm).ElementSelectionne;
                    }
                    else
                    {
                        CActionSur2iLinkAfficheFormulaireCustom actionForm = action as CActionSur2iLinkAfficheFormulaireCustom;
                        if (actionForm != null)
                        {
                            cible = ((CFormListeStandard)frm).ElementSelectionne;
                            CFormulaire formulaire = new CFormulaire(CContexteDonneeSysteme.GetInstance());
                            if (formulaire.ReadIfExists(actionForm.IdFormulaireInDb))
                            {
                                if (formulaire.ElementEditeIsArray)
                                {
                                    cible = ((CFormListeStandard)frm).ElementsCoches;
                                }
                            }
                        }
                        else if (action.GetType() == typeof(CActionSur2iLinkExecuterProcess))
                        {
                            cible = ((CFormListeStandard)frm).ElementsCoches;
                        }
                    }
                }
                objetCible = cible;
            }
            if (action is CActionSur2iLinkAfficherFormulaire)
            {
                return(ExecuteActionFormulaire((CActionSur2iLinkAfficherFormulaire)action, objetCible));
            }
            else if (action is CActionSur2iLinkAfficherListe)
            {
                return(ExecuteActionListe((CActionSur2iLinkAfficherListe)action, objetCible));
            }
            else if (action is CActionSur2iLinkExecuterProcess)
            {
                result = ExecuteActionProcess((CActionSur2iLinkExecuterProcess)action, objetCible);
                CFormEditionStandard frmStd = frm as CFormEditionStandard;
                if (frmStd != null)
                {
                    try//La fenêtre peut être fermée par le process, donc ça peut faire des erreurs
                    {
                        frmStd.RefillDialog();
                    }
                    catch { }
                }
                else if (frm == CFormMain.GetInstance())
                {
                    CFormMain.GetInstance().RefreshPanelEtapeWorkflow();
                }
                return(result);
            }
            else if (action is CActionSur2iLinkAfficheFormulaireCustom)
            {
                return(ExecuteActionFormulaireCustom((CActionSur2iLinkAfficheFormulaireCustom)action, objetCible));
            }
            else if (action is CActionSur2iLinkAfficherEntite)
            {
                return(ExecuteActionAfficherEntite((CActionSur2iLinkAfficherEntite)action, objetCible));
            }
            else if (action is CActionSur2iLinkMenuDeroulant)
            {
                return(ExecuteActionMenuDeroulant((CActionSur2iLinkMenuDeroulant)action, sender, objetCible));
            }
            else if (action is CActionSur2iLinkFormulairePopup)
            {
                return(ExecuteActionFormulairePopup((CActionSur2iLinkFormulairePopup)action, sender, objetCible));
            }

            result = CResultAErreur.True;
            result.EmpileErreur(I.T("Action not managed|30076"));
            return(result);
        }
        /// //////////////////////////////////////////
        public override CResultAErreur MyEval(CContexteEvaluationExpression ctx, object[] listeParametres)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                if (!(listeParametres[0] is CObjetDonnee))
                {
                    result.EmpileErreur(I.T("The first argument does not return a valid object for this operation|230"));
                    return(result);
                }
                string strChamp = listeParametres[1].ToString();
                //Identifie le champ
                Type tp = listeParametres[0].GetType();

                CObjetDonnee objet = (CObjetDonnee)listeParametres[0];

                //Est-ce une propriété ?
                PropertyInfo propInteressante = tp.GetProperty(strChamp);

                string strUpper = strChamp.ToUpper();;

                if (propInteressante == null)
                {
                    //Recherche sur DynamicField ou TableField;
                    foreach (PropertyInfo info in tp.GetProperties())
                    {
                        if (info.Name.ToUpper() == strUpper)
                        {
                            propInteressante = info;
                            break;
                        }
                        object[] attribs = info.GetCustomAttributes(typeof(DynamicFieldAttribute), true);
                        if (attribs.Length > 0)
                        {
                            if (((DynamicFieldAttribute)(attribs[0])).NomConvivial.ToUpper() == strUpper)
                            {
                                propInteressante = info;
                                break;
                            }
                        }
                        attribs = info.GetCustomAttributes(typeof(TableFieldPropertyAttribute), true);
                        if (attribs.Length > 0)
                        {
                            if (((TableFieldPropertyAttribute)attribs[0]).NomChamp.ToUpper() == strUpper)
                            {
                                propInteressante = info;
                                break;
                            }
                        }
                    }
                }
                if (propInteressante == null)
                {
                    result.EmpileErreur(I.T("The property @1 isn't found in the @2 type|231", strChamp, objet.GetType().ToString()));
                    return(result);
                }
                DataRowVersion oldVersion = objet.VersionToReturn;
                try
                {
                    if (objet.Row.HasVersion(DataRowVersion.Original))
                    {
                        objet.VersionToReturn = System.Data.DataRowVersion.Original;
                    }
                    result.Data = propInteressante.GetGetMethod(true).Invoke(objet, null);
                    return(result);
                }
                catch
                {
                }
                finally
                {
                    objet.VersionToReturn = oldVersion;
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
                return(result);
            }
            return(result);
        }
        private void m_btnOk_Click(object sender, EventArgs e)
        {
            CResultAErreur result = CResultAErreur.True;

            CContexteDonnee ctx            = null;
            int?            nIDProj        = null;
            CFiltreData     filtreLiens    = new CFiltreData();
            CFiltreData     filtreProjets  = new CFiltreData();
            CFiltreData     filtreInters   = new CFiltreData();
            bool            bFiltreLiens   = false;
            bool            bFiltreProjets = false;
            bool            bFiltreInters  = false;

            foreach (I2iObjetGraphique objGraph in m_objsGraphiques)
            {
                IElementDeProjet ele = CUtilProjet.GetIElementDeProjet(objGraph);
                if (!(ele is CObjetDonnee))
                {
                    return;
                }
                CObjetDonnee obj = (CObjetDonnee)ele;
                if (!obj.IsValide())
                {
                    return;
                }
                if (ctx == null)
                {
                    ctx = obj.ContexteDonnee;
                }
                if (ele.Projet == null)
                {
                    return;
                }
                if (!nIDProj.HasValue)
                {
                    nIDProj = ele.Projet.Id;
                }

                CFiltreData filtreBase = filtreLiens;

                CFiltreData filtreTmp;

                if (m_rbtnDetacher.Checked)
                {
                    bFiltreLiens = true;

                    if (objGraph is IWndElementDeProjetPlanifiable)
                    {
                        ((IWndElementDeProjetPlanifiable)objGraph).Detacher = true;
                    }

                    string strRqt = "";
                    switch (ele.TypeElementDeProjet.Code)
                    {
                    case ETypeElementDeProjet.Projet:
                        strRqt = CLienDeProjet.c_champPrjA + " = @1 OR " + CLienDeProjet.c_champPrjB + " = @1";
                        break;

                    case ETypeElementDeProjet.Intervention:
                        strRqt = CLienDeProjet.c_champInterA + " = @1 OR " + CLienDeProjet.c_champInterB + " = @1";
                        break;

                    case ETypeElementDeProjet.Lien:
                        strRqt = CLienDeProjet.c_champId + " =@1";
                        break;

                    default:
                        return;
                    }
                    ele.Projet = null;
                    filtreTmp  = new CFiltreData(strRqt, ele.Id);
                }
                else
                {
                    switch (ele.TypeElementDeProjet.Code)
                    {
                    case ETypeElementDeProjet.Intervention:
                        bFiltreInters = true;
                        filtreBase    = filtreInters;
                        break;

                    case ETypeElementDeProjet.Lien:
                        bFiltreLiens = true;
                        filtreBase   = filtreLiens;
                        break;

                    case ETypeElementDeProjet.Projet:
                        bFiltreProjets = true;
                        filtreBase     = filtreProjets;
                        break;

                    default:
                        break;
                    }
                    filtreTmp = new CFiltreData(CUtilProjet.GetChampIDElement(objGraph) + " =@1", ele.Id);
                }

                if (filtreBase.Filtre != "")
                {
                    filtreBase = CFiltreData.GetOrFiltre(filtreBase, filtreTmp);
                }
                else
                {
                    filtreBase = filtreTmp;
                }

                if (m_rbtnDetacher.Checked)
                {
                    filtreLiens = filtreBase;
                }
                else
                {
                    switch (ele.TypeElementDeProjet.Code)
                    {
                    case ETypeElementDeProjet.Projet:
                        filtreProjets = filtreTmp;
                        break;

                    case ETypeElementDeProjet.Intervention:
                        filtreInters = filtreTmp;
                        break;

                    case ETypeElementDeProjet.Lien:
                        filtreLiens = filtreTmp;
                        break;

                    default:
                        break;
                    }
                }
            }
            CFiltreData filtreSurProjet = new CFiltreData(CProjet.c_champId + " =@1", nIDProj.Value);

            if (bFiltreLiens)
            {
                filtreLiens = CFiltreData.GetAndFiltre(filtreLiens, filtreSurProjet);
                result      = CObjetDonneeAIdNumerique.Delete(new CListeObjetsDonnees(ctx, typeof(CLienDeProjet), filtreLiens));
            }
            if (result && bFiltreInters)
            {
                filtreInters = CFiltreData.GetAndFiltre(filtreInters, filtreSurProjet);
                result       = CObjetDonneeAIdNumerique.Delete(new CListeObjetsDonnees(ctx, typeof(CIntervention), filtreInters));
            }
            if (result && bFiltreProjets)
            {
                filtreSurProjet = new CFiltreData(CProjet.c_champIdParent + " =@1", nIDProj);
                filtreProjets   = CFiltreData.GetAndFiltre(filtreProjets, filtreSurProjet);
                result          = CObjetDonneeAIdNumerique.Delete(new CListeObjetsDonnees(ctx, typeof(CProjet), filtreProjets));
            }

            if (!result)
            {
                CFormAlerte.Afficher(result.Erreur);
                return;
            }

            DialogResult = DialogResult.OK;
        }
Beispiel #24
0
        //-------------------------------------------------------------------
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CSite site = (CSite)objet;

                // Verifie le champ "Libelle"
                if (site.Libelle == "")
                {
                    result.EmpileErreur(I.T("The Site label cannot be empty|108"));
                }

                // Le champ "Libelle" doit être unique dans son parent seulement.
                if (site.SiteParent != null)
                {
                    // Liste des sites frères lst
                    CListeObjetsDonnees lst = site.SiteParent.SitesFils;

                    lst.Filtre = new CFiltreData(CSite.c_champLibelle + " = @1 AND " + CSite.c_champId + " <> @2", site.Libelle, site.Id);
                    if (lst.CountNoLoad != 0)
                    {
                        result.EmpileErreur(I.T("The Site '@1' already exists|370", site.Libelle));
                    }
                }

                // Vérifie le type de site
                if (site.TypeSite == null)
                {
                    result.EmpileErreur(I.T("The site type cannot be empty|106"));
                }

                // Verifie le type du site fils
                if (site.SiteParent != null)
                {
                    CListeObjetsDonnees liste_relations = site.SiteParent.TypeSite.RelationTypesContenus;
                    string strNom        = site.TypeSite.Libelle;
                    string strParent     = site.SiteParent.Libelle;
                    string strSiteParent = site.SiteParent.TypeSite.Libelle;

                    foreach (CRelationTypeSite_TypeSite rel in liste_relations)
                    {
                        strNom += " , " + rel.TypeSiteContenu.Libelle;
                    }

                    liste_relations.Filtre = new CFiltreData(CRelationTypeSite_TypeSite.c_champTypeContenuId + " = @1", site.TypeSite.Id);
                    if (liste_relations.CountNoLoad == 0)
                    {
                        result.EmpileErreur(I.T("The site type is not valid|107"));
                    }
                }

                // Vérifie le Code Site, peut être vide ou unique
                if (site.Code != "")
                {
                    if (!CObjetDonneeAIdNumerique.IsUnique(site, CSite.c_champCode, site.Code))
                    {
                        result.EmpileErreur(I.T("The Site Code '@1' already exist|371", site.Code));
                    }
                }

                if (result)
                {
                    result = SObjetAFilsACoordonneeServeur.VerifieDonnees(site);
                }

                if (result)
                {
                    result = site.VerifieCoordonnee();
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }

            return(result);
        }
Beispiel #25
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 override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CTypeEntiteOrganisationnelle typeEntiteOrganisationnelle = (CTypeEntiteOrganisationnelle)objet;

                if (typeEntiteOrganisationnelle.Libelle == "")
                {
                    result.EmpileErreur(I.T("Organisational Entity Type label cannot be empty|305"));
                }


                //Vérifie l'unicité du TypeEntiteOrganisationnelle dans son parent
                if (typeEntiteOrganisationnelle.TypeParent != null)
                {
                    CListeObjetsDonnees liste = new CListeObjetsDonnees(objet.ContexteDonnee, typeof(CTypeEntiteOrganisationnelle));
                    liste.Filtre = new CFiltreData(CTypeEntiteOrganisationnelle.c_champIdParent + "=@1 and " +
                                                   CTypeEntiteOrganisationnelle.c_champLibelle + "=@2 and " +
                                                   CTypeEntiteOrganisationnelle.c_champId + "<>@3",
                                                   typeEntiteOrganisationnelle.TypeParent.Id,
                                                   typeEntiteOrganisationnelle.Libelle,
                                                   typeEntiteOrganisationnelle.Id);
                    if (liste.CountNoLoad > 0)
                    {
                        result.EmpileErreur(I.T("The Organisational Entity Type '@1' already exists|304", typeEntiteOrganisationnelle.Libelle));
                    }
                }
                else //Vérifie l'unicité du TypeEntiteOrganisationnelle
                {
                    CListeObjetsDonnees liste = new CListeObjetsDonnees(objet.ContexteDonnee, typeof(CTypeEntiteOrganisationnelle));
                    liste.Filtre = new CFiltreData(
                        CTypeEntiteOrganisationnelle.c_champLibelle + "=@1 and " +
                        CTypeEntiteOrganisationnelle.c_champId + "<>@2 and " +
                        CTypeEntiteOrganisationnelle.c_champNiveau + "=@3",
                        typeEntiteOrganisationnelle.Libelle,
                        typeEntiteOrganisationnelle.Id,
                        0);
                    if (liste.CountNoLoad > 0)
                    {
                        result.EmpileErreur(I.T("The Organisational Entity Type '@1' already exists|304", typeEntiteOrganisationnelle.Libelle));
                    }
                }

                //Vérifie que le parent n'a qu'un fils
                if (typeEntiteOrganisationnelle.TypeParent != null)
                {
                    CListeObjetsDonnees listeFils = typeEntiteOrganisationnelle.TypeParent.TypesFils;
                    foreach (CTypeEntiteOrganisationnelle tp in listeFils)
                    {
                        if (!tp.Equals(typeEntiteOrganisationnelle))
                        {
                            result.EmpileErreur(I.T("Impossible to assign two types of entities to the same parent|100"));
                        }
                    }
                }

                //Si on est en modification et que ce type d'entité
                //dispose d'entite > Verification d'un changement de format de numérotation
                //if (typeEntiteOrganisationnelle.Row.HasVersion(DataRowVersion.Original) && typeEntiteOrganisationnelle.HasEntitesOrganisationnelles())
                //{
                //    bool coorObligatoire = typeEntiteOrganisationnelle.CoordonneeObligatoire;
                //    CFormatNumerotation frmActuel = typeEntiteOrganisationnelle.FormatNumerotation;

                //    typeEntiteOrganisationnelle.VersionToReturn = DataRowVersion.Original;

                //    if(coorObligatoire && !typeEntiteOrganisationnelle.CoordonneeObligatoire)
                //        result.EmpileErreur(I.T( "Impossible de rendre les coordonnées obligatoires car des entitées sont déjà affiliées"));

                //    if (typeEntiteOrganisationnelle.FormatNumerotation != frmActuel)
                //        result.EmpileErreur(I.T( "Impossible de modifier le format de numérotation car des entitées sont déjà affiliées"));

                //}
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Beispiel #27
0
        //-------------------------------------------------------------------
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CProfilElement profilElement = (CProfilElement)objet;

                // Verifie le champ "Libelle"
                if (profilElement.Libelle == "")
                {
                    result.EmpileErreur(I.T("The Profile label cannot be empty|214"));
                }

                if (profilElement.UtiliseLeProfil(profilElement))
                {
                    result.EmpileErreur(I.T("Cyclic reference of profiles : impossible to validate Profile|215"));
                }
                if (profilElement.FormuleApplication == null ||
                    profilElement.FormuleApplication.TypeDonnee.TypeDotNetNatif != typeof(bool))
                {
                    result.EmpileErreur(I.T("The application condition must return a boolean|216"));
                }
                if (profilElement.FormuleIntegration == null ||
                    profilElement.FormuleIntegration.TypeDonnee.TypeDotNetNatif != typeof(bool))
                {
                    result.EmpileErreur(I.T("The integration condition must return a boolean|217"));
                }

                if (profilElement.ToutesLesCorrespondancesEO.Count != 0 &&
                    profilElement.TypeElements != null &&
                    profilElement.TypeSource != null)
                {
                    CDefinitionProprieteDynamique propEO = profilElement.ProprieteCheminToEOElement;
                    if (propEO == null)
                    {
                        if (!typeof(IElementAEO).IsAssignableFrom(profilElement.TypeElements))
                        {
                            result.EmpileErreur(I.T("The Organisational entities on elements of type @1 cannot be tested|218", DynamicClassAttribute.GetNomConvivial(profilElement.TypeElements)));
                        }
                    }
                    else
                    {
                        if (!typeof(IElementAEO).IsAssignableFrom(propEO.TypeDonnee.TypeDotNetNatif))
                        {
                            result.EmpileErreur(I.T("The Organisational entities on elements of type @1 cannot be tested|218", DynamicClassAttribute.GetNomConvivial(propEO.TypeDonnee.TypeDotNetNatif)));
                        }
                    }


                    C2iExpression formuleEltAEo = profilElement.FormuleElementAEOSource;
                    if (formuleEltAEo != null)
                    {
                        if (!typeof(IElementAEO).IsAssignableFrom(formuleEltAEo.TypeDonnee.TypeDotNetNatif))
                        {
                            result.EmpileErreur(I.T("The formula for the Source Element with Organisational Enity must return an element with an Organisational Entity|219"));
                        }
                    }
                    else
                    {
                        if (!typeof(IElementAEO).IsAssignableFrom(profilElement.TypeSource))
                        {
                            result.EmpileErreur(I.T("The elements @1 are not related to Organisational Entities, the Organisational Entities cannot be used on these elements|220", DynamicClassAttribute.GetNomConvivial(profilElement.TypeSource)));
                        }
                    }
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }

            return(result);
        }
Beispiel #28
0
 //------------------------------------------------------------------
 private void m_btnFlush_Click(object sender, System.EventArgs e)
 {
     SelectedObject = null;
 }
        //-------------------------------------------------------------------
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            return(result);
        }
Beispiel #30
0
        //-------------------------------------------------------------------
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CIntervention inter = (CIntervention)objet;

                if (inter.Site == null)
                {
                    result.EmpileErreur(I.T("The intervention must be associated to a Site|388"));
                }

                if (inter.TypeIntervention == null)
                {
                    result.EmpileErreur(I.T("The Intervention type cannot be null|152"));
                }

                if (inter.Fractions.Count == 0)
                {
                    //Pas de fractions, il faut au moins un préplanifieur
                    if (inter.DateDebutPrePlanifiee == null ||
                        inter.DateFinPrePlanifiee == null)
                    {
                        if (inter.UserPreplanifieur == null)
                        {
                            result.EmpileErreur(I.T("The person in charge of preplanning must be defined|209"));
                        }
                    }
                    else
                    {
                        if (inter.UserPlanifieur == null)
                        {
                            result.EmpileErreur(I.T("The person in charge of planning must be definde|210"));
                        }
                    }
                }

                if (inter.UserPlanifieur != null)
                {
                    if (inter.TypeIntervention != null && inter.TypeIntervention.ProfilPlanifieur != null)
                    {
                        if (!inter.TypeIntervention.ProfilPlanifieur.IsInProfil(inter.UserPlanifieur, inter))
                        {
                            result.EmpileErreur(I.T("The user @1 cannot be a planner|211"), inter.UserPlanifieur.Acteur.IdentiteComplete);
                        }
                    }
                }
                if (inter.UserPreplanifieur != null)
                {
                    if (inter.TypeIntervention != null && inter.TypeIntervention.ProfilPreplanifieur != null)
                    {
                        if (!inter.TypeIntervention.ProfilPreplanifieur.IsInProfil(inter.UserPreplanifieur, inter))
                        {
                            result.EmpileErreur(I.T("The user @1 cannot be a preplanner|212"), inter.UserPreplanifieur.Acteur.IdentiteComplete);
                        }
                    }
                }


                // Vérifie le doublons des Opérations prévisionnelles: même type d'opération et même équipement
                CListeObjetsDonnees listOpe = inter.Operations;
                listOpe.Filtre = new CFiltreData(CEquipement.c_champId + " is not null");
                ArrayList listeAVerifier = listOpe.ToArrayList();


                /* foreach (COperation ope1 in listeAVerifier)
                 * {
                 *   foreach (COperation ope2 in listeAVerifier)
                 *   {
                 *       if (ope1.Id != ope2.Id &&
                 *           ope1.TypeOperation.Id == ope2.TypeOperation.Id &&
                 *           ope1.Equipement.Id == ope2.Equipement.Id)
                 *       {
                 *                                       result.EmpileErreur(I.T( "There are tow '@1' Operations on equipment '@2'|363", ope1.TypeOperation.Libelle, ope1.Equipement.Libelle));
                 *       }
                 *   }
                 * }*/
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }

            return(result);
        }