class Digestifier::Delivery

Attributes

digest[R]
recipient[R]

Public Class Methods

deliver(digest) click to toggle source
# File lib/digestifier/delivery.rb, line 2
def self.deliver(digest)
  digest.recipients.call.find_each do |recipient|
    Digestifier::Delivery.new(digest, recipient).deliver_and_capture
  end
end
new(digest, recipient) click to toggle source
# File lib/digestifier/delivery.rb, line 8
def initialize(digest, recipient)
  @digest, @recipient = digest, recipient
end

Public Instance Methods

capture() click to toggle source
# File lib/digestifier/delivery.rb, line 12
def capture
  Digestifier::Receipt.capture recipient, digest.identifier
end
deliver() click to toggle source
# File lib/digestifier/delivery.rb, line 16
def deliver
  return unless settings.enabled? && contents.any?

  Digestifier.mailer.digest(recipient, contents).deliver
end
deliver_and_capture() click to toggle source
# File lib/digestifier/delivery.rb, line 22
def deliver_and_capture
  deliver
  capture
end

Private Instance Methods

contents() click to toggle source
# File lib/digestifier/delivery.rb, line 33
def contents
  digest.contents.call(recipient, last_sent..Time.zone.now)
end
frequency() click to toggle source
# File lib/digestifier/delivery.rb, line 37
def frequency
  return default_frequency unless settings.preferences['frequency']

  settings.preferences['frequency']
end
last_sent() click to toggle source
# File lib/digestifier/delivery.rb, line 43
def last_sent
  receipt = Digestifier::Receipt.last_for(recipient, digest.identifier)
  receipt.nil? ? frequency.to_i.seconds.ago : receipt.captured_at
end
settings() click to toggle source
# File lib/digestifier/delivery.rb, line 48
def settings
  @settings ||= Digestifier::Setting.for recipient, digest.identifier
end