class WinewooCore::Services::Finders::Wines::FiltersWinesFinder
Public Instance Methods
find()
click to toggle source
# File lib/winewoo_core/services/finders/wines/filters_wines_finder.rb, line 4 def find search = clean_search_params interpro_id = (@interpro && @interpro.id) || search[:interpro_id] # TODO UNOFFICIALS # query = WinewooCore::Repositories::Mongo::Queries::WineQuery.new.officials.published query = @interpro ? WinewooCore::Repositories::Mongo::Queries::WineQuery.new.officials.published : WinewooCore::Repositories::Mongo::Queries::WineQuery.new.officials.published query = query.with_appelation(search[:appelations] || search[:aoc]) .with_colors(search[:colors]) .with_grapes(search[:grapes]) .with_storage_duration(search[:storage_duration]) .with_tasting_opportunities(search[:tasting_opportunities]) query = query.from_interpro(interpro_id) if interpro_id criterions = (search[:flavors] || []) .concat(search[:entries] || []) .concat(search[:dishes] || []) .concat(search[:desserts] || []) .concat(search[:cheeses] || []) query = query.full_text_search(criterions) unless criterions.empty? wines = query.page(@page || 1) .per(@per_page || Kaminari::config.default_per_page) return wines, "advanced_search", query.count end
Private Instance Methods
clean_search_params()
click to toggle source
# File lib/winewoo_core/services/finders/wines/filters_wines_finder.rb, line 40 def clean_search_params search = @filters.query clean = Proc.new do |k, v| if v.kind_of?(Hash) v.delete_if(&clean) elsif v.kind_of?(Array) v.reject(&:blank?).empty? else v.blank? end end search.delete_if(&clean) end