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