Class: SpreeCmCommissioner::CompletionSteps::MarkLineItemAsCompleted

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

Instance Method Summary collapse

Instance Method Details

#call(line_item:, position: 1) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/services/spree_cm_commissioner/completion_steps/mark_line_item_as_completed.rb', line 6

def call(line_item:, position: 1)
  ApplicationRecord.transaction do
    validate_completion_steps!(line_item)
    validate_step_exists!(line_item, position)
    validate_action_url!(line_item, position)

    # this will set completed_at timestamp to the step in line item
    mark_step_completed!(line_item, position)

    # regenerate completion steps to check whether is consider completed.
    # because some steps, just completed at is not enough.
    line_item.generate_completion_steps!

    success(line_item)
  end
rescue StandardError => e
  failure(nil, e.message)
end