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
-
#comment ⇒ Object
_TODO: replace with log?.
- #convs ⇒ Object
- #ctxs ⇒ Object
- #name ⇒ 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
50 51 52 53 54 55 56 57 58 59 60 |
# File 'app/models/wco/lead.rb', line 50 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
97 98 99 |
# File 'app/models/wco/lead.rb', line 97 def self.list [[nil,nil]] + all.map { |p| [ p.email, p.id ] } end |
.normalize_email(a) ⇒ Object
43 44 45 46 47 48 49 |
# File 'app/models/wco/lead.rb', line 43 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
#comment ⇒ Object
_TODO: replace with log?
25 |
# File 'app/models/wco/lead.rb', line 25 field :comment |
#convs ⇒ Object
68 |
# File 'app/models/wco/lead.rb', line 68 def convs; conversations; end |
#ctxs ⇒ Object
70 |
# File 'app/models/wco/lead.rb', line 70 def ctxs; email_contexts; end |
#name ⇒ Object
15 16 17 18 19 20 21 |
# File 'app/models/wco/lead.rb', line 15 def name if !self[:name].present? _name = (email[/\A[a-zA-Z]+/] || 'associate').capitalize update_attributes( name: _name ) end self[:name] end |
#normalize_email ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'app/models/wco/lead.rb', line 35 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
72 |
# File 'app/models/wco/lead.rb', line 72 def schs; email_actions; end |
#set_leadset ⇒ Object
30 31 32 33 |
# File 'app/models/wco/lead.rb', line 30 def set_leadset domain = email.split('@')[1] self.leadset ||= Wco::Leadset.find_or_create_by({ company_url: domain }) end |
#to_s ⇒ Object
93 94 95 96 |
# File 'app/models/wco/lead.rb', line 93 def to_s # "`#{name}` <#{email}>" email end |
#unsubscribe_token ⇒ Object
85 86 87 88 89 90 |
# File 'app/models/wco/lead.rb', line 85 def unsubscribe_token if !self[:unsubscribe_token] update_attributes({ unsubscribe_token: (0...8).map { (65 + rand(26)).chr }.join }) end self[:unsubscribe_token] end |