diff --git a/app/controllers/request_for_comments_controller.rb b/app/controllers/request_for_comments_controller.rb index 020f1ba1..327d7aa7 100644 --- a/app/controllers/request_for_comments_controller.rb +++ b/app/controllers/request_for_comments_controller.rb @@ -11,28 +11,44 @@ class RequestForCommentsController < ApplicationController # GET /request_for_comments # GET /request_for_comments.json def index - @search = RequestForComment.last_per_user(2).search(params[:q]) + @search = RequestForComment + .last_per_user(2) + .joins('join "submissions" s on s.id = request_for_comments.submission_id + left outer join "files" f on f.context_id = s.id + left outer join "comments" on comments.file_id = f.id') + .group('request_for_comments.id, request_for_comments.user_id, request_for_comments.exercise_id, + request_for_comments.file_id, request_for_comments.question, request_for_comments.created_at, + request_for_comments.updated_at, request_for_comments.user_type, request_for_comments.solved, + request_for_comments.submission_id, request_for_comments.row_number') # ugly, but rails wants it this way + .select('request_for_comments.*, max(comments.updated_at) as last_comment') + .search(params[:q]) @request_for_comments = @search.result.order('created_at DESC').paginate(page: params[:page]) authorize! end def get_my_comment_requests - @search = RequestForComment.where(user_id: current_user.id).order('created_at DESC').search(params[:q]) - @request_for_comments = @search.result.paginate(page: params[:page]) + @search = RequestForComment + .where(user_id: current_user.id) + .joins('join "submissions" s on s.id = request_for_comments.submission_id + left outer join "files" f on f.context_id = s.id + left outer join "comments" on comments.file_id = f.id') + .group('request_for_comments.id') + .select('request_for_comments.*, max(comments.updated_at) as last_comment') + .search(params[:q]) + @request_for_comments = @search.result.order('created_at DESC').paginate(page: params[:page]) render 'index' end def get_rfcs_with_my_comments @search = RequestForComment - .joins(:comments) + .joins(:comments) # we don't need to outer join here, because we know the user has commented on these .where(comments: {user_id: current_user.id}) .group('request_for_comments.id') .joins(:comments) .group('request_for_comments.id') .select('request_for_comments.*, max(comments.updated_at) as last_comment') - .order('last_comment DESC') .search(params[:q]) - @request_for_comments = @search.result.paginate(page: params[:page]) + @request_for_comments = @search.result.order('last_comment DESC').paginate(page: params[:page]) render 'index' end