public object DownloadFile(string Id) { if (Id == null) { return(RedirectToAction("NotFound", "Error")); } var context = new DatabaseContext(); List <Document> ObjDocs = context.Documents.ToList(); // get document data by propertyId var doc = (from FC in ObjDocs where FC.Id.Equals(Id) select new { FC.Id, FC.PropertyId, FC.FileName, FC.DocBlob }).ToList().First(); if (doc == null) { return(RedirectToAction("NotFound", "Error")); } string testDoc = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConfigurationManager.AppSettings.Get("testDocPath")); MemoryStream ms = new MemoryStream(); using (var streamreader = new MemoryStream(doc.DocBlob)) { using (ZipFile zip = ZipFile.Read(streamreader)) { if (zip.Count == 0) { return(RedirectToAction("NotFound", "Error")); } // Unzip/decrypt file using given password ZipEntry entry; entry = zip[testDoc]; entry.ExtractWithPassword(ms, UploadController.GenerateSecretKey(doc.Id, doc.PropertyId)); } return(File(ms.GetBuffer(), "application/octet-stream", doc.FileName)); } }
public ActionResult Edit(Entry entry, int[] selectedCategories, string huKeywords, string enKeywords, string toDeleteFiles) { var toEditEntry = db.Entries.Where(e => e.Id == entry.Id).First(); KeywordsProcedure(toEditEntry, huKeywords, enKeywords); var attachments = TempData["Attachments"] as List<string>; var featuredImage = TempData["FeaturedImage"] as List<string>; if (ModelState.IsValid) { toEditEntry.enContent = entry.enContent; toEditEntry.enIntroduction = entry.enIntroduction; toEditEntry.enTitle = entry.enTitle; toEditEntry.huContent = entry.huContent; toEditEntry.huIntroduction = entry.huIntroduction; toEditEntry.huTitle = entry.huTitle; toEditEntry.IsFeatured = entry.IsFeatured; toEditEntry.Published = entry.Published; toEditEntry.PublishedDate = entry.PublishedDate; toEditEntry.UserId = int.Parse((string)Session["UserId"]); toEditEntry.Categories.Clear(); foreach (var id in selectedCategories.ToList()) { Category category = db.Categories.Single(e => e.Id == id); toEditEntry.Categories.Add(category); } //Delete to delete List<string> fileNames = new List<string>(); foreach (var idString in toDeleteFiles.Split(',').Where(e => e != "")) { int id = int.Parse(idString); var file = db.Files.Where(e => e.Id == id).First(); fileNames.Add(file.Name); toEditEntry.Files.Remove(file); db.Files.Remove(file); } var ctrl = new UploadController(); ctrl.PathValue = "/Public/Files/"; ctrl.Remove(fileNames.ToArray()); //Add new ones if (attachments != null) { foreach (var att in attachments) { WebApplication.File newAtt = new WebApplication.File { Entry = toEditEntry, Location = Guid.NewGuid().ToString(), Name = Path.GetFileName(att) }; db.Files.Add(newAtt); } } if (featuredImage != null && featuredImage.Count > 0) { string[] fileName = { Path.GetFileName(entry.FeaturedImage) }; ctrl.PathValue = "/Public/Images/"; ctrl.Remove(fileName); toEditEntry.FeaturedImage = featuredImage[0]; } else if (string.IsNullOrEmpty(entry.FeaturedImage)) { toEditEntry.FeaturedImage = ""; } try { db.SaveChanges(); } catch (DbEntityValidationException e) { } TempData["Attachments"] = null; TempData["FeaturedImage"] = null; return RedirectToAction("Index"); } ViewBag.Categories = db.Categories.Select(e => e); ViewBag.SelectedCategories = selectedCategories.ToList(); ViewBag.enKeywords = db.Keywords.Where(e => e.Type == true); ViewBag.huKeywords = db.Keywords.Where(e => e.Type == false); return View(entry); }
public ActionResult DeleteConfirmed(int id) { Entry entry = db.Entries.Single(e => e.Id == id); var fileNames = entry.Files.Select(e => e.Name).ToArray(); var ctrl = new UploadController(); ctrl.PathValue = "/Public/Files/"; ctrl.Remove(fileNames.ToArray()); foreach (var file in entry.Files.ToList()) { db.Files.Remove(file); } if (!string.IsNullOrEmpty(entry.FeaturedImage)) { string[] filenames = { Path.GetFileName(entry.FeaturedImage) }; ctrl.PathValue = "/Public/Images/"; ctrl.Remove(fileNames); } var categories = entry.Categories.ToList(); foreach (var category in categories) { category.Entries.Remove(entry); } var keywords = entry.Keywords.ToList(); foreach (var keyword in keywords) { keyword.Entries.Remove(entry); if (keyword.Entries.Count == 0) db.Keywords.Remove(keyword); } db.Entries.Remove(entry); db.SaveChanges(); return RedirectToAction("Index"); }