diff options
Diffstat (limited to 'app/models/users_project.rb')
-rw-r--r-- | app/models/users_project.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/app/models/users_project.rb b/app/models/users_project.rb index e8810f56def..6495bed4e61 100644 --- a/app/models/users_project.rb +++ b/app/models/users_project.rb @@ -37,6 +37,10 @@ class UsersProject < ActiveRecord::Base scope :in_projects, ->(projects) { where(project_id: projects.map { |p| p.id }) } scope :with_user, ->(user) { where(user_id: user.id) } + after_create :post_create_hook + after_update :post_update_hook + after_destroy :post_destroy_hook + class << self # Add users to project teams with passed access option @@ -114,4 +118,37 @@ class UsersProject < ActiveRecord::Base def owner? project.owner == user end + + def post_create_hook + Event.create( + project_id: self.project.id, + action: Event::JOINED, + author_id: self.user.id + ) + + notification_service.new_team_member(self) + system_hook_service.execute_hooks_for(self, :create) + end + + def post_update_hook + notification_service.update_team_member(self) if self.project_access_changed? + end + + def post_destroy_hook + Event.create( + project_id: self.project.id, + action: Event::LEFT, + author_id: self.user.id + ) + + system_hook_service.execute_hooks_for(self, :destroy) + end + + def notification_service + NotificationService.new + end + + def system_hook_service + SystemHooksService.new + end end |