Sha256: fbad71f11b1d3da7307494c3bdcf3e6132ca4cbd5ce15b526f294dcc1d6245a8

Contents?: true

Size: 1.74 KB

Versions: 34

Compression:

Stored size: 1.74 KB

Contents

module Workarea
  module Search
    class StorefrontSearch
      class Response
        Trace = Struct.new(:params, :query, :reset_by)

        attr_accessor :template, :message, :redirect, :params, :query,
          :customization, :trace

        def initialize(options = {})
          @template = options.fetch(:template, 'show')
          @message = options[:message]
          @redirect = options[:redirect]

          @params = options.fetch(:params, {})
          @params[:terms_facets] = terms_facets
          @params[:range_facets] = Settings.current.range_facets
          @original_params = @params.deep_dup

          @customization = options[:customization]
          @trace = []

          reset!(@params)
        end

        def redirect?
          @redirect.present?
        end

        # Reset the parameters and resulting query to match the new parameters
        # passed in. Used when correcting spelling, or auto filtering results.
        #
        # @param [Hash]
        #
        def reset!(params, by: nil)
          @params = params
          @query = Search::ProductSearch.new(
            params.merge(rules: customization&.product_rules)
          )

          @trace << Trace.new(@params, @query, by)
        end

        def query_string
          params[:q].strip
        end

        def has_filters?
          query.facets.any?(&:selected?)
        end

        def autoselected_filter?(name)
          params[name].present? && @original_params[name].blank?
        end

        def total
          query.total
        end

        def query_suggestions
          @query.query_suggestions
        end

        private

        def terms_facets
          Search::Storefront::Product.current_terms_facets
        end
      end
    end
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
workarea-core-3.4.45 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.44 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.43 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.42 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.41 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.40 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.39 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.38 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.37 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.36 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.35 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.34 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.33 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.32 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.31 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.30 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.29 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.28 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.27 app/queries/workarea/search/storefront_search/response.rb
workarea-core-3.4.26 app/queries/workarea/search/storefront_search/response.rb