class Admins::SubjectsController < Admins::BaseController
  def index
    default_sort('created_at', 'desc')

    subjects = Admins::SubjectQuery.call(params)
    @subjects = paginate subjects.includes(:repertoire, :subject_level_system, user: { user_extension: :school })
  end

  def edit
    @subject = current_subject
  end

  def update
    current_subject.update!(update_params)

    flash[:success] = '保存成功'
    redirect_to admins_subjects_path
  end

  def destroy
    current_subject.destroy!

    render_delete_success
  end

  # 隐藏
  def hide
    current_subject.update!(hidden: true)
    render_ok
  end

  # 展示
  def cancel_hide
    current_subject.update!(hidden: false)
    render_ok
  end

  # 设为主页展示
  def homepage_show
    current_subject.update!(homepage_show: true)
    render_ok
  end

  # 取消主页展示
  def cancel_homepage_show
    current_subject.update!(homepage_show: false)
    render_ok
  end

  # 设为金课
  def excellent
    current_subject.update!(excellent: true)
    render_ok
  end

  # 取消金课
  def cancel_excellent
    current_subject.update!(excellent: false)
    render_ok
  end

  private

  def current_subject
    @_current_subject ||= Subject.find(params[:id])
  end

  def update_params
    params.require(:subject).permit(:repertoire_id, :subject_level_system_id, :student_count)
  end
end