// Returns a page of the requested thread public async Task <IActionResult> Index(int id, int page = 1) { // Retrieves the requested thread Thread thread = await _repository.GetThreadAsync(id); // Returns 404 if thread is null if (thread == null) { return(NotFound()); } // Returns message of thread has been removed if (thread.Deleted || thread.User.Deleted) { MessageViewModel messageModel = new MessageViewModel() { Title = "Removed", MessageTitle = "This thread has been removed" }; return(View("Message", messageModel)); } // Sets the current user User user = await _repository.GetUserAsync(User); // Retrieves comments for the requested page Result <IEnumerable <Comment> > result = _repository.GetThreadReplies(thread, page); if (result.Failure) { return(StatusCode(result.Code)); } // Creates model and returns view ThreadViewModel model = new ThreadViewModel() { Thread = thread, Comments = result.Value, Page = page, PageCount = ((thread.Comments.Count + 1) + (PostsPerPage - 1)) / PostsPerPage, User = user }; return(View("Thread", model)); }