public ActionResult CreateInvocationDocument(int?id) { try { using (var db = new StoreContext()) { this.InvocationDocumentViewBugs(db); var item = new InvocationDocumentTemplate(); item.InvocationId = id; ViewBag.fileName = Guid.NewGuid().ToString(); return(View("InvocationDocumentTemplate", item)); } } catch (Exception ex) { return(HttpNotFound(ex.Message)); } }
public ActionResult SaveInvocationDocument(InvocationDocumentTemplate invocationDocumentTemplate) { try { using (var db = new StoreContext()) { string[] files = Directory.GetFiles(Server.MapPath("~/FileStorage/Invocation/" + invocationDocumentTemplate.InvocationId.ToString()), invocationDocumentTemplate.DocumentGuid + ".*"); if (invocationDocumentTemplate.InvocationDocumentId == 0) { var invocationDocument = new InvocationDocument(); invocationDocument.InvocationId = invocationDocumentTemplate.InvocationId; invocationDocument.DocumentTypeId = invocationDocumentTemplate.DocumentTypeId; invocationDocument.DocumentGuid = invocationDocumentTemplate.DocumentGuid; if (files != null) { foreach (var file in files) { invocationDocument.DocumentURL = "~/FileStorage/Invocation/" + invocationDocumentTemplate.InvocationId.ToString() + "/" + Path.GetFileName(file); } } invocationDocument.Id = userId; invocationDocument.LogDate = db.Database.SqlQuery <DateTime>("SELECT GETDATE()").Single(); db.InvocationDocuments.Add(invocationDocument); } else { InvocationDocument invocationDocument = db.InvocationDocuments.Find(invocationDocumentTemplate.InvocationDocumentId); invocationDocument.InvocationId = invocationDocumentTemplate.InvocationId; invocationDocument.DocumentTypeId = invocationDocumentTemplate.DocumentTypeId; invocationDocument.DocumentGuid = invocationDocumentTemplate.DocumentGuid; if (files != null) { foreach (var file in files) { invocationDocument.DocumentURL = "~/FileStorage/Invocation/" + invocationDocumentTemplate.InvocationId.ToString() + "/" + Path.GetFileName(file); } } invocationDocument.Id = userId; invocationDocument.LogDate = db.Database.SqlQuery <DateTime>("SELECT GETDATE()").Single(); db.InvocationDocuments.Attach(invocationDocument); db.Entry(invocationDocument).State = EntityState.Modified; } db.SaveChanges(); //Clear folder from unbound files string[] allFiles = Directory.GetFiles(Server.MapPath("~/FileStorage/Invocation/" + invocationDocumentTemplate.InvocationId.ToString())); foreach (string fileName in allFiles) { string fn = Path.GetFileNameWithoutExtension(fileName); int fileCnt = db.InvocationDocuments.Where(p => p.DocumentGuid.ToString() == fn).Count(); if (fileCnt == 0) { if (System.IO.File.Exists(fileName)) { System.IO.File.Delete(fileName); } } } return(this.Json(new { statuscode = 1, message = "" }, JsonRequestBehavior.AllowGet)); } } catch (Exception ex) { return(View("Error", new HandleErrorInfo(ex, "Invocation", "SaveInvocationDocument"))); } }