34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| class Admins::SubjectSettingsController < Admins::BaseController
 | |
|   def index
 | |
|     default_sort('created_at', 'desc')
 | |
| 
 | |
|     subjects = Admins::SubjectQuery.call(params)
 | |
|     @sub_disciplines = SubDiscipline.where(subject: 1).pluck(:name,:id)
 | |
|     @subjects = paginate subjects.includes(:repertoire, :subject_level_system, :sub_disciplines)
 | |
|   end
 | |
| 
 | |
|   def update
 | |
|     sub_discipline_ids = params[:sub_disciplines] || []
 | |
|     sub_ids = sub_discipline_ids.reject(&:blank?).map(&:to_i)
 | |
|     old_sub_ids = current_subject.sub_discipline_containers.pluck(:sub_discipline_id)
 | |
|     new_ids = sub_ids - old_sub_ids
 | |
|     delete_ids = old_sub_ids - sub_ids
 | |
|     sub_params = new_ids.map{|sub| {sub_discipline_id: sub}}
 | |
|     ActiveRecord::Base.transaction do
 | |
|       current_subject.sub_discipline_containers.where(sub_discipline_id: delete_ids).destroy_all
 | |
|       current_subject.sub_discipline_containers.create!(sub_params)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def update_mobile_show
 | |
|     subject = Subject.find(params[:subject_id])
 | |
|     subject.update_attributes(:show_mobile => params[:show_mobile])
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def current_subject
 | |
|     @_current_subject ||= Subject.find(params[:id])
 | |
|   end
 | |
| 
 | |
| end |