class Api::SearchController < Api::ApiController
  # Autocomplete method for searching categories, courses, subjects, tutors and students.
  def autocomplete
    params[:page] ||= 1
    params[:query] ||= ''
    params[:per_page] = 10
    if params[:search_what] == 'category'
      @categories = Category.search(params).page(params[:page]).per(params[:per_page]).records
      respond_to do |format|
        format.json { render :json => @categories}
      end
    elsif params[:search_what] == 'term'
      @courses = Course.search(params).page(params[:page]).per(params[:per_page]).records
      @subjects = Subject.search(params).page(params[:page]).per(params[:per_page]).records
      @tutors = Tutor.search(params).page(params[:page]).per(params[:per_page]).records
      @tutors = @tutors.map {|t| t.serializable_hash(only: [:id, :name, :email], methods: [:full_name]).merge(_type: :tutor)}
      respond_to do |format|
        format.json { render :json => @subjects + @courses + @tutors}
      end
    else
      @tutors = Tutor.search(params).page(params[:page]).per(params[:per_page]).records
      @tutors = @tutors.map {|t| t.serializable_hash(only: [:id, :name, :email], methods: [:full_name]).merge(_type: :tutor)}
      @students = Student.search(params).page(params[:page]).per(params[:per_page]).records
      @students = @students.map {|s| s.serializable_hash(only: [:id, :name, :email], methods: [:full_name]).merge(_type: :student)}
      @mentors = Mentor.search(params).page(params[:page]).per(params[:per_page]).records
      @courses = Course.search(params).page(params[:page]).per(params[:per_page]).records
      @subjects = Subject.search(params).page(params[:page]).per(params[:per_page]).records
      respond_to do |format|
        format.json { render :json => @courses + @subjects + @tutors + @mentors + @students }
      end
    end
  end

end
