Class: Workarea::Admin::ProductRulesPreviewViewModel

Inherits:
ApplicationViewModel
  • Object
show all
Defined in:
app/view_models/workarea/admin/product_rules_preview_view_model.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.wrap(model, options = {}) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
# File 'app/view_models/workarea/admin/product_rules_preview_view_model.rb', line 6

def self.wrap(model, options = {})
  return model.map { |m| wrap(m, options) } if model.is_a?(Enumerable)

  view_model_class = [
    "Workarea::Admin",
    "#{model.class.model_name.param_key.camelize}ProductRulesViewModel"
  ].join('::')

  view_model_class.constantize.new(model, options)
rescue
  new(model, options)
end

Instance Method Details

#base_queryObject



58
59
60
61
# File 'app/view_models/workarea/admin/product_rules_preview_view_model.rb', line 58

def base_query
  return unless model.respond_to?(:query)
  model.query
end

#display_results?Boolean

Returns:

  • (Boolean)


54
55
56
# File 'app/view_models/workarea/admin/product_rules_preview_view_model.rb', line 54

def display_results?
  model.product_rules.select(&:valid?).present?
end

#resultsWorkarea::PagedArray<Workarea::Admin::ProductViewModel>

Provides all products found from search results

Returns:



39
40
41
42
43
44
45
46
47
48
# File 'app/view_models/workarea/admin/product_rules_preview_view_model.rb', line 39

def results
  @results ||= PagedArray.from(
    search.results.map do |r|
      Admin::ProductViewModel.new(r[:model], inventory: r[:inventory])
    end,
    search.page,
    search.per_page,
    search.total
  )
end

#searchWorkarea::Search::CategoryBrowse

Fetches search results of products for category. Extends search class with Search::AdminProductRulesPreview to allow overriding display rules.

Returns:

  • (Workarea::Search::CategoryBrowse)

    enumerable collection of the search results



26
27
28
29
30
31
32
33
# File 'app/view_models/workarea/admin/product_rules_preview_view_model.rb', line 26

def search
  @search ||= Search::CategoryBrowse.new(
    rules: model.product_rules.select(&:valid?),
    sort: model.default_sort,
    page: options[:page] || 1,
    show_all: show_all?
  ).tap { |s| s.extend(Search::AdminProductRulesPreview) }
end

#show_all?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'app/view_models/workarea/admin/product_rules_preview_view_model.rb', line 50

def show_all?
  options[:show_all].to_s =~ /true/
end