private void DeleteEPaper(HttpContext context) { var id = Convert.ToInt32(context.Request.Form["id"]); var rootPath = context.Server.MapPath("~/EPapers"); using (var dbContext = new Models.DBAccess()) { var epaper = dbContext.EPapers.FirstOrDefault(m => m.ID == id); if (epaper == null) { return; } TryDeleteFile(Path.Combine(rootPath, epaper.Path)); TryDeleteFile(Path.Combine(rootPath, epaper.ThumbPath)); TryDeleteFile(Path.Combine(rootPath, epaper.BigThumbPath)); foreach (var detail in epaper.EPaperDetails) { TryDeleteFile(Path.Combine(rootPath, detail.Path)); } dbContext.EPaperDetails.RemoveRange(epaper.EPaperDetails); dbContext.EPapers.Remove(epaper); dbContext.SaveChanges(); } }
public void SaveEPaper(HttpContext context) { RemoveExtraImages(context.Server.MapPath("~/EPapers/Temp")); var dataID = 0; try { dataID = Convert.ToInt32(context.Request.Form["dataid"]); } catch { } //process image var rootPath = context.Server.MapPath("~/EPapers"); var file = ""; Models.EPaper ePaper = null; var isNew = false; using (var dbContext = new Models.DBAccess()) { if (dataID > 0) { ePaper = dbContext.EPapers.FirstOrDefault(m => m.ID == dataID); } if (ePaper == null) { file = Path.Combine(rootPath, "Temp", Path.GetFileName(context.Request.Form["image"])); } else { file = Path.Combine(rootPath, ePaper.Path); } if (!File.Exists(file)) { context.Response.Write(JsonConvert.SerializeObject(new Models.ReturnResult() { IsSuccess = false, Message = "Couldn't find EPaper" })); return; } //save to DB var shapes = JArray.Parse(context.Request.Form["shapes"]); var prefixPath = DateTime.Now.ToString("yyyy/MM/dd"); var storeDir = Path.Combine(rootPath, prefixPath); if (!Directory.Exists(storeDir)) { Directory.CreateDirectory(storeDir); } var extenstion = Path.GetExtension(file); using (var image = Image.FromFile(file)) { if (ePaper == null) { isNew = true; ePaper = new Models.EPaper() { CreateTime = DateTime.Now }; var strSize = "{\"x\":" + image.Width + ",\"y\":" + image.Height; ePaper.Path = prefixPath + "/" + Guid.NewGuid().ToString() + extenstion; var size = GetSize(image.Width, image.Height, 180, 135); strSize += ",\"x1\":" + size.Item1 + ",\"y1\":" + size.Item2; var thumbImage = image.GetThumbnailImage(size.Item1, size.Item2, () => { return(false); }, IntPtr.Zero); ePaper.ThumbPath = prefixPath + "/" + Guid.NewGuid().ToString() + extenstion; thumbImage.Save(Path.Combine(rootPath, ePaper.ThumbPath)); size = GetSize(image.Width, image.Height, 660, 880); strSize += ",\"x2\":" + size.Item1 + ",\"y2\":" + size.Item2 + "}"; thumbImage = image.GetThumbnailImage(size.Item1, size.Item2, () => { return(false); }, IntPtr.Zero); ePaper.BigThumbPath = prefixPath + "/" + Guid.NewGuid().ToString() + extenstion; thumbImage.Save(Path.Combine(rootPath, ePaper.BigThumbPath)); ePaper.Size = strSize; dbContext.EPapers.Add(ePaper); dbContext.SaveChanges(); } foreach (var item in shapes) { Models.EPaperDetail detail = null; var detailID = item.Value <int>("dataid"); if (detailID > 0) { detail = ePaper.EPaperDetails.FirstOrDefault(m => m.ID == detailID); } if (item.Value <string>("type") == "rect") { if (detail == null) { detail = new Models.EPaperDetail() { EPaperID = ePaper.ID, Shape = JsonConvert.SerializeObject(item), Path = prefixPath + "/" + Guid.NewGuid().ToString() + extenstion }; dbContext.EPaperDetails.Add(detail); } else { TryDeleteFile(Path.Combine(rootPath, detail.Path)); } detail.Shape = JsonConvert.SerializeObject(item); using (Image block = CutImage(image, item.Value <int>("x"), item.Value <int>("y"), item.Value <int>("width"), item.Value <int>("height"))) { block.Save(Path.Combine(rootPath, detail.Path)); } } } for (var i = 0; i < ePaper.EPaperDetails.Count; i++) { if (shapes.FirstOrDefault(m => m.Value <int>("dataid") == ePaper.EPaperDetails.ElementAt(i).ID) == null) { dbContext.EPaperDetails.Remove(ePaper.EPaperDetails.ElementAt(i)); i--; } } dbContext.SaveChanges(); } } if (isNew) { File.Move(file, Path.Combine(rootPath, ePaper.Path)); } }