//------------------------------------------------------------------- public void AssocieDocument(CDocumentGED document) { CRelationDocumentGED_Categorie relation = new CRelationDocumentGED_Categorie(document.ContexteDonnee); CFiltreData filtre = new CFiltreData(CDocumentGED.c_champId + "=@1 and " + c_champId + "=@2", document.Id, Id); if (relation.ReadIfExists(filtre)) { return; } relation.CreateNewInCurrentContexte(); relation.Categorie = this; relation.Document = document; }
public CResultAErreur CopieFichierEnLocal(string strNomFichierLocal) { CResultAErreur result = CResultAErreur.True; if (m_referenceAttachee == null) { return(result); } result = CDocumentGED.GetDocument(m_nIdSession, m_referenceAttachee); if (!result) { return(result); } CSourceDocumentStream source = result.Data as CSourceDocumentStream; if (source != null) { m_fichierLocal.Extension = m_referenceAttachee.GetExtension(); m_fichierLocal.CreateNewFichier(strNomFichierLocal); m_strNomFichierLocal = m_fichierLocal.NomFichier; FileStream stream = new System.IO.FileStream(m_fichierLocal.NomFichier, System.IO.FileMode.Create); result = CStreamCopieur.CopyStream(source.SourceStream, stream, 32000); stream.Close(); stream.Dispose(); source.SourceStream.Close(); source.Dispose(); m_dateTimeFichierInGed = File.GetLastWriteTime(m_strNomFichierLocal); return(result); } CSourceDocumentLienDirect sourceDirecte = result.Data as CSourceDocumentLienDirect; if (sourceDirecte != null) { m_typeReferencePourGed = CTypeReferenceDocument.TypesReference.LienDirect; m_strNomFichierLocal = sourceDirecte.NomFichier; return(result); } return(result); }
//----------------------------------- public IEnumerable <CDocumentGED> GetDocuments(object sourceDeFormule) { Dictionary <CDocumentGED, int> dicDocs = new Dictionary <CDocumentGED, int>(); IEnumerable <CObjetDonneeAIdNumerique> lstObjets = GetListeAssociations(sourceDeFormule); IEnumerable <CCategorieGED> lstCategories = GetListeCategories(sourceDeFormule); //Ne prend que les documents qui sont dans toutes les catégories //et communes à tous les éléments bool bHasCategories = lstCategories.Count() > 0; HashSet <int> setCats = new HashSet <int>(); foreach (CCategorieGED categorie in lstCategories) { AddCategory(categorie, setCats); } foreach (CObjetDonneeAIdNumerique objet in lstObjets) { CListeObjetsDonnees lstDocs = CDocumentGED.GetListeDocumentsForElement(objet); if (bHasCategories) { lstDocs.ReadDependances(CRelationDocumentGED_Categorie.c_nomTable); foreach (CDocumentGED doc in lstDocs) { int nNbCats = 0; foreach (CRelationDocumentGED_Categorie rel in doc.RelationsCategories) { if (setCats.Contains((int)rel.Row[CCategorieGED.c_champId])) { nNbCats++; } } if (nNbCats == lstCategories.Count()) { int nTmp = 0; if (!dicDocs.ContainsKey(doc)) { dicDocs[doc] = 1; } else { nTmp = dicDocs[doc]; dicDocs[doc] = nTmp + 1; } } } } else { foreach (CDocumentGED doc in lstDocs) { if (!dicDocs.ContainsKey(doc)) { dicDocs[doc] = 1; } else { dicDocs[doc] = dicDocs[doc] + 1; } } } } List <CDocumentGED> lstFinale = new List <CDocumentGED>(); int nObjectif = lstObjets.Count(); foreach (KeyValuePair <CDocumentGED, int> kv in dicDocs) { if (kv.Value == nObjectif) { lstFinale.Add(kv.Key); } } lstFinale.Sort((x, y) => x.Libelle.CompareTo(y.Libelle)); return(lstFinale.AsReadOnly()); }
//------------------------------------------------------------------- public static CListeObjetsDonnees GetRelationsCategoriesForDocument(CDocumentGED doc) { return doc.GetDependancesListe(c_nomTable, CDocumentGED.c_champId); }
//--------------------------------------------------------------------- /// <summary> /// Le data du result contient la nouvelle référence au document /// </summary> /// <returns></returns> public CResultAErreur UpdateGed(bool bIncrementeVersionFichier) { CResultAErreur result = CResultAErreur.True; try { //Regarde si le fichier a été modifié try { DateTime dt = File.GetLastWriteTime(m_strNomFichierLocal); if (dt == m_dateTimeFichierInGed) { return(result); } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); result.EmpileErreur(I.T("EDM updating error|112")); return(result); } CSourceDocument sourceDoc = null; switch (TypeReference) { case CTypeReferenceDocument.TypesReference.Fichier: FileStream fs = new FileStream(m_strNomFichierLocal, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); int nIndex = m_strNomFichierLocal.LastIndexOf("."); string strExtension = ""; if (nIndex > 0) { strExtension = m_strNomFichierLocal.Substring(nIndex + 1); } else { strExtension = "dat"; } sourceDoc = new CSourceDocumentStream(fs, strExtension); break; case CTypeReferenceDocument.TypesReference.LienDirect: sourceDoc = new CSourceDocumentLienDirect(m_strNomFichierLocal); break; } if (sourceDoc == null) { result.EmpileErreur(I.T("Error in document transfering to EDM |113")); return(result); } result = CDocumentGED.SaveDocument(m_nIdSession, sourceDoc, new CTypeReferenceDocument(TypeReference), m_referenceAttachee, bIncrementeVersionFichier); sourceDoc.Dispose(); if (result) { m_referenceAttachee = (CReferenceDocument)result.Data; m_dateTimeFichierInGed = File.GetLastWriteTime(m_strNomFichierLocal); } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); result.EmpileErreur(I.T("Error in document transfering to EDM|113")); } return(result); }