mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-29 07:26:28 +08:00
27 lines
1.2 KiB
Ruby
27 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module AutomationObservers
|
|
class AllTasksDoneObserver < BaseObserver
|
|
def self.on_update(my_module, user)
|
|
return unless Current.team.settings.dig('team_automation_settings', 'experiments', 'experiment_status_done', 'on_all_tasks_done')
|
|
return unless my_module.saved_change_to_my_module_status_id?
|
|
return unless my_module.experiment.started?
|
|
return unless my_module.experiment.my_modules.active.joins(:my_module_status).where.not(my_module_status: MyModuleStatusFlow.first.final_status).none?
|
|
|
|
experiment = my_module.experiment
|
|
experiment.update!(status: :done, last_modified_by: user)
|
|
|
|
Activities::CreateActivityService
|
|
.call(activity_type: :automation_experiment_status_changed,
|
|
owner: user,
|
|
team: experiment.team,
|
|
project: experiment.project,
|
|
subject: experiment,
|
|
message_items: {
|
|
experiment: experiment.id,
|
|
experiment_status_old: I18n.t('experiments.table.column.status.in_progress'),
|
|
experiment_status_new: I18n.t("experiments.table.column.status.#{experiment.status}")
|
|
})
|
|
end
|
|
end
|
|
end
|