Class: Workarea::Admin::InsightViewModel

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

Instance Method Summary collapse

Instance Method Details

#add_models(klass, insight_result) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/view_models/workarea/admin/insight_view_model.rb', line 14

def add_models(klass, insight_result)
  result = insight_result.deep_dup
  key_name = klass.name.demodulize.underscore
  id_key_name = "#{key_name}_id"

  ids = model.results.flat_map { |r| r.select { |k| k =~ /#{id_key_name}$/ }.values }
  models = klass.any_in(id: ids).to_lookup_hash

  insight_result.each do |key, value|
    if key =~ /#{id_key_name}$/
      new_key = key.gsub(/#{id_key_name}$/, key_name)
      model = models[value]

      if model.present?
        result.merge!(new_key => ApplicationController.wrap_in_view_model(model))
      end
    end
  end

  result
end

#resultsObject



4
5
6
7
8
9
10
11
12
# File 'app/view_models/workarea/admin/insight_view_model.rb', line 4

def results
  @results ||= model.results.map do |result|
    OpenStruct.new(
      Workarea.config.insights_model_classes.reduce(result) do |memo, klass|
        memo.merge(add_models(klass.constantize, memo))
      end
    )
  end
end