public PartialViewResult PartialDetails(int id, long?pid) { // Get User ID string userId = User.Identity.GetUserId(); // Get the Document details MasterFileViewModel file = _is.GetMasterFileViewModel(id, userId, (SessionState)Session["SessionState"], pid); // Save session Session["SessionState"] = new SessionState("file", file.RedirectId, id, string.Empty, null, "file", id); return(PartialView(file)); }
// GET: MasterFiles/Edit/5 public ActionResult Edit(int id, long?pid) { if (!Editable(id)) { return(RedirectToAction("Details", new { id, pid })); } string userId = User.Identity.GetUserId(); MasterFileViewModel file = _is.GetMasterFileViewModel(id, userId, (SessionState)Session["SessionState"], pid); Session["SessionState"] = new SessionState("edit", (long)pid, id, string.Empty, null, "edit", id); return(View(file)); }
public MasterFileViewModel GetMasterFileViewModel(long id, string userId, SessionState ss, long?pid) { var item = _db.MasterFile.Find(id); if (item == null) { return(new MasterFileViewModel()); } var revisions = item.Revisions; var latRev = revisions.Count == 0 ? 0 : revisions.Select(a => a.Revision).Max(); var revId = revisions.Count == 0 ? 0 : revisions.OrderByDescending(a => a.Revision).Take(1).Select(b => b.Id).FirstOrDefault(); var revCmnt = revisions.Count == 0 ? "" : revisions.OrderByDescending(a => a.Revision).Take(1).Select(b => b.Comment).FirstOrDefault(); var revNam = revisions.Count == 0 ? "N/A" : revisions.Where(a => a.Id == revId).FirstOrDefault().Name; var revCnt = revisions.Count == 0 ? 0 : revisions.Count(); FileRevision fr = _db.FileRevision.Where(a => a.MasterFileId == id).OrderByDescending(b => b.Id).Take(1).FirstOrDefault(); string issue = item.Issue == null ? "" : item.Issue.ToString(); string draft = fr == null ? "" : fr.Draft; FileRevision lIssue = _db.FileRevision.Where(a => a.MasterFileId == id).Where(c => c.Type.Equals("issue")).OrderByDescending(b => b.Id).Take(1).FirstOrDefault(); FileRevision lDraft = _db.FileRevision.Where(a => a.MasterFileId == id).Where(c => c.Type.Equals("draft")).OrderByDescending(b => b.Id).Take(1).FirstOrDefault(); var foldersList = _db.Folder.Select(a => new FolderPartialViewModel() { Id = a.Id, Name = a.Name, Path = a.Path }) .OrderBy(a => a.Name) .ThenBy(a => a.Path) .ToList(); ApplicationUser user = GetASPUser(userId); bool changelog = user.UserSetting.ShowChangelog; bool promote = !issue.Equals(draft) && revisions.Count() != 0; var lockUser = _db.Users.Find(item.UserLock); string lu = lockUser == null ? "unknown" : string.Format("{0}, {1}", lockUser.Surname, lockUser.FirstName); MasterFileViewModel file = new MasterFileViewModel() { Current = item, //Breadcrumbs = GetFileBreadcrumbs((long)item.FolderId), LatestRevision = latRev, LatestRevisionId = revId, RevisionName = revNam, RevisionsCount = revCnt, DraftVersion = draft, LatestDraft = lDraft, LatestIssue = lIssue, FolderList = foldersList, Promote = promote, ShowChangelog = changelog, Author = string.Format("{0}, {1}", item.User.Surname, item.User.FirstName), Locked = item.Locked, LockedBy = lu, Lockable = !item.Locked || item.UserLock.Equals(userId), LatestRevisionComm = revCmnt }; Folder par; if (pid != null && pid > 0) { par = _db.Folder.Find(pid); } else { par = _db.Folder.Find(ss.CatId); } file.RedirectId = par.Id; file.RedirectLabel = par.Name; string retFun = ""; //switch(ss.ReturnTo) //{ // case "folder": // retFun = string.Format("goToFolder({0})", ss.ReturnId); // break; // case "file": // retFun = string.Format("goToFile({0},{1})", ss.ReturnId, ss.CatId); // break; // case "search": // retFun = string.Format("goToSearch({0},'{1}',{2})", ss.CatId, ss.Search, ss.Scope); // file.RedirectLabel = "search"; // break; // default: // retFun = string.Format("goToFolder({0})", par.Id); // break; //} retFun = string.Format("goToFolder({0})", ss.CatId); file.RedirectFun = retFun; return(file); }