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

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