|
- class Admins::SubDisciplinesController < Admins::BaseController
-
- def index
- @discipline = current_discipline
- @sub_disciplines = current_discipline.sub_disciplines
- end
-
- def create
- name = params[:name].to_s.strip
- return render_error('名称不能为空') if name.blank?
- return render_error('名称重复') if current_discipline.sub_disciplines.where(name: name).exists?
- SubDiscipline.create!(name: name, discipline_id: current_discipline.id, position: current_discipline.sub_disciplines.pluck(:position).max + 1)
- render_ok
- end
-
- def edit
- @sub_discipline = current_sub_discipline
- end
-
- def update
- begin
- if params[:sub_discipline] && params[:sub_discipline][:name]
- name = params[:sub_discipline][:name].to_s.strip
- current_sub_discipline.update_attributes!(name: name)
- else
- ActiveRecord::Base.transaction do
- current_sub_discipline.update_attributes!(setting_params)
- current_sub_discipline.tag_disciplines.each do |tag|
- tag.update_attributes!(setting_params)
- end
- end
- end
- rescue Exception => e
- @message = e.message
- end
- @sub_disciplines = current_sub_discipline.discipline&.sub_disciplines
- end
-
- def destroy
- @sub_discipline_id = params[:id]
- ActiveRecord::Base.transaction do
- discipline = current_sub_discipline.discipline
- discipline.sub_disciplines.where("position > #{current_sub_discipline.position}").update_all("position=position-1")
- current_sub_discipline.destroy!
- end
- end
-
- def adjust_position
- discipline = current_sub_discipline.discipline
- max_position = discipline.sub_disciplines.pluck(:position).max
- opr = params[:opr] || "down"
- if (params[:opr] == "up" && current_sub_discipline.position == 1) || (params[:opr] == "down" && current_sub_discipline.position == max_position)
- @message = "超出范围"
- else
- ActiveRecord::Base.transaction do
- if opr == "up"
- discipline.sub_disciplines.find_by("position = #{current_sub_discipline.position - 1}")&.update!(position: current_sub_discipline.position)
- current_sub_discipline.update!(position: current_sub_discipline.position - 1)
- else
- discipline.sub_disciplines.find_by("position = #{current_sub_discipline.position + 1}")&.update!(position: current_sub_discipline.position)
- current_sub_discipline.update!(position: current_sub_discipline.position + 1)
- end
- end
- end
- @sub_disciplines = discipline&.sub_disciplines
- rescue Exception => e
- @message = e.message
- end
-
-
- private
-
- def current_sub_discipline
- @_current_sub_discipline = SubDiscipline.find params[:id]
- end
-
- def current_discipline
- @_current_discipline = Discipline.find params[:discipline_id]
- end
-
- def setting_params
- params.permit(:shixun, :subject, :question)
- end
- end
|