|  |  | # 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 |