unsubscribe and added zip for newletter marketing

This commit is contained in:
2016-05-14 11:14:47 +02:00
parent c0bb8f3cbe
commit dc3c97e9b7
2 changed files with 25 additions and 9 deletions
+1 -2
View File
@@ -21,8 +21,7 @@ class Supporter
field :coordinates, type: Array field :coordinates, type: Array
field :comments, type: String field :comments, type: String
field :language, type: String field :language, type: String
field :email2, type: String field :unsubscribed, type: Boolean, default: false
field :email3, type: String
field :duplicate, type: Boolean, default: false field :duplicate, type: Boolean, default: false
validates :first_name, presence: true validates :first_name, presence: true
+24 -7
View File
@@ -1,20 +1,28 @@
class MailChimpBatchUpdate class MailChimpBatchUpdate
def self.update_all(api_key, list_id) def initialize(api_key, list_id)
@mailchimp = Mailchimp::API.new(api_key)
@list_id = list_id
end
def update_all
subscribers = [] subscribers = []
mailchimp = Mailchimp::API.new(api_key)
Supporter.each_with_index do |supporter, index| Supporter.each_with_index do |supporter, index|
subscribers.push(subscriber supporter) subscribers.push(subscriber supporter)
if index.modulo(20) == 0 if index.modulo(20) == 0
mailchimp.lists.batch_subscribe(list_id, subscribers, false, true, false) batch_subscribe(subscribers)
subscribers = [] subscribers = []
end end
end end
mailchimp.lists.batch_subscribe(list_id, subscribers, false, true, false) batch_subscribe(subscribers)
end end
def self.subscriber(supporter) def batch_subscribe(subscribers)
@mailchimp.lists.batch_subscribe(@list_id, subscribers, false, true, false)
end
def subscriber(supporter)
{ 'EMAIL' => { 'email' => supporter.email }, 'language' => supporter.language, :EMAIL_TYPE => 'html', { 'EMAIL' => { 'email' => supporter.email }, 'language' => supporter.language, :EMAIL_TYPE => 'html',
:merge_vars => { :merge_vars => {
'EMAIL' => supporter.email, 'EMAIL' => supporter.email,
@@ -23,7 +31,16 @@ class MailChimpBatchUpdate
'SUPPORT' => supporter.support, 'SUPPORT' => supporter.support,
'MEMBERSHIP' => supporter.li_membership.to_s, 'MEMBERSHIP' => supporter.li_membership.to_s,
'AGE' => supporter.age_category, 'AGE' => supporter.age_category,
'LANG' => supporter.language 'LANG' => supporter.language,
} } 'ZIP' => supporter.zip } }
end
def update_unsubscibed
unsubscribed_members = @mailchimp.lists.members(@list_id, 'unsubscribed', limit: 100)
unsubscribed_members['data'].each do |member|
Supporter.where(email: member['email']).each do |supporter|
supporter.update_attributes unsubscribed: true
end
end
end end
end end