public CreateZip ( Stream outputStream, string sourceDirectory, bool recurse, string fileFilter, string directoryFilter ) : void | ||
outputStream | Stream | The stream to write archive data to. |
sourceDirectory | string | The directory to source files from. |
recurse | bool | True to recurse directories, false for no recursion. |
fileFilter | string | The |
directoryFilter | string | The |
return | void |
public Program() { string[] dirs=Directory.GetDirectories("."); foreach (string dir in dirs) { DataBase.AnimatedBitmap an = new DataBase.AnimatedBitmap(); an._Name =Path.GetFileName(dir); foreach (string file in Directory.GetFiles(dir)) if (Regex.IsMatch(Path.GetExtension(file), "jpg|png", RegexOptions.IgnoreCase)) an._Bitmaps.Add(file.Replace(@"\", "/","./","")); if (an._Bitmaps.Count > 0) { Image img = Bitmap.FromFile(an._Bitmaps.First()); an._Width = img.Width; an._Height = img.Height; _DataBase._AnimatedBitmaps.Add(an); } } Common._XmlSerializer.Serialize("./db.xml", _DataBase); FastZip _FastZip = new FastZip(); _FastZip.CreateZip("content.zip","./",true,@"\.jpg|\.png|.\xml"); }
public void gerarZipDiretorio(string sDiretorioOrigem, string sDiretorioDestino) { FastZip sz = new FastZip(); try { string sArquivoZip = string.Empty; //Aqui vou criar um nome do arquivo. DateTime newDate = DateTime.Now; sArquivoZip = "MeuZip_" + Convert.ToString(newDate).Replace("/", "_").Replace(":", "") + ".zip"; //Só um tratamento para garantir mais estabilidade if (sDiretorioOrigem.Substring(sDiretorioOrigem.Length - 2) != "\\" || sDiretorioDestino.Substring(sDiretorioDestino.Length - 2) != "\\") { sDiretorioOrigem = sDiretorioOrigem + "\\"; } sz.Password = txtDiretorioZipSenha.Text; //Gera o ZIP sz.CreateZip(sDiretorioDestino + sArquivoZip, sDiretorioOrigem + "" + "\\", true, "", ""); } catch (Exception ex) { MessageBox.Show("Ocorreu um erro durante o processo de compactação : " + ex); } finally { //Limpa o Objeto sz = null; } }
/// <summary> /// 压缩文件夹 /// </summary> /// <param name="_fileForlder">文件夹路径</param> /// <param name="_outZip">zip文件路径+名字</param> public void ZipFolder(string _fileFolder, string _outZip) { string directory = _outZip.Substring(0, _outZip.LastIndexOf('/')); if (!Directory.Exists(directory)) Directory.CreateDirectory(directory); if (File.Exists(_outZip)) File.Delete(_outZip); progress = progressOverall = 0; Thread thread = new Thread(delegate () { int fileCount = FileCount(_fileFolder); int fileCompleted = 0; FastZipEvents events = new FastZipEvents(); events.Progress = new ProgressHandler((object sender, ProgressEventArgs e) => { progress = e.PercentComplete; if (progress == 100) { fileCompleted++; progressOverall = 100 * fileCompleted / fileCount; } }); events.ProgressInterval = TimeSpan.FromSeconds(progressUpdateTime); events.ProcessFile = new ProcessFileHandler( (object sender, ScanEventArgs e) => { }); FastZip fastZip = new FastZip(events); fastZip.CreateZip(_outZip, _fileFolder, true, ""); }); thread.IsBackground = true; thread.Start(); }
public static void BackupNow(MCServer s) { Database.AddLog("Backing up " + s.ServerTitle, "backup"); //Check for a backup dir and create if not if (!Directory.Exists(s.ServerDirectory + @"\backups\")) Directory.CreateDirectory(s.ServerDirectory + @"\backups\"); //Force a save s.Save(); s.DisableSaving(); //Copy world to a temp Dir if (Directory.Exists(Core.StoragePath + s.ServerID.ToString() + @"\backups\temp\")) Directory.Delete(Core.StoragePath + s.ServerID.ToString() + @"\backups\temp\", true); if (!Directory.Exists(Core.StoragePath + s.ServerID.ToString() + @"\backups\temp\")) Directory.CreateDirectory(Core.StoragePath + s.ServerID.ToString() + @"\backups\temp\"); Util.Copy(s.ServerDirectory + @"\world\", s.ServerDirectory + @"\backups\temp\"); //Re-enable saving then force another save s.EnableSaving(); s.Save(); //Now zip up temp dir and move to backups FastZip z = new FastZip(); z.CreateEmptyDirectories = true; z.CreateZip(s.ServerDirectory + @"\backups\" + DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + "-" + DateTime.Now.Hour + "-" + DateTime.Now.Minute + ".zip", s.ServerDirectory + @"\backups\temp\", true, ""); //If the server is empty, reset the HasChanged if (s.Players.Count == 0) s.HasChanged = false; }
public static void BackupNow(MCServer s, string strAppendName = "") { Database.AddLog("Backing up " + s.ServerTitle, "backup"); //Check for a backup dir and create if not if (!Directory.Exists(s.ServerDirectory + @"\backups\")) Directory.CreateDirectory(s.ServerDirectory + @"\backups\"); //Force a save s.Save(); s.DisableSaving(); //Find all the directories that start with "world" if (Directory.Exists(Core.StoragePath + s.ServerID.ToString() + @"\backups\temp\")) Directory.Delete(Core.StoragePath + s.ServerID.ToString() + @"\backups\temp\", true); if (!Directory.Exists(Core.StoragePath + s.ServerID.ToString() + @"\backups\temp\")) Directory.CreateDirectory(Core.StoragePath + s.ServerID.ToString() + @"\backups\temp\"); string[] dirs = Directory.GetDirectories(s.ServerDirectory, "world*"); foreach (string dir in dirs) { //Copy world to a temp Dir DirectoryInfo thisDir = new DirectoryInfo(dir); Util.Copy(dir, s.ServerDirectory + @"\backups\temp\" + thisDir.Name); } //Re-enable saving then force another save s.EnableSaving(); s.Save(); //Now zip up temp dir and move to backups FastZip z = new FastZip(); z.CreateEmptyDirectories = true; z.CreateZip(s.ServerDirectory + @"\backups\" + DateTime.Now.Year + "-" + DateTime.Now.Month.ToString("D2") + "-" + DateTime.Now.Day.ToString("D2") + "-" + DateTime.Now.Hour.ToString("D2") + "-" + DateTime.Now.Minute.ToString("D2") + strAppendName + ".zip", s.ServerDirectory + @"\backups\temp\", true, ""); //If the server is empty, reset the HasChanged if (s.Players.Count == 0) s.HasChanged = false; }
/// <summary>压缩文件</summary> /// <param name="filename">filename生成的文件的名称,如:C:\RAR\075_20110820153200001-1.rar</param> /// <param name="directory">directory要压缩的文件夹路径,如:C:\OA</param> /// <returns></returns> public static bool PackFiles(string filename, string directory) { try { directory = directory.Replace("/", "\\"); if (!directory.EndsWith("\\")) directory += "\\"; if (!System.IO.Directory.Exists(directory)) { System.IO.Directory.CreateDirectory(directory); } if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } FastZip fz = new FastZip(); fz.CreateEmptyDirectories = true; fz.CreateZip(filename, directory, true, ""); return true; } catch (Exception) { return false; } }
private static async Task MergeFile( MergeParams p ) { var zf = new FastZip(); using ( var s = File.OpenWrite( p.DestImg ) ) { s.Seek( 0, SeekOrigin.End ); zf.CreateZip( s, Path.GetDirectoryName( p.DataSource ), false, Path.GetFileName( p.DataSource ), "" ); } }
private void saveToolStripMenuItem_Click(object sender, EventArgs e) { SavePangyaPicture("front", FrontImg); SavePangyaPicture("back", BackImg); bool existsicon = System.IO.File.Exists("C:\\Windows\\Temp\\davedevils\\" + ActualFileSD + "\\icon"); if (existsicon) { SavePangyaPicture("icon", IconImg); } ICSharpCode.SharpZipLib.Zip.FastZip z = new ICSharpCode.SharpZipLib.Zip.FastZip(); z.CreateEmptyDirectories = false; z.CreateZip(ActualFileSD + ".jpg", "C:\\Windows\\Temp\\davedevils\\" + ActualFileSD, true, ""); if (File.Exists(ActualFileSD + ".jpg")) { MessageBox.Show("Saved at " + ActualFileSD + ".jpg"); } else { MessageBox.Show("Save has fail :("); } }
public static Boolean ZipFolder(String folder, String zipFile) { if (!Directory.Exists(folder)) { Debug.WriteLine("Cannot find directory '{0}'", folder); return(false); } try { ICSharpCode.SharpZipLib.Zip.FastZip z = new ICSharpCode.SharpZipLib.Zip.FastZip(); z.CreateEmptyDirectories = true; z.CreateZip(zipFile, folder, true, ""); if (File.Exists(zipFile)) { return(true); } } catch (Exception ex) { Debug.WriteLine("Exception during processing {0}", ex); } return(false); }
public static void ZipDir(string strDir, string strZipFile) { FastZip fz = new FastZip(); fz.CreateEmptyDirectories = true; fz.CreateZip(strZipFile, strDir, true, ""); fz = null; }
private void buttonCreateBackup_Click(object sender, EventArgs e) { if (Directory.Exists("_backup")) Directory.Delete("_backup", true); Directory.CreateDirectory("_backup"); // prompt user for backup filename SaveFileDialog saveBackup = new SaveFileDialog(); saveBackup.Filter = "SnakeBite Backup|*.sbb"; DialogResult saveResult = saveBackup.ShowDialog(); if (saveResult != DialogResult.OK) return; // copy current settings objSettings.SaveSettings(); File.Copy(ModManager.GameDir + "\\sbmods.xml", "_backup\\sbmods.xml"); // copy current 01.dat File.Copy(ModManager.GameArchivePath, "_backup\\01.dat"); // compress to backup FastZip zipper = new FastZip(); zipper.CreateZip(saveBackup.FileName, "_backup", true, "(.*?)"); Directory.Delete("_backup", true); MessageBox.Show("Backup complete.", "SnakeBite", MessageBoxButtons.OK, MessageBoxIcon.Information); }
/// <summary> /// Writes the specified directory to a new zip file. /// </summary> /// <param name="sourceDirectory">Directory with files to add.</param> /// <param name="zipFileName">Output file name.</param> public static void Zip(string sourceDirectory, string zipFileName) { FastZip fastZip = new FastZip(); fastZip.RestoreAttributesOnExtract = true; fastZip.RestoreDateTimeOnExtract = true; fastZip.CreateZip(zipFileName, sourceDirectory, true, null); }
public ReleasePackage CreateDeltaPackage(ReleasePackage basePackage, ReleasePackage newPackage, string outputFile) { Contract.Requires(basePackage != null); Contract.Requires(!String.IsNullOrEmpty(outputFile) && !File.Exists(outputFile)); if (basePackage.Version > newPackage.Version) { var message = String.Format( "You cannot create a delta package based on version {0} as it is a later version than {1}", basePackage.Version, newPackage.Version); throw new InvalidOperationException(message); } if (basePackage.ReleasePackageFile == null) { throw new ArgumentException("The base package's release file is null", "basePackage"); } if (!File.Exists(basePackage.ReleasePackageFile)) { throw new FileNotFoundException("The base package release does not exist", basePackage.ReleasePackageFile); } if (!File.Exists(newPackage.ReleasePackageFile)) { throw new FileNotFoundException("The new package release does not exist", newPackage.ReleasePackageFile); } string baseTempPath = null; string tempPath = null; using (Utility.WithTempDirectory(out baseTempPath, null)) using (Utility.WithTempDirectory(out tempPath, null)) { var baseTempInfo = new DirectoryInfo(baseTempPath); var tempInfo = new DirectoryInfo(tempPath); this.Log().Info("Extracting {0} and {1} into {2}", basePackage.ReleasePackageFile, newPackage.ReleasePackageFile, tempPath); var fz = new FastZip(); fz.ExtractZip(basePackage.ReleasePackageFile, baseTempInfo.FullName, null); fz.ExtractZip(newPackage.ReleasePackageFile, tempInfo.FullName, null); // Collect a list of relative paths under 'lib' and map them // to their full name. We'll use this later to determine in // the new version of the package whether the file exists or // not. var baseLibFiles = baseTempInfo.GetAllFilesRecursively() .Where(x => x.FullName.ToLowerInvariant().Contains("lib" + Path.DirectorySeparatorChar)) .ToDictionary(k => k.FullName.Replace(baseTempInfo.FullName, ""), v => v.FullName); var newLibDir = tempInfo.GetDirectories().First(x => x.Name.ToLowerInvariant() == "lib"); foreach (var libFile in newLibDir.GetAllFilesRecursively()) { createDeltaForSingleFile(libFile, tempInfo, baseLibFiles); } ReleasePackage.addDeltaFilesToContentTypes(tempInfo.FullName); fz.CreateZip(outputFile, tempInfo.FullName, true, null); } return new ReleasePackage(outputFile); }
protected void btnExport_Click(object sender, EventArgs e) { //try //{ string zipFileName = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + @"\OSAE\OSA_Logs.zip"; FastZip fastZip = new FastZip(); if (File.Exists(zipFileName)) File.Delete(zipFileName); fastZip.CreateZip(zipFileName, Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + @"\OSAE\Logs", true, ""); Response.Clear(); Response.ClearHeaders(); Response.ClearContent(); Response.AddHeader("Content-Disposition", "attachment; filename=OSA_Logs.zip"); Response.AddHeader("Content-Length", new FileInfo(zipFileName).Length.ToString()); Response.ContentType = "application/octet-stream"; Response.Flush(); Response.TransmitFile(zipFileName); Response.End(); ///} //catch (Exception ex) //{ // not going to do anything as the file may be in use so just carry on //} }
public void Basics() { const string tempName1 = "a(1).dat"; MemoryStream target = new MemoryStream(); string tempFilePath = GetTempFilePath(); Assert.IsNotNull(tempFilePath, "No permission to execute this test?"); string addFile = Path.Combine(tempFilePath, tempName1); MakeTempFile(addFile, 1); try { FastZip fastZip = new FastZip(); fastZip.CreateZip(target, tempFilePath, false, @"a\(1\)\.dat", null); MemoryStream archive = new MemoryStream(target.ToArray()); using (ZipFile zf = new ZipFile(archive)) { Assert.AreEqual(1, zf.Count); ZipEntry entry = zf[0]; Assert.AreEqual(tempName1, entry.Name); Assert.AreEqual(1, entry.Size); Assert.IsTrue(zf.TestArchive(true)); zf.Close(); } } finally { File.Delete(tempName1); } }
public void createZip(string source, string zipFile) { ICSharpCode.SharpZipLib.Zip.FastZip z = new ICSharpCode.SharpZipLib.Zip.FastZip(); z.CreateEmptyDirectories = true; z.RestoreAttributesOnExtract = true; z.RestoreDateTimeOnExtract = true; z.CreateZip(zipFile, source, true, ""); }
private static async Task MergeDirectory( MergeParams p ) { using ( var s = File.OpenWrite( p.DestImg ) ) { s.Seek( 0, SeekOrigin.End ); var zf = new FastZip { CreateEmptyDirectories = true }; zf.CreateZip( s, Path.GetDirectoryName( p.DataSource ), true, "*", Path.GetFileName( p.DataSource ) ); } }
public string ZipDirectory(string path) { string zipPath = path + @"..\" + "空白詢價單.zip"; ICSharpCode.SharpZipLib.Zip.FastZip z = new ICSharpCode.SharpZipLib.Zip.FastZip(); z.CreateEmptyDirectories = true; z.CreateZip(zipPath, path, true, ""); return(zipPath); }
/// <summary> /// 压缩目录 /// </summary> /// <param name="args">数组(数组[0]: 要压缩的目录; 数组[1]: 压缩的文件名)</param> public static void ZipFileDictory(string[] args) { try { FastZip fastZip = new FastZip(); bool recurse = true; //压缩后的文件名,压缩目录 ,是否递归 //BZip2.Compress(File.OpenRead(args[0]),File.Create(args[1]),4096); fastZip.CreateZip(args[1], args[0], recurse, ""); } catch (Exception ex) { throw ex; } //string[] filenames = Directory.GetFiles(args[0]); //Crc32 crc = new Crc32(); //ZipOutputStream s = new ZipOutputStream(File.Create(args[1])); //s.SetLevel(6); //foreach (string file in filenames) //{ // //打开压缩文件 // FileStream fs = File.OpenRead(file); // byte[] buffer = new byte[fs.Length]; // fs.Read(buffer, 0, buffer.Length); // ZipEntry entry = new ZipEntry(file); // entry.DateTime = DateTime.Now; // entry.Size = fs.Length; // fs.Close(); // crc.Reset(); // crc.Update(buffer); // entry.Crc = crc.Value; // s.PutNextEntry(entry); // s.Write(buffer, 0, buffer.Length); //} //s.Finish(); //s.Close(); }
/// <summary>Creates the archive</summary> /// <param name="sourcePath">The path to create the archive from.</param> public void WriteArchive(string sourcePath) { if (File.Exists(this.ArchiveFilePath)) File.Delete(this.ArchiveFilePath); FastZip fastZip = new FastZip(); fastZip.CreateZip(this.ArchiveFilePath, sourcePath, true, null); ArchiveMeta meta = new ArchiveMeta(); string contents = Serialize(meta); File.WriteAllText(this.ConfigFilePath, contents); }
/// <summary> /// 压缩 /// </summary> /// <param name="_localPath">待压缩的目录或文件</param> /// <param name="_zipFileName">压缩后的目录文件</param> public static void compress(string _localPath, string _zipFileName) { string localPath = _localPath; //待压缩的目录或文件 string zipFileName = _zipFileName; //压缩后的目录文件 // Export the directory tree from SVN server. //localPath = System.IO.Path.Combine(localPath, Guid.NewGuid().ToString()); // Zip it into a memory stream. var zip = new ICSharpCode.SharpZipLib.Zip.FastZip(); zip.CreateZip(zipFileName, localPath, true, string.Empty, string.Empty); }
public void Action(object sender, EventArgs args) { lock (LOCK) { long id = Interlocked.Increment(ref myFileId); string tmpFile = GetTmpDir(); if (!Directory.Exists(tmpFile)) Directory.CreateDirectory(tmpFile); string tmpFileOutput = tmpFile + "_output"; if (!Directory.Exists(tmpFileOutput)) Directory.CreateDirectory(tmpFileOutput); try { Logger.LogMessage("Begin backing up"); FastZip zip = new FastZip(); zip.CreateEmptyDirectories = true; List<string> zipFiles = new List<string>(); foreach (string folder in Config.Instance.BackupFolders) { string zipFile = Path.Combine(tmpFile, Path.GetFileName(folder) + ".zip"); zip.CreateZip(zipFile, folder, true, null); zipFiles.Add(zipFile); } string backUp = Path.Combine(tmpFileOutput, "backup_" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + ".zip"); Logger.LogMessage("Create Backup file"); FastZip z = new FastZip(); z.CreateZip(backUp, tmpFile, true, null); foreach (string file in zipFiles) { File.Delete(file); } Logger.LogMessage("Publishing backup"); FireAtrifact(id, backUp, true); File.Delete(backUp); } finally { Directory.Delete(tmpFile); Directory.Delete(tmpFileOutput); } } }
/// <summary> /// 压缩 /// </summary> /// <param name="filename"> 压缩后的文件名(包含物理路径)</param> /// <param name="directory">待压缩的文件夹(包含物理路径)</param> public static void PackFiles(string filename, string directory) { try { FastZip fz = new FastZip(); fz.CreateEmptyDirectories = true; fz.CreateZip(filename, directory, true, ""); fz = null; } catch (Exception) { throw; } }
public PackageMaster Zip(string zipFileNameFormat, params object[] args) { lastZipFileName = string.Format( CultureInfo.InvariantCulture, zipFileNameFormat, args); lastZipFileName = new PathBuilder(packagingDir).Add(lastZipFileName); FastZip zip = new FastZip(); zip.CreateZip(lastZipFileName, packagingDirTemp, true, null, null); return this; }
public void Deploy() { FileTask.CreateDir(DeployDir); FileTask.CopyDir(shake.Project.Directory, BuildDir, null, new[] { "LICENSE.txt", "README.txt" }); FileTask.CopyDir(shake.Project.DirectoryCombine("doc"), Path.Combine(BuildDir, "Documentation")); FileTask.CopyDir(shake.Project.DirectoryCombine(@"src\Shake.Samples"), Path.Combine(BuildDir, "Samples")); var zipName = string.Format("shake-{0}-{1}-{2}-bin.zip", AsmVer.Major, AsmVer.Minor, AsmVer.Build); var zip = new FastZip(); zip.CreateZip(Path.Combine(DeployDir, zipName), BuildDir, true, ""); FileTask.RemoveDir(BuildDir); }
/// <summary> /// 创建补丁 /// </summary> /// <param name="path">差异化文件路径</param> /// <param name="suffix">附加后缀</param> /// <param name="compress">是否压缩</param> /// <param name="onStep"></param> /// <param name="onEnd"></param> public void CreatePatch(List <string> path, string prefix, string suffix, bool compress = false, Action <int, int> onStep = null, Action <string> onEnd = null) { if (string.IsNullOrEmpty(Info.DiffPatchPath)) { if (onEnd != null) { onEnd.Invoke(""); } return; } ; string targetPath = Path.Combine(Info.DiffPatchPath, string.Format("{0}_{1}_{2}_{3}", prefix, Info.LastVersion, DateTime.Now.ToString("yyyyMMdd-HHmm-ss"), suffix)); if (Directory.Exists(targetPath)) { Directory.Delete(targetPath, true); } Directory.CreateDirectory(targetPath); Thread thread = new Thread(new ThreadStart(() => { string tempPath; for (int i = 0; i < path.Count; i++) { if (onStep != null) { onStep.Invoke(i, path.Count); } tempPath = Info.CreatePatchUseLeftFile.Contains(path[i]) ? GetLeftPathByRightPath(Info.LeftComprePath, Info.RightComprePath, path[i]) : path[i]; Copy(tempPath, GetLeftPathByRightPath(targetPath, Info.RightComprePath, path[i])); } if (compress) { ICSharpCode.SharpZipLib.Zip.FastZip zip = new ICSharpCode.SharpZipLib.Zip.FastZip(); zip.CreateZip(targetPath + ".zip", targetPath, true, ""); Directory.Delete(targetPath, true); if (onEnd != null) { onEnd.Invoke(Path.GetDirectoryName(targetPath)); } } else if (onEnd != null) { onEnd.Invoke(targetPath); } })); thread.Start(); }
public void CreateExceptions() { FastZip fastZip = new FastZip(); string tempFilePath = GetTempFilePath(); Assert.IsNotNull(tempFilePath, "No permission to execute this test?"); string addFile = Path.Combine(tempFilePath, "test.zip"); try { fastZip.CreateZip(addFile, @"z:\doesnt exist", false, null); } finally { File.Delete(addFile); } }
public static void Pack(string path) { var sourcePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); sourcePath = Path.Combine(sourcePath, Path.GetFileNameWithoutExtension(path)); sourcePath = sourcePath + ".htp"; var destPath = Path.Combine(Warehouse.Warehouse.ProjectEditorLocation, Path.GetFileNameWithoutExtension(path)); destPath = destPath + ".htp"; var fz = new FastZip { CreateEmptyDirectories = true }; fz.CreateZip(sourcePath, Warehouse.Warehouse.ProjectEditorLocation, true, ""); File.Move(sourcePath, destPath); }
internal static bool ArchiveFilm(IMLItem item, DirectoryInfo parent, string archiveLocation) { if (!Settings.ArchiveWatchedFilms) return false; FastZip fz = new FastZip(); if (Helpers.GetTagValueFromItem(item, "Watched") != "true" && Helpers.GetTagValueFromItem(item, "Watched") != "True") return false; Helpers.UpdateProgress("Updating Films Section...", "Archiving watched film " + item.Name + "...", item); try { string year = String.Empty; if ( !String.IsNullOrEmpty(Helpers.GetTagValueFromItem(item, "Year") ) ) year = " (" + Helpers.GetTagValueFromItem(item, "Year") + ")"; if (!archiveLocation.EndsWith("\\")) archiveLocation = archiveLocation + "\\"; //TODO: Use Path.Combine string zipFile = archiveLocation + parent.Name + year + ".zip"; fz.CreateZip(zipFile, parent.FullName, true, ".*"); Directory.Delete(parent.FullName, true); } catch (Exception e) { Debugger.LogMessageToFile( "An unexpected error ocurred in the Film Archiving process. " + "The error was: " + e ); } return true; }
public static void GenerateMgsv(string MgsvFile, string ModName, string SourceFolder) { ModEntry metaData = new ModEntry(); metaData.Name = ModName; metaData.Author = "SnakeBite"; metaData.MGSVersion.Version = "0.0.0.0"; metaData.SBVersion.Version = "0.8.0.0"; metaData.Version = "[QM]"; metaData.Description = "[Generated by SnakeBite]"; metaData.Website = ""; List<ModFpkEntry> fpkEntries = new List<ModFpkEntry>(); List<ModQarEntry> qarEntries = new List<ModQarEntry>(); foreach(var File in Directory.GetFiles(SourceFolder, "*", SearchOption.AllDirectories)) { string ShortFileName = File.Substring(SourceFolder.Length + 1); if(File.ToLower().Contains(".fpk")) { // do fpk var fpkCont = GzsLib.ListArchiveContents<FpkFile>(File); foreach(var fpkFile in fpkCont) { fpkEntries.Add(new ModFpkEntry() { FpkFile = ShortFileName, FilePath = fpkFile, SourceType = FileSource.Mod }); } } else { // do qar qarEntries.Add(new ModQarEntry() { FilePath = ShortFileName, SourceType = FileSource.Mod }); } } metaData.ModQarEntries = qarEntries; metaData.ModFpkEntries = fpkEntries; metaData.SaveToFile(Path.Combine(SourceFolder, "metadata.xml")); FastZip makeZip = new FastZip(); makeZip.CreateZip(MgsvFile, SourceFolder, true, ".*"); }
/// <summary> /// zip压缩文件 /// </summary> /// <param name="pathToPack">将要被压缩的文件夹(绝对路径)</param> /// <param name="packedToPath">压缩包放到哪个路径下,如路径不存在会自动创建</param> /// <param name="filename">压缩包的名字,要有后缀.zip</param> /// <param name="filter">排除文件</param> /// <returns></returns> public static bool PackFiles(string pathToPack,string packedToPath, string filename,string filter="") { try { FastZip fz = new FastZip(); fz.CreateEmptyDirectories = true; if (!Directory.Exists(packedToPath)) { Directory.CreateDirectory(packedToPath); } string filePath = Path.Combine(packedToPath, filename); fz.CreateZip(filePath, pathToPack, true, filter); fz = null; return true; } catch(Exception e) { throw e; } }
//压缩文件夹 public static void ZipDir(string DirToZip, string ZipedFile) { if (ZipedFile == string.Empty) { ZipedFile = DirToZip.Substring(DirToZip.LastIndexOf("\\") + 1); ZipedFile = ZipedFile + ".zip"; } //else //{ // if (Path.GetExtension(ZipedFile) != ".zip") // { // ZipedFile = ZipedFile + ".zip"; // } // ZipedFile = Path.GetDirectoryName(DirToZip) + "\\" + ZipedFile; //} FastZip fastzip = new FastZip(); //// Create Empty Directory fastzip.CreateEmptyDirectories = true; fastzip.CreateZip(ZipedFile, DirToZip, true, string.Empty); //MessageBox.Show("ok"); }
public static string PackagePlugin(string PluginDescriptionFilePath, string Extension) { string tempfile = Path.GetTempFileName(); string zipFileName = Path.Combine(Path.GetDirectoryName(PluginDescriptionFilePath), Path.GetFileNameWithoutExtension(PluginDescriptionFilePath)) + Extension; string sourceDirectory = Path.GetDirectoryName(PluginDescriptionFilePath); FastZip fastZip = new FastZip(); try { fastZip.CreateZip(tempfile, sourceDirectory, true, ""); if (File.Exists(zipFileName)) File.Delete(zipFileName); File.Move(tempfile, zipFileName); return zipFileName; } catch (Exception ex) { System.Diagnostics.Trace.WriteLine(ex.Message, "Log"); } return null; }
public void CreateUpdateZip(IndicatorUpdateResult indicatorUpdateResult, string filename) { // create directory string path = Path.GetDirectoryName(filename); string tmpDir = path + @"\tmpUpdateZip"; Directory.CreateDirectory(tmpDir); // sql file var sb = new StringBuilder(); foreach (var s in indicatorUpdateResult.SqlStatements) { sb.AppendLine(s); } File.WriteAllText(tmpDir + @"\sql.txt", sb.ToString()); // move original file to zip System.IO.File.Copy(indicatorUpdateResult.OriginalFile, tmpDir + @"\source.xlsx", true); // create translation update file CreateTranslationsFile(indicatorUpdateResult.IndicatorTranslations, tmpDir + @"\translations.xlsx"); // zip FastZip fastZip = new FastZip(); fastZip.CreateZip(filename, tmpDir, true, null); // delete old directory System.IO.Directory.Delete(tmpDir, true); }
public override Task Invoke(IOwinContext context) { var path = FileSystem.MapPath(_options.BasePath, context.Request.Path.Value); var ext = Path.GetExtension(path); if (CanHandle(ext, context.Request.Path.Value)) { Trace.WriteLine("Invoke DownloadMiddlewar"); var filename = Path.GetFileName(path); var folderPath = Path.Combine(_options.BasePath, "downloads"); context.Response.StatusCode = 200; context.Response.ContentType = MimeTypeService.GetMimeType(".zip"); context.Response.Headers.Add("Content-Disposition", new[] { String.Format("attachment; filename={0}.zip", filename) }); var fastZip = new FastZip(); fastZip.CreateZip(context.Response.Body, folderPath, false, filename, null); return Globals.CompletedTask; } return Next.Invoke(context); }
public static void BuildArchive(string SourceDir, ModEntry metaData, string OutputFile) { if (Directory.Exists("_build")) Directory.Delete("_build", true); // build FPKs metaData.ModFpkEntries = new List<ModFpkEntry>(); foreach (string FpkDir in ListFpkFolders(SourceDir)) { foreach (ModFpkEntry fpkEntry in BuildFpk(FpkDir, SourceDir)) { metaData.ModFpkEntries.Add(fpkEntry); } } // build QAR entries metaData.ModQarEntries = new List<ModQarEntry>(); foreach (string qarFile in ListQarFiles(SourceDir)) { string subDir = qarFile.Substring(0, qarFile.LastIndexOf("\\")); // the subdirectory for XML output subDir = subDir.Substring(SourceDir.Length); string qarFilePath = Tools.ToQarPath(qarFile.Substring(SourceDir.Length)); if (!Directory.Exists("_build" + subDir)) Directory.CreateDirectory("_build" + subDir); // create file structure File.Copy(qarFile, "_build" + qarFile.Substring(SourceDir.Length), true); metaData.ModQarEntries.Add(new ModQarEntry() { FilePath = qarFilePath, Compressed = qarFile.Substring(qarFile.LastIndexOf(".") + 1).Contains("fpk") ? true : false, ContentHash = Tools.HashFile(qarFile) }); } metaData.SBVersion = "400"; // 0.4.0.0 metaData.SaveToFile("_build\\metadata.xml"); // build archive FastZip zipper = new FastZip(); zipper.CreateZip(OutputFile, "_build", true, "(.*?)"); Directory.Delete("_build", true); }
protected void Run(bool viewListOnly) { try { if (SelectedSendMethod == SendMethod.None) { throw new CustomMessageException("Send method not selected"); } int staffID = Session != null && Session["StaffID"] != null?Convert.ToInt32(Session["StaffID"]) : -1; int siteID = -1; if (!chkIncClinics.Checked && !chkIncAgedCare.Checked) { throw new CustomMessageException("Plese check to generate for Clinics and/or Aged Care"); } else if (chkIncClinics.Checked && chkIncAgedCare.Checked) { siteID = -1; } else if (chkIncClinics.Checked) { foreach (Site s in SiteDB.GetAll()) { if (s.SiteType.ID == 1) { siteID = s.SiteID; } } } else if (chkIncAgedCare.Checked) { foreach (Site s in SiteDB.GetAll()) { if (s.SiteType.ID == 2) { siteID = s.SiteID; } } } /* * // if called by automated settings there will be no session setting for SiteID or StaffID * // but siteID is needed to know which letter template to use for generation * if (siteID == null) * { * Site[] sites = SiteDB.GetAll(); * siteID = (sites.Length == 1) ? sites[0].SiteID : sites[sites.Length - 1].SiteID; // if one site, use that -- else choose last one since clinics site developed first and exists * } */ string outputInfo; string outputList; Letter.FileContents fileContents = ReferrerEPCLettersSendingV2.Run( SelectedSendMethod == SendMethod.Email ? ReferrerEPCLettersSendingV2.SendMethod.Email_To_Referrer : ReferrerEPCLettersSendingV2.SendMethod.Batch, siteID, staffID, Convert.ToInt32(registerReferrerID.Value), chkIncBatching.Checked, chkIncUnsent.Checked, chkIncWithEmailOrFaxOnly.Checked, viewListOnly, chkShowFullList.Checked, out outputInfo, out outputList, btnViewList.ClientID ); lblInfo.Text = outputInfo; lblList.Text = outputList; if (fileContents != null) { System.Web.HttpContext.Current.Session["downloadFile_Contents"] = fileContents.Contents; System.Web.HttpContext.Current.Session["downloadFile_DocName"] = fileContents.DocName; // put in session variables so when it reloads to this page, we can popup the download window Page.ClientScript.RegisterStartupScript(this.GetType(), "download", "<script language=javascript>window.open('DownloadFile.aspx','_blank','status=1,toolbar=0,menubar=0,location=1,scrollbars=1,resizable=1,width=30,height=30');</script>"); } } catch (CustomMessageException cmEx) { SetErrorMessage(cmEx.Message); } catch (Exception ex) { SetErrorMessage("", ex.ToString()); } return; bool debugMode = true; // // We can not send email all their patients in one email - will be too big with attachments and rejected by their mail provider // So if via email - need to send one at a time // Then if cuts out or times out, it has processed some so don't need to re-process those when it's run again // // remember to process the emails first ... so if any interruptions/errors ... at least some will have been processed // try { string sendMethod = rdioSendType.SelectedValue; if (!viewListOnly && SelectedSendMethod == SendMethod.None) { throw new CustomMessageException("Send method not selected"); } string tmpLettersDirectory = Letter.GetTempLettersDirectory(); if (!Directory.Exists(tmpLettersDirectory)) { throw new CustomMessageException("Temp letters directory doesn't exist"); } string debugOutput = string.Empty; int startTime = Environment.TickCount; DataTable bookingsWithUnsetnLetters = BookingDB.GetBookingsWithEPCLetters(DateTime.MinValue, DateTime.MinValue, Convert.ToInt32(registerReferrerID.Value), -1, false, true, chkIncBatching.Checked, chkIncUnsent.Checked); double queryExecutionTime = (double)(Environment.TickCount - startTime) / 1000.0; startTime = Environment.TickCount; ArrayList filesToPrint = new ArrayList(); int c = 0; int currentRegReferrerID = -1; ArrayList bookingsForCurrentReferrer = new ArrayList(); foreach (DataRow row in bookingsWithUnsetnLetters.Rows) { //c++; if (c % 15 != 1) continue; if (c > ReferrerEPCLettersSendingV2.MaxSending) { continue; } Tuple <Booking, PatientReferrer, bool, string, HealthCard> rowData = LoadRow(row); Booking booking = rowData.Item1; PatientReferrer pr = rowData.Item2; bool refHasEmail = rowData.Item3; string refEmail = rowData.Item4; HealthCard hc = rowData.Item5; if (pr.RegisterReferrer.RegisterReferrerID != currentRegReferrerID) { filesToPrint.AddRange(ProcessReferrersLetters(viewListOnly, bookingsForCurrentReferrer, ref debugOutput)); currentRegReferrerID = pr.RegisterReferrer.RegisterReferrerID; bookingsForCurrentReferrer = new ArrayList(); } bookingsForCurrentReferrer.Add(rowData); } // process last group filesToPrint.AddRange(ProcessReferrersLetters(viewListOnly, bookingsForCurrentReferrer, ref debugOutput)); bool zipSeperately = true; if (zipSeperately && filesToPrint.Count > 0) { // seperate into doc types because can only merge docs with docs of same template (ie docname) Hashtable filesToPrintHash = new Hashtable(); for (int i = 0; i < filesToPrint.Count; i++) { Letter.FileContents curFileContents = (Letter.FileContents)filesToPrint[i]; if (filesToPrintHash[curFileContents.DocName] == null) { filesToPrintHash[curFileContents.DocName] = new ArrayList(); } ((ArrayList)filesToPrintHash[curFileContents.DocName]).Add(curFileContents); } // merge and put merged files into temp dir string baseTmpDir = FileHelper.GetTempDirectoryName(tmpLettersDirectory); string tmpDir = baseTmpDir + "EPC Letters" + @"\"; Directory.CreateDirectory(tmpDir); string[] tmpFiles = new string[filesToPrintHash.Keys.Count]; IDictionaryEnumerator enumerator = filesToPrintHash.GetEnumerator(); for (int i = 0; enumerator.MoveNext(); i++) { ArrayList files = (ArrayList)enumerator.Value; string docName = (string)enumerator.Key; // last file is screwing up, so just re-add the last file again for a temp fix files.Add(files[files.Count - 1]); Letter.FileContents fileContents = Letter.FileContents.Merge((Letter.FileContents[])files.ToArray(typeof(Letter.FileContents)), docName); // .pdf string tmpFileName = tmpDir + fileContents.DocName; System.IO.File.WriteAllBytes(tmpFileName, fileContents.Contents); tmpFiles[i] = tmpFileName; } // zip em string zipFileName = "EPC Letters.zip"; string zipFilePath = baseTmpDir + zipFileName; ICSharpCode.SharpZipLib.Zip.FastZip zip = new ICSharpCode.SharpZipLib.Zip.FastZip(); zip.CreateEmptyDirectories = true; zip.CreateZip(zipFilePath, tmpDir, true, ""); // get filecontents of zip here Letter.FileContents zipFileContents = new Letter.FileContents(zipFilePath, zipFileName); Session["downloadFile_Contents"] = zipFileContents.Contents; Session["downloadFile_DocName"] = zipFileContents.DocName; // delete files for (int i = 0; i < tmpFiles.Length; i++) { System.IO.File.SetAttributes(tmpFiles[i], FileAttributes.Normal); System.IO.File.Delete(tmpFiles[i]); } System.IO.File.SetAttributes(zipFilePath, FileAttributes.Normal); System.IO.File.Delete(zipFilePath); System.IO.Directory.Delete(tmpDir, false); System.IO.Directory.Delete(baseTmpDir, false); // put in session variables so when it reloads to this page, we can popup the download window Page.ClientScript.RegisterStartupScript(this.GetType(), "download", "<script language=javascript>window.open('DownloadFile.aspx','_blank','status=1,toolbar=0,menubar=0,location=1,scrollbars=1,resizable=1,width=30,height=30');</script>"); } if (!zipSeperately && filesToPrint.Count > 0) { Letter.FileContents fileContents = Letter.FileContents.Merge((Letter.FileContents[])filesToPrint.ToArray(typeof(Letter.FileContents)), "Referral Letters.doc"); // .pdf Session["downloadFile_Contents"] = fileContents.Contents; Session["downloadFile_DocName"] = fileContents.DocName; // put in session variables so when it reloads to this page, we can popup the download window Page.ClientScript.RegisterStartupScript(this.GetType(), "download", "<script language=javascript>window.open('DownloadFile.aspx','_blank','status=1,toolbar=0,menubar=0,location=1,scrollbars=1,resizable=1,width=30,height=30');</script>"); } if (!viewListOnly && Convert.ToInt32(registerReferrerID.Value) == -1 && chkIncBatching.Checked) { SetLastDateBatchSendTreatmentNotesAllReferrers(DateTime.Now); } double restExecutionTime = (double)(Environment.TickCount - startTime) / 1000.0; if (debugMode) { string countGenrated = bookingsWithUnsetnLetters.Rows.Count > ReferrerEPCLettersSendingV2.MaxSending ? ReferrerEPCLettersSendingV2.MaxSending + " of " + bookingsWithUnsetnLetters.Rows.Count + " generated" : bookingsWithUnsetnLetters.Rows.Count.ToString() + " generated"; string countShowing = bookingsWithUnsetnLetters.Rows.Count > ReferrerEPCLettersSendingV2.MaxSending ? ReferrerEPCLettersSendingV2.MaxSending + " of " + bookingsWithUnsetnLetters.Rows.Count + " showing to generate. <br />* If there are more than " + ReferrerEPCLettersSendingV2.MaxSending + ", the next " + ReferrerEPCLettersSendingV2.MaxSending + " will have to be generated seperately after this." : bookingsWithUnsetnLetters.Rows.Count.ToString(); if (!viewListOnly) { lblInfo.Text = @"<table cellpadding=""0""> <tr><td><b>Send Method</b></td><td style=""width:10px;""></td><td>" + SelectedSendMethod.ToString() + @"</td><td style=""width:25px;""></td><td><b>Query Time</b></td><td style=""width:10px;""></td><td>" + queryExecutionTime + @" seconds</td></tr> <tr><td><b>Count</b></td><td style=""width:10px;""></td><td>" + countGenrated + @"</td><td style=""width:25px;""></td><td><b>Runing Time</b></td><td style=""width:10px;""></td><td>" + restExecutionTime + @" seconds</td></tr> </table>" + "<br />"; } if (viewListOnly) { lblInfo.Text = @"<table cellpadding=""0""> <tr><td valign=""top""><b>Count</b></td><td style=""width:10px;""></td><td>" + countShowing + @"</td></tr> </table>" + "<br />"; } if (viewListOnly) { lblList.Text = @"<table class=""table table-bordered table-striped table-grid table-grid-top-bottum-padding-thick auto_width block_center"" border=""1""> <tr> <th>Send By</th> <th>Booking</th> <th>Generate</th> <th>Referrer</th> <th>Email</th> <th>Patient</th> </tr>" + (debugOutput.Length == 0 ? "<tr><td colspan=\"6\">No Rows</td></tr>" : debugOutput) + "</table>"; } } } catch (CustomMessageException cmEx) { SetErrorMessage(cmEx.Message); } catch (Exception ex) { SetErrorMessage(ex.ToString()); } }
protected void Run(bool viewListOnly) { bool debugMode = true; int bulkLetterSendingQueueBatchID = !viewListOnly && UseBulkLetterSender?BulkLetterSendingQueueBatchDB.Insert(DebugEmail, false) : -1; // // We can not send email all their patients in one email - will be too big with attachments and rejected by their mail provider // So if via email - need to send one at a time // Then if cuts out or times out, it has processed some so don't need to re-process those when it's run again // // just remember to process the emails first ... so if any interruptions/errors ... at least some will have been processed // try { bool AutoSendFaxesAsEmailsIfNoEmailExistsToGPs = Convert.ToInt32(SystemVariableDB.GetByDescr("AutoSendFaxesAsEmailsIfNoEmailExistsToGPs").Value) == 1; string sendMethod = rdioSendType.SelectedValue; if (!viewListOnly && SelectedSendMethod == SendMethod.None) { throw new CustomMessageException("Send method not selected"); } string tmpLettersDirectory = Letter.GetTempLettersDirectory(); if (!Directory.Exists(tmpLettersDirectory)) { throw new CustomMessageException("Temp letters directory doesn't exist"); } string debugOutput = string.Empty; int startTime = Environment.TickCount; // NB. // start/emd date time __must__ refer to the treatment date because // as a letter can be generated any time (days or weeks) after a treatment, there is no way // to be sure which invoice it is attached to, only which booking if (txtStartDate.Text.Length > 0 && !Utilities.IsValidDate(txtStartDate.Text, "dd-mm-yyyy")) { throw new CustomMessageException("Start date must be empty or valid and of the format dd-mm-yyyy"); } if (txtEndDate.Text.Length > 0 && !Utilities.IsValidDate(txtEndDate.Text, "dd-mm-yyyy")) { throw new CustomMessageException("End date must be empty or valid and of the format dd-mm-yyyy"); } DateTime startDate = txtStartDate.Text.Length == 0 ? DateTime.MinValue : Utilities.GetDate(txtStartDate.Text, "dd-mm-yyyy"); DateTime endDate = txtEndDate.Text.Length == 0 ? DateTime.MinValue : Utilities.GetDate(txtEndDate.Text, "dd-mm-yyyy"); DataTable bookingsWithSentLetters = BookingDB.GetBookingsWithEPCLetters(startDate, endDate, Convert.ToInt32(registerReferrerID.Value), Convert.ToInt32(patientID.Value), true, false); if (!viewListOnly && bookingsWithSentLetters.Rows.Count > MaxSending) { throw new CustomMessageException("Can not generate more than " + MaxSending + " letters at a time. Please narrow your date range."); } double queryExecutionTime = (double)(Environment.TickCount - startTime) / 1000.0; startTime = Environment.TickCount; ArrayList filesToPrint = new ArrayList(); int currentRegReferrerID = -1; ArrayList bookingsForCurrentReferrer = new ArrayList(); foreach (DataRow row in bookingsWithSentLetters.Rows) { Tuple <Booking, PatientReferrer, bool, bool, HealthCard> rowData = LoadRow(row); Booking booking = rowData.Item1; PatientReferrer pr = rowData.Item2; bool refHasEmail = rowData.Item3; bool refHasFax = rowData.Item4; HealthCard hc = rowData.Item5; if (pr.RegisterReferrer.RegisterReferrerID != currentRegReferrerID) { filesToPrint.AddRange(ProcessReferrersLetters(viewListOnly, bookingsForCurrentReferrer, AutoSendFaxesAsEmailsIfNoEmailExistsToGPs, ref debugOutput, bulkLetterSendingQueueBatchID)); currentRegReferrerID = pr.RegisterReferrer.RegisterReferrerID; bookingsForCurrentReferrer = new ArrayList(); } bookingsForCurrentReferrer.Add(rowData); } // process last group filesToPrint.AddRange(ProcessReferrersLetters(viewListOnly, bookingsForCurrentReferrer, AutoSendFaxesAsEmailsIfNoEmailExistsToGPs, ref debugOutput, bulkLetterSendingQueueBatchID)); bool zipSeperately = true; if (zipSeperately && filesToPrint.Count > 0) { // seperate into doc types because can only merge docs with docs of same template (ie docname) Hashtable filesToPrintHash = new Hashtable(); for (int i = 0; i < filesToPrint.Count; i++) { Letter.FileContents curFileContents = (Letter.FileContents)filesToPrint[i]; if (filesToPrintHash[curFileContents.DocName] == null) { filesToPrintHash[curFileContents.DocName] = new ArrayList(); } ((ArrayList)filesToPrintHash[curFileContents.DocName]).Add(curFileContents); } // merge and put merged files into temp dir string baseTmpDir = FileHelper.GetTempDirectoryName(tmpLettersDirectory); string tmpDir = baseTmpDir + "EPC Letters" + @"\"; Directory.CreateDirectory(tmpDir); string[] tmpFiles = new string[filesToPrintHash.Keys.Count]; IDictionaryEnumerator enumerator = filesToPrintHash.GetEnumerator(); for (int i = 0; enumerator.MoveNext(); i++) { ArrayList files = (ArrayList)enumerator.Value; string docName = (string)enumerator.Key; // last file is screwing up, so just re-add the last file again for a temp fix files.Add(files[files.Count - 1]); Letter.FileContents fileContents = Letter.FileContents.Merge((Letter.FileContents[])files.ToArray(typeof(Letter.FileContents)), docName); // .pdf string tmpFileName = tmpDir + fileContents.DocName; System.IO.File.WriteAllBytes(tmpFileName, fileContents.Contents); tmpFiles[i] = tmpFileName; } // zip em string zipFileName = "EPC Letters.zip"; string zipFilePath = baseTmpDir + zipFileName; ICSharpCode.SharpZipLib.Zip.FastZip zip = new ICSharpCode.SharpZipLib.Zip.FastZip(); zip.CreateEmptyDirectories = true; zip.CreateZip(zipFilePath, tmpDir, true, ""); // get filecontents of zip here Letter.FileContents zipFileContents = new Letter.FileContents(zipFilePath, zipFileName); Session["downloadFile_Contents"] = zipFileContents.Contents; Session["downloadFile_DocName"] = zipFileContents.DocName; // delete files for (int i = 0; i < tmpFiles.Length; i++) { System.IO.File.SetAttributes(tmpFiles[i], FileAttributes.Normal); System.IO.File.Delete(tmpFiles[i]); } System.IO.File.SetAttributes(zipFilePath, FileAttributes.Normal); System.IO.File.Delete(zipFilePath); System.IO.Directory.Delete(tmpDir, false); System.IO.Directory.Delete(baseTmpDir, false); // put in session variables so when it reloads to this page, we can popup the download window Page.ClientScript.RegisterStartupScript(this.GetType(), "download", "<script language=javascript>window.open('DownloadFile.aspx','_blank','status=1,toolbar=0,menubar=0,location=1,scrollbars=1,resizable=1,width=30,height=30');</script>"); } if (!zipSeperately && filesToPrint.Count > 0) { Letter.FileContents fileContents = Letter.FileContents.Merge((Letter.FileContents[])filesToPrint.ToArray(typeof(Letter.FileContents)), "Referral Letters.doc"); // .pdf Session["downloadFile_Contents"] = fileContents.Contents; Session["downloadFile_DocName"] = fileContents.DocName; // put in session variables so when it reloads to this page, we can popup the download window Page.ClientScript.RegisterStartupScript(this.GetType(), "download", "<script language=javascript>window.open('DownloadFile.aspx','_blank','status=1,toolbar=0,menubar=0,location=1,scrollbars=1,resizable=1,width=30,height=30');</script>"); } double restExecutionTime = (double)(Environment.TickCount - startTime) / 1000.0; if (debugMode) { if (!viewListOnly) { lblInfo.Text = @"<table cellpadding=""0""> <tr><td><b>Send Method</b></td><td style=""width:10px;""></td><td>" + SelectedSendMethod.ToString() + @"</td><td style=""width:25px;""></td><td><b>Query Time</b></td><td style=""width:10px;""></td><td>" + queryExecutionTime + @" seconds</td></tr> <tr><td><b>Count</b></td><td style=""width:10px;""></td><td>" + bookingsWithSentLetters.Rows.Count + @"</td><td style=""width:25px;""></td><td><b>Runing Time</b></td><td style=""width:10px;""></td><td>" + restExecutionTime + @" seconds</td></tr> </table>"; } string countShowing = bookingsWithSentLetters.Rows.Count > MaxSending ? bookingsWithSentLetters.Rows.Count + " showing to re-generate. <br /><font color=red>* You can not generate more than 175 at a time. Please narrow your search before printing.</font>" : bookingsWithSentLetters.Rows.Count.ToString(); if (viewListOnly) { lblInfo.Text = @"<table cellpadding=""0""> <tr><td valign=""top""><b>Count</b></td><td style=""width:10px;""></td><td>" + countShowing + @"</td></tr> </table>"; } if (viewListOnly) { lblList.Text = @"<table class=""table table-bordered table-striped table-grid table-grid-top-bottum-padding-thick auto_width block_center"" cellpadding=""4"" border=""1""> <tr> <th style=""white-space:nowrap;"">Send By</th> <th>Booking</th> <th>Generate</th> <th>Referrer</th> <th>Email</th> <th>Fax</th> <th>Patient</th> </tr>" + (debugOutput.Length == 0 ? "<tr><td colspan=\"7\">No Rows</td></tr>" : debugOutput) + "</table>"; } } } catch (CustomMessageException cmEx) { SetErrorMessage(cmEx.Message); } catch (Exception ex) { SetErrorMessage("", ex.ToString()); } }
public static Letter.FileContents Run(SendMethod sendMethod, int siteID, int staffID, int registerReferrerID, bool incBatching, bool incUnsent, bool viewListOnly, bool viewFullList, out string outputInfo, out string outputList, string btnViewListClientID) { RndPageID = (new Random()).Next().ToString(); bool debugMode = true; string tmpLettersDirectory = Letter.GetTempLettersDirectory(); if (!Directory.Exists(tmpLettersDirectory)) { throw new CustomMessageException("Temp letters directory doesn't exist"); } int startTime = 0; double queryExecutionTimeClinic = 0; double generateFilesToPrintExecutionTimeClinic = 0; double queryExecutionTimeAgedCare = 0; double generateFilesToPrintExecutionTimeAgedCare = 0; outputInfo = string.Empty; outputList = string.Empty; // // We can not send email all their patients in one email - will be too big with attachments and rejected by their mail provider // So if via email - need to send one at a time // Then if cuts out or times out, it has processed some so don't need to re-process those when it's run again // // remember to process the emails first ... so if any interruptions/errors ... at least some will have been processed // Site[] allSites = SiteDB.GetAll(); bool runAllSites = siteID == -1; Site agedCareSite = null; Site clinicSite = null; Site[] sitesToRun = runAllSites ? allSites : new Site[] { SiteDB.GetByID(siteID) }; foreach (Site s in sitesToRun) { if (s.SiteType.ID == 1) { clinicSite = s; } else if (s.SiteType.ID == 2) { agedCareSite = s; } } ArrayList filesToPrintClinic = new ArrayList(); ArrayList filesToPrintAgedCare = new ArrayList(); string debugOutput = string.Empty; int numGenerated = 0; DataTable bookingsWithUnsetnLettersClinic = null; DataTable bookingsWithUnsetnLettersAgedCare = null; if (clinicSite != null) { startTime = Environment.TickCount; bookingsWithUnsetnLettersClinic = BookingDB.GetBookingsWithEPCLetters(DateTime.MinValue, DateTime.MinValue, registerReferrerID, -1, false, true, incBatching, incUnsent); queryExecutionTimeClinic = (double)(Environment.TickCount - startTime) / 1000.0; startTime = Environment.TickCount; int currentRegReferrerID = -1; ArrayList bookingsForCurrentReferrer = new ArrayList(); foreach (DataRow row in bookingsWithUnsetnLettersClinic.Rows) { numGenerated++; //if (numGenerated % 15 != 1) continue; if ((!viewListOnly || !viewFullList) && (numGenerated > MaxSending)) { continue; } Tuple <Booking, PatientReferrer, bool, string, string, HealthCard> rowData = LoadClinicRow(row); Booking booking = rowData.Item1; PatientReferrer pr = rowData.Item2; bool refHasEmail = rowData.Item3; string refEmail = rowData.Item4; string refFax = rowData.Item5; HealthCard hc = rowData.Item6; //if (booking.Patient == null || (booking.Patient.PatientID != 31522 && booking.Patient.PatientID != 27654)) //{ // numGenerated--; // continue; //} if (pr.RegisterReferrer.RegisterReferrerID != currentRegReferrerID) { filesToPrintClinic.AddRange(ProcessReferrersClinicLetters(sendMethod, viewListOnly, clinicSite, staffID, bookingsForCurrentReferrer, ref debugOutput, btnViewListClientID)); currentRegReferrerID = pr.RegisterReferrer.RegisterReferrerID; bookingsForCurrentReferrer = new ArrayList(); } bookingsForCurrentReferrer.Add(rowData); } // process last group filesToPrintClinic.AddRange(ProcessReferrersClinicLetters(sendMethod, viewListOnly, clinicSite, staffID, bookingsForCurrentReferrer, ref debugOutput, btnViewListClientID)); generateFilesToPrintExecutionTimeClinic = (double)(Environment.TickCount - startTime) / 1000.0; } if (agedCareSite != null) { startTime = Environment.TickCount; bookingsWithUnsetnLettersAgedCare = BookingPatientDB.GetBookingsPatientOfferingsWithEPCLetters(DateTime.MinValue, DateTime.MinValue, registerReferrerID, -1, false, true, incBatching, incUnsent); queryExecutionTimeAgedCare = (double)(Environment.TickCount - startTime) / 1000.0; startTime = Environment.TickCount; int currentRegReferrerID = -1; ArrayList bookingsForCurrentReferrer = new ArrayList(); foreach (DataRow row in bookingsWithUnsetnLettersAgedCare.Rows) { numGenerated++; //if (numGenerated % 15 != 1) continue; if ((!viewListOnly || !viewFullList) && (numGenerated > MaxSending)) { continue; } Tuple <BookingPatient, Offering, PatientReferrer, bool, string, string, HealthCard> rowData = LoadAgedCareRow(row); BookingPatient bp = rowData.Item1; Offering offering = rowData.Item2; PatientReferrer pr = rowData.Item3; bool refHasEmail = rowData.Item4; string refEmail = rowData.Item5; string refFax = rowData.Item6; HealthCard hc = rowData.Item7; //if (bp.Booking.Patient == null || (bp.Booking.Patient.PatientID != 31522 && bp.Booking.Patient.PatientID != 27654)) //{ // numGenerated--; // continue; //} if (pr.RegisterReferrer.RegisterReferrerID != currentRegReferrerID) { filesToPrintAgedCare.AddRange(ProcessReferrersAgedCareLetters(sendMethod, viewListOnly, agedCareSite, staffID, bookingsForCurrentReferrer, ref debugOutput, btnViewListClientID)); currentRegReferrerID = pr.RegisterReferrer.RegisterReferrerID; bookingsForCurrentReferrer = new ArrayList(); } bookingsForCurrentReferrer.Add(rowData); } // process last group filesToPrintAgedCare.AddRange(ProcessReferrersAgedCareLetters(sendMethod, viewListOnly, agedCareSite, staffID, bookingsForCurrentReferrer, ref debugOutput, btnViewListClientID)); generateFilesToPrintExecutionTimeAgedCare = (double)(Environment.TickCount - startTime) / 1000.0; } startTime = Environment.TickCount; bool zipSeperately = true; Letter.FileContents zipFileContents = null; if (zipSeperately && (filesToPrintClinic.Count + filesToPrintAgedCare.Count) > 0) { // if 2 sites exist in the system - change doc names to have "[AgedCare]" or "[Clinics]" before docname if (allSites.Length > 1) { for (int i = 0; i < filesToPrintClinic.Count; i++) { ((Letter.FileContents)filesToPrintClinic[i]).DocName = "[Clinics] " + ((Letter.FileContents)filesToPrintClinic[i]).DocName; } for (int i = 0; i < filesToPrintAgedCare.Count; i++) { ((Letter.FileContents)filesToPrintAgedCare[i]).DocName = "[AgedCare] " + ((Letter.FileContents)filesToPrintAgedCare[i]).DocName; } } ArrayList filesToPrint = new ArrayList(); filesToPrint.AddRange(filesToPrintClinic); filesToPrint.AddRange(filesToPrintAgedCare); // seperate into doc types because can only merge docs with docs of same template (ie docname) Hashtable filesToPrintHash = new Hashtable(); for (int i = 0; i < filesToPrint.Count; i++) { Letter.FileContents curFileContents = (Letter.FileContents)filesToPrint[i]; if (filesToPrintHash[curFileContents.DocName] == null) { filesToPrintHash[curFileContents.DocName] = new ArrayList(); } ((ArrayList)filesToPrintHash[curFileContents.DocName]).Add(curFileContents); } // merge and put merged files into temp dir string baseTmpDir = FileHelper.GetTempDirectoryName(tmpLettersDirectory); string tmpDir = baseTmpDir + "Referral Letters" + @"\"; Directory.CreateDirectory(tmpDir); string[] tmpFiles = new string[filesToPrintHash.Keys.Count]; IDictionaryEnumerator enumerator = filesToPrintHash.GetEnumerator(); for (int i = 0; enumerator.MoveNext(); i++) { ArrayList files = (ArrayList)enumerator.Value; string docName = (string)enumerator.Key; // last file is screwing up, so just re-add the last file again for a temp fix files.Add(files[files.Count - 1]); Letter.FileContents fileContents = Letter.FileContents.Merge((Letter.FileContents[])files.ToArray(typeof(Letter.FileContents)), docName); // .pdf string tmpFileName = tmpDir + fileContents.DocName; System.IO.File.WriteAllBytes(tmpFileName, fileContents.Contents); tmpFiles[i] = tmpFileName; } // zip em string zipFileName = "Referral Letters.zip"; string zipFilePath = baseTmpDir + zipFileName; ICSharpCode.SharpZipLib.Zip.FastZip zip = new ICSharpCode.SharpZipLib.Zip.FastZip(); zip.CreateEmptyDirectories = true; zip.CreateZip(zipFilePath, tmpDir, true, ""); // get filecontents of zip here zipFileContents = new Letter.FileContents(zipFilePath, zipFileName); //Letter.FileContents zipFileContents = new Letter.FileContents(zipFilePath, zipFileName); //System.Web.HttpContext.Current.Session["downloadFile_Contents"] = zipFileContents.Contents; //System.Web.HttpContext.Current.Session["downloadFile_DocName"] = zipFileContents.DocName; // delete files for (int i = 0; i < tmpFiles.Length; i++) { System.IO.File.SetAttributes(tmpFiles[i], FileAttributes.Normal); System.IO.File.Delete(tmpFiles[i]); } System.IO.File.SetAttributes(zipFilePath, FileAttributes.Normal); System.IO.File.Delete(zipFilePath); System.IO.Directory.Delete(tmpDir, false); System.IO.Directory.Delete(baseTmpDir, false); // put in session variables so when it reloads to this page, we can popup the download window //Page.ClientScript.RegisterStartupScript(this.GetType(), "download", "<script language=javascript>window.open('DownloadFile.aspx','_blank','status=1,toolbar=0,menubar=0,location=1,scrollbars=1,resizable=1,width=30,height=30');</script>"); } if (!zipSeperately && (filesToPrintClinic.Count + filesToPrintAgedCare.Count) > 0) { ArrayList filesToPrint = new ArrayList(); filesToPrint.AddRange(filesToPrintClinic); filesToPrint.AddRange(filesToPrintAgedCare); zipFileContents = Letter.FileContents.Merge((Letter.FileContents[])filesToPrint.ToArray(typeof(Letter.FileContents)), "Referral Letters.doc"); // .pdf //Letter.FileContents fileContents = Letter.FileContents.Merge((Letter.FileContents[])filesToPrint.ToArray(typeof(Letter.FileContents)), "Referral Letters.doc"); // .pdf //System.Web.HttpContext.Current.Session["downloadFile_Contents"] = fileContents.Contents; //System.Web.HttpContext.Current.Session["downloadFile_DocName"] = fileContents.DocName; // put in session variables so when it reloads to this page, we can popup the download window //Page.ClientScript.RegisterStartupScript(this.GetType(), "download", "<script language=javascript>window.open('DownloadFile.aspx','_blank','status=1,toolbar=0,menubar=0,location=1,scrollbars=1,resizable=1,width=30,height=30');</script>"); } if (!viewListOnly && registerReferrerID == -1 && incBatching) { SetLastDateBatchSendTreatmentNotesAllReferrers(DateTime.Now); } double restExecutionTime = (double)(Environment.TickCount - startTime) / 1000.0; if (debugMode) { int total = (bookingsWithUnsetnLettersClinic == null ? 0 : bookingsWithUnsetnLettersClinic.Rows.Count) + (bookingsWithUnsetnLettersAgedCare == null ? 0 : bookingsWithUnsetnLettersAgedCare.Rows.Count); string countGenrated = total > MaxSending ? MaxSending + " of " + total + " generated" : total.ToString() + " generated"; string countShowing = total > MaxSending ? MaxSending + " of " + total + " showing to generate. <br />* If there are more than " + MaxSending + ", the next " + MaxSending + " will have to be generated seperately after this." : total.ToString(); if (total > MaxSending && viewFullList) { countShowing = total + " showing to generate. <br />* If there are more than " + MaxSending + ", only the first " + MaxSending + " will be generated and batches of " + MaxSending + " will have to be generated seperately after."; } string queryExecutionTimeText = string.Empty; if (agedCareSite == null && clinicSite == null) { queryExecutionTimeText = "0"; } if (agedCareSite == null && clinicSite != null) { queryExecutionTimeText = queryExecutionTimeClinic.ToString(); } if (agedCareSite != null && clinicSite == null) { queryExecutionTimeText = queryExecutionTimeAgedCare.ToString(); } if (agedCareSite != null && clinicSite != null) { queryExecutionTimeText = "[Clinics: " + queryExecutionTimeClinic + "] [AgedCare: " + queryExecutionTimeAgedCare + "]"; } string restExecutionTimeText = string.Empty; if (agedCareSite == null && clinicSite == null) { restExecutionTimeText = "0"; } if (agedCareSite == null && clinicSite != null) { restExecutionTimeText = (generateFilesToPrintExecutionTimeClinic + restExecutionTime).ToString(); } if (agedCareSite != null && clinicSite == null) { restExecutionTimeText = (generateFilesToPrintExecutionTimeAgedCare + restExecutionTime).ToString(); } if (agedCareSite != null && clinicSite != null) { restExecutionTimeText = "[Clinics: " + generateFilesToPrintExecutionTimeClinic + "] [AgedCare: " + generateFilesToPrintExecutionTimeAgedCare + "] [Merging" + restExecutionTime + "]"; } if (!viewListOnly) { outputInfo = @"<table cellpadding=""0""> <tr><td><b>Send Method</b></td><td style=""width:10px;""></td><td>" + sendMethod.ToString() + @"</td><td style=""width:25px;""></td><td><b>Query Time</b></td><td style=""width:10px;""></td><td>" + queryExecutionTimeText + @" seconds</td></tr> <tr><td><b>Count</b></td><td style=""width:10px;""></td><td>" + countGenrated + @"</td><td style=""width:25px;""></td><td><b>Runing Time</b></td><td style=""width:10px;""></td><td>" + restExecutionTimeText + @" seconds</td></tr> </table>"; } if (viewListOnly) { outputInfo = @"<table cellpadding=""0""> <tr><td valign=""top""><b>Count</b></td><td style=""width:10px;""></td><td>" + countShowing + @"</td></tr> </table>"; } if (viewListOnly) { outputList = @"<table class=""table table-bordered table-striped table-grid table-grid-top-bottum-padding-thick auto_width block_center"" border=""1""> <tr> <th>Site</th> <th>Send By</th> <th>Booking</th> <th>Generate</th> <th>Referrer</th> <th>Email</th> <th>Fax</th> <th>Update Email/Fax</th> <th>Patient</th> </tr>" + (debugOutput.Length == 0 ? "<tr><td colspan=\"6\">No Rows</td></tr>" : debugOutput) + "</table>"; } } return(zipFileContents); }
protected override void ExecuteAction(IFileActionInfo fileActionInfo) { SourceTargetFilterFileInfo zipFile = fileActionInfo as SourceTargetFilterFileInfo; zip.CreateZip(zipFile.SourceFileName, zipFile.TargetPath, _recurse, zipFile.FilterFiles); }