summaryrefslogtreecommitdiff
path: root/app/services/groups/participants_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/groups/participants_service.rb')
-rw-r--r--app/services/groups/participants_service.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/app/services/groups/participants_service.rb b/app/services/groups/participants_service.rb
new file mode 100644
index 00000000000..0844c98dd6a
--- /dev/null
+++ b/app/services/groups/participants_service.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+module Groups
+ class ParticipantsService < Groups::BaseService
+ include Users::ParticipableService
+
+ def execute(noteable)
+ @noteable = noteable
+
+ participants =
+ noteable_owner +
+ participants_in_noteable +
+ all_members +
+ groups +
+ group_members
+
+ render_participants_as_hash(participants.uniq)
+ end
+
+ def all_members
+ count = group_members.count
+ [{ username: "all", name: "All Group Members", count: count }]
+ end
+
+ def group_members
+ return [] unless noteable
+
+ @group_members ||= sorted(noteable.group.direct_and_indirect_users)
+ end
+ end
+end