#encoding: UTF-8
class ExerciseBanksController < ApplicationController
  before_action :require_login
  before_action :find_bank
  before_action :bank_admin, only: [:update]

  def show
    @exercise_questions = @bank.exercise_bank_questions&.includes(:exercise_bank_choices, :exercise_bank_shixun_challenges,
                                                                  :exercise_bank_standard_answers).order("question_number ASC")
    @exercise_ques_count = @exercise_questions.size # 全部的题目数
    @exercise_ques_scores = @exercise_questions.pluck(:question_score).sum

    #单选题的数量及分数
    exercise_single_ques = @exercise_questions.find_by_custom("question_type", Exercise::SINGLE)
    @exercise_single_ques_count = exercise_single_ques.size
    @exercise_single_ques_scores = exercise_single_ques.pluck(:question_score).sum

    #多选题的数量及分数
    exercise_double_ques = @exercise_questions.find_by_custom("question_type", Exercise::MULTIPLE)
    @exercise_double_ques_count = exercise_double_ques.size
    @exercise_double_ques_scores = exercise_double_ques.pluck(:question_score).sum

    # 判断题数量及分数
    exercise_ques_judge = @exercise_questions.find_by_custom("question_type", Exercise::JUDGMENT)
    @exercise_ques_judge_count = exercise_ques_judge.size
    @exercise_ques_judge_scores = exercise_ques_judge.pluck(:question_score).sum

    #填空题数量及分数
    exercise_ques_null = @exercise_questions.find_by_custom("question_type", Exercise::COMPLETION)
    @exercise_ques_null_count = exercise_ques_null.size
    @exercise_ques_null_scores = exercise_ques_null.pluck(:question_score).sum

    #简答题数量及分数
    exercise_ques_main = @exercise_questions.find_by_custom("question_type", Exercise::SUBJECTIVE)
    @exercise_ques_main_count = exercise_ques_main.size
    @exercise_ques_main_scores = exercise_ques_main.pluck(:question_score).sum

    #实训题数量及分数
    exercise_ques_shixun = @exercise_questions.find_by_custom("question_type", Exercise::PRACTICAL)
    @exercise_ques_shixun_count = exercise_ques_shixun.size
    @exercise_ques_shixun_scores = exercise_ques_shixun.pluck(:question_score).sum
  end

  def update
    tip_exception("试卷标题不能为空！") if params[:exercise_name].blank?
    @bank.update_attributes!(name: params[:exercise_name], description: params[:exercise_description])
    normal_status(0,"试卷更新成功！")
  end

  private

  def find_bank
    @bank = ExerciseBank.find_by!(id: params[:id])
    tip_exception(403, "无权限") unless (current_user.certification_teacher? && (@bank.is_public || @bank.user_id == current_user.id)) || current_user.admin?
  end

  def bank_admin
    tip_exception(403, "无权限") unless (current_user.certification_teacher? && @bank.user_id == current_user.id) || current_user.admin?
  end
end
