class Api::SubjectsController < Api::ApiController

  # Method to get all subjects based on query paramters.
  def index
    query = params[:q]
    subjects = Subject.where("name like ?", "%#{query}%")
    respond_to do |format|
      format.json do
        render :json => subjects.map {|s| { id: s.id, name: s.name } }
      end
    end
  end

  # Autocomplete method for subjects.
  def autocomplete
    query = params[:term] || params[:query]
    subjects = Subject.with_courses.where("name like ?", "%#{query}%").page(params[:page]).per(params[:per_page])
    respond_to do |format|
      format.json do
        render :json => subjects.to_json(only: [:id, :name])
      end
    end
  end

  # Method to search students according to the parameters passed.
  def search
    params[:page] ||= 1
    params[:per_page] = Subject.count
    if params[:query]
      subjects = Subject.with_courses.search(query: params[:query], without_tutor_existence: true).page(params[:page]).per(params[:per_page]).records
    else
      subjects = Subject.with_courses.page(params[:page]).per(params[:per_page])
    end
    respond_to do |format|
      format.json do
        render :json => subjects.to_json(only: [:id, :name, :description])
      end
    end
  end

end
