| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.IO;
 
- using System.IO.Compression;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using DocumentFormat.OpenXml.Vml.Office;
 
- namespace MECF.Framework.Common.Utilities
 
- {
 
-     public static class ZIPUtil
 
-     {
 
-         public static async Task ZipAllExceptLogFolderAsync(string sourceFolder, string outputZipPath)
 
-         {
 
-             using (FileStream zipToOpen = new FileStream(outputZipPath, FileMode.Create))
 
-             {
 
-                 using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Create))
 
-                 {
 
-                     await CopyFilesAndDirectoriesAsync(sourceFolder, "", archive);
 
-                 }
 
-             }
 
-         }
 
-         private static async Task CopyFilesAndDirectoriesAsync(string sourceDir, string parentEntryName, ZipArchive archive)
 
-         {
 
-             // Add an entry for the current directory if it's not empty or skipped
 
-             if (!string.IsNullOrEmpty(parentEntryName) && !Directory.GetFiles(sourceDir).Any() && !Directory.GetDirectories(sourceDir).Any())
 
-             {
 
-                 string entryName = parentEntryName + "/";
 
-                 archive.CreateEntry(entryName);
 
-             }
 
-             foreach (string file in Directory.GetFiles(sourceDir))
 
-             {
 
-                 string entryName = Path.Combine(parentEntryName, Path.GetFileName(file));
 
-                 ZipArchiveEntry entry = archive.CreateEntry(entryName);
 
-                 using (Stream entryStream = entry.Open())
 
-                 using (Stream fileStream = File.OpenRead(file))
 
-                 {
 
-                     await fileStream.CopyToAsync(entryStream);
 
-                 }
 
-             }
 
-             foreach (string directory in Directory.GetDirectories(sourceDir))
 
-             {
 
-                 string dirName = Path.GetFileName(directory);
 
-                 if (dirName.Contains("Log") || dirName.Equals("ZIP", StringComparison.OrdinalIgnoreCase))
 
-                 {
 
-                     continue; // Skip the Log and ZIP folders
 
-                 }
 
-                 string entryName = Path.Combine(parentEntryName, dirName);
 
-                 await CopyFilesAndDirectoriesAsync(directory, entryName, archive);
 
-             }
 
-             // Add an entry for the current directory if it contains only subdirectories
 
-             if (!string.IsNullOrEmpty(parentEntryName) && !Directory.GetFiles(sourceDir).Any())
 
-             {
 
-                 string entryName = parentEntryName + "/";
 
-                 archive.CreateEntry(entryName);
 
-             }
 
-         }
 
-         }
 
- }
 
 
  |