You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
educoder/app/services/examination_intelligent_set.../save_examination_service.rb

38 lines
1.2 KiB

class ExaminationIntelligentSettings::SaveExaminationService < ApplicationService
attr_reader :exam, :params, :exam_setting
def initialize(exam, params, exam_setting)
@exam = exam
@params = params
@exam_setting = exam_setting
end
def call
ExaminationIntelligentSettings::SaveExamForm.new(params).validate!
ActiveRecord::Base.transaction do
exam.name = params[:name].to_s.strip
exam.difficulty = exam_setting.difficulty
exam.duration = params[:duration].present? ? params[:duration].to_i : nil
exam.sub_discipline_id = exam_setting.sub_discipline_id
exam.intelligent = 1
exam.save!
# 知识点的创建
exam_setting.tag_discipline_containers.each do |tag|
exam.tag_discipline_containers << TagDisciplineContainer.new(tag_discipline_id: tag.tag_discipline_id)
end
# 试题的复制
exam_setting.item_baskets.includes(:item_bank).each do |basket|
item = basket.item_bank
if item.present?
new_item = ExaminationItem.new
new_item.new_item(item, exam, basket.score, basket.position)
end
end
exam_setting.destroy!
end
end
end