forked from jasder/forgeplus
51 lines
1.5 KiB
Ruby
51 lines
1.5 KiB
Ruby
class Admins::LaboratorySubjectsController < Admins::BaseController
|
|
helper_method :current_laboratory, :current_laboratory_subject
|
|
|
|
def index
|
|
laboratory_subjects = Admins::LaboratorySubjectQuery.call(current_laboratory, params)
|
|
|
|
includes_tables = { subject: [:repertoire, :subject_level_system, user: {user_extension: :school}] }
|
|
@laboratory_subjects = paginate(laboratory_subjects.includes(includes_tables))
|
|
end
|
|
|
|
def create
|
|
subject = Subject.find(params[:subject_id])
|
|
Subjects::CopySubjectService.call(subject, current_user, current_laboratory)
|
|
render_ok
|
|
end
|
|
|
|
def destroy
|
|
return render_js_error('不能删除自建课程', type: :notify) if current_laboratory_subject.ownership?
|
|
|
|
ActiveRecord::Base.transaction do
|
|
current_subject = current_laboratory_subject.subject
|
|
# 实训软删除,并解除与子站的关联
|
|
current_laboratory.laboratory_shixuns.where(shixun_id: current_subject.shixuns).destroy_all
|
|
current_subject.shixuns.update_all(status: -1)
|
|
current_subject.destroy!
|
|
|
|
render_delete_success
|
|
end
|
|
end
|
|
|
|
|
|
def homepage
|
|
current_laboratory_subject.update!(homepage: true)
|
|
render_ok
|
|
end
|
|
|
|
def cancel_homepage
|
|
current_laboratory_subject.update!(homepage: false)
|
|
render_ok
|
|
end
|
|
|
|
private
|
|
|
|
def current_laboratory
|
|
@_current_laboratory ||= Laboratory.find(params[:laboratory_id])
|
|
end
|
|
|
|
def current_laboratory_subject
|
|
@_current_laboratory_subject ||= current_laboratory.laboratory_subjects.find(params[:id])
|
|
end
|
|
end |