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