scinote-web/app/services/automation_observers/step_completion_observer.rb

27 lines
1.1 KiB
Ruby

# frozen_string_literal: true
module AutomationObservers
class StepCompletionObserver < BaseObserver
def self.on_update(step, user)
return unless Current.team.settings.dig('team_automation_settings', 'tasks', 'task_status_in_progress', 'on_step_completion')
return unless step.saved_change_to_completed? && step.completed
return unless step.protocol.in_module? && step.protocol.my_module.my_module_status.initial_status?
my_module = step.protocol.my_module
previous_status_id = my_module.my_module_status.id
my_module.update!(my_module_status: my_module.my_module_status.next_status, last_modified_by: user)
Activities::CreateActivityService
.call(activity_type: :automation_task_status_changed,
owner: user,
team: my_module.team,
project: my_module.project,
subject: my_module,
message_items: {
my_module: my_module.id,
my_module_status_old: previous_status_id,
my_module_status_new: my_module.my_module_status.id
})
end
end
end