summaryrefslogtreecommitdiff
path: root/app/models/team.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/team.rb')
-rw-r--r--app/models/team.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/app/models/team.rb b/app/models/team.rb
new file mode 100644
index 00000000000..894361d1273
--- /dev/null
+++ b/app/models/team.rb
@@ -0,0 +1,49 @@
+class Team
+ attr_accessor :project
+
+ def initialize(project)
+ @project = project
+ @roles = UsersProject.roles_hash
+ end
+
+ def add_user(user, access)
+ add_users_ids([user.id], access)
+ end
+
+ def add_users(users, access)
+ add_users_ids(users.map(&:id), access)
+ end
+
+ def add_users_ids(users_ids, access)
+ UsersProject.add_users_into_projects(
+ [project.id],
+ user_ids,
+ access
+ )
+ end
+
+ # Remove all users from project team
+ def truncate
+ UsersProject.truncate_team(project)
+ end
+
+ def members
+ project.users_projects
+ end
+
+ def guests
+ members.guests.map(&:user)
+ end
+
+ def reporters
+ members.reporters.map(&:user)
+ end
+
+ def developers
+ members.developers.map(&:user)
+ end
+
+ def masters
+ members.masters.map(&:user)
+ end
+end