class Yardi::DocumentParser::Prospects

Build Prospect objects from prospect search response body.

Constants

SOAP_ACTION

Attributes

body[R]

Private Instance Methods

build_events(event_nodes) click to toggle source
# File lib/yardi/document_parser/prospects.rb, line 46
def build_events(event_nodes)
  events_array = event_nodes.is_a?(Array) ? event_nodes : [event_nodes]
  source = transaction_source(events_array)

  events_array.map do |e|
    Model::Event.new(
      remote_id: e.fetch('EventID', {})['IDValue'],
      type: e['EventType'],
      timestamp: e['EventDate'],
      first_contact: e['FirstContact'] == 'true',
      transaction_source: source
    )
  end
end
build_prospect(prospect) click to toggle source
# File lib/yardi/document_parser/prospects.rb, line 31
def build_prospect(prospect)
  customer = [prospect['Customers']['Customer']].flatten.first
  events = prospect.dig('Events', 'Event') || []

  Model::Prospect.new(
    first_name: customer['Name']['FirstName'],
    last_name: customer['Name']['LastName'],
    email: customer['Email'],
    phones: Utils::PhoneParser.parse(customer['Phone']),
    events: build_events(events),
    prospect_id: remote_id(customer, 'ProspectID'),
    tenant_id: remote_id(customer, 'TenantID')
  )
end
parse_body(body) click to toggle source

@param body [Hash<String, Object>] the body of the XML response parsed

into a Hash

@return [Array<Yardi::Model::Prospect>] @raise [Yardi::Error::Base] if the response is invalid

# File lib/yardi/document_parser/prospects.rb, line 19
def parse_body(body)
  @body = body
  prospects
end
prospects() click to toggle source
# File lib/yardi/document_parser/prospects.rb, line 24
def prospects
  prospects = result_node['LeadManagement']['Prospects']['Prospect']
  prospects = [prospects] unless prospects.is_a?(Array)

  prospects.map { |prospect| build_prospect(prospect) }
end
remote_id(customer, id_type) click to toggle source
# File lib/yardi/document_parser/prospects.rb, line 70
def remote_id(customer, id_type)
  desired_id_node = customer['Identification'].detect do |id_node|
    id_node['IDType'] == id_type
  end

  desired_id_node['IDValue']
end
transaction_source(event_nodes) click to toggle source
# File lib/yardi/document_parser/prospects.rb, line 61
def transaction_source(event_nodes)
  transaction_node = event_nodes.detect{ |e| e['TransactionSource'].present? }
  if transaction_node.nil?
    'None Given From Yardi'
  else
    transaction_node['TransactionSource']
  end
end