petities/petitions.eu

View on GitHub
app/lib/petition_status_mail.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# Builds list of recipients for PetitionMailer.status_change_mail
class PetitionStatusMail
  def initialize(petition)
    @petition = petition
  end

  def call
    recipients.each do |recipient|
      PetitionMailer.status_change_mail(petition, recipient).deliver_later
    end
  end

  def recipients
    [
      petitioner,
      users,
      office,
      Office.default_office.email
    ].flatten.uniq.reject(&:blank?)
  end

  private

  attr_reader :petition

  def petitioner
    petition.petitioner_email
  end

  def users
    petition.users.collect(&:email)
  end

  def office
    petition.office.email if petition.office.present?
  end
end