# encoding: utf-8
module ExerciseHelper

  # 单选
  def sigle_selection_standard_answer(params)
    size = params.ord - 96
    if size > 0 # 小写字母答案
      answer = params.ord - 96
    else
      answer = params.ord - 64
    end
  end

  # 多选
  def multiselect_standard_answer(params)
    size = params.ord - 96
    answer = []
    if size > 0 # 小写字母答案
      for i in 0..(params.length-1)
        answer << (params[i].ord - 96).to_s
      end
    else
      for i in 0..(params.length-1)
        answer << (params[i].ord - 64)
      end
    end
    answer = answer.sort
    answer.join("")
  end

  #
  def fill_standart_answer(params, standart_answer)
    params.each do |param|
      standart_answer.answer_text = param.value
      standart_answer.save
    end
  end

  # 获取多选的得分
  def get_mulscore(question, user)
    ecs = ExerciseAnswer.where("user_id =? and exercise_question_id =?", user.id, question.id)
    arr = []
    ecs.each do |ec|
      arr << ec.exercise_choice.choice_position
    end
    #arr = arr.sort
    str = arr.sort.join("")
    return str
  end

  # 判断用户是否已经提交了问卷
  # status 为0的时候是用户点击试卷。为1表示用户已经提交
  def has_commit_exercise?(exercise_id, user_id)
    pu = ExerciseUser.where("exercise_id=? and user_id=? and status=?",exercise_id, user_id, true)
    if pu.empty?
      false
    else
      true
    end
  end

  # 判断学生是否点击过问卷，点击则为他保存一个记录，记录start_at
  def has_click_exercise?(exercise_id, user_id)
    pu = ExerciseUser.where("exercise_id=? and user_id=? and status=?",exercise_id, user_id, false)
    if pu.empty?
      false
    else
      true
    end
  end

  def convert_to_char(str)
    result = ""
    length = str.length
    unless str.nil?
      if length === 1
        result += (str.to_i + 64).chr
        return result
      elsif length > 1
        for i in 0...length
          result += (str[i].to_i + 64).chr
        end
        return result
      end
    end
    return result
  end

  def convert_to_chi_num num
    result = ""
    case num.to_i
      when 1
        result = '一'
      when 2
        result = '二'
      when 3
        result = '三'
      when 4
        result = '四'
      when 5
        result = '五'
      when 6
        result = '六'
      when 7
        result = '七'
      when 8
        result = '八'
      when 9
        result = '九'
    end
    return result
  end

  def get_current_score exercise
    score = 0
    unless exercise.nil?
      exercise.exercise_questions.each do |exercise_question|
        unless exercise_question.question_score.nil?
          score += exercise_question.question_score
        end
      end
      return score
    end
    return score
  end

  def answer_be_selected?(answer,user)
    pv = answer.exercise_answers.where("#{ExerciseAnswer.table_name}.user_id = #{user.id} ")
    if !pv.nil? && pv.count > 0
      true
    else
      false
    end
  end

  #获取未完成的题目
  def get_uncomplete_question exercise,user
    all_questions = exercise.exercise_questions
    uncomplete_question = []
    all_questions.each do |question|
      answers = get_user_answer(question, user)
      if answers.empty?
        uncomplete_question << question
      end
    end
    uncomplete_question
  end

  #获取文本题答案
  def get_anwser_vote_text(question_id,user_id)
    pv = ExerciseAnswer.find_by_exercise_question_id_and_user_id(question_id,user_id)
    if pv.nil?
      ''
    else
      pv.answer_text
    end
  end

  # 获取当前学生回答问题的答案
  def get_user_answer(question,user)
    user_answer = question.exercise_answers.where("#{ExerciseAnswer.table_name}.user_id = #{user.id}")
    user_answer
  end

  # 获取问题的标准答案
  def get_user_standard_answer(question,user)
    if question.question_type == 3
      standard_answer =[]
      question.exercise_standard_answers.each do |answer|
        standard_answer << answer.answer_text
      end
    else
      standard_answer = question.exercise_standard_answers
    end
    standard_answer
  end

end