Files
docuseal/app/controllers/api/submitters_autocomplete_controller.rb
T

36 lines
929 B
Ruby
Raw Normal View History

2023-09-20 02:00:00 +03:00
# frozen_string_literal: true
module Api
class SubmittersAutocompleteController < ApiBaseController
load_and_authorize_resource :submitter, parent: false
SELECT_COLUMNS = %w[email phone name].freeze
LIMIT = 100
def index
submitters = search_submitters(@submitters)
values = submitters.limit(LIMIT).group(SELECT_COLUMNS.join(', ')).pluck(SELECT_COLUMNS.join(', '))
attrs = values.map { |row| SELECT_COLUMNS.zip(row).to_h }
attrs = attrs.uniq { |e| e[params[:field]] } if params[:field].present?
render json: attrs
end
private
def search_submitters(submitters)
if SELECT_COLUMNS.include?(params[:field])
column = Submitter.arel_table[params[:field].to_sym]
2024-02-27 15:20:34 +02:00
term = "#{params[:q].downcase}%"
2023-09-20 02:00:00 +03:00
2024-02-27 15:20:34 +02:00
submitters.where(column.matches(term, false, true))
2023-09-20 02:00:00 +03:00
else
Submitters.search(submitters, params[:q])
end
end
end
end