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