class Api::SearchController

Public Instance Methods

autocomplete() click to toggle source

Autocomplete method for searching categories, subtrades, trades, fixxperts and customers.

# File app/controllers/api/search_controller.rb, line 3
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'
    @subtrades = Subtrade.search(params).page(params[:page]).per(params[:per_page]).records
    @trades = Trade.search(params).page(params[:page]).per(params[:per_page]).records
    @fixxperts = Fixxpert.search(params).page(params[:page]).per(params[:per_page]).records
    @fixxperts = @fixxperts.map {|t| t.serializable_hash(only: [:id, :name, :email], methods: [:full_name]).merge(_type: :fixxpert)}
    @customers = Customer.search(params).page(params[:page]).per(params[:per_page]).records
    @customers = @customers.map {|s| s.serializable_hash(only: [:id, :name, :email], methods: [:full_name]).merge(_type: :customer)}

    respond_to do |format|
      format.json { render :json => @trades + @subtrades + @fixxperts + @customers }
    end
  else
    @fixxperts = Fixxpert.search(params).page(params[:page]).per(params[:per_page]).records
    @fixxperts = @fixxperts.map {|t| t.serializable_hash(only: [:id, :name, :email], methods: [:full_name]).merge(_type: :fixxpert)}
    @customers = Customer.search(params).page(params[:page]).per(params[:per_page]).records
    @customers = @customers.map {|s| s.serializable_hash(only: [:id, :name, :email], methods: [:full_name]).merge(_type: :customer)}
    @mentors = Mentor.search(params).page(params[:page]).per(params[:per_page]).records
    @subtrades = Subtrade.search(params).page(params[:page]).per(params[:per_page]).records
    @trades = Trade.search(params).page(params[:page]).per(params[:per_page]).records
    respond_to do |format|
      format.json { render :json => @subtrades + @trades + @fixxperts + @mentors + @customers }
    end
  end
end