//------------------------------------------------------------------- public static void Autoexec() { if (C2iAppliServeur.GetValeur(c_cleDesactivation) == null) { m_timer = new Timer(new TimerCallback(OnTachePlanifiee), null, 4 * 60000, 60000); C2iEventLog.WriteInfo("Gestionnaire d'évenements sur date démarré"); } }
//------------------------------------------------------------------- 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); }