public virtual async Task <IActionResult> Topic(int id, int pageNumber = 1)
        {
            if (!_forumSettings.ForumsEnabled)
            {
                return(RedirectToRoute("Homepage"));
            }

            var forumTopic = await _forumService.GetTopicByIdAsync(id);

            if (forumTopic == null)
            {
                return(RedirectToRoute("Boards"));
            }

            var model = await _forumModelFactory.PrepareForumTopicPageModelAsync(forumTopic, pageNumber);

            //if no posts loaded, redirect to the first page
            if (!model.ForumPostModels.Any() && pageNumber > 1)
            {
                return(RedirectToRoute("TopicSlug", new { id = forumTopic.Id, slug = await _forumService.GetTopicSeNameAsync(forumTopic) }));
            }

            //update view count
            forumTopic.Views += 1;
            await _forumService.UpdateTopicAsync(forumTopic);

            return(View(model));
        }