# 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
