|
|
|
class ExerciseUserPdfService
|
|
|
|
include ExercisesHelper
|
|
|
|
include ApplicationHelper
|
|
|
|
include StudentWorksHelper
|
|
|
|
include GitHelper
|
|
|
|
|
|
|
|
attr_reader :exercise, :ex_user, :request_url
|
|
|
|
|
|
|
|
def initialize(exercise, ex_user,request_url)
|
|
|
|
@exercise = exercise
|
|
|
|
@ex_user = ex_user
|
|
|
|
@request_url = request_url
|
|
|
|
@ex_user_user = @ex_user.user
|
|
|
|
@course = @exercise.course
|
|
|
|
end
|
|
|
|
|
|
|
|
def filename
|
|
|
|
user_course = @course.course_members.find_by(user_id:@ex_user_user.id)&.course_group_name
|
|
|
|
exercise_user_name = "#{@ex_user_user.real_name}_#{user_course.present? ? user_course : "未分班"}_#{exercise.exercise_name}_#{Time.now.strftime('%Y%m%d_%H%M')}"
|
|
|
|
"#{exercise_user_name.strip}.pdf"
|
|
|
|
end
|
|
|
|
|
|
|
|
def prepare_binding
|
|
|
|
load_data
|
|
|
|
|
|
|
|
binding
|
|
|
|
end
|
|
|
|
|
|
|
|
def ex_pdf
|
|
|
|
generate_pdf
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def generate_pdf
|
|
|
|
file = File.open(Rails.root.join('app/templates/exercise_export/exercise_user.html.erb'))
|
|
|
|
html = ERB.new(file.read).result(prepare_binding)
|
|
|
|
|
|
|
|
kit = PDFKit.new(html)
|
|
|
|
base_css = %w(app/templates/exercise_export/exercise_export.css)
|
|
|
|
base_css.each { |css| kit.stylesheets << Rails.root.join(css) }
|
|
|
|
# #-----正式需删掉
|
|
|
|
# aa = File.open(Rails.root.join("public/123.html"),"w+")
|
|
|
|
# aa.syswrite(kit.source)
|
|
|
|
# #正式需删掉-------s
|
|
|
|
file = Tempfile.new(filename)
|
|
|
|
kit.to_pdf(file.path)
|
|
|
|
file
|
|
|
|
end
|
|
|
|
|
|
|
|
def load_data
|
|
|
|
@exercise_questions = exercise.exercise_questions
|
|
|
|
@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",0)
|
|
|
|
@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",1)
|
|
|
|
@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",2)
|
|
|
|
@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",3)
|
|
|
|
@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",4)
|
|
|
|
@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",5)
|
|
|
|
@exercise_ques_shixun_count = exercise_ques_shixun.size
|
|
|
|
@exercise_ques_shixun_scores = exercise_ques_shixun.pluck(:question_score).sum
|
|
|
|
|
|
|
|
@exercise_questions = @exercise_questions&.includes(:exercise_choices,:exercise_shixun_challenges,:exercise_answers,:exercise_shixun_answers,:exercise_answer_comments,:exercise_standard_answers)
|
|
|
|
get_each_student_exercise(exercise.id,@exercise_questions,@ex_user_user.id)
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|