protected void btnExtractSite_Click(object sender, EventArgs e) { //check all the packages in this site //Read the extractor sp //execute the sp and save to the respective file //make zip of the packages //extract site json file //create temporary folder and then make zip of all the file ///declaring paths string destZip = "temptemplatezip"; string tempPackageFilePath = Server.MapPath(@"~\temptemplatefiles"); string tempZipFolderPath = Server.MapPath(@"~\" + destZip); string fullpath = Server.MapPath(@"~\ContentderPackages"); //create temporary folder for file collection if (Directory.Exists(tempPackageFilePath)) { Directory.Delete(tempPackageFilePath, true); } Directory.CreateDirectory(tempPackageFilePath); WebBuilderController objController = new WebBuilderController(); if (Directory.Exists(fullpath)) { string[] directories = Directory.GetDirectories(fullpath); int directoryLength = directories.Length; List <EasyPackage> objPackage = new List <EasyPackage>(); if (directoryLength > 0) { for (int i = 0; i < directoryLength; i++) { EasyPackage objPack = new EasyPackage(); DirectoryInfo dir = new DirectoryInfo(directories[i]); Dictionary <string, string> paramKeysValues = new Dictionary <string, string>(); objPack.Name = dir.Name; string xmlPath = directories[i] + "\\package.xml"; if (File.Exists(xmlPath)) { XmlDocument doc = SageFrame.Templating.xmlparser.XmlHelper.LoadXMLDocument(xmlPath); XmlNode node = doc.SelectSingleNode("package/datasql/sql"); if (node != null) { objPack.Sql = node.InnerText; } node = doc.SelectSingleNode("package/datasql/storeprocedure"); if (node != null) { objPack.Storeprocedure = node.InnerText; } node = doc.SelectSingleNode("package/datasql/params"); if (node != null) { XmlNodeList xnList = doc.SelectNodes("package/datasql/params/param"); foreach (XmlNode xn in xnList) { string key = xn["key"].InnerText; string value = xn["value"].InnerText; if (key.Trim() != string.Empty) { paramKeysValues.Add(key.Trim(), value.Trim()); } } } objPack.ParamkeyAndValue = paramKeysValues; objPackage.Add(objPack); } } objPackage = objController.ExtractPackageData(objPackage); //writing the data in respective sql file foreach (EasyPackage item in objPackage) { string spSavePath = Server.MapPath(@"~\ContentderPackages\" + item.Name + "\\sql\\" + item.Sql + ".sql"); if (!File.Exists(spSavePath)) { File.Create(spSavePath); } using (StreamWriter writetext = new StreamWriter(spSavePath)) { writetext.WriteLine(item.Result); } } //copy packages to temp folder DirectoryInfo tempDir = new DirectoryInfo(tempPackageFilePath + "\\ContentderPackages"); DirectoryInfo packageDir = new DirectoryInfo(fullpath); IOHelper.CopyDirectory(packageDir, tempDir); } } //read json from database for site WebbuilderSite objWebsite = new WebbuilderSite(); objWebsite = objController.ExtractSite(userModuleID, GetCurrentCulture(), GetHostURL()); objWebsite.Culture = GetCurrentCulture(); string jsonFile = JsonConvert.SerializeObject(objWebsite); //write extracted site json to file and save inside temporary folder string saveJson = tempPackageFilePath + "\\theme.json"; using (StreamWriter writetext = new StreamWriter(saveJson)) { writetext.WriteLine(jsonFile); } //Create zip folder if (!Directory.Exists(tempZipFolderPath)) { Directory.CreateDirectory(tempZipFolderPath); } //zip files inside the zip folder tempPackageFilePath += "\\"; tempZipFolderPath += "\\Contentder.zip"; destZip += "/Contentder.zip"; ZipUtil.ZipFiles(tempPackageFilePath, tempZipFolderPath, string.Empty); if (destZip != string.Empty) { //download zip //Response.Redirect(GetHostURL() + "/" + destZip); ////delete the temporary package and zip folder //IOHelper.DeleteDirectory(tempPackageFilePath); //IOHelper.DeleteDirectory(tempZipFolderPath); Response.Clear(); Response.AddHeader("Content-Disposition", "attachment; filename=Contentder.zip"); Response.ContentType = "application/x-zip-compressed"; Response.WriteFile(tempZipFolderPath); IOHelper.DeleteDirectory(tempPackageFilePath); IOHelper.DeleteDirectory(tempZipFolderPath); Response.Flush(); Response.End(); } }