Work in progress search for contacts #2866

This commit is contained in:
Martin Lensment 2015-08-18 18:09:30 +03:00
parent 5b01c4d39b
commit bc6c4213f7
3 changed files with 97 additions and 11 deletions

View file

@ -3,8 +3,24 @@ class Admin::ContactsController < AdminController
before_action :set_contact, only: [:show]
def index
params[:q] ||= {}
@q = Contact.includes(:registrar).search(params[:q])
@contacts = @q.result.page(params[:page])
if params[:statuses_contains]
contacts = Contact.includes(:registrar).where(
"statuses @> ?::varchar[]", "{#{params[:statuses_contains].join(',')}}"
)
else
contacts = Contact.includes(:registrar)
end
normalize_search_parameters do
@q = contacts.search(params[:q])
@contacts = @q.result.page(params[:page])
end
@contacts = @contacts.per(params[:results_per_page]) if params[:results_per_page].to_i > 0
end
def search
@ -45,4 +61,18 @@ class Admin::ContactsController < AdminController
dp[:statuses].reject!(&:blank?)
dp
end
def normalize_search_parameters
ca_cache = params[:q][:created_at_lteq]
begin
end_time = params[:q][:created_at_lteq].try(:to_date)
params[:q][:created_at_lteq] = end_time.try(:end_of_day)
rescue
logger.warn('Invalid date')
end
yield
params[:q][:created_at_lteq] = ca_cache
end
end