Files
nairobi/app/models/admin_notification.rb
Javi Martín d7563be8b3 Fix admin notification with relative URLs
The test was passing because it was using the rack driver, but on real
browsers it wasn't generating the expected URL.
2021-03-31 14:03:26 +02:00

50 lines
1.1 KiB
Ruby

class AdminNotification < ApplicationRecord
include Notifiable
translates :title, touch: true
translates :body, touch: true
include Globalizable
validates_translation :title, presence: true
validates_translation :body, presence: true
validates :segment_recipient, presence: true
validate :validate_segment_recipient
before_validation :complete_link_url
def list_of_recipients
UserSegments.send(segment_recipient) if valid_segment_recipient?
end
def valid_segment_recipient?
segment_recipient && UserSegments.respond_to?(segment_recipient)
end
def draft?
sent_at.nil?
end
def list_of_recipients_count
list_of_recipients&.count || 0
end
def deliver
list_of_recipients.each { |user| Notification.add(user, self) }
update!(sent_at: Time.current, recipients_count: list_of_recipients.count)
end
private
def validate_segment_recipient
errors.add(:segment_recipient, :invalid) unless valid_segment_recipient?
end
def complete_link_url
return unless link.present?
unless link =~ /\A(http:\/\/|https:\/\/|\/)/
self.link = "http://#{self.link}"
end
end
end