Class: SpreeCmCommissioner::ConversionPreCalculator

Inherits:
BaseInteractor show all
Defined in:
app/interactors/spree_cm_commissioner/conversion_pre_calculator.rb

Instance Method Summary collapse

Instance Method Details

#callObject



5
6
7
8
9
# File 'app/interactors/spree_cm_commissioner/conversion_pre_calculator.rb', line 5

def call
  update_conversion
  reassign_guests_event_id
  generate_guests_bib_number
end

#event_idObject



41
42
43
44
45
# File 'app/interactors/spree_cm_commissioner/conversion_pre_calculator.rb', line 41

def event_id
  return nil unless product_taxon.taxon&.event?

  context.event_id ||= product_taxon.taxon&.parent_id
end

#generate_guests_bib_numberObject



31
32
33
34
35
36
37
38
39
# File 'app/interactors/spree_cm_commissioner/conversion_pre_calculator.rb', line 31

def generate_guests_bib_number
  return if event_id.blank?

  SpreeCmCommissioner::Guest
    .complete
    .where(event_id: event_id)
    .none_bib
    .find_each(&:generate_bib!)
end

#reassign_guests_event_idObject

reassign event_id if it’s wrong.



19
20
21
22
23
24
25
26
27
28
29
# File 'app/interactors/spree_cm_commissioner/conversion_pre_calculator.rb', line 19

def reassign_guests_event_id
  return if event_id.blank?

  SpreeCmCommissioner::Guest
    .where(line_item_id: product_taxon.line_items.pluck(:id))
    .where('event_id IS NULL OR event_id != ?', event_id)
    .find_each do |guest|
    guest.event_id = event_id
    guest.save!
  end
end

#revenueObject



51
52
53
# File 'app/interactors/spree_cm_commissioner/conversion_pre_calculator.rb', line 51

def revenue
  product_taxon.complete_line_items.map(&:amount).compact.sum
end

#total_countObject



47
48
49
# File 'app/interactors/spree_cm_commissioner/conversion_pre_calculator.rb', line 47

def total_count
  product_taxon.complete_line_items.pluck(:quantity).compact.sum
end

#update_conversionObject



11
12
13
14
15
16
# File 'app/interactors/spree_cm_commissioner/conversion_pre_calculator.rb', line 11

def update_conversion
  product_taxon.update(
    total_count: total_count,
    revenue: revenue
  )
end