| 
							
								 | 
							
							class QuestionBanksController < ApplicationController
 | 
						
						
						
						
							 | 
							
								 | 
							
							  before_action :require_login
 | 
						
						
						
						
							 | 
							
								 | 
							
							  before_action :params_filter
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  # 题库选用列表
 | 
						
						
						
						
							 | 
							
								 | 
							
							  # object_type: #  normal 普通作业题库; group 分组作业题库; poll问卷题库; exercise试卷题库; gtask 毕设选题题库;gtopic 毕设任务
 | 
						
						
						
						
							 | 
							
								 | 
							
							  # filter: 过滤条件 public公共题库, myself我的题库
 | 
						
						
						
						
							 | 
							
								 | 
							
							  # search: 搜索条件
 | 
						
						
						
						
							 | 
							
								 | 
							
							  def bank_list
 | 
						
						
						
						
							 | 
							
								 | 
							
							    page = params[:page] || 1
 | 
						
						
						
						
							 | 
							
								 | 
							
							    limit = params[:limit] || 15
 | 
						
						
						
						
							 | 
							
								 | 
							
							    @certification_teacher = current_user.is_certification_teacher || current_user.admin?
 | 
						
						
						
						
							 | 
							
								 | 
							
							    @objects = @object_type.classify.constantize.where(@object_filter)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    @objects =
 | 
						
						
						
						
							 | 
							
								 | 
							
							        if params[:search]
 | 
						
						
						
						
							 | 
							
								 | 
							
							          if params[:filter] == 'public'
 | 
						
						
						
						
							 | 
							
								 | 
							
							            # 已认证才能获取题库
 | 
						
						
						
						
							 | 
							
								 | 
							
							            if @certification_teacher
 | 
						
						
						
						
							 | 
							
								 | 
							
							              sql = %Q{
 | 
						
						
						
						
							 | 
							
								 | 
							
							              #{@objects.table_name}.is_public = 1 and concat(#{@objects.table_name}.name, course_lists.name) like
 | 
						
						
						
						
							 | 
							
								 | 
							
							                    '%#{params[:search]}%'
 | 
						
						
						
						
							 | 
							
								 | 
							
							                  }
 | 
						
						
						
						
							 | 
							
								 | 
							
							              @objects.joins(:course_list).where(sql)
 | 
						
						
						
						
							 | 
							
								 | 
							
							            else
 | 
						
						
						
						
							 | 
							
								 | 
							
							              @objects.none
 | 
						
						
						
						
							 | 
							
								 | 
							
							            end
 | 
						
						
						
						
							 | 
							
								 | 
							
							          else
 | 
						
						
						
						
							 | 
							
								 | 
							
							            sql = %Q{
 | 
						
						
						
						
							 | 
							
								 | 
							
							            #{@objects.table_name}.user_id = #{current_user.id} and concat(#{@objects.table_name}.name, course_lists.name) like
 | 
						
						
						
						
							 | 
							
								 | 
							
							                    '%#{params[:search]}%'
 | 
						
						
						
						
							 | 
							
								 | 
							
							                  }
 | 
						
						
						
						
							 | 
							
								 | 
							
							            @objects.joins(:course_list).where(sql)
 | 
						
						
						
						
							 | 
							
								 | 
							
							          end
 | 
						
						
						
						
							 | 
							
								 | 
							
							        else
 | 
						
						
						
						
							 | 
							
								 | 
							
							          if params[:filter] == 'public'
 | 
						
						
						
						
							 | 
							
								 | 
							
							            if @certification_teacher # 只用平台已认证的老师才能获取题库
 | 
						
						
						
						
							 | 
							
								 | 
							
							              @objects.is_public
 | 
						
						
						
						
							 | 
							
								 | 
							
							            else
 | 
						
						
						
						
							 | 
							
								 | 
							
							              @objects.none
 | 
						
						
						
						
							 | 
							
								 | 
							
							            end
 | 
						
						
						
						
							 | 
							
								 | 
							
							          else
 | 
						
						
						
						
							 | 
							
								 | 
							
							            @objects.myself(current_user.id)
 | 
						
						
						
						
							 | 
							
								 | 
							
							          end
 | 
						
						
						
						
							 | 
							
								 | 
							
							        end
 | 
						
						
						
						
							 | 
							
								 | 
							
							    @objects = @objects.page(page).per(limit)
 | 
						
						
						
						
							 | 
							
								 | 
							
							  end
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  # 保存题库
 | 
						
						
						
						
							 | 
							
								 | 
							
							  def save_banks
 | 
						
						
						
						
							 | 
							
								 | 
							
							    tip_exception("bank_id不能为空") if params[:bank_id].blank?
 | 
						
						
						
						
							 | 
							
								 | 
							
							    tip_exception("一次最多只能选用15份题库") if params[:bank_id].count > 15
 | 
						
						
						
						
							 | 
							
								 | 
							
							    tip_exception("course_id不能为空") if params[:course_id].blank?
 | 
						
						
						
						
							 | 
							
								 | 
							
							    begin
 | 
						
						
						
						
							 | 
							
								 | 
							
							      objects = @object_type.classify.constantize.where(id: params[:bank_id])
 | 
						
						
						
						
							 | 
							
								 | 
							
							      course = Course.find params[:course_id]
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_object_ids = []
 | 
						
						
						
						
							 | 
							
								 | 
							
							      objects.each do |object|
 | 
						
						
						
						
							 | 
							
								 | 
							
							        case @object_type
 | 
						
						
						
						
							 | 
							
								 | 
							
							        when 'HomeworkBank' # 作业
 | 
						
						
						
						
							 | 
							
								 | 
							
							          new_object = quote_homework_bank object,course
 | 
						
						
						
						
							 | 
							
								 | 
							
							        when 'ExerciseBank'
 | 
						
						
						
						
							 | 
							
								 | 
							
							          if object.container_type == 'Exercise' # 试卷
 | 
						
						
						
						
							 | 
							
								 | 
							
							            new_object = quote_exercise_bank object, course
 | 
						
						
						
						
							 | 
							
								 | 
							
							          else # 问卷
 | 
						
						
						
						
							 | 
							
								 | 
							
							            new_object = quote_poll_bank object, course
 | 
						
						
						
						
							 | 
							
								 | 
							
							          end
 | 
						
						
						
						
							 | 
							
								 | 
							
							        when 'GtaskBank'
 | 
						
						
						
						
							 | 
							
								 | 
							
							          new_object = quote_gtask_bank object, course
 | 
						
						
						
						
							 | 
							
								 | 
							
							        when 'GtopicBank'
 | 
						
						
						
						
							 | 
							
								 | 
							
							          new_object = quote_gtopic_bank object, course
 | 
						
						
						
						
							 | 
							
								 | 
							
							        end
 | 
						
						
						
						
							 | 
							
								 | 
							
							        new_object_ids << new_object.id
 | 
						
						
						
						
							 | 
							
								 | 
							
							      end
 | 
						
						
						
						
							 | 
							
								 | 
							
							      render json: {status: 0, message: "选题成功", object_ids: new_object_ids}
 | 
						
						
						
						
							 | 
							
								 | 
							
							    rescue Exception => e
 | 
						
						
						
						
							 | 
							
								 | 
							
							      uid_logger_error(e.message)
 | 
						
						
						
						
							 | 
							
								 | 
							
							      tip_exception("题库选用失败")
 | 
						
						
						
						
							 | 
							
								 | 
							
							      raise ActiveRecord::Rollback
 | 
						
						
						
						
							 | 
							
								 | 
							
							    end
 | 
						
						
						
						
							 | 
							
								 | 
							
							  end
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  def destroy
 | 
						
						
						
						
							 | 
							
								 | 
							
							    bank = current_bank
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    unless user.admin? || bank.user_id == user.id
 | 
						
						
						
						
							 | 
							
								 | 
							
							      render_forbidden
 | 
						
						
						
						
							 | 
							
								 | 
							
							      return
 | 
						
						
						
						
							 | 
							
								 | 
							
							    end
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    bank.destroy!
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    render_ok
 | 
						
						
						
						
							 | 
							
								 | 
							
							  end
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  def public
 | 
						
						
						
						
							 | 
							
								 | 
							
							    current_bank.update!(is_public: true)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    render_ok
 | 
						
						
						
						
							 | 
							
								 | 
							
							  end
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  private
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  def current_bank
 | 
						
						
						
						
							 | 
							
								 | 
							
							    @_current_bank ||= @object_type.classify.constantize.where(@object_filter).find(params[:id])
 | 
						
						
						
						
							 | 
							
								 | 
							
							  end
 | 
						
						
						
						
							 | 
							
								 | 
							
							  def params_filter
 | 
						
						
						
						
							 | 
							
								 | 
							
							    type = ["normal", "group", "poll", "exercise", "gtask", "gtopic"]
 | 
						
						
						
						
							 | 
							
								 | 
							
							    tip_exception("object_type类型不正确") unless type.include?(params[:object_type])
 | 
						
						
						
						
							 | 
							
								 | 
							
							    # HomeworkBank 普通、分组作业题库;ExerciseBank试卷、问卷题库;GtaskBank毕设选题题库;GtopicBank毕设任务题库;
 | 
						
						
						
						
							 | 
							
								 | 
							
							    case params[:object_type]
 | 
						
						
						
						
							 | 
							
								 | 
							
							    when 'normal'
 | 
						
						
						
						
							 | 
							
								 | 
							
							      @object_type = "HomeworkBank"
 | 
						
						
						
						
							 | 
							
								 | 
							
							      @object_filter = "homework_type = 1" # 普通作业
 | 
						
						
						
						
							 | 
							
								 | 
							
							    when 'group'
 | 
						
						
						
						
							 | 
							
								 | 
							
							      @object_type = "HomeworkBank"
 | 
						
						
						
						
							 | 
							
								 | 
							
							      @object_filter = "homework_type = 3" # 分组作业
 | 
						
						
						
						
							 | 
							
								 | 
							
							    when 'poll'
 | 
						
						
						
						
							 | 
							
								 | 
							
							      @object_type = "ExerciseBank"
 | 
						
						
						
						
							 | 
							
								 | 
							
							      @object_filter = "container_type = 'Poll'" # 问卷
 | 
						
						
						
						
							 | 
							
								 | 
							
							    when 'exercise'
 | 
						
						
						
						
							 | 
							
								 | 
							
							      @object_type = "ExerciseBank"
 | 
						
						
						
						
							 | 
							
								 | 
							
							      @object_filter = "container_type = 'Exercise'" # 试卷
 | 
						
						
						
						
							 | 
							
								 | 
							
							    when 'gtask'
 | 
						
						
						
						
							 | 
							
								 | 
							
							      @object_type = "GtaskBank"
 | 
						
						
						
						
							 | 
							
								 | 
							
							      @object_filter = nil
 | 
						
						
						
						
							 | 
							
								 | 
							
							    when 'gtopic'
 | 
						
						
						
						
							 | 
							
								 | 
							
							      @object_type = "GtopicBank"
 | 
						
						
						
						
							 | 
							
								 | 
							
							      @object_filter = nil
 | 
						
						
						
						
							 | 
							
								 | 
							
							    end
 | 
						
						
						
						
							 | 
							
								 | 
							
							  end
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  def quote_homework_bank homework, course
 | 
						
						
						
						
							 | 
							
								 | 
							
							    ActiveRecord::Base.transaction do
 | 
						
						
						
						
							 | 
							
								 | 
							
							      # 复制作业的基本信息
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_homework = HomeworkCommon.new(name: homework.name, user_id: current_user.id, description: homework.description,
 | 
						
						
						
						
							 | 
							
								 | 
							
							                                        homework_type: homework.homework_type, course_id: course.id, homework_bank_id: homework.id,
 | 
						
						
						
						
							 | 
							
								 | 
							
							                                        reference_answer: homework.reference_answer)
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							      # 作业的基本设置复制
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_homework.homework_detail_manual = HomeworkDetailManual.new
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_homework_detail_manual = new_homework.homework_detail_manual
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							      if new_homework.homework_type == "group"
 | 
						
						
						
						
							 | 
							
								 | 
							
							        # 分组作业表的复制
 | 
						
						
						
						
							 | 
							
								 | 
							
							        new_homework.homework_detail_group = HomeworkDetailGroup.new
 | 
						
						
						
						
							 | 
							
								 | 
							
							        new_homework.homework_detail_group.min_num = homework.min_num
 | 
						
						
						
						
							 | 
							
								 | 
							
							        new_homework.homework_detail_group.max_num = homework.max_num
 | 
						
						
						
						
							 | 
							
								 | 
							
							        new_homework.homework_detail_group.base_on_project = homework.base_on_project
 | 
						
						
						
						
							 | 
							
								 | 
							
							      end
 | 
						
						
						
						
							 | 
							
								 | 
							
							      # 附件
 | 
						
						
						
						
							 | 
							
								 | 
							
							      homework.attachments.try(:each) do |attachment|
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att = attachment.copy
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.container_id = nil
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.container_type = nil
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.author_id = homework.user_id
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.copy_from = attachment.id
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.save
 | 
						
						
						
						
							 | 
							
								 | 
							
							        new_homework.attachments << att
 | 
						
						
						
						
							 | 
							
								 | 
							
							      end
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							      if new_homework.save
 | 
						
						
						
						
							 | 
							
								 | 
							
							        new_homework_detail_manual.save if new_homework_detail_manual
 | 
						
						
						
						
							 | 
							
								 | 
							
							        new_homework.homework_detail_group.save if new_homework.homework_detail_group
 | 
						
						
						
						
							 | 
							
								 | 
							
							        HomeworksService.new.create_works_list(new_homework, course)
 | 
						
						
						
						
							 | 
							
								 | 
							
							        homework.update_column(:quotes, homework.quotes+1)
 | 
						
						
						
						
							 | 
							
								 | 
							
							      end
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_homework
 | 
						
						
						
						
							 | 
							
								 | 
							
							    end
 | 
						
						
						
						
							 | 
							
								 | 
							
							  end
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  def quote_exercise_bank exercise, course
 | 
						
						
						
						
							 | 
							
								 | 
							
							    ActiveRecord::Base.transaction do
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_exercise = Exercise.new(:exercise_name => exercise.name, :exercise_description => exercise.description,
 | 
						
						
						
						
							 | 
							
								 | 
							
							                                  :user_id => current_user.id, :course_id => course.id, :exercise_bank_id => exercise.id)
 | 
						
						
						
						
							 | 
							
								 | 
							
							      # 复制试卷基本信息
 | 
						
						
						
						
							 | 
							
								 | 
							
							      exercise.exercise_bank_questions.each do |q|
 | 
						
						
						
						
							 | 
							
								 | 
							
							        option = {
 | 
						
						
						
						
							 | 
							
								 | 
							
							            :question_title => q.question_title,
 | 
						
						
						
						
							 | 
							
								 | 
							
							            :question_type => q.question_type || 1,
 | 
						
						
						
						
							 | 
							
								 | 
							
							            :question_number => q.question_number,
 | 
						
						
						
						
							 | 
							
								 | 
							
							            :question_score => q.question_score,
 | 
						
						
						
						
							 | 
							
								 | 
							
							            :shixun_id => q.shixun_id
 | 
						
						
						
						
							 | 
							
								 | 
							
							        }
 | 
						
						
						
						
							 | 
							
								 | 
							
							        exercise_question = new_exercise.exercise_questions.new option
 | 
						
						
						
						
							 | 
							
								 | 
							
							        # question_type:5实训题;其他是非实训题
 | 
						
						
						
						
							 | 
							
								 | 
							
							        if q.question_type != 5
 | 
						
						
						
						
							 | 
							
								 | 
							
							          # 复制选择题题目选项
 | 
						
						
						
						
							 | 
							
								 | 
							
							          q.exercise_bank_choices.try(:each_with_index) do |choice, index|
 | 
						
						
						
						
							 | 
							
								 | 
							
							            exercise_question.exercise_choices.new({choice_position: index+1, choice_text: choice.choice_text})
 | 
						
						
						
						
							 | 
							
								 | 
							
							          end
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							          # 复制标准答案(填空题和问答题)  多空填空题的话,应该是原标准答案的exercise_choice_id,即为题空的位置。
 | 
						
						
						
						
							 | 
							
								 | 
							
							          q.exercise_bank_standard_answers.try(:each) do |answer|
 | 
						
						
						
						
							 | 
							
								 | 
							
							            exercise_question.exercise_standard_answers.new({exercise_choice_id: answer.exercise_bank_choice_id, answer_text: answer.answer_text})
 | 
						
						
						
						
							 | 
							
								 | 
							
							          end
 | 
						
						
						
						
							 | 
							
								 | 
							
							        else
 | 
						
						
						
						
							 | 
							
								 | 
							
							          # 复制实训题
 | 
						
						
						
						
							 | 
							
								 | 
							
							          q.exercise_bank_shixun_challenges.try(:each_with_index) do |sc, index|
 | 
						
						
						
						
							 | 
							
								 | 
							
							            exercise_question.exercise_shixun_challenges.new({position: index+1, challenge_id: sc.challenge_id,
 | 
						
						
						
						
							 | 
							
								 | 
							
							                                                              shixun_id: sc.shixun_id, question_score: sc.question_score})
 | 
						
						
						
						
							 | 
							
								 | 
							
							          end
 | 
						
						
						
						
							 | 
							
								 | 
							
							        end
 | 
						
						
						
						
							 | 
							
								 | 
							
							      end
 | 
						
						
						
						
							 | 
							
								 | 
							
							      # 添加学生
 | 
						
						
						
						
							 | 
							
								 | 
							
							      # if new_exercise.save
 | 
						
						
						
						
							 | 
							
								 | 
							
							      #   new_exercise.create_exercise_list
 | 
						
						
						
						
							 | 
							
								 | 
							
							      #   exercise.update_column(:quotes, exercise.quotes+1)
 | 
						
						
						
						
							 | 
							
								 | 
							
							      # end
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_exercise if new_exercise.save!
 | 
						
						
						
						
							 | 
							
								 | 
							
							    end
 | 
						
						
						
						
							 | 
							
								 | 
							
							  end
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  def quote_poll_bank poll, course
 | 
						
						
						
						
							 | 
							
								 | 
							
							    ActiveRecord::Base.transaction do
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_poll = Poll.new(:polls_name => poll.name, :polls_description => poll.description, :user_id => current_user.id,
 | 
						
						
						
						
							 | 
							
								 | 
							
							                          :polls_type => 'Course', :course_id => course.id, :exercise_bank_id => poll.id)
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							      poll.exercise_bank_questions.try(:each) do |q|
 | 
						
						
						
						
							 | 
							
								 | 
							
							        option = {
 | 
						
						
						
						
							 | 
							
								 | 
							
							            :question_title => q.question_title,
 | 
						
						
						
						
							 | 
							
								 | 
							
							            :question_type => q.question_type || 1,
 | 
						
						
						
						
							 | 
							
								 | 
							
							            :is_necessary => q.is_necessary,
 | 
						
						
						
						
							 | 
							
								 | 
							
							            :question_number => q.question_number,
 | 
						
						
						
						
							 | 
							
								 | 
							
							            :max_choices => q.max_choices,
 | 
						
						
						
						
							 | 
							
								 | 
							
							            :min_choices => q.min_choices
 | 
						
						
						
						
							 | 
							
								 | 
							
							        }
 | 
						
						
						
						
							 | 
							
								 | 
							
							        poll_question = new_poll.poll_questions.new option
 | 
						
						
						
						
							 | 
							
								 | 
							
							        q.exercise_bank_choices.try(:each_with_index) do |choice, index|
 | 
						
						
						
						
							 | 
							
								 | 
							
							          poll_question.poll_answers.new({answer_position: index+1, answer_text: choice.choice_text})
 | 
						
						
						
						
							 | 
							
								 | 
							
							        end
 | 
						
						
						
						
							 | 
							
								 | 
							
							      end
 | 
						
						
						
						
							 | 
							
								 | 
							
							      # if new_poll.save
 | 
						
						
						
						
							 | 
							
								 | 
							
							      #   new_poll.create_polls_list
 | 
						
						
						
						
							 | 
							
								 | 
							
							      #   poll.update_column(:quotes, poll.quotes+1)
 | 
						
						
						
						
							 | 
							
								 | 
							
							      # end
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_poll if new_poll.save!
 | 
						
						
						
						
							 | 
							
								 | 
							
							    end
 | 
						
						
						
						
							 | 
							
								 | 
							
							  end
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  def quote_gtask_bank task, course
 | 
						
						
						
						
							 | 
							
								 | 
							
							    ActiveRecord::Base.transaction do
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_task = GraduationTask.new
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_task.attributes = task.attributes.dup.except("id", "course_id", "user_id", "quotes", "graduation_task_id",
 | 
						
						
						
						
							 | 
							
								 | 
							
							                                                       "course_list_id", "gtask_bank_id")
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_task.course_id = course.id
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_task.gtask_bank_id = task.id
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_task.user_id = current_user.id
 | 
						
						
						
						
							 | 
							
								 | 
							
							      if new_task.save!
 | 
						
						
						
						
							 | 
							
								 | 
							
							        new_task.create_work_list
 | 
						
						
						
						
							 | 
							
								 | 
							
							      end
 | 
						
						
						
						
							 | 
							
								 | 
							
							      # 复制附件内容
 | 
						
						
						
						
							 | 
							
								 | 
							
							      task.attachments.try(:each) do |attachment|
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att = attachment.copy
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.container_id = nil
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.container_type = nil
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.author_id = task.user_id
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.copy_from = attachment.id
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.save
 | 
						
						
						
						
							 | 
							
								 | 
							
							        new_task.attachments << att
 | 
						
						
						
						
							 | 
							
								 | 
							
							      end
 | 
						
						
						
						
							 | 
							
								 | 
							
							      task.update_column(:quotes, task.quotes+1)
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_task
 | 
						
						
						
						
							 | 
							
								 | 
							
							    end
 | 
						
						
						
						
							 | 
							
								 | 
							
							  end
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  def quote_gtopic_bank topic, course
 | 
						
						
						
						
							 | 
							
								 | 
							
							    ActiveRecord::Base.transaction do
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_topic = GraduationTopic.new
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_topic.attributes = topic.attributes.dup.except("id", "course_id", "user_id", "graduation_topic_id",
 | 
						
						
						
						
							 | 
							
								 | 
							
							                                                         "course_list_id", "gtopic_bank_id")
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_topic.course_id = course.id
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_topic.gtopic_bank_id = topic.id
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_topic.user_id = current_user.id
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_topic.save
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							      topic.attachments.each.try(:each) do |attachment|
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att = attachment.copy
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.container_id = nil
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.container_type = nil
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.author_id = topic.user_id
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.copy_from = attachment.id
 | 
						
						
						
						
							 | 
							
								 | 
							
							        att.save
 | 
						
						
						
						
							 | 
							
								 | 
							
							        new_topic.attachments << att
 | 
						
						
						
						
							 | 
							
								 | 
							
							      end
 | 
						
						
						
						
							 | 
							
								 | 
							
							      topic.update_column(:quotes, topic.quotes+1)
 | 
						
						
						
						
							 | 
							
								 | 
							
							      new_topic
 | 
						
						
						
						
							 | 
							
								 | 
							
							    end
 | 
						
						
						
						
							 | 
							
								 | 
							
							  end
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							end
 |