diff options
Diffstat (limited to 'app/services/members/creator_service.rb')
-rw-r--r-- | app/services/members/creator_service.rb | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/app/services/members/creator_service.rb b/app/services/members/creator_service.rb index 7b0bebff760..f2c8a6f20a1 100644 --- a/app/services/members/creator_service.rb +++ b/app/services/members/creator_service.rb @@ -4,6 +4,8 @@ module Members # This class serves as more of an app-wide way we add/create members # All roads to add members should take this path. class CreatorService + include Gitlab::Experiment::Dsl + class << self def parsed_access_level(access_level) access_levels.fetch(access_level) { access_level.to_i } @@ -24,6 +26,7 @@ module Members def execute find_or_build_member update_member + create_member_task member end @@ -61,6 +64,21 @@ module Members } end + def create_member_task + return unless experiment(:invite_members_for_task).enabled? + return unless member.persisted? + return if member_task_attributes.value?(nil) + + member.create_member_task(member_task_attributes) + end + + def member_task_attributes + { + tasks_to_be_done: args[:tasks_to_be_done], + project_id: args[:tasks_project_id] + } + end + def approve_request ::Members::ApproveAccessRequestService.new(current_user, access_level: access_level) |