Class: Carnival::Presenters::AdvancedSearchParser
- Inherits:
-
Object
- Object
- Carnival::Presenters::AdvancedSearchParser
- Defined in:
- app/services/carnival/presenters/advanced_search_parser.rb
Instance Method Summary collapse
- #get_advanced_search_fields(fields) ⇒ Object
-
#initialize(klass_service) ⇒ AdvancedSearchParser
constructor
A new instance of AdvancedSearchParser.
- #parse_advanced_search(fields, records, search_syntax) ⇒ Object
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 |