rosa-build/lib/modules/observers/activity_feed/issue.rb

67 lines
2.3 KiB
Ruby
Raw Normal View History

2013-06-27 14:06:42 +01:00
module Modules::Observers::ActivityFeed::Issue
extend ActiveSupport::Concern
included do
after_commit :new_issue_notifications, :on => :create
2013-07-10 18:44:18 +01:00
after_commit :send_assign_notifications, :on => :create, :if => Proc.new { |i| i.assignee }
2013-07-04 09:56:35 +01:00
after_commit -> { send_assign_notifications(:update) }, :on => :update
after_commit :send_hooks, :on => :create
2013-07-10 18:44:18 +01:00
after_commit -> { send_hooks(:update) }, :on => :update, :if => Proc.new { |i| i.previous_changes['status'].present? }
2013-06-27 14:06:42 +01:00
end
private
def new_issue_notifications
collect_recipients.each do |recipient|
next if user_id == recipient.id
2013-07-04 09:56:35 +01:00
if recipient.notifier.can_notify && recipient.notifier.new_issue && assignee_id != recipient.id
UserMailer.new_issue_notification(self, recipient).deliver
2013-07-04 09:56:35 +01:00
end
2013-06-27 14:06:42 +01:00
ActivityFeed.create(
:user => recipient,
:kind => 'new_issue_notification',
:data => {
:user_name => user.name,
:user_email => user.email,
:user_id => user_id,
:issue_serial_id => serial_id,
:issue_title => title,
:project_id => project.id,
:project_name => project.name,
:project_owner => project.owner.uname
}
)
end
Comment.create_link_on_issues_from_item(self)
2013-06-27 14:06:42 +01:00
end
def send_assign_notifications(action = :create)
2013-07-10 18:44:18 +01:00
if(action == :create && assignee_id) || previous_changes['assignee_id'].present?
2013-06-27 14:06:42 +01:00
if assignee.notifier.issue_assign && assignee.notifier.can_notify
UserMailer.issue_assign_notification(self, assignee).deliver
2013-06-27 14:06:42 +01:00
end
ActivityFeed.create(
:user => assignee,
:kind => 'issue_assign_notification',
:data => {
:user_name => assignee.name,
:user_email => assignee.email,
:issue_serial_id => serial_id,
:issue_title => title,
:project_id => project.id,
:project_name => project.name,
:project_owner => project.owner.uname
}
)
end
# dont remove outdated issues link
2013-07-10 18:44:18 +01:00
Comment.create_link_on_issues_from_item(self) if previous_changes['title'].present? || previous_changes['body'].present?
2013-06-27 14:06:42 +01:00
end
def send_hooks(action = :create)
project.hooks.each{ |h| h.receive_issues(self, action) }
end
end