Class: Campaign::AssignCustomersToSubscriberList

Inherits:
BaseService
  • Object
show all
Defined in:
app/services/campaign/assign_customers_to_subscriber_list.rb

Overview

Assigns and merge a list a of customer_id into an existing subscriber list

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

Methods inherited from BaseService

#initialize, #log_debug, #log_error, #log_info, #log_warning, #logger, #options, #tagged_logger

Constructor Details

This class inherits a constructor from BaseService

Instance Method Details

#process(subscriber_list, customer_ids = []) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
# File 'app/services/campaign/assign_customers_to_subscriber_list.rb', line 8

def process(subscriber_list, customer_ids = [])
  existing_customer_ids = subscriber_list.subscribers.pluck(:customer_id)
  new_subscribers = []
  new_customer_ids = (customer_ids - existing_customer_ids)
  new_customer_ids.each do |new_customer_id|
    new_subscribers << Subscriber.new(active: true, subscriber_list_id: subscriber_list.id, customer_id: new_customer_id)
  end
  require 'activerecord-import/base'
  require 'activerecord-import/active_record/adapters/postgresql_adapter'
  Subscriber.import(new_subscribers) if new_subscribers.present?
  Result.new(subscribed: true, messages: [], new_subscribers: new_customer_ids.size, existing_subscribers: existing_customer_ids.size)
end