Class: NewLead::LeadActivityAssigner

Inherits:
BaseService
  • Object
show all
Defined in:
app/services/new_lead/lead_activity_assigner.rb

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

Instance Method Details

#process(customer, notes: nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'app/services/new_lead/lead_activity_assigner.rb', line 7

def process(customer, notes: nil)
  errors, activities_created, activities_in_error = [],[],[]
  activity_agendas = ActivityAgenda.seek_lead_assigned_activities(customer)
  activity_agendas.each do |aa|
    # Is there an existing open lead activity re-evaluate the assignment sequence
    if lead_activity = customer.related_activities.open_activities.joins(:activity_type).where(ActivityType[:task_type].eq(aa.activity_type.task_type)).first ||
                       customer.related_activities.open_activities.sales_activities.first
      #lead_activity.update_attribute(:assigned_resource_id, customer.primary_sales_rep_id)
      lead_activity.set_assigned_rep
      lead_activity.new_note = notes
      lead_activity.save
    else
      lead_activity = customer.create_activity(aa.activity_type.task_type, notes: notes)
    end
    next unless lead_activity
    if lead_activity.new_record?
      activities_in_error << lead_activity
    else
      activities_created << lead_activity
    end
  end

  if activities_created.present?
    status = :success
  elsif activities_in_error.present?
    status = :error
  else
    status = :none_created
  end

  Result.new(status: status, activities_created: activities_created, activities_in_error: activities_in_error )
end