Class: Office::ScheduledEmailAction

Inherits:
Object
  • Object
show all
Includes:
Mongoid::Document, Mongoid::Paranoia, Mongoid::Timestamps
Defined in:
lib/office/scheduled_email_action.rb

Overview

2023-03-04 vp An instance of an EmailAction.

Constant Summary collapse

STATE_ACTIVE =
'active'
STATE_INACTIVE =
'inactive'
STATES =
[ STATE_ACTIVE, STATE_INACTIVE ]

Instance Method Summary collapse

Instance Method Details

#actObject



22
# File 'lib/office/scheduled_email_action.rb', line 22

def act; email_action; end

#act=(a) ⇒ Object



23
# File 'lib/office/scheduled_email_action.rb', line 23

def act= a; email_action= a; end

#ctxsObject



27
# File 'lib/office/scheduled_email_action.rb', line 27

def ctxs; email_contexts; end

#leadObject



11
12
13
# File 'lib/office/scheduled_email_action.rb', line 11

def lead
  Lead.find( lead_id )
end

#send_and_rollObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/office/scheduled_email_action.rb', line 31

def send_and_roll
  sch = self
  sch.update_attributes({ state: Sch::STATE_INACTIVE })

  # send now
  ctx = Ctx.create!({
    email_template_id: sch.act.tmpl.id,
    lead_id: sch.lead.id,
    send_at: Time.now,
    subject: sch.act.tmpl.subject,
    from_email: sch.act.tmpl.from_email,
    scheduled_email_action_id: sch.act.id,
  })

  # schedule next actions & update the action
  sch.act.ties.each do |tie|
    next_act = tie.next_email_action
    next_at  = eval(tie.next_at_exe)
    next_sch = Sch.find_or_initialize_by({
      lead_id: sch.lead_id,
      email_action_id: next_act.id,
    })
    next_sch.perform_at = next_at
    next_sch.state      = Sch::STATE_ACTIVE
    next_sch.save!
  end
end