Module: Legion::Extensions::Conditioner::Runners::ConsentTiers

Includes:
Helpers::Lex, Helpers::Task
Defined in:
lib/legion/extensions/conditioner/runners/consent_tiers.rb

Constant Summary collapse

TIERS =
%w[tier1 tier2 tier3].freeze

Instance Method Summary collapse

Instance Method Details

#evaluate(conditions:, tier: nil, **payload) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/legion/extensions/conditioner/runners/consent_tiers.rb', line 12

def evaluate(conditions:, tier: nil, **payload)
  conditioner = Legion::Extensions::Conditioner::Condition.new(conditions: conditions,
                                                               values:     payload.merge(tier: tier))

  granted_tier = if conditioner.valid? && TIERS.include?(tier.to_s)
                   tier.to_s
                 elsif conditioner.valid?
                   TIERS.first
                 end

  status = conditioner.valid? ? 'task.queued' : 'conditioner.failed'

  task_update(payload[:task_id], status, **payload) unless payload[:task_id].nil?

  { success: true, valid: conditioner.valid?, tier: granted_tier }
rescue StandardError => e
  log.log_exception(e, component_type: :runner)
  task_update(payload[:task_id], 'conditioner.exception', **payload) unless payload[:task_id].nil?
end