public ActionResult ViewThread(ForumThreadRequestModel requestModel) { ViewThreadModel viewThreadModel = new ViewThreadModel() { Replies = new List <ForumReplyModel>() }; using (CGWebEntities entities = new CGWebEntities()) { ForumThread currentThread = entities.ForumThreads.Where(FT => FT.ThreadId.Equals(requestModel.ThreadId)).Single(); viewThreadModel.ParentTopic = currentThread.ParentForumTopic.ConvertToForumTopicModel(); if (!currentThread.ParentForumTopic.IsPublic && !Request.IsAuthenticated) { return(RedirectToAction("Login", "Account")); } int currentPagingLimit = Convert.ToInt32(ConfigurationManager.AppSettings["ForumReplyPagingLimit"]); viewThreadModel.CurrentPage = requestModel.CurrentPage; viewThreadModel.MaxPages = (int)Math.Ceiling((double)currentThread.ForumReplies.Count / (double)currentPagingLimit); viewThreadModel.CurrentThread = currentThread.ConvertToForumThreadModel(true); foreach (ForumReply reply in currentThread.ForumReplies.OrderBy(FR => FR.CreatedOn).Skip(requestModel.CurrentPage * currentPagingLimit).Take(currentPagingLimit)) { viewThreadModel.Replies.Add(reply.ConvertToThreadReplyModel(true)); } } return(View(viewThreadModel)); }
public ActionResult ViewThread(ForumReplyModel model) { ViewThreadModel viewThreadModel = new ViewThreadModel() { Replies = new List <ForumReplyModel>() }; using (CGWebEntities entities = new CGWebEntities()) { UserProfile currentUserProfile = entities.UserProfiles.Where(P => P.UserName.Equals(User.Identity.Name)).Single(); ForumReply newReply = new ForumReply() { CreatedBy = currentUserProfile.UserId, CreatedOn = DateTime.UtcNow, ModifiedOn = null, ParentThreadId = model.ThreadId, ReplyContent = model.ReplyContent, ReplyId = Guid.NewGuid() }; entities.ForumReplies.Add(newReply); entities.SaveChanges(); ModelState.Clear(); ForumThread currentThread = entities.ForumThreads.Where(FT => FT.ThreadId.Equals(model.ThreadId)).Single(); viewThreadModel.ParentTopic = currentThread.ParentForumTopic.ConvertToForumTopicModel(); if (!currentThread.ParentForumTopic.IsPublic && !Request.IsAuthenticated) { return(RedirectToAction("Login", "Account")); } int currentPagingLimit = Convert.ToInt32(ConfigurationManager.AppSettings["ForumReplyPagingLimit"]); viewThreadModel.MaxPages = (int)Math.Ceiling((double)currentThread.ForumReplies.Count / (double)currentPagingLimit); viewThreadModel.CurrentPage = viewThreadModel.MaxPages - 1; viewThreadModel.CurrentThread = currentThread.ConvertToForumThreadModel(true); foreach (ForumReply reply in currentThread.ForumReplies.OrderBy(FR => FR.CreatedOn).Skip(viewThreadModel.CurrentPage * currentPagingLimit).Take(currentPagingLimit)) { viewThreadModel.Replies.Add(reply.ConvertToThreadReplyModel(true)); } } return(View(viewThreadModel)); }