Sha256: f90b50073daf420ea6ed72cc7f232af63b783e106c64e176e63048a63ecbc9ab

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

#
# Sends a single email, or a campaign.
#

class Ish::EmailContext
  include Mongoid::Document
  include Mongoid::Timestamps

  field :title
  def slug
    title
  end

  PAGE_PARAM_NAME = 'email_contexts_page'

  FROM_EMAILS = %w| piousbox@gmail.com victor@piousbox.com victor@wasya.co no-reply@piousbox.com |
  field :from_email
  validates_presence_of :from_email
  def self.from_email_list
    [ [nil, nil] ] + FROM_EMAILS.map { |i| [i, i] }
  end

  TYPE_SINGLE = 'TYPE_SINGLE'
  TYPE_CAMPAIGN = 'TYPE_CAMPAIGN'
  field :type, default: TYPE_SINGLE
  def self.types_list
    [ [TYPE_SINGLE, TYPE_SINGLE], [TYPE_CAMPAIGN, TYPE_CAMPAIGN] ]
  end


  field :subject
  validates_presence_of :subject

  field :body
  # validates_presence_of :body ## With plain type, there is no body but there are variables for templating.

  belongs_to :email_template

  field :rendered_str

  field :sent_at, type: DateTime
  field :scheduled_at, type: DateTime

  def self.all_campaigns
    Ish::EmailContext.where( type: TYPE_CAMPAIGN )
  end

  def campaign_leads
    if self.type == TYPE_CAMPAIGN
      return ::EmailCampaignLead.where( email_campaign_id: self.id.to_s ).includes( :lead )
    end
  end

  def leads
    campaign_leads&.map { |p| p.lead }
  end


  #
  # For templating:
  #
  field :tmpl_name

  field :to_email
  validates_presence_of :to_email, if: -> { type == TYPE_SINGLE }

  #
  # For tracking
  #
  attr_reader :tid

end
EmailCampaign = Ish::EmailContext

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ish_models-0.0.33.185 lib/ish/email_context.rb