class WinewooCore::Services::Finders::Producers::FiltersProducersFinder
Public Instance Methods
find()
click to toggle source
# File lib/winewoo_core/services/finders/producers/filters_producers_finder.rb, line 4 def find search = clean_search_params query = WinewooCore::Repositories::Mongo::Queries::WineQuery.new.published .with_appelation(search[:appelation]) .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 criterions = (search[:flavors] || []) .concat(search[:entries] || []) .concat(search[:dishes] || []) .concat(search[:desserts] || []) .concat(search[:cheeses] || []) wines = criterions.empty? ? query.page(@page || 1) .per(@per_page || Kaminari::config.default_per_page) : query.full_text_search(criterions) .page(@page || 1) .per(@per_page || Kaminari::config.default_per_page) wines.map { |wine| wine.producer } end
Private Instance Methods
clean_search_params()
click to toggle source
# File lib/winewoo_core/services/finders/producers/filters_producers_finder.rb, line 34 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