public ActionResult Index(string urlName, int page = 1) { var forum = _forumService.Get(urlName); if (forum == null) { return(this.NotFound("NotFound", null)); } var user = this.CurrentUser(); var permissionContext = _forumService.GetPermissionContext(forum, user); if (!permissionContext.UserCanView) { return(this.Forbidden("Forbidden", null)); } var closureDate = _categoryService.GetValue().ClosureDate.Date; if (DateTime.Now.Date > closureDate) { permissionContext.NotPost = true; } PagerContext pagerContext; var topics = _topicService.GetTopics(forum, permissionContext.UserCanModerate, page, out pagerContext); if (this.CurrentUser().UserType == 1) { foreach (var item in topics) { item.ReplyCount = _postService.GetReplyCountByStudent(item.TopicID, false, 0); } } var container = new ForumTopicContainer { Forum = forum, Topics = topics, PagerContext = pagerContext, PermissionContext = permissionContext }; _lastReadService.GetTopicReadStatus(user, container); var adapter = new ForumAdapterFactory(forum); if (adapter.IsAdapterEnabled) { adapter.ForumAdapter.AdaptForum(this, container); if (String.IsNullOrWhiteSpace(adapter.ForumAdapter.ViewName)) { return(View(adapter.ForumAdapter.Model)); } return(View(adapter.ForumAdapter.ViewName, adapter.ForumAdapter.Model)); } if (forum.IsQAForum) { return(View("IndexQA", container)); } return(View(container)); }
public ActionResult Index(string urlName, int page = 1) { if (String.IsNullOrWhiteSpace(urlName)) { return(NotFound()); } var forum = _forumService.Get(urlName); if (forum == null) { return(NotFound()); } var user = _userRetrievalShim.GetUser(HttpContext); var permissionContext = _forumService.GetPermissionContext(forum, user); if (!permissionContext.UserCanView) { return(Forbid()); } PagerContext pagerContext; var topics = _topicService.GetTopics(forum, permissionContext.UserCanModerate, page, out pagerContext); var container = new ForumTopicContainer { Forum = forum, Topics = topics, PagerContext = pagerContext, PermissionContext = permissionContext }; _lastReadService.GetTopicReadStatus(user, container); var adapter = new ForumAdapterFactory(forum); if (adapter.IsAdapterEnabled) { adapter.ForumAdapter.AdaptForum(this, container); if (String.IsNullOrWhiteSpace(adapter.ForumAdapter.ViewName)) { return(View(adapter.ForumAdapter.Model)); } return(View(adapter.ForumAdapter.ViewName, adapter.ForumAdapter.Model)); } if (forum.IsQAForum) { return(View("IndexQA", container)); } return(View(container)); }
public async Task <ActionResult> Index(string urlName, int pageNumber = 1) { if (string.IsNullOrWhiteSpace(urlName)) { return(NotFound()); } var forum = await _forumService.Get(urlName); if (forum == null) { return(NotFound()); } var user = _userRetrievalShim.GetUser(); var permissionContext = await _forumPermissionService.GetPermissionContext(forum, user); if (!permissionContext.UserCanView) { return(StatusCode(403)); } var(topics, pagerContext) = await _topicService.GetTopics(forum, permissionContext.UserCanModerate, pageNumber); var container = new ForumTopicContainer { Forum = forum, Topics = topics, PagerContext = pagerContext, PermissionContext = permissionContext }; await _lastReadService.GetTopicReadStatus(user, container); var adapter = new ForumAdapterFactory(forum); if (adapter.IsAdapterEnabled) { adapter.ForumAdapter.AdaptForum(this, container); if (string.IsNullOrWhiteSpace(adapter.ForumAdapter.ViewName)) { return(View(adapter.ForumAdapter.Model)); } return(View(adapter.ForumAdapter.ViewName, adapter.ForumAdapter.Model)); } if (forum.IsQAForum) { return(View("IndexQA", container)); } return(View(container)); }