class Admin::Course::PropertyEntryController < Admin::Course::Controller
  def index
    render_success :ok, json: courses.by_ids(params[:ids]).ordered.map { |c| course_props(c) }
  end

  def batch_update
    ids = params[:params].map { |i| i[:id] }
    data = courses.where(id: ids)
    data.each do |course|
      param = params[:params].find { |i| i[:id] == course.id }
      course.assign_attributes(course_params(param))
    end

    if transactional_save(data)
      render_success :ok, message: "#{data.count} courses updated."
    else
      render_error :unprocessable_entity, errors: multi_errors(data)
    end
  end

  private
    def courses
      current_school.courses
    end

    def course_params(params)
      params.permit(
        :code,
        :core,
        :credits,
        :department_id
      )
    end

    def course_props(course)
      {}.tap do |props|
        props[:id] = course.id
        props[:name] = course.name
        props[:code] = course.code
        props[:core] = course.core
        props[:credits] = course.credits
        props[:department_id] = course.department_id
      end
    end
end
