scinote-web/app/notifications/base_notification.rb
2023-10-17 14:59:50 +02:00

30 lines
860 B
Ruby

# frozen_string_literal: true
class BaseNotification < Noticed::Base
deliver_by :database, if: :database_notification?
def self.send_notifications(params, later: false)
recipients_class = "Recipients::#{NotificationExtends::NOTIFICATIONS_TYPES[params[:type]][:recipients_module]}".constantize
recipients_class.new(params).recipients.each do |recipient|
if later
with(params).deliver_later(recipient)
else
with(params).deliver(recipient)
end
end
end
def subject; end
private
def database_notification?
recipient.notifications_settings.dig(notification_subgroup.to_s, 'in_app')
end
def notification_subgroup
NotificationExtends::NOTIFICATIONS_GROUPS.values.reduce({}, :merge)
.find { |_sg, n| n.include?(params[:type].to_sym) }[0]
end
end