Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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));
        }