//-------------------------------------------------------------------- private void itemHistorique_Click(object sender, EventArgs e) { if (sender is CMenuItemAHistorique) { CHistoriqueDocumentGencod historique = ((CMenuItemAHistorique)sender).Historique; CDocumentGED doc = new CDocumentGED(CSc2iWin32DataClient.ContexteCourant); if (!doc.ReadIfExists(historique.IdDocumentGed)) { CFormAlerte.Afficher( I.T("The document|866") + " " + historique.LibelleDocument + " " + I.T("does not exist any more|867"), EFormAlerteType.Erreur); return; } doc.BeginEdit(); doc.AssocieA((CObjetDonneeAIdNumerique)m_objetForGED); CResultAErreur result = doc.CommitEdit(); if (!result) { CFormAlerte.Afficher(result.Erreur); return; } InitPanel(); } }
private void DragDropFiles(string[] strFichiers, CObjetDonneeAIdNumerique objet, CCategorieGED categorie) { CContexteDonnee ctxAppli = CSc2iWin32DataClient.ContexteCourant; using (CContexteDonnee contexte = ctxAppli.GetContexteEdition()) { if (MessageBox.Show(m_lblInfoDragDrop.Text, "", MessageBoxButtons.YesNo) == DialogResult.Yes) { foreach (string strFichier in strFichiers) { if (File.Exists(strFichier)) { string strTitre = Path.GetFileName(strFichier); string strExt = Path.GetExtension(strFichier); if (strExt.Length > 0) { strTitre = strTitre.Remove(strTitre.Length - strExt.Length); } CDocumentGED document = new CDocumentGED(contexte); document.CreateNewInCurrentContexte(); document.Libelle = strTitre; if (objet != null) { document.AssocieA(objet); } if (categorie != null) { CRelationDocumentGED_Categorie rel = new CRelationDocumentGED_Categorie(contexte); rel.CreateNewInCurrentContexte(); rel.Categorie = categorie; rel.Document = document; } CTypeReferenceDocument typeRef = m_cmbModeStockage.SelectedValue as CTypeReferenceDocument; if (typeRef == null) { typeRef = new CTypeReferenceDocument(CTypeReferenceDocument.TypesReference.Fichier); } CProxyGED proxy = new CProxyGED(contexte.IdSession, typeRef.Code); proxy.AttacheToLocal(strFichier); CResultAErreur result = proxy.UpdateGed(); document.ReferenceDoc = result.Data as CReferenceDocument; } } contexte.CommitEdit(); Init(m_elementEdite); } } m_lblInfoDragDrop.Visible = false; }
//----------------------------------------------------------------------------------- private CResultAErreur EnregistrePieceJointeEnGED(MessagePart pieceJointe) { CResultAErreur result = CResultAErreur.True; if (pieceJointe != null && pieceJointe.IsAttachment) { int nIndex = pieceJointe.FileName.LastIndexOf("."); string strExtension = ""; if (nIndex > 0) { strExtension = pieceJointe.FileName.Substring(nIndex + 1); } else { strExtension = "dat"; } byte[] contenuPj = pieceJointe.Body; Stream fluxPJ = new MemoryStream(contenuPj); if (fluxPJ.Length == 0) { return(result); } CSourceDocument srcDoc = new CSourceDocumentStream(fluxPJ, strExtension); CDocumentGED documentAttache = new CDocumentGED(ContexteDonnee); documentAttache.CreateNewInCurrentContexte(); documentAttache.AssocieA(this); documentAttache.Libelle = pieceJointe.FileName; result = CDocumentGED.SaveDocument( ContexteDonnee.IdSession, srcDoc, new CTypeReferenceDocument(CTypeReferenceDocument.TypesReference.Fichier), null, false); srcDoc.Dispose(); if (!result) { return(result); } documentAttache.ReferenceDoc = result.Data as CReferenceDocument; } return(result); }
//-------------------------------------------------------------------------------- private void AddDoc(string strNomFichier, IEnumerable <CCategorieGED> lstCats) { CDocumentGED doc = new CDocumentGED(m_contexteDonnee); doc.CreateNewInCurrentContexte(); doc.Libelle = Path.GetFileName(strNomFichier); foreach (CObjetDonneeAIdNumerique objet in m_wndDocuments.GetListeAssociations(m_source)) { doc.AssocieA(objet); } foreach (CCategorieGED categorie in lstCats) { doc.AddCategory(categorie); } C2iWndDocumentsGed.CInfoAffectationDocumentToGed info = new C2iWndDocumentsGed.CInfoAffectationDocumentToGed(strNomFichier, m_source); CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(info); foreach (CAffectationsProprietes aff in m_wndDocuments.Affectations) { CResultAErreur result = CResultAErreur.True; result.Data = true; if (aff.FormuleCondition != null) { result = aff.FormuleCondition.Eval(ctx); } if (result && result.Data is bool && (bool)result.Data) { result = aff.AffecteProprietes(doc, info, m_fournisseurProprietes); if (!result) { result.EmpileErreur(I.T("Some values cannot be assigned to EDM Document")); CFormAfficheErreur.Show(result.Erreur); } } } CNouveauDoc nouveauDoc = new CNouveauDoc(doc, strNomFichier); m_listeDocuments.Add(doc); m_listeNouveauxDocs.Add(nouveauDoc); UpdateVisuel(); }
//-------------------------------------------------------------------------- private void m_lblDragExisting_DragDrop(object sender, DragEventArgs e) { if (m_elementEdite != null) { CReferenceObjetDonnee[] refs = e.Data.GetData(typeof(CReferenceObjetDonnee[])) as CReferenceObjetDonnee[]; CReferenceObjetDonnee ref1 = e.Data.GetData(typeof(CReferenceObjetDonnee)) as CReferenceObjetDonnee; if (ref1 != null) { List <CReferenceObjetDonnee> lst = new List <CReferenceObjetDonnee>(); lst.Add(ref1); refs = lst.ToArray(); } CObjetDonneeAIdNumerique obj = m_elementEdite as CObjetDonneeAIdNumerique; if (obj != null && refs != null) { using (CContexteDonnee ctx = new CContexteDonnee(obj.ContexteDonnee.IdSession, true, false)) { obj = obj.GetObjetInContexte(ctx) as CObjetDonneeAIdNumerique; foreach (CReferenceObjetDonnee refObj in refs) { CDocumentGED doc = refObj.GetObjet(ctx) as CDocumentGED; if (doc != null) { doc.AssocieA(obj); } } CResultAErreur result = ctx.SaveAll(true); if (!result) { CFormAlerte.Afficher(result.Erreur); } else { Init(m_elementEdite); } } } } }
/// //////////////////////////////////////////////////////// protected override CResultAErreur MyExecute(CContexteExecutionAction contexte) { CResultAErreur result = CResultAErreur.True; CSessionClient sessionClient = CSessionClient.GetSessionForIdSession(contexte.IdSession); if (sessionClient != null) { if (sessionClient.GetInfoUtilisateur().KeyUtilisateur == contexte.Branche.KeyUtilisateur) { using (C2iSponsor sponsor = new C2iSponsor()) { CServiceSurClient service = sessionClient.GetServiceSurClient(c_idServiceSelectMultiForGed); CServiceSurClient serviceGetFile = sessionClient.GetServiceSurClient(CActionCopierLocalDansGed.c_idServiceClientGetFichier); if (service != null && serviceGetFile != null) { sponsor.Register(service); sponsor.Register(serviceGetFile); //Calcule la liste des ids de catégories à gérer List <int> lstIds = new List <int>(); if (FormuleListeCategories != null) { CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(contexte.Branche.Process); contexteEval.AttacheObjet(typeof(CContexteDonnee), contexte.ContexteDonnee); result = FormuleListeCategories.Eval(contexteEval); if (!result) { return(result); } IEnumerable lst = result.Data as IEnumerable; if (lst != null) { foreach (object obj in lst) { if (obj is int) { lstIds.Add((int)obj); } if (obj is CCategorieGED) { lstIds.Add(((CCategorieGED)obj).Id); } } } } result = service.RunService(lstIds); if (result && result.Data is IEnumerable) { List <CDocumentGED> lstDocs = new List <CDocumentGED>(); foreach (object obj in (IEnumerable)result.Data) { CInfoFichierToGed info = obj as CInfoFichierToGed; if (info != null) { string strContenu = info.FileFullName; CSourceDocument sourceDoc = null; result = serviceGetFile.RunService(strContenu); if (!result) { return(result); } sourceDoc = result.Data as CSourceDocument; if (sourceDoc == null) { result.EmpileErreur(I.T("Error while retrieving file @1|20020", strContenu)); return(result); } //On a notre fichier en local, création du document string strCle = ""; string strLibelle = ""; info.ActiveProcess = contexte.Branche.Process; CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(info); if (FormuleCle != null) { result = FormuleCle.Eval(ctxEval); if (result && result.Data != null) { strCle = result.Data.ToString(); } else { result.EmpileErreur(I.T("Document key could not be computed|30050")); return(result); } } if (FormuleLibelleDocument != null) { result = FormuleLibelleDocument.Eval(ctxEval); if (result && result.Data != null) { strLibelle = result.Data.ToString(); } else { result.EmpileErreur(I.T("Document label could not be computed|30051")); return(result); } } if (strLibelle.Length == 0) { strLibelle = info.FileName; } CObjetDonneeAIdNumerique associeA = null; if (FormuleElementAssocie != null) { result = FormuleElementAssocie.Eval(ctxEval); if (result) { associeA = result.Data as CObjetDonneeAIdNumerique; } } CDocumentGED doc = new CDocumentGED(contexte.ContexteDonnee); //Si la clé n'est pas nulle, cherche un document avec cette clé if (strCle.Trim() != "") { CFiltreData filtre = new CFiltreData(CDocumentGED.c_champCle + "=@1", strCle); if (!doc.ReadIfExists(filtre)) { doc.CreateNew(); } else { doc.BeginEdit(); } } else { doc.CreateNew(); } doc.Libelle = strLibelle; doc.Cle = strCle; ArrayList lstToCreate = new ArrayList(); lstToCreate.Add(info.EDMCategoryId); ArrayList lstToDelete = new ArrayList(); //Affecte les catégories CListeObjetsDonnees listeCategoriesExistantes = CRelationDocumentGED_Categorie.GetRelationsCategoriesForDocument(doc); foreach (CRelationDocumentGED_Categorie rel in listeCategoriesExistantes) { if (!lstToCreate.Contains(rel.Categorie.Id)) { lstToDelete.Add(rel); } lstToCreate.Remove(rel.Categorie.Id); } foreach (CRelationDocumentGED_Categorie rel in lstToDelete) { rel.Delete(); } foreach (int nId in lstToCreate) { CCategorieGED cat = new CCategorieGED(doc.ContexteDonnee); if (cat.ReadIfExists(nId)) { CRelationDocumentGED_Categorie rel = new CRelationDocumentGED_Categorie(doc.ContexteDonnee); rel.CreateNewInCurrentContexte(); rel.Categorie = cat; rel.Document = doc; } } result = CDocumentGED.SaveDocument(contexte.IdSession, sourceDoc, sourceDoc.TypeReference, doc.ReferenceDoc, true); if (!result) { return(result); } CReferenceDocument refDoc = result.Data as CReferenceDocument; doc.ReferenceDoc = refDoc; if (associeA != null) { doc.AssocieA(associeA); } result = doc.CommitEdit(); if (!result) { return(result); } lstDocs.Add(doc); } } if (VariableResultat != null) { Process.SetValeurChamp(VariableResultat, lstDocs.ToArray()); } return(result); } } } } } //Utilisateur pas accessible foreach (CLienAction lien in GetLiensSortantHorsErreur()) { if (lien is CLienUtilisateurAbsent) { result.Data = lien; return(result); } } return(result); }
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); }
private CResultAErreur ImportRep(CProjet projetNominal, CProjet projetCandidat, CRepertoire rep, string strPathGed) { CResultAErreur result = CResultAErreur.True; rep.ImportDone = true; strPathGed += "\\" + rep.Nom; CMappingRepToDocSetup map = CMappingRepToDocSetup.GetMapping(rep.Nom); foreach (CFichier fichier in rep.GetChilds <CFichier>()) { if (map == null) { fichier.InfoImport = "No mapping for this directory"; } else { CObjetDonneeAIdNumerique objet = map.GetObjet(projetNominal, projetCandidat, fichier.Nom); if (objet == null) { fichier.InfoImport = "Can not find associated objet for this file"; } else { CCategorieGED cat = map.GetCatégorie(projetNominal.ContexteDonnee); if (cat == null) { fichier.InfoImport = "Can not find EDM category for this file"; } else { string strCode = objet.IdUniversel + "/" + fichier.Nom; CDocumentGED doc = new CDocumentGED(projetNominal.ContexteDonnee); if (!doc.ReadIfExists(new CFiltreData(CDocumentGED.c_champCle + "=@1", strCode))) { doc.CreateNewInCurrentContexte(); } doc.Libelle = fichier.Nom; doc.Cle = strCode; CReferenceDocument refDoc = new CReferenceDocument(); refDoc.TypeReference = new CTypeReferenceDocument(CTypeReferenceDocument.TypesReference.Fichier); refDoc.NomFichier = strPathGed + "\\" + fichier.Nom; doc.ReferenceDoc = refDoc; doc.AddCategory(cat); doc.AssocieA(objet); fichier.SetObjetAssocie(objet); } } } } foreach (CRepertoire child in rep.GetChilds <CRepertoire>()) { result = ImportRep(projetNominal, projetCandidat, child, strPathGed); if (!result) { return(result); } } return(result); }