Sha256: a7f41234366d3e6046a931ff89b2b0d7b1da32f15fa567ea41a038844c76eb81

Contents?: true

Size: 1.36 KB

Versions: 6

Compression:

Stored size: 1.36 KB

Contents

class Dorsale::Email
  include ActiveModel::Model
  include Agilibox::ModelToS
  include Agilibox::ModelI18n

  validates :to,      presence: true
  validates :subject, presence: true
  validates :body,    presence: true

  attr_accessor(
    :current_user,
    :from,
    :to,
    :cc,
    :subject,
    :body,
    :attachments,
  )

  def initialize(*)
    super
    assign_default_values
  end

  def attachment_names
    attachments.keys.join(", ")
  end

  def save
    valid? && deliver_now
  end

  private

  def data
    # Real email :from is mailer default
    # The :from of this class is used as reply_to
    {
      :reply_to    => from,
      :to          => to,
      :cc          => cc,
      :subject     => subject,
      :body        => body,
      :attachments => attachments,
    }
  end

  def deliver_now
    Dorsale::GenericMailer.generic_email(data).deliver_now
  end

  def default_from
    "#{current_user} <#{current_user.email}>" if current_user
  end

  def assign_default_values
    self.from        ||= default_from
    self.to          ||= default_to
    self.cc          ||= default_cc
    self.subject     ||= default_subject
    self.body        ||= default_body
    self.attachments ||= default_attachments
  end

  def default_to
  end

  def default_cc
  end

  def default_subject
  end

  def default_body
  end

  def default_attachments
    {}
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
dorsale-3.10.0 app/models/dorsale/email.rb
dorsale-3.9.8 app/models/dorsale/email.rb
dorsale-3.9.7 app/models/dorsale/email.rb
dorsale-3.9.6 app/models/dorsale/email.rb
dorsale-3.9.5 app/models/dorsale/email.rb
dorsale-3.9.4 app/models/dorsale/email.rb