Class: SpreeCmCommissioner::CompletionSteps::RegenerateForLineItems

Inherits:
Object
  • Object
show all
Includes:
Spree::ServiceModule::Base
Defined in:
app/services/spree_cm_commissioner/completion_steps/regenerate_for_line_items.rb

Instance Method Summary collapse

Instance Method Details

#call(product:) ⇒ Object

Regenerates completion steps for all completed line items of a product. Called when a ProductCompletionStep is created, updated, or destroyed.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/services/spree_cm_commissioner/completion_steps/regenerate_for_line_items.rb', line 8

def call(product:)
  line_items = product.line_items.complete

  CmAppLogger.log(
    label: 'SpreeCmCommissioner::CompletionSteps::RegenerateForLineItems#call Starting',
    data: {
      product_id: product.id,
      line_items_count: line_items.count
    }
  )

  regenerated_count = 0
  failed_count = 0

  line_items.find_each do |line_item|
    line_item.generate_completion_steps!
    regenerated_count += 1
  rescue StandardError => e
    CmAppLogger.error(
      label: 'SpreeCmCommissioner::CompletionSteps::RegenerateForLineItems#call Line item regeneration failed',
      data: {
        product_id: product.id,
        line_item_id: line_item.id,
        error_class: e.class.name,
        error_message: e.message
      }
    )
    failed_count += 1
  end

  CmAppLogger.log(
    label: 'SpreeCmCommissioner::CompletionSteps::RegenerateForLineItems#call Completed',
    data: {
      product_id: product.id,
      regenerated_count: regenerated_count,
      failed_count: failed_count
    }
  )

  success(regenerated_count: regenerated_count, failed_count: failed_count)
rescue StandardError => e
  failure(nil, e.message)
end