Class: NewLead::ActivityAgendaReconciler

Inherits:
Object
  • Object
show all
Includes:
Service
Defined in:
app/services/new_lead/activity_agenda_reconciler.rb

Overview

Reconciles a customer's existing open lead activities with the ActivityAgenda
rules matching its current profile. Activities are retyped in place so their
history, notes, and due dates survive the profile correction.

Defined Under Namespace

Classes: Result

Constant Summary collapse

LEAD_STATES =
%w[lead_qualify lead prospect].freeze
LEAD_ACTIVITY_TAG =
'lead-the-way'

Instance Method Summary collapse

Methods included from Service

#attributes_used, #build_result, call, #logger

Methods included from Service::Initializer

#initialize

Instance Method Details

#callObject



26
27
28
29
30
31
32
33
34
35
36
# File 'app/services/new_lead/activity_agenda_reconciler.rb', line 26

def call
  return Result.new unless customer&.state.in?(LEAD_STATES)

  activities = open_lead_activities
  return Result.new(status: :no_open_lead_activities) if activities.empty?

  desired_types = desired_activity_types
  return unroutable_result(activities) if desired_types.empty?

  reconcile(activities, desired_types)
end