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; }
//------------------------------------------------------------------- public CResultAErreur SaveDocument(CSourceDocument source, CTypeReferenceDocument typeReference, CReferenceDocument versionPrecedente, bool bIncrementeVersionFichier) { CResultAErreur result = CResultAErreur.True; //Copie du fichier try { switch (typeReference.Code) { case CTypeReferenceDocument.TypesReference.Fichier: if (!(source is CSourceDocumentStream)) { result.EmpileErreur(I.T("Document type '@1' source not supported|109", source.GetType().Name)); return(result); } string strNomFichier = ""; if (versionPrecedente != null) { strNomFichier = versionPrecedente.NomFichier; strNomFichier = strNomFichier.Replace("..", "."); //Correction erreurs passées if (bIncrementeVersionFichier) { strNomFichier = IncNomFichier(strNomFichier); } string strExt = ((CSourceDocumentStream)source).Extension; if (strExt.ToUpper() != "DAT") { strNomFichier = ChangeExtension(strNomFichier, ((CSourceDocumentStream)source).Extension); } } else { string strPath = DateTime.Now.Year.ToString() + "\\"; strPath += DateTime.Now.Month.ToString() + "\\"; strPath += DateTime.Now.Day.ToString() + "\\"; strNomFichier = strPath + CGenerateurStringUnique.GetNewNumero(m_nIdSession) + "_0."; strNomFichier += ((CSourceDocumentStream)source).Extension; } //S'assure que le chemin du fichier existe string[] strChemins = strNomFichier.Split('\\'); int nChemin = 0; string strTemp = m_strPath; foreach (string strChemin in strChemins) { if (nChemin < strChemins.Length - 1) { if (!Directory.Exists(m_strPath + strChemin)) { Directory.CreateDirectory(strTemp + strChemin); } strTemp += strChemin + "\\"; } nChemin++; } if (strNomFichier.LastIndexOf('.') < 0) { strNomFichier += ((CSourceDocumentStream)source).Extension; } if (File.Exists(m_strPath + strNomFichier)) { File.Delete(m_strPath + strNomFichier); } FileStream stream = new FileStream(m_strPath + strNomFichier, FileMode.CreateNew); Stream sourceStream = ((CSourceDocumentStream)source).SourceStream; result = CStreamCopieur.CopyStream(sourceStream, stream, 32000); if (!result) { File.Delete(strNomFichier); return(result); } CReferenceDocument referenceFinale = new CReferenceDocument(); referenceFinale.NomFichier = strNomFichier; referenceFinale.CodeTypeReference = CTypeReferenceDocument.TypesReference.Fichier; referenceFinale.TailleFichier = (int)new FileInfo(m_strPath + strNomFichier).Length; m_listeReferencesTemporaires.Add(new CReferenceTemporaire(referenceFinale)); if (m_timerNettoyage == null && C2iAppliServeur.GetValeur(c_cleDesactivationNettoyage) != null) { m_timerNettoyage = new Timer(new TimerCallback(NettoyageTemporaires), null, 1000 * 60 * 30, 1000 * 60 * 30); } result.Data = referenceFinale; break; case CTypeReferenceDocument.TypesReference.LienDirect: //Vérifie que le lien est accessible depuis le serveur CSourceDocumentLienDirect sourceDirecte = source as CSourceDocumentLienDirect; if (sourceDirecte == null) { result.EmpileErreur(I.T("Document type '@1' source not supported|109", source.GetType().Name)); return(result); } CReferenceDocument referenceFinaleLien = new CReferenceDocument(); referenceFinaleLien.NomFichier = sourceDirecte.NomFichier; referenceFinaleLien.CodeTypeReference = CTypeReferenceDocument.TypesReference.LienDirect; referenceFinaleLien.TailleFichier = (int)new FileInfo(sourceDirecte.NomFichier).Length; if (!File.Exists(sourceDirecte.NomFichier)) { result.EmpileErreur("File @1 cannot be stored in EDM, it can not be reached from server|20000", sourceDirecte.NomFichier); return(result); } result.Data = referenceFinaleLien; break; default: result.EmpileErreur(I.T("File reference type @1 not supported|110", typeReference.ToString())); return(result); } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); result.EmpileErreur(I.T("Error while saving EDM |111")); } return(result); }