Class: Carnival::Presenters::AdvancedSearchParser

Inherits:
Object
  • Object
show all
Defined in:
app/services/carnival/presenters/advanced_search_parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(klass_service) ⇒ AdvancedSearchParser

Returns a new instance of AdvancedSearchParser.



5
6
7
# File 'app/services/carnival/presenters/advanced_search_parser.rb', line 5

def initialize(klass_service)
  @klass_service = klass_service
end

Instance Method Details

#get_advanced_search_fields(fields) ⇒ Object



8
9
10
11
12
13
14
# File 'app/services/carnival/presenters/advanced_search_parser.rb', line 8

def get_advanced_search_fields fields
   advanced_search_fields = {}
   fields.each do |key, field|
     advanced_search_fields[key] = field if field.advanced_searchable?
   end
   advanced_search_fields
end

#parse_advanced_search(fields, records, search_syntax) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/services/carnival/presenters/advanced_search_parser.rb', line 16

def parse_advanced_search fields, records, search_syntax
   search = search_syntax
   search.each do |key, value|
     search_field = key
     #search_field = key.split(".").last if key.include?(".")
     search_field = search_field.gsub("_id", "") if search_field.ends_with?("_id")
     next if !fields.keys.include? search_field.to_sym
     field = fields[search_field.to_sym]
     if field.advanced_searchable? && value.present? && value.size > 0
       field_param = {"operator" => field.advanced_search_operator.to_s, "value" => "#{value}"}
       records =  parse_advanced_search_field(search_field, field_param, records)
     end
   end
   records
end