public void DeletePost(Forum_Post ToDelete) { ToDelete.Forum_Thread.Posts--; db.Forum_Posts.DeleteOnSubmit(ToDelete); }
public ActionResult NewThread(WritePostViewModel model, string button) { using (ForumRespository db = new ForumRespository()) { Forum_Category Category = db.GetCategoryByID(model.id); if (Category == null) return NotFoundView("Category"); model.AddNavigation(Category); model.AddNavigation("New thread"); Forum_User Poster = GetCurrentUser(db); if (!db.CheckCategoryPermissions(Category, Poster, P => P.AllowNewThread)) return AuthenticationHelper.AccessDeniedView(model); if (String.Equals(button, "preview", StringComparison.InvariantCultureIgnoreCase)) { model.ShowPost = true; model.PostHtml = PostParser.Parse(model.PostText); ModelState.Clear(); } else if (IsHttpPost) { if (!AntiForgeryTokenValid) { ModelState.AddModelError("AntiForgery", "The antiforgery token was invalid."); } if (String.IsNullOrEmpty(model.ThreadTitle)) { ModelState.AddModelError("ThreadTitle", "A thread title is required."); } if (ModelState.IsValid) { Forum_Thread NewThread = new Forum_Thread(); NewThread.Title = model.ThreadTitle; NewThread.PosterID = Poster.UserID; Forum_Post InitialPost = new Forum_Post(); InitialPost.TimeStamp = DateTime.Now; InitialPost.PosterID = NewThread.PosterID; InitialPost.PostText = model.PostText; NewThread.Forum_Posts.Add(InitialPost); NewThread.Posts = 1; NewThread.LastPostTime = InitialPost.TimeStamp; NewThread.CategoryID = model.id; // Save and add thread to database db.AddThread(NewThread); db.SetLastPost(NewThread, Poster, 1); db.Save(); return RedirectToAction("ViewCategory", new { id = model.id }); } } else { ModelState.Clear(); } model.EditTitle = true; model.Title = "Post new Thread"; return View("WritePost", model); } }
public ActionResult Reply(WritePostViewModel model, string button, int QuoteId = 0) { using (ForumRespository db = new ForumRespository()) { Forum_Thread RepliedToThread = db.GetThreadByID(model.id); if (RepliedToThread == null) return NotFoundView("Thread"); model.AddNavigation(RepliedToThread); model.AddNavigation("Reply to thread"); Forum_User Replier = GetCurrentUser(db); if (!db.CheckCategoryPermissions(RepliedToThread.Forum_Category, Replier, P => P.AllowReply)) return AuthenticationHelper.AccessDeniedView(model); if (RepliedToThread.Locked) return AuthenticationHelper.AccessDeniedView(model); if (IsHttpPost) { if (String.Equals(button, "preview", StringComparison.InvariantCultureIgnoreCase)) { model.ShowPost = true; model.PostHtml = PostParser.Parse(model.PostText); ModelState.Clear(); } else if (!AntiForgeryTokenValid) { ModelState.AddModelError("AntiForgery", "The antiforgery token was invalid."); } else if (ModelState.IsValid) { Forum_Post ReplyPost = new Forum_Post(); ReplyPost.TimeStamp = DateTime.Now; ReplyPost.PosterID = Replier.UserID; ReplyPost.PostText = model.PostText; RepliedToThread.Forum_Posts.Add(ReplyPost); RepliedToThread.LastPostTime = ReplyPost.TimeStamp; RepliedToThread.Posts = RepliedToThread.Forum_Posts.Count; // Save to database db.Save(); int PostIndex = RepliedToThread.Forum_Posts.IndexOf(ReplyPost); int NewPostPage = PostIndex / POSTS_PER_PAGE + 1; int NewPostNumber = PostIndex % POSTS_PER_PAGE + 1; return RedirectToAction("ViewThread", new { id = RepliedToThread.ThreadID, page = NewPostPage }).AddFragment(String.Format("Post_{0}", NewPostNumber)); } } else { ModelState.Clear(); Forum_Post QuotedPost = db.GetPostByID(QuoteId); if (QuotedPost != null) { model.PostText = String.Format("[quote={0}]{1}[/quote]", QuotedPost.Forum_User.Username, QuotedPost.PostText); } } model.ThreadID = model.id; model.Title = "Reply to Thread"; return View("WritePost", model); } }
private void detach_Forum_Posts(Forum_Post entity) { this.SendPropertyChanging(); entity.Forum_User = null; }
partial void DeleteForum_Post(Forum_Post instance);
partial void UpdateForum_Post(Forum_Post instance);
partial void InsertForum_Post(Forum_Post instance);
private void attach_Forum_Posts(Forum_Post entity) { this.SendPropertyChanging(); entity.Forum_Thread = this; }