# frozen_string_literal: true module Admin class ResultController < AdminController # TODO: bypass pundit authorization until a result wrapper class if sorted after_action :skip_authorization # needed for :view def index sort_case = "(case when review_status = 0 then '' else name end)" sort_with_case = sort_column == 'name' ? sort_case : sort_column @candidates = policy_scope(:result).includes(:recruiter) .order("#{sort_with_case} #{sort_direction}") .page(params[:page]) end def view @candidate = Candidate.find_by(test_hash: params[:test_hash]) @quiz = @candidate.my_quiz @status = QuizStatus.new(@candidate) @comments = QuizComment.includes(:user).where(test_hash: @candidate.test_hash).order(:created_at) @comment = QuizComment.new end private def sort_column @sort_col ||= Candidate.column_names.include?(params[:sort]) ? params[:sort] : 'completed_at' end def sort_direction %w(asc desc).include?(params[:direction]) ? params[:direction] : 'desc' end end end