class RealPage::Validator::MoveInReport
Send parased response's move-in report data to Snowflake via event tracker
Attributes
request_name[R]
request_params[R]
response[R]
Public Class Methods
new(response, request_params, request_name)
click to toggle source
# File lib/real_page/validator/move_in_report.rb, line 11 def initialize(response, request_params, request_name) @response = response @request_params = request_params @request_name = request_name end
Public Instance Methods
validate!()
click to toggle source
# File lib/real_page/validator/move_in_report.rb, line 17 def validate! return if leases.blank? send_successful_response_data_to_snowflake end
Private Instance Methods
format_date(field)
click to toggle source
# File lib/real_page/validator/move_in_report.rb, line 70 def format_date(field) return nil if field.blank? # The date string from the response data is in the format of "6/1/2015 12:00:00 AM" datetime_format = '%m/%d/%Y %I:%M:%S %p' DateTime.strptime(field, datetime_format).to_time.utc end
import_resident_id()
click to toggle source
# File lib/real_page/validator/move_in_report.rb, line 78 def import_resident_id "#{request_params[:import_id]}-#{SecureRandom.alphanumeric(15)}" end
leases()
click to toggle source
# File lib/real_page/validator/move_in_report.rb, line 48 def leases body = response['s:Envelope']['s:Body'] response_key = body.keys.detect { |key| key !~ /^xmlns/ } contents_response = body.fetch(response_key) result_key = contents_response.keys.detect { |key| key !~ /^xmlns/ } contents_result = contents_response.fetch(result_key) result = contents_result.values.first leases_hash = result.dig('leases', 'lease') return [] if leases_hash.nil? return [leases_hash] unless leases_hash.is_a?(Array) leases_hash end
phones_count(lease)
click to toggle source
# File lib/real_page/validator/move_in_report.rb, line 61 def phones_count(lease) count = 0 phone_keys = lease.keys.select { |key| key.include?('phone') && !key.include?('phoneext') } phone_keys.each do |phone_key| count +=1 unless lease[phone_key].blank? end count end
send_successful_response_data_to_snowflake()
click to toggle source
# File lib/real_page/validator/move_in_report.rb, line 26 def send_successful_response_data_to_snowflake leases.each do |lease| lease['importresidentid'] = import_resident_id Utils::SnowflakeEventTracker.track_pms_resident_event( remote_lease_id: lease['leaseid'], import_resident_id: lease['importresidentid'], resident_type: 'PRIMARY', api_name: request_name, request_params: request_params, move_in_date: format_date(lease['moveindate']), lease_to: format_date(lease['leaseenddate']), lease_from: format_date(lease['leasebegindate']), first_name_present: !lease['firstname'].blank?, last_name_present: !lease['lastname'].blank?, email_present: !lease['email'].blank?, phones_count: phones_count(lease), unit_name: lease['unitnumber'], resident_id: lease['residentmemberid'] ) end end