Class: Wco::Lead

Inherits:
Object
  • Object
show all
Includes:
Mongoid::Document, Mongoid::Paranoia, Mongoid::Timestamps
Defined in:
app/models/wco/lead.rb

Constant Summary collapse

PAGE_PARAM_NAME =
'leads_page'
OP_DELETE =
'delete'
OP_ADD_TO_CAMPAIGN =
'add_to_campaign'
OPS =
[ OP_DELETE, OP_ADD_TO_CAMPAIGN ]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.find_or_create_by_email(email) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
# File 'app/models/wco/lead.rb', line 41

def self.find_or_create_by_email email
  email = self.normalize_email email
  out = where( email: email ).first
  if !out
    domain    = email.split('@')[1]
    leadset   = Wco::Leadset.where(  company_url: domain ).first
    leadset ||= Wco::Leadset.create( company_url: domain, email: email )
    out = create!( email: email, leadset: leadset )
  end
  return out
end

.listObject



86
87
88
# File 'app/models/wco/lead.rb', line 86

def self.list
  [[nil,nil]] + all.map { |p| [ p.email, p.id ] }
end

.normalize_email(a) ⇒ Object



34
35
36
37
38
39
40
# File 'app/models/wco/lead.rb', line 34

def self.normalize_email a
  a = a.downcase
  if a.index('+')
    a.slice!( a[a.index('+')...a.index('@')] )
  end
  return a
end

Instance Method Details

#convsObject



59
# File 'app/models/wco/lead.rb', line 59

def convs; conversations; end

#ctxsObject



61
# File 'app/models/wco/lead.rb', line 61

def ctxs; email_contexts; end

#normalize_emailObject



26
27
28
29
30
31
32
33
# File 'app/models/wco/lead.rb', line 26

def normalize_email
  self[:email] = email.downcase
  if email.index('+')
    a = email
    a.slice!( a[a.index('+')...a.index('@')] )
    self[:email] = a
  end
end

#schsObject



63
# File 'app/models/wco/lead.rb', line 63

def schs; email_actions; end

#set_leadsetObject



21
22
23
24
# File 'app/models/wco/lead.rb', line 21

def set_leadset
  domain         = email.split('@')[1]
  self.leadset ||= Wco::Leadset.find_or_create_by({ company_url: domain })
end

#to_sObject



83
84
85
# File 'app/models/wco/lead.rb', line 83

def to_s
  "#{name} <#{email}>"
end

#unsubscribe_tokenObject



76
77
78
79
80
81
# File 'app/models/wco/lead.rb', line 76

def unsubscribe_token
  if !self[:unsubscribe_token]
    update_attributes({ unsubscribe_token: (0...8).map { (65 + rand(26)).chr }.join })
  end
  self[:unsubscribe_token]
end