diff options
Diffstat (limited to 'app/services/members/invite_member_builder.rb')
-rw-r--r-- | app/services/members/invite_member_builder.rb | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/app/services/members/invite_member_builder.rb b/app/services/members/invite_member_builder.rb new file mode 100644 index 00000000000..e925121bb1e --- /dev/null +++ b/app/services/members/invite_member_builder.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module Members + class InviteMemberBuilder < StandardMemberBuilder + def execute + if user_by_email + find_or_initialize_member_by_user(user_by_email.id) + else + source.members_and_requesters.find_or_initialize_by(invite_email: invitee) # rubocop:disable CodeReuse/ActiveRecord + end + end + + private + + def user_by_email + source.users_by_emails([invitee])[invitee] + end + end +end |