public ActionResult Add() { Models.TomeViewModel newTomeViewModel = new TomeViewModel(); var SelectListItems = db.Tags.Select(x => new SelectListItem { Value = x.TagId.ToString(), Text = x.TagTitle }); var TagList = new List <SelectListItem>(SelectListItems); newTomeViewModel.TagList = TagList; String currentUserId = User.Identity.GetUserId(); ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId); var roleName = (from userroles in db.UserRoles join roles in db.Roles on userroles.RoleId equals roles.Id where userroles.UserId == currentUserId select roles.Name).FirstOrDefault(); ViewBag.roleAccount = roleName; return(View(newTomeViewModel)); }
public ActionResult Edit(TomeViewModel editedTome) { string path = Server.MapPath("../.."); try { string currentUserId = User.Identity.GetUserId(); ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId); Models.Tome tome = db.Tomes.Find(editedTome.ReferredTome.TomeId); tome.CreationDate = DateTime.Now; tome.IsPrivate = editedTome.ReferredTome.IsPrivate; TomeHistory tomeHistory = new TomeHistory { Tome = tome, FilePath = path + BASE_PATH + TOME_IDENTIFIER + (User.Identity.GetUserName().IsEmpty() ? ("anonymous" + Request.AnonymousID) : User.Identity.GetUserName()) + "-" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".html", ModificationDate = DateTime.Now, ApplicationUser = currentUser }; if (!Request.IsAuthenticated && tome.IsPrivate) { return(RedirectToAction("NotFound", "Error")); } Models.TomeViewModel editTomeViewModel = new TomeViewModel(); var selectedTag = (from tag in db.TagReferences where tag.TomeId == tome.TomeId select tag).SingleOrDefault(); var SelectListItems = db.Tags.Select(x => new SelectListItem { Value = x.TagId.ToString(), Text = x.TagTitle }); var TagList = new List <SelectListItem>(SelectListItems); editTomeViewModel.TagList = TagList; if (selectedTag != null) { selectedTag.TagId = editedTome.SelectedTag; db.SaveChanges(); } else { TagReference newTagRef = new TagReference(); newTagRef.TomeId = editedTome.ReferredTome.TomeId; newTagRef.TagId = editedTome.SelectedTag; db.TagReferences.Add(newTagRef); } // insert into db db.TomeHistories.Add(tomeHistory); db.SaveChanges(); // create file and fill with content string content = editedTome.TomeContent.Content.Replace("\"../uploads/", "\"../../uploads/");; System.IO.File.WriteAllText(tomeHistory.FilePath, content); // update curent version var currentVersion = db.CurrentVersions.SingleOrDefault(m => m.Tome.TomeId == editedTome.ReferredTome.TomeId); currentVersion.TomeHistory = tomeHistory; db.SaveChanges(); } catch (Exception e) { TempData["Alert"] = "An error occured: TomeController Edit Post"; Console.WriteLine(e); throw; } return(RedirectToAction("Index")); }
public ActionResult Edit(int id) { try { ViewBag.canMakeProtected = false; String filePath; Models.Tome tome = db.Tomes.Find(id); Models.TomeViewModel editTomeViewModel = new TomeViewModel(); Tag selectedTag = (from tag in db.TagReferences where tag.TomeId == id select tag.Tag).SingleOrDefault(); var SelectListItems = db.Tags.Select(x => new SelectListItem { Value = x.TagId.ToString(), Text = x.TagTitle }); var TagList = new List <SelectListItem>(SelectListItems); editTomeViewModel.TagList = TagList; ApplicationUser tomeOwner = (from selectedTome in db.Tomes where selectedTome.TomeId == id select selectedTome.ApplicationUser).SingleOrDefault(); if (tomeOwner.Id == User.Identity.GetUserId() || User.IsInRole("Administrator") || User.IsInRole("Moderator")) { ViewBag.canMakeProtected = true; } // Find current version and get the file path int currentVersionId = (from version in db.CurrentVersions where version.TomeId == id select version.TomeHistoryId).SingleOrDefault(); filePath = (from history in db.TomeHistories where history.Id == currentVersionId select history.FilePath).SingleOrDefault(); if (!Request.IsAuthenticated && tome.IsPrivate) { return(RedirectToAction("AccessDenied", "Error")); } String tomeContent = System.IO.File.ReadAllText(filePath); editTomeViewModel.ReferredTome = tome; Debug.WriteLine(filePath); Debug.WriteLine(tomeContent); editTomeViewModel.ReferredTome = tome; TomeContent content = new TomeContent(); content.Content = tomeContent; editTomeViewModel.TomeContent = content; String currentUserId = User.Identity.GetUserId(); ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId); var roleName = (from userroles in db.UserRoles join roles in db.Roles on userroles.RoleId equals roles.Id where userroles.UserId == currentUserId select roles.Name).FirstOrDefault(); ViewBag.roleAccount = roleName; return(View(editTomeViewModel)); } catch (Exception e) { TempData["Alert"] = "An error occured: TomeController Edit Get"; Debug.WriteLine("An error occured: " + e); return(RedirectToAction("Index")); } }
public ActionResult Show(int id) { try { String currentUserId = User.Identity.GetUserId(); ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId); var roleName = (from userroles in db.UserRoles join roles in db.Roles on userroles.RoleId equals roles.Id where userroles.UserId == currentUserId select roles.Name).FirstOrDefault(); var currentTome = (from tome in db.Tomes where tome.TomeId == id select tome).SingleOrDefault(); var tagRef = (from tome in db.Tomes join tagR in db.TagReferences on tome.TomeId equals tagR.TomeId where tome.TomeId == id select tagR.Tag.TagTitle).FirstOrDefault(); /* * if (currentTome.IsPrivate == true && (currentUserId == null || * (currentUser != currentTome.ApplicationUser && * roleName != "Moderator" && roleName != "Administrator"))) * { * //Denied Access ( bc ori nu e logat ori nu e detinatorul ori nu e moderator / administrator) * return RedirectToAction("Index"); * } */ int currentHistory = (from version in db.CurrentVersions where version.TomeId == id select version.TomeHistoryId).SingleOrDefault(); var currentTomeHistory = (from tomeHistory in db.TomeHistories where tomeHistory.Id == currentHistory select tomeHistory).SingleOrDefault(); TomeViewModel currentTomeViewModel = new TomeViewModel(); currentTomeViewModel.ReferredTome = db.Tomes.Find(id); currentTomeViewModel.TomeContent = new TomeContent(); currentTomeViewModel.TomeContent.Content = currentTomeHistory.FilePath; if (currentUser == currentTome.ApplicationUser) { ViewBag.AuthUser = true; } else { ViewBag.AuthUser = false; } ViewBag.roleAccount = roleName; ViewBag.TagTome = tagRef; return(View(currentTomeViewModel)); } catch (Exception e) { TempData["Alert"] = "An error occured: TomeController Add Get"; Debug.WriteLine("An error occured: " + e); return(RedirectToAction("Index")); } }