Class: Mailing::SequenceStep

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/mailing/sequence_step.rb

Instance Method Summary collapse

Instance Method Details

#casted_owner(owner) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'app/models/mailing/sequence_step.rb', line 32

def casted_owner(owner)
  # Avoid an issue with serialization
  case owner.class.name
  when "CompanyAdmin", "OrganizationAdmin", "SimpleUser"
    owner.becomes(User)
  else
    owner
  end
end

#email_nameObject



28
29
30
# File 'app/models/mailing/sequence_step.rb', line 28

def email_name
  [sequence.name, name].join("_")
end

#ready_at(last_activity_at) ⇒ Object



9
10
11
# File 'app/models/mailing/sequence_step.rb', line 9

def ready_at(last_activity_at)
  (last_activity_at.beginning_of_day + days_after_last_step.days).to_date
end

#ready_to_send?(last_activity_at) ⇒ Boolean

Returns:

  • (Boolean)


4
5
6
7
# File 'app/models/mailing/sequence_step.rb', line 4

def ready_to_send?(last_activity_at)
  return true if days_after_last_step == 0
  last_activity_at.beginning_of_day + days_after_last_step.days <= Time.zone.now
end

#send_the_mail(owner) ⇒ Object



23
24
25
26
# File 'app/models/mailing/sequence_step.rb', line 23

def send_the_mail(owner)
  # InstallationMailer.user_promoted(owner.becomes(User)).deliver_later
  SequenceMailer.send(email_name, casted_owner(owner)).deliver_later
end

#send_to_owner(sequence_owner) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'app/models/mailing/sequence_step.rb', line 13

def send_to_owner(sequence_owner)
  # on a un scheduler qui appel les mails à envoyer les jours ouvrés
  #

  send_the_mail(sequence_owner.owner)
  sequence_owner.current_step = position
  sequence_owner.last_email_sent_at = Time.zone.now
  sequence_owner.save
end