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); } } } }
public void SetPathsForNetworkLinkExt2(CSchemaReseau[] schemas) { CListeObjetsDonnees lst = TousCheminsExtremite1; CObjetDonneeAIdNumerique.Delete(lst, true); CreateChemin(schemas, EExtremiteLienReseau.Deux); }
//---------------------------------------------------------- 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); }
//------------------------------------------------------------------------- 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); }
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); }
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); } }
//--------------------------------------------- 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); } } }
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); }
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()); }
/// //////////////////////////////////////////////////////// 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); }
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; }
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); }
//----------------------------------------------------------------- /// <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); }
//--------------------------------------------- public void ClearSelections() { CListeObjetsDonnees lst = RelationsElementsSelectionnes; CObjetDonneeAIdNumerique.Delete(lst, true); }
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); }