refactor: group sla users
This commit is contained in:
@@ -10,10 +10,37 @@ class Sla::ProcessAccountAppliedSlasJob < ApplicationJob
|
||||
missed_slas << applied_sla if applied_sla.status == :missed || applied_sla.status == :active_with_misses
|
||||
end
|
||||
|
||||
notify_missed_slas(missed_slas, account)
|
||||
user_sla_map = build_user_sla_map(missed_slas)
|
||||
notify_users(user_sla_map, account)
|
||||
end
|
||||
|
||||
def notify_missed_slas(missed_slas, account)
|
||||
# notify_users = account.administrators
|
||||
def build_user_sla_map(missed_slas)
|
||||
user_sla_map = {}
|
||||
|
||||
missed_slas.each do |applied_sla|
|
||||
# get all participants of the conversation
|
||||
users_to_notify = applied_sla.conversation.conversation_participants.map(&:user)
|
||||
assignee = applied_sla.conversation.assignee
|
||||
|
||||
users_to_notify.each do |user|
|
||||
user_sla_map[user] ||= []
|
||||
user_sla_map[user] << applied_sla
|
||||
end
|
||||
|
||||
if assignee.present?
|
||||
user_sla_map[assignee] ||= []
|
||||
user_sla_map[assignee] << applied_sla
|
||||
end
|
||||
end
|
||||
|
||||
user_sla_map
|
||||
end
|
||||
|
||||
def notify_users(user_sla_map, account)
|
||||
admins = account.administrators
|
||||
|
||||
user_sla_map.each do |user, slas|
|
||||
puts "Notifying user #{user.id} and #{admins.count} admins about #{slas.count} missed SLAs"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user