Esempio n. 1
0
        public bool UpdateFromPhysicalAgent(bool bDeleteUnexistingEntities)
        {
            BeginEdit();
            CResultAErreur result = InitEntitesFromSnmpInContexteCourant();

            if (!result)
            {
                CancelEdit();
                return(false);
            }
            if (bDeleteUnexistingEntities)
            {
                CListeObjetsDonnees lstEntites = EntitesSnmp;
                lstEntites.Filtre = new CFiltreData(CEntiteSnmp.c_champFromSnmp + "=@1", false);
                result            = CObjetDonneeAIdNumerique.Delete(lstEntites, true);
                if (!result)
                {
                    CancelEdit();
                    return(false);
                }
            }
            result = CommitEdit();
            if (!result)
            {
                CancelEdit();
            }
            return(result.Result);
        }
 private void item_Click(object sender, EventArgs e)
 {
     if (sender is CMenuItemAfractionIntervention)
     {
         CMenuItemAfractionIntervention item = (CMenuItemAfractionIntervention)sender;
         if (CFormAlerte.Afficher(I.T("Retake the data '@1' ?|30188", item.Text), EFormAlerteType.Question) == DialogResult.Yes)
         {
             CIntervention intervention = new CIntervention(ElementEdite.ContexteDonnee);
             if (intervention.ReadIfExists(new CFiltreData(CIntervention.c_champId + "=@1", item.Id)))
             {
                 CObjetDonneeAIdNumerique.Delete(intervention.Operations);
                 Hashtable           mapDonnees     = new Hashtable();
                 CListeObjetsDonnees donneesToCopie = intervention.Operations;
                 //donneesToCopie.Filtre = new CFiltreData ( COperation.c_champIdDonneeParente+" is null" );
                 foreach (COperation operation in donneesToCopie)
                 {
                     COperation newDonnee = (COperation)operation.Clone(false);
                     mapDonnees[operation.Id] = newDonnee;
                     if (operation.OperationParente != null)
                     {
                         newDonnee.OperationParente = (COperation)mapDonnees[operation.OperationParente.Id];
                     }
                     else
                     {
                         newDonnee.OperationParente = null;
                     }
                     newDonnee.Intervention = intervention;
                 }
                 Init(intervention);
             }
         }
     }
 }
Esempio n. 3
0
        public void SetPathsForNetworkLinkExt2(CSchemaReseau[] schemas)
        {
            CListeObjetsDonnees lst = TousCheminsExtremite1;

            CObjetDonneeAIdNumerique.Delete(lst, true);
            CreateChemin(schemas, EExtremiteLienReseau.Deux);
        }
Esempio n. 4
0
        //----------------------------------------------------------
        public CResultAErreur AnnuleModificationPrevisionnelle(CVersionDonneesObjet versionObjet)
        {
            CContexteDonnee contexte    = versionObjet.ContexteDonnee;
            CResultAErreur  result      = CResultAErreur.True;
            int             nIdObjet    = versionObjet.IdElement;
            Type            typeObjet   = versionObjet.TypeElement;
            CVersionDonnees versionPrev = versionObjet.VersionDonnees;
            int             nIdVersion  = versionPrev.Id;

            //Vérifie que l'utilisateur peut travailler avec cette version
            result = versionPrev.EnregistreEvenement(CVersionDonnees.c_eventBeforeUtiliser, true);
            if (!result)
            {
                return(result);
            }
            contexte.SetVersionDeTravail(-1, false);



            //Suppression de l'objet associé
            string strPrimKey            = contexte.GetTableSafe(CContexteDonnee.GetNomTableForType(typeObjet)).PrimaryKey[0].ColumnName;
            CListeObjetsDonnees listeTmp = new CListeObjetsDonnees(contexte, typeObjet);

            listeTmp.Filtre = new CFiltreData(
                CSc2iDataConst.c_champIdVersion + "=@1 and " +
                "(" + CSc2iDataConst.c_champOriginalId + "=@2 or " +
                strPrimKey + "=@2)",
                nIdVersion,
                nIdObjet);
            listeTmp.Filtre.IgnorerVersionDeContexte = true;
            result = CObjetDonneeAIdNumerique.Delete(listeTmp);
            if (!result)
            {
                return(result);
            }

            //Suppression de la version objet
            result = versionObjet.Delete();
            if (!result)
            {
                return(result);
            }

            //Force la modification de l'objet pour mettre à jour les versions suivantes
            CObjetDonneeAIdNumerique objet = (CObjetDonneeAIdNumerique)Activator.CreateInstance(typeObjet, new object[] { contexte });

            if (objet.ReadIfExists(nIdObjet))
            {
                //Passe dans la version de l'objet
                result = contexte.SetVersionDeTravail(objet.IdVersionDatabase, false);
                if (!result)
                {
                    return(result);
                }
                objet.Row.Row.SetModified();
            }
            return(result);
        }
Esempio n. 5
0
 //-------------------------------------------------------------------------
 private void m_arbreCategories_DragDrop(object sender, DragEventArgs e)
 {
     if (DragDataHasDocGed(e.Data))
     {
         using (CContexteDonnee ctx = CSc2iWin32DataClient.ContexteCourant.GetContexteEdition())
         {
             bool bAddCategorie       = (e.KeyState & 8) == 8;
             TreeViewHitTestInfo info = m_arbreCategories.HitTest(m_arbreCategories.PointToClient(new Point(e.X, e.Y)));
             TreeNode            node = info.Node;
             if (info != null && info.Node != null && m_arbreCategories.GetObjetInNode(info.Node) is CCategorieGED)
             {
                 CCategorieGED categorie = m_arbreCategories.GetObjetInNode(info.Node) as CCategorieGED;
                 foreach (CReferenceObjetDonnee refDoc in (CReferenceObjetDonnee[])e.Data.GetData(typeof(CReferenceObjetDonnee[])))
                 {
                     CDocumentGED doc = refDoc.GetObjet(ctx) as CDocumentGED;
                     if (doc != null)
                     {
                         if (!bAddCategorie)//Supprime les anciennes catégories
                         {
                             CListeObjetsDonnees lst = doc.RelationsCategories;
                             CObjetDonneeAIdNumerique.Delete(lst, true);
                         }
                         bool bDedans = false;
                         foreach (CRelationDocumentGED_Categorie rel in doc.RelationsCategories)
                         {
                             if (rel.Categorie.Id == categorie.Id)
                             {
                                 bDedans = true;
                                 break;
                             }
                         }
                         if (!bDedans)
                         {
                             CRelationDocumentGED_Categorie newRel = new CRelationDocumentGED_Categorie(ctx);
                             newRel.CreateNewInCurrentContexte();
                             newRel.Categorie = categorie;
                             newRel.Document  = doc;
                         }
                     }
                 }
             }
             CResultAErreur result = ctx.CommitEdit();
             if (!result)
             {
                 CFormAfficheErreur.Show(result.Erreur);
             }
             else
             {
                 InitPanelList(m_elementSelectionne);
             }
         }
     }
     HightlightCategorie(null);
 }
Esempio n. 6
0
 public void RemoveElement(CObjetDonneeAIdNumerique objet)
 {
     if (objet != null && objet.GetType() == TypeElements)
     {
         CListeObjetsDonnees lst = RelationsEntites;
         lst.Filtre = new CFiltreData(CRelationListeEntites_Entite.c_champIdElement + "=@1",
                                      objet.Id);
         if (lst.Count > 0)
         {
             CObjetDonneeAIdNumerique.Delete(lst, true);
         }
     }
 }
        /// //////////////////////////////////////////////////
        public CResultAErreur Purger(DateTime dt)
        {
            CResultAErreur result  = CResultAErreur.True;
            CSessionClient session = CSessionClient.GetSessionForIdSession(IdSession);

            try
            {
                using (CContexteDonnee contexte = new CContexteDonnee(IdSession, true, false))
                {
                    CListeObjetsDonnees liste = new CListeObjetsDonnees(contexte, typeof(CProcessEnExecutionInDb));
                    liste.Filtre = new CFiltreData(CProcessEnExecutionInDb.c_champDateCreation + "<@1 and " +
                                                   "(" + CProcessEnExecutionInDb.c_champEtat + "=@2 or " +
                                                   CProcessEnExecutionInDb.c_champEtat + "=@3)",
                                                   dt,
                                                   (int)EtatProcess.Erreur,
                                                   (int)EtatProcess.Termine);
                    int nCount = liste.Count;
                    for (int nBloc = 0; nBloc < nCount; nBloc += 500)
                    {
                        StringBuilder bl   = new StringBuilder();
                        int           nMin = Math.Min(nBloc + 500, nCount);
                        for (int nCpt = nBloc; nCpt < nMin; nCpt++)
                        {
                            bl.Append(((CProcessEnExecutionInDb)liste[nCpt]).Id);
                            bl.Append(",");
                        }
                        if (bl.Length > 0)
                        {
                            bl.Remove(bl.Length - 1, 1);
                            using (CContexteDonnee ctxTmp = new CContexteDonnee(IdSession, true, false))
                            {
                                CListeObjetsDonnees petiteListe = new CListeObjetsDonnees(ctxTmp, typeof(CProcessEnExecutionInDb));
                                petiteListe.Filtre = new CFiltreData(
                                    CProcessEnExecutionInDb.c_champId + " in (" +
                                    bl.ToString() + ")");
                                result = CObjetDonneeAIdNumerique.Delete(petiteListe);
                                if (!result)
                                {
                                    return(result);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Esempio n. 8
0
        public void RemoveCategory(CCategorieGED category)
        {
            if (category == null)
            {
                return;
            }
            CListeObjetsDonnees lstCats = RelationsCategories;

            lstCats.Filtre = new CFiltreData(CCategorieGED.c_champId + "=@1", category.Id);
            if (lstCats.Count > 0)
            {
                CObjetDonneeAIdNumerique.Delete(lstCats, true);
            }
        }
Esempio n. 9
0
 //---------------------------------------------
 public void RemoveSelectedEntity(CObjetDonneeAIdNumerique objet)
 {
     if (objet != null)
     {
         //Vérifie que l'entité n'est pas déjà associée
         CListeObjetsDonnees lst = RelationsElementsSelectionnes;
         lst.Filtre = new CFiltreData(CRelationBesoinQuantite_Element.c_champIdElement + "=@1",
                                      objet.Id);
         if (lst.Count > 0)
         {
             CObjetDonneeAIdNumerique.Delete(lst, true);
         }
     }
 }
Esempio n. 10
0
        private void m_lnkDissocierElementEnCours_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (m_elementSelectionne != null)
            {
                List <string> listeIdsDocuments = new List <string>();
                foreach (CDocumentGED document in m_panelListDocumentsGED.ElementsSelectionnes)
                {
                    listeIdsDocuments.Add(document.Id.ToString());
                }
                int nbSelectionne = listeIdsDocuments.Count();
                if (nbSelectionne == 0)
                {
                    CFormAlerte.Afficher(I.T("No Document selected to dissociate|10334"));
                }
                else
                {
                    DialogResult reponse = CFormAlerte.Afficher(I.T("Dissociate @1 document(s) from '@2'. Do you Confirm?|10335", nbSelectionne.ToString(), m_elementSelectionne.DescriptionElement), EFormAlerteType.Question);
                    if (reponse == DialogResult.Yes)
                    {
                        using (CContexteDonnee ctx = CSc2iWin32DataClient.ContexteCourant.GetContexteEdition())
                        {
                            CListeObjetsDonnees listeRelationsASupprimer = new CListeObjetsDonnees(ctx, typeof(CRelationElementToDocument));
                            listeRelationsASupprimer.Filtre = new CFiltreData(
                                CRelationElementToDocument.c_champTypeElement + " = @1 AND " +
                                CRelationElementToDocument.c_champIdElement + " = @2 AND " +
                                CDocumentGED.c_champId + " in (" + string.Join(",", listeIdsDocuments.ToArray()) + ")",
                                m_elementSelectionne.GetType().ToString(),
                                m_elementSelectionne.Id);

                            if (listeRelationsASupprimer.Count > 0)
                            {
                                CObjetDonneeAIdNumerique.Delete(listeRelationsASupprimer, true);
                            }

                            CResultAErreur result = ctx.CommitEdit();
                            if (!result)
                            {
                                CFormAlerte.Afficher(result.Erreur);
                            }
                            else
                            {
                                InitPanelList(m_elementSelectionne);
                            }
                        }
                    }
                }
            }
        }
 //----------------------------------------------------------------
 private void ValideGroupeEnCours()
 {
     if (m_relationEnCours == null || !m_extModeEdition.ModeEdition)
     {
         return;
     }
     if (m_btnAppliquerAToutLeMonde.Checked)
     {
         CListeObjetsDonnees lst = m_relationEnCours.Applications;
         CObjetDonneeAIdNumerique.Delete(lst, true);
     }
     else
     {
         m_wndListeActeurs.ApplyModifs();
         m_wndListeProfils.ApplyModifs();
     }
 }
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur ExecuteAction(CContexteExecutionAction contexte)
        {
            CResultAErreur result = CResultAErreur.True;


            CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(contexte.Branche.Process);

            contexteEval.AttacheObjet(typeof(CContexteDonnee), contexte.ContexteDonnee);
            string strCodeAttente = "";

            if (FormuleCodeAttente != null)
            {
                result = FormuleCodeAttente.Eval(contexteEval);
                if (!result || result.Data == null)
                {
                    strCodeAttente = "";
                }
                else
                {
                    strCodeAttente = result.Data.ToString();
                }
            }
            //Si le code d'attente n'est pas null et qu'il y a déjà une attente,
            //il faut la supprimer
            if (strCodeAttente != null && strCodeAttente.Trim() != "")
            {
                CFiltreData filtre = new CFiltreData(CBesoinInterventionProcess.c_champCodeAttente + "=@1",
                                                     strCodeAttente);
                CListeObjetsDonnees listeToDelete = new CListeObjetsDonnees(contexte.ContexteDonnee, typeof(CBesoinInterventionProcess));
                listeToDelete.Filtre = filtre;
                if (listeToDelete.Count != 0)
                {
                    CObjetDonneeAIdNumerique.Delete(listeToDelete);
                }
            }
            CLienAction[] liens = GetLiensSortantHorsErreur();
            if (liens.Length > 0)
            {
                result.Data = liens[0];
            }
            return(result);
        }
Esempio n. 13
0
        protected CResultAErreur UpdateMasquagesEquipements()
        {
            CResultAErreur result = CResultAErreur.True;

            if (EquipementOrigine == null || EquipementDestination == null)
            {
                //Pas de masquage
                CObjetDonneeAIdNumerique.Delete(EquipMaskSources, true);
                return(result);
            }
            //Trouve le masquage entre ces deux equipements
            CSpvEquip_Msk msk    = new CSpvEquip_Msk(ContexteDonnee);
            CFiltreData   filtre = new CFiltreData(CSpvEquip_Msk.c_champEQUIP_MASQUANT_ID + "=@1 and " +
                                                   CSpvEquip_Msk.c_champEQUIP_MASQUE_ID + "=@2",
                                                   EquipementOrigine.Id, EquipementDestination.Id);

            if (!msk.ReadIfExists(filtre))
            {
                msk.CreateNewInCurrentContexte();
                msk.EquipementMasquant = EquipementOrigine;
                msk.EquipementMasque   = EquipementDestination;
            }
            //S'assure que je suis bien source de ce masquage
            CListeObjetsDonnees lstSources = msk.Sources;

            lstSources.Filtre = new CFiltreData(CSpvLiai.c_champLIAI_ID + "=@1",
                                                Id);
            if (lstSources.Count == 0)
            {
                CSpvEquip_Msk_Source src = new CSpvEquip_Msk_Source(ContexteDonnee);
                src.CreateNewInCurrentContexte();
                src.Equip_Msk  = msk;
                src.LiaiSource = this;
            }
            return(msk.PropageMasquage());
        }
Esempio n. 14
0
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            //Calcule l'élément à supprimer
            CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(Process);

            contexteEval.AttacheObjet(typeof(CContexteDonnee), contexte.ContexteDonnee);
            result = ExpressionEntiteASupprimer.Eval(contexteEval);
            if (!result)
            {
                result.EmpileErreur(I.T("Error during @1 formula evaluation|216", ExpressionEntiteASupprimer.ToString()));
                return(result);
            }
            if (result.Data is IEnumerable &&
                (!(result.Data is CListeObjetsDonnees) || m_bPurgeAdmin))
            {
                StringBuilder bl         = new StringBuilder();
                Type          tp         = null;
                string        strChampId = "";
                List <int>    lstIds     = new List <int>();
                foreach (object obj in ((IEnumerable)result.Data))
                {
                    CObjetDonneeAIdNumerique objId = obj as CObjetDonneeAIdNumerique;
                    if (objId == null)
                    {
                        result.EmpileErreur(I.T("Can not delete element of this type|20030"));
                        return(result);
                    }
                    if (tp == null)
                    {
                        tp         = objId.GetType();
                        strChampId = objId.GetChampId();
                    }
                    if (objId.GetType() != tp)
                    {
                        result.EmpileErreur(I.T("Can not delete a list of different object types|20031"));
                        return(result);
                    }
                    bl.Append(objId.Id);
                    lstIds.Add(objId.Id);
                    bl.Append(",");
                }
                if (m_bPurgeAdmin)
                {
                    result = PurgeEntites(contexte.IdSession, tp, lstIds.ToArray());
                }
                else
                {
                    if (bl.Length == 0)
                    {
                        return(result);
                    }
                    bl.Remove(bl.Length - 1, 1);
                    CListeObjetsDonnees lst = new CListeObjetsDonnees(contexte.ContexteDonnee, tp);
                    lst.Filtre = new CFiltreData(strChampId + " in (" + bl.ToString() + ")");
                    if (DeleteFillesEnCascade)
                    {
                        result = CObjetDonneeAIdNumerique.DeleteAvecCascadeSansControleDoncIlFautEtreSurDeSoi(lst, true);
                    }
                    else
                    {
                        result = CObjetDonneeAIdNumerique.Delete(lst, true);
                    }
                }
                return(result);
            }


            if (result.Data is CListeObjetsDonnees)
            {
                result = CObjetDonneeAIdNumerique.Delete(result.Data as CListeObjetsDonnees, true);
                return(result);
            }

            CObjetDonneeAIdNumerique objetASupprimer = (CObjetDonneeAIdNumerique)result.Data;

            ArrayList lstVariablesAVider = new ArrayList();

            //CHerche les variables qui contiennent l'objet à supprimer
            foreach (CVariableDynamique variable in contexte.Branche.Process.ListeVariables)
            {
                object val = contexte.Branche.Process.GetValeurChamp(variable);
                if (val != null && val.Equals(objetASupprimer))
                {
                    lstVariablesAVider.Add(variable);
                }
            }

            if (m_bPurgeAdmin)
            {
                result = PurgeEntites(contexte.IdSession, objetASupprimer.GetType(), new int[] { objetASupprimer.Id });
            }
            else
            {
                // Traite la suppression de tous les éléments filles en cascade.
                if (DeleteFillesEnCascade)
                {
                    result = objetASupprimer.DeleteAvecCascadeSansControleDoncIlFautEtreSurDeSoi(true);
                }
                else
                {
                    result = objetASupprimer.Delete(true);
                }
            }

            if (result)
            {
                foreach (CVariableDynamique variable in lstVariablesAVider)
                {
                    Process.SetValeurChamp(variable, null);
                }
            }
            return(result);
        }
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur ExecuteAction(CContexteExecutionAction contexte)
        {
            CResultAErreur result = CResultAErreur.True;


            //Calcule le message
            string strMessage = "";
            CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(contexte.Branche.Process);

            contexteEval.AttacheObjet(typeof(CContexteDonnee), contexte.ContexteDonnee);
            result = FormuleMessage.Eval(contexteEval);
            if (!result)
            {
                result     = CResultAErreur.True;
                strMessage = FormuleMessage.GetString();
            }
            else
            {
                strMessage = result.Data == null?"":result.Data.ToString();
            }

            string strCodeAttente = "";

            if (FormuleCodeAttente != null)
            {
                result = FormuleCodeAttente.Eval(contexteEval);
                if (!result || result.Data == null)
                {
                    strCodeAttente = "";
                }
                else
                {
                    strCodeAttente = result.Data.ToString();
                }
            }

            //TESTDBKEYOK (SC)
            CDbKey keyUtilisateur = contexte.Branche.KeyUtilisateur;

            if (m_formuleIdUtilisateur != null)
            {
                //TESTDBKEYOK

                result = m_formuleIdUtilisateur.Eval(contexteEval);
                if (result)
                {
                    if (result.Data is int)
                    {
                        keyUtilisateur = CUtilInfosUtilisateur.GetKeyUtilisateurFromId((int)result.Data);
                    }
                    if (result.Data is string)
                    {
                        keyUtilisateur = CDbKey.CreateFromStringValue((string)result.Data);
                    }
                    if (result.Data is CDbKey)
                    {
                        keyUtilisateur = (CDbKey)result.Data;
                    }
                    if (keyUtilisateur != null)
                    {
                        contexte.Branche.KeyUtilisateur = keyUtilisateur;
                    }
                }
            }

            //Si le code d'attente n'est pas null et qu'il y a déjà une attente,
            //il faut la supprimer
            if (strCodeAttente != null && strCodeAttente.Trim() != "")
            {
                CFiltreData filtre = new CFiltreData(
                    CBesoinInterventionProcess.c_champCodeAttente + "=@1",
                    strCodeAttente);
                CListeObjetsDonnees listeToDelete = new CListeObjetsDonnees(contexte.ContexteDonnee, typeof(CBesoinInterventionProcess));
                listeToDelete.Filtre = filtre;
                if (listeToDelete.Count != 0)
                {
                    CObjetDonneeAIdNumerique.Delete(listeToDelete);
                }
            }

            CBesoinInterventionProcess intervention = new CBesoinInterventionProcess(contexte.ContexteDonnee);

            intervention.CreateNewInCurrentContexte();
            intervention.ProcessEnExecution = contexte.ProcessEnExecution;
            //TESTDBKEYOK
            intervention.KeyUtilisateur = keyUtilisateur;
            intervention.DateDemande    = DateTime.Now;
            intervention.CodeAttente    = strCodeAttente;
            intervention.Libelle        = strMessage;
            CLienAction[] liens = GetLiensSortantHorsErreur();
            if (liens.Length == 1)
            {
                intervention.IdAction = liens[0].ActionArrivee.IdObjetProcess;
            }
            else
            {
                intervention.IdAction = -1;
            }

            //Mise du process en pause !
            result.Data = new CMetteurDeProcessEnPause(  );
            return(result);
        }
Esempio n. 16
0
        public void TestVersionsDeTables()
        {
            System.Console.WriteLine("-----------------------------------Test versions de tables----------------------");
            System.Console.WriteLine("Initialisation");
            ResetModifs();

            string strNomTableTest = "TEST_NUNIT";

            string[] strNomsCols = new string[] { "Cle", "Val1", "Val2" };
            //Supprime les tables de test
            m_contexteDonnee.SetVersionDeTravail(-1, false);            //Toutes versions
            CListeObjetsDonnees listeTables = new CListeObjetsDonnees(m_contexteDonnee, typeof(CTableParametrable));

            listeTables.Filtre = new CFiltreData(CTableParametrable.c_champLibelle + "=@1",
                                                 strNomTableTest);
            Assert.IsTrue(CObjetDonneeAIdNumerique.Delete(listeTables));

            //Création du type de table
            m_contexteDonnee.SetVersionDeTravail(null, false);
            CTypeTableParametrable typeTable = new CTypeTableParametrable(m_contexteDonnee);

            if (typeTable.ReadIfExists(new CFiltreData(CTypeTableParametrable.c_champLibelle + "=@1",
                                                       strNomTableTest)))
            {
                Assert.IsTrue(CObjetDonneeAIdNumerique.Delete(typeTable.Colonnes));
                typeTable.BeginEdit();
            }
            else
            {
                typeTable.CreateNew();
            }
            typeTable.Libelle = strNomTableTest;
            CColonneTableParametrable col1 = new CColonneTableParametrable(typeTable.ContexteDonnee);

            col1.CreateNewInCurrentContexte();
            col1.Libelle            = strNomsCols[0];
            col1.TypeDonneeChamp    = new C2iTypeDonnee(TypeDonnee.tString);
            col1.AllowNull          = false;
            col1.TypeTable          = typeTable;
            col1.PrimaryKeyPosition = 0;
            col1.Position           = 0;

            CColonneTableParametrable col2 = new CColonneTableParametrable(typeTable.ContexteDonnee);

            col2.CreateNewInCurrentContexte();
            col2.Libelle         = strNomsCols[1];
            col2.TypeDonneeChamp = new C2iTypeDonnee(TypeDonnee.tString);
            col2.TypeTable       = typeTable;
            col2.Position        = 1;

            CColonneTableParametrable col3 = new CColonneTableParametrable(typeTable.ContexteDonnee);

            col3.CreateNewInCurrentContexte();
            col3.Libelle         = strNomsCols[2];
            col3.TypeDonneeChamp = new C2iTypeDonnee(TypeDonnee.tString);
            col3.TypeTable       = typeTable;
            col3.Position        = 2;

            Assert.IsTrue(typeTable.CommitEdit());

            //Création d'une table dans le référentiel
            CTableParametrable tableP = new CTableParametrable(m_contexteDonnee);

            tableP.CreateNew();
            tableP.Libelle   = strNomTableTest;
            tableP.TypeTable = typeTable;
            DataTable table = tableP.DataTableObject;

            /*Table dans le referentiel
             * KEY	|	Val1	|	Val2
             * A1	|	A2		|	A3
             * B1	|	B2		|	B3
             * C1	|	C2		|	C3
             * D1	|	D2		|	D3
             * */
            DataRow row = null;

            for (int nRow = 0; nRow < 4; nRow++)
            {
                row = table.NewRow();
                string strCleLigne = (new string[] { "A", "B", "C", "D" })[nRow];
                for (int nCol = 1; nCol < table.Columns.Count; nCol++)
                {
                    if (table.Columns[nCol].ColumnName != CTableParametrable.c_strColTimeStamp)
                    {
                        row[nCol] = strCleLigne + (nCol).ToString();
                    }
                }
                table.Rows.Add(row);
            }
            tableP.DataTableObject = table;
            Assert.IsTrue(tableP.CommitEdit());

            //---------------------------------------------------------
            ///Modification de la table en V1
            System.Console.Write("Modif dans V1");
            string strA2V1 = "A2 en V1";

            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[0], false);
            table = tableP.DataTableObject;
            row   = table.Rows[0];
            row[strNomsCols[1]] = strA2V1;
            tableP.BeginEdit();
            tableP.DataTableObject = table;
            Assert.IsTrue(tableP.CommitEdit());

            //La table n'a pas bougé en version référentiel
            m_contexteDonnee.SetVersionDeTravail(null, false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", "A2", "A3" },
                new string[] { "B1", "B2", "B3" },
                new string[] { "C1", "C2", "C3" },
                new string[] { "D1", "D2", "D3" }
            });

            //La table n'a pas bougé en V2
            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[1], false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", "A2", "A3" },
                new string[] { "B1", "B2", "B3" },
                new string[] { "C1", "C2", "C3" },
                new string[] { "D1", "D2", "D3" }
            });

            //La table a bougé en V1
            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[0], false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", strA2V1, "A3" },
                new string[] { "B1", "B2", "B3" },
                new string[] { "C1", "C2", "C3" },
                new string[] { "D1", "D2", "D3" }
            });

            //La table a bougé en V3
            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[2], false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", strA2V1, "A3" },
                new string[] { "B1", "B2", "B3" },
                new string[] { "C1", "C2", "C3" },
                new string[] { "D1", "D2", "D3" }
            });

            //---------------------------------------------------------
            //Modification de la table dans le référentiel :
            //Modif ligne 1 et ligne 2.
            System.Console.Write("Modif dans Ref");
            m_contexteDonnee.SetVersionDeTravail(null, false);
            table = tableP.DataTableObject;
            row   = table.Rows[0];
            string strA3REF = "A3 ref";

            row[strNomsCols[2]] = strA3REF;
            row = table.Rows[1];
            string strB2REF = "B2 ref";

            row[strNomsCols[1]] = strB2REF;
            tableP.BeginEdit();
            tableP.DataTableObject = table;
            Assert.IsTrue(tableP.CommitEdit());

            //La table n'a pas bougé en version référentiel
            m_contexteDonnee.SetVersionDeTravail(null, false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", "A2", strA3REF },
                new string[] { "B1", strB2REF, "B3" },
                new string[] { "C1", "C2", "C3" },
                new string[] { "D1", "D2", "D3" }
            });

            //La table n'a pas bougé en V2
            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[1], false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", "A2", strA3REF },
                new string[] { "B1", strB2REF, "B3" },
                new string[] { "C1", "C2", "C3" },
                new string[] { "D1", "D2", "D3" }
            });

            //la ligne A de V1 ne doit pas être modifiée,
            //Par contre la ligne 2 oui
            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[0], false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", strA2V1, "A3" },
                new string[] { "B1", strB2REF, "B3" },
                new string[] { "C1", "C2", "C3" },
                new string[] { "D1", "D2", "D3" }
            });

            //V3 = V1
            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[2], false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", strA2V1, "A3" },
                new string[] { "B1", strB2REF, "B3" },
                new string[] { "C1", "C2", "C3" },
                new string[] { "D1", "D2", "D3" }
            });

            //---------------------------------------------------------
            System.Console.Write("Modif dans V3");
            //Modification de la ligne en V3
            string strA2V3 = "A2 en V3";

            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[2], false);
            table = tableP.DataTableObject;
            row   = table.Rows[0];
            row[strNomsCols[1]] = strA2V3;
            tableP.BeginEdit();
            tableP.DataTableObject = table;
            Assert.IsTrue(tableP.CommitEdit());

            //La table n'a pas bougé en version référentiel
            m_contexteDonnee.SetVersionDeTravail(null, false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", "A2", strA3REF },
                new string[] { "B1", strB2REF, "B3" },
                new string[] { "C1", "C2", "C3" },
                new string[] { "D1", "D2", "D3" }
            });

            //La table n'a pas bougé en V2
            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[1], false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", "A2", strA3REF },
                new string[] { "B1", strB2REF, "B3" },
                new string[] { "C1", "C2", "C3" },
                new string[] { "D1", "D2", "D3" }
            });

            //La table a bougé en V1
            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[0], false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", strA2V1, "A3" },
                new string[] { "B1", strB2REF, "B3" },
                new string[] { "C1", "C2", "C3" },
                new string[] { "D1", "D2", "D3" }
            });

            //La table a bougé en V3
            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[2], false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", strA2V3, "A3" },
                new string[] { "B1", strB2REF, "B3" },
                new string[] { "C1", "C2", "C3" },
                new string[] { "D1", "D2", "D3" }
            });

            //-----------------------------------------------
            //Suppression de la ligne C en V1
            System.Console.Write("Delete dans V1");
            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[0], false);
            table = tableP.DataTableObject;
            table.Rows[2].Delete();
            tableP.BeginEdit();
            tableP.DataTableObject = table;
            Assert.IsTrue(tableP.CommitEdit());

            //La table n'a pas bougé en version référentiel
            m_contexteDonnee.SetVersionDeTravail(null, false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", "A2", strA3REF },
                new string[] { "B1", strB2REF, "B3" },
                new string[] { "C1", "C2", "C3" },
                new string[] { "D1", "D2", "D3" }
            });

            //La table n'a pas bougé en V2
            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[1], false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", "A2", strA3REF },
                new string[] { "B1", strB2REF, "B3" },
                new string[] { "C1", "C2", "C3" },
                new string[] { "D1", "D2", "D3" }
            });

            //La table a bougé en V1 (plus de ligne C)
            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[0], false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", strA2V1, "A3" },
                new string[] { "B1", strB2REF, "B3" },
                new string[] { "D1", "D2", "D3" }
            });

            //La table a bougé en V3 (plus de ligne C)
            m_contexteDonnee.SetVersionDeTravail(m_nIdsVersions[2], false);
            table = tableP.DataTableObject;
            VerifTable(table, strNomsCols, new string[][] {
                new string[] { "A1", strA2V3, "A3" },
                new string[] { "B1", strB2REF, "B3" },
                new string[] { "D1", "D2", "D3" }
            });
        }
        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;
        }
Esempio n. 18
0
        private void m_arbreConsultation_DragDrop(object sender, DragEventArgs e)
        {
            if (DragDataHasDocGed(e.Data))
            {
                using (CContexteDonnee ctx = CSc2iWin32DataClient.ContexteCourant.GetContexteEdition())
                {
                    bool bAddElement         = (e.KeyState & 8) == 8;
                    TreeViewHitTestInfo info = m_arbreConsultation.HitTest(m_arbreConsultation.PointToClient(new Point(e.X, e.Y)));
                    TreeNode            node = info.Node;
                    if (info != null && info.Node != null && info.Node.Tag is CNodeConsultationHierarchique &&
                        ((CNodeConsultationHierarchique)info.Node.Tag).ObjetLie is CObjetDonneeAIdNumerique)
                    {
                        CObjetDonneeAIdNumerique objetAId = ((CNodeConsultationHierarchique)info.Node.Tag).ObjetLie as CObjetDonneeAIdNumerique;
                        foreach (CReferenceObjetDonnee refDoc in (CReferenceObjetDonnee[])e.Data.GetData(typeof(CReferenceObjetDonnee[])))
                        {
                            CDocumentGED doc = refDoc.GetObjet(ctx) as CDocumentGED;
                            if (doc != null)
                            {
                                if (!bAddElement)//Supprime les anciennes catégories
                                {
                                    StringBuilder bl = new StringBuilder();
                                    foreach (CRelationElementToDocument rel in doc.RelationsElements)
                                    {
                                        if (rel.ElementLie != null)
                                        {
                                            bl.Append("-");
                                            bl.Append(rel.ElementLie.DescriptionElement);
                                            bl.Append(System.Environment.NewLine);
                                        }
                                    }
                                    if (bl.Length > 0)
                                    {
                                        if (CFormAlerte.Afficher(I.T("This operation will remove association to \r\n@1 and add an association to @2. Continue ?|20475",
                                                                     bl.ToString(),
                                                                     objetAId.DescriptionElement), EFormAlerteType.Question) == DialogResult.No)
                                        {
                                            HightlightElementDeArbre(null);
                                            e.Effect = DragDropEffects.None;
                                            return;
                                        }
                                    }


                                    CListeObjetsDonnees lst = doc.RelationsElements;
                                    CObjetDonneeAIdNumerique.Delete(lst, true);
                                }
                                doc.AssocieA(objetAId);
                            }
                        }
                    }
                    CResultAErreur result = ctx.CommitEdit();
                    if (!result)
                    {
                        CFormAlerte.Afficher(result.Erreur);
                    }
                    else
                    {
                        InitPanelList(m_elementSelectionne);
                    }
                }
            }
            HightlightElementDeArbre(null);
        }
Esempio n. 19
0
        //-----------------------------------------------------------------
        /// <summary>
        /// recalcule l'arbre opérationnel
        /// </summary>
        /// <param name="baseGraphes"></param>
        /// <returns></returns>
        public CResultAErreur RecalculeArbreOperationnelInContexte(CBaseGraphesReseau baseGraphes)
        {
            if (baseGraphes == null)
            {
                baseGraphes = new CBaseGraphesReseau();
            }
            CResultAErreur result = CResultAErreur.True;
            CSchemaReseau  schema = ObjetTimosAssocie;

            //Supprime toutes les dépendances à des elements de graphe
            result = CObjetDonneeAIdNumerique.Delete(ElementsDeGraphe, true);
            if (!result)
            {
                return(result);
            }

            foreach (ESensAllerRetourLienReseau sens in Enum.GetValues(typeof(ESensAllerRetourLienReseau)))
            {
                ESensAllerRetourLienReseau?sensRetenu = null;
                if (schema.LienReseau == null)
                {
                    sensRetenu = sens;
                }
                //Calcule le graphe
                CGrapheReseau graphe = baseGraphes.GetGrapheExistant(schema, sensRetenu);
                if (graphe == null)
                {
                    graphe = new CGrapheReseau(baseGraphes);
                    result = graphe.CalculeGraphe(schema, sensRetenu);
                    if (!result)
                    {
                        return(result);
                    }
                }
                CArbreOperationnel arbre = new CArbreOperationnel();
                result = arbre.CalculArbreRedondanceAuto(schema, graphe);
                if (!result)
                {
                    return(result);
                }
                result = CSpvElementDeGraphe.CreateFromElementDeArbreOperationnel(this, arbre.ElementRacine, sensRetenu);
                if (!result)
                {
                    return(result);
                }
                if (schema.LienReseau != null)
                {
                    break;
                }
            }

            //Recalcule les éléments de graphe qui utilisent ce schéma
            CListeObjetsDonnees lstEltsUtilisantLeSchema = new CListeObjetsDonnees(ContexteDonnee, typeof(CSpvElementDeGraphe));

            lstEltsUtilisantLeSchema.Filtre = new CFiltreData(CSpvElementDeGraphe.c_champIdSchemaSmt + "=@1",
                                                              schema.Id);
            foreach (CSpvElementDeGraphe elt in lstEltsUtilisantLeSchema.ToArrayList())
            {
                CSpvElementDeGrapheSousSchema eltSpvSousSchema = elt.GetElementDuBonType() as CSpvElementDeGrapheSousSchema;
                if (eltSpvSousSchema != null)
                {
                    CNoeudDeGrapheReseau noeudDepart = eltSpvSousSchema.NoeudDepart;
                    CNoeudDeGrapheReseau noeudArrive = eltSpvSousSchema.NoeudArrive;
                    CArbreOperationnel   arbre       = new CArbreOperationnel();
                    CGrapheReseau        graphe      = baseGraphes.GetGrapheExistant(schema, eltSpvSousSchema.SensGraphe);
                    if (graphe == null)
                    {
                        graphe = new CGrapheReseau(baseGraphes);
                        result = graphe.CalculeGraphe(schema, eltSpvSousSchema.SensGraphe);
                        if (!result)
                        {
                            return(result);
                        }
                    }
                    result = arbre.CalculArbreRedondanceAuto(schema, graphe, noeudDepart, noeudArrive);
                    if (!result)
                    {
                        return(result);
                    }
                    CElementDeArbreOperationnelSousSchema eltOp = new CElementDeArbreOperationnelSousSchema(null);
                    eltOp.ElementDeArbre = arbre.ElementRacine;
                    eltOp.IdSchema       = schema.Id;
                    eltOp.NoeudArrive    = noeudArrive;
                    eltOp.NoeudDepart    = noeudDepart;

                    result = CObjetDonneeAIdNumerique.Delete(eltSpvSousSchema.ElementsFils, true);
                    if (!result)
                    {
                        return(result);
                    }
                    result = eltSpvSousSchema.FillFromElementDeGraphe(eltOp);
                    if (!result)
                    {
                        return(result);
                    }
                }
            }

            return(result);
        }
        //--------------------------------------------------------------------------
        /// <summary>
        /// Retourne un projet pouvant être executé pour l'étape demandée<BR>
        /// </BR>
        /// Cette fonction se charge de la mise à jour de toutes la structure du projet
        /// </summary>
        /// <param name="etape"></param>
        /// <returns></returns>
        public static CResultAErreurType <CProjet> AssureProjetRunnable(CEtapeWorkflow etape, CBlocWorkflowProjet blocProjet)
        {
            CResultAErreurType <CProjet> resProjet = new CResultAErreurType <CProjet>();
            CProjet projet = GetProjetDirectementAssocie(etape);

            int nNumLastIteration = 0;

            if (projet != null)
            {
                nNumLastIteration = projet.NumeroIteration;
                if (projet.GanttId == "")
                {
                    projet.GanttId = blocProjet.GetGanttId(etape);
                }
            }

            CProjet projetParent = FindProjetParent(etape);

            if (projetParent != null && projet != null &&
                projetParent != projet.Projet)
            {
                projet = null;
            }

            if (projet == null)
            {
                resProjet = blocProjet.GetOrCreateProjetInCurrentContexte(etape,
                                                                          FindProjetParent(etape),
                                                                          FindPredecesseurs(etape));
                return(resProjet);
            }

            if (
                projet.DateFinRelle == null ||
                !blocProjet.GererIteration ||
                projet.HasOptionLienEtape(EOptionLienProjetEtape.NoIteration))
            {
                if ((!blocProjet.GererIteration || projet.HasOptionLienEtape(EOptionLienProjetEtape.NoIteration)) &&
                    !projet.HasOptionLienEtape(EOptionLienProjetEtape.StepKeepDates))
                {
                    projet.DateFinRelle = null;
                }
                resProjet.DataType = projet;
                return(resProjet);
            }

            //Il faut créer une ittération pour ce projet
            IEnumerable <CProjet> predecesseurs = FindPredecesseurs(etape);

            CProjet newProjet = projet.Clone(false) as CProjet;

            //Remet les dates à null
            newProjet.DateDebutReel = null;
            newProjet.DateFinRelle  = null;

            //Met les deux projets sur la même barre de gantt
            if (projet.GanttId.Length == 0)
            {
                projet.GanttId = blocProjet.GetGanttId(etape);
            }
            newProjet.GanttId = projet.GanttId;

            DateTime?dateDebut = null;

            foreach (CProjet pred in predecesseurs)
            {
                if (dateDebut == null || pred.DateFinGantt > dateDebut.Value)
                {
                    dateDebut = pred.DateFinGantt;
                }
            }
            if (dateDebut == null)
            {
                dateDebut = DateTime.Now;
            }
            if (dateDebut != null)
            {
                newProjet.DateDebutPlanifiee = dateDebut.Value;
                newProjet.DateFinPlanifiee   = dateDebut.Value.AddHours(projet.DureeEnHeure.Value);
            }
            newProjet.DateDebutAuto   = true;
            newProjet.NumeroIteration = nNumLastIteration + 1;

            //Supprime toutes les dépendances du nouveau projet
            CObjetDonneeAIdNumerique.Delete(newProjet.LiensDeProjetAttaches, true);

            //Change le workflow lancé
            etape.WorkflowLancé.SetValeurChamp(blocProjet.IdChampProjet.Value, newProjet);

            //Crée les liens vers les prédécesseurs
            foreach (CProjet pred in predecesseurs)
            {
                newProjet.AddPredecessor(pred);
            }

            //Met à jour les successeurs
            foreach (CTypeEtapeWorkflow typeSucc in FindTypesSuccesseurs(etape.TypeEtape))
            {
                CEtapeWorkflow succ = etape.Workflow.GetEtapeForType(typeSucc);
                if (succ != null)
                {
                    resProjet = AssureProjetRunnable(succ, succ.TypeEtape.Bloc as CBlocWorkflowProjet);
                    CProjet prjSucc = resProjet.DataType;
                    if (prjSucc != null)
                    {
                        //Si le projet est lié à l'ancien, on déplace le lien
                        CLienDeProjet lien = prjSucc.GetLienToPredecesseur(projet);
                        if (lien != null)
                        {
                            lien.ProjetA = newProjet;
                        }
                    }
                }
            }
            newProjet.AutoMoveDependancies();

            CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(etape);

            foreach (CAffectationsProprietes affectation in blocProjet.AffectationsCreationEtDemarrage)
            {
                bool bAppliquer = affectation.FormuleCondition == null || affectation.FormuleCondition is C2iExpressionVrai;
                if (affectation.FormuleCondition != null)
                {
                    CResultAErreur res = affectation.FormuleCondition.Eval(ctxEval);
                    if (res && res.Data != null && CUtilBool.BoolFromString(res.Data.ToString()) == true)
                    {
                        bAppliquer = true;
                    }
                }
                if (bAppliquer)
                {
                    affectation.AffecteProprietes(newProjet, etape, new CFournisseurPropDynStd());
                }
            }

            resProjet.DataType = newProjet;
            return(resProjet);
        }
Esempio n. 21
0
        //---------------------------------------------
        public void ClearSelections()
        {
            CListeObjetsDonnees lst = RelationsElementsSelectionnes;

            CObjetDonneeAIdNumerique.Delete(lst, true);
        }
Esempio n. 22
0
        public CResultAErreur MAJChamps()
        {
            CResultAErreur result = CResultAErreur.True;

            if (ContratListeOperationsEnCour == null)
            {
                return(result);
            }

            List <int> idsToDelete  = new List <int>();
            string     labelContrat = ContratListeOperationsEnCour.Contrat.Libelle;
            Dictionary <int, List <CInterventionPourEditeurPreventive> > nouveauMappage = new Dictionary <int, List <CInterventionPourEditeurPreventive> >();

            foreach (int nIdSite in m_mappageSiteListeInter.Keys)
            {
                List <CInterventionPourEditeurPreventive> intersValidated = new List <CInterventionPourEditeurPreventive>();
                foreach (CInterventionPourEditeurPreventive inter in m_mappageSiteListeInter[nIdSite])
                {
                    if (!inter.Deleted)
                    {
                        intersValidated.Add(inter);
                    }

                    if (inter.IsInDB && inter.Deleted)
                    {
                        idsToDelete.Add(inter.InterventionInDB.Id);
                    }
                    else
                    {
                        result = inter.MAJChamps(ContexteDonnee, labelContrat);
                    }

                    if (!result)
                    {
                        return(result);
                    }
                }
                nouveauMappage.Add(nIdSite, intersValidated);
            }

            string strIdsToDelete = "";

            foreach (int idToDelete in idsToDelete)
            {
                strIdsToDelete += idToDelete + ",";
            }
            if (strIdsToDelete != "")
            {
                strIdsToDelete = strIdsToDelete.Substring(0, strIdsToDelete.Length - 1);
                CListeObjetsDonnees lstToDelete = new CListeObjetsDonnees(ContexteDonnee, typeof(CIntervention), new CFiltreData(CIntervention.c_champId + " in (" + strIdsToDelete + ")"));
                bool bHasStartModeDeconnecte    = ContexteDonnee.BeginModeDeconnecte();
                result = CObjetDonneeAIdNumerique.Delete(lstToDelete);
                if (bHasStartModeDeconnecte)
                {
                    ContexteDonnee.EndModeDeconnecteSansSauvegardeEtSansReject();
                }
            }
            if (result)
            {
                m_mappageSiteListeInter = nouveauMappage;
                result = ContexteDonnee.CommitEdit();
                ContexteDonnee.AcceptChanges();
            }

            return(result);
        }