Class: Wco::Lead
- Inherits:
-
Object
- Object
- Wco::Lead
- 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
- #convs ⇒ Object
- #ctxs ⇒ Object
- #normalize_email ⇒ Object
- #schs ⇒ Object
- #set_leadset ⇒ Object
- #to_s ⇒ Object
- #unsubscribe_token ⇒ Object
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 |
.list ⇒ Object
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
#convs ⇒ Object
59 |
# File 'app/models/wco/lead.rb', line 59 def convs; conversations; end |
#ctxs ⇒ Object
61 |
# File 'app/models/wco/lead.rb', line 61 def ctxs; email_contexts; end |
#normalize_email ⇒ Object
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 |
#schs ⇒ Object
63 |
# File 'app/models/wco/lead.rb', line 63 def schs; email_actions; end |
#set_leadset ⇒ Object
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_s ⇒ Object
83 84 85 |
# File 'app/models/wco/lead.rb', line 83 def to_s "#{name} <#{email}>" end |
#unsubscribe_token ⇒ Object
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 |