mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-29 07:26:28 +08:00
27 lines
1.1 KiB
Ruby
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
|