summaryrefslogtreecommitdiff
path: root/app/workers/tasks_to_be_done/create_worker.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/workers/tasks_to_be_done/create_worker.rb')
-rw-r--r--app/workers/tasks_to_be_done/create_worker.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/app/workers/tasks_to_be_done/create_worker.rb b/app/workers/tasks_to_be_done/create_worker.rb
new file mode 100644
index 00000000000..0953f190fd0
--- /dev/null
+++ b/app/workers/tasks_to_be_done/create_worker.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+module TasksToBeDone
+ class CreateWorker
+ include ApplicationWorker
+
+ data_consistency :always
+ idempotent!
+ feature_category :onboarding
+ urgency :low
+ worker_resource_boundary :cpu
+
+ def perform(member_task_id, current_user_id, assignee_ids = [])
+ member_task = MemberTask.find(member_task_id)
+ current_user = User.find(current_user_id)
+ project = member_task.project
+
+ member_task.tasks_to_be_done.each do |task|
+ service_class(task)
+ .new(project: project, current_user: current_user, assignee_ids: assignee_ids)
+ .execute
+ end
+ end
+
+ private
+
+ def service_class(task)
+ "TasksToBeDone::Create#{task.to_s.camelize}TaskService".constantize
+ end
+ end
+end