38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'app/models/concerns/integral/notification/subscribable.rb', line 38
def notifiable_users
object_notification_subscriptions = notification_subscriptions.group_by(&:state)
object_notification_subscription_user_ids = object_notification_subscriptions.values.flatten.map(&:user_id)
class_notification_subscriptions = self.class.notification_subscriptions(omit_users: object_notification_subscription_user_ids).group_by(&:state)
class_notification_subscription_user_ids = class_notification_subscriptions.values.flatten.map(&:user_id)
top_level_notification_subscription_user_ids = Integral::User.where(notify_me: true).where.not(id: object_notification_subscription_user_ids + class_notification_subscription_user_ids).pluck(:id)
notifiable_user_ids = (object_notification_subscriptions['subscribed']&.map(&:user_id) || []) + (class_notification_subscriptions['subscribed']&.map(&:user_id) || []) + top_level_notification_subscription_user_ids
notifiable_user_ids -= [PaperTrail.request.whodunnit]
User.find(notifiable_user_ids).select { |user| Pundit.policy!(user, self).receives_notifications? }
end
|