Class: Rpx::Resident

Inherits:
Hashie::Trash
  • Object
show all
Includes:
Hashie::Extensions::Coercion, Hashie::Extensions::IgnoreUndeclared
Defined in:
lib/rpx/resident.rb

Direct Known Subclasses

ResidentWithLease

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.current_residents(options, client = Client.new(options)) ⇒ Object



76
77
78
# File 'lib/rpx/resident.rb', line 76

def self.current_residents(options, client=Client.new(options))
  self.where(options, client).select{|resident| resident.current_resident? }
end

.where(options, client = Client.new(options)) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
# File 'lib/rpx/resident.rb', line 43

def self.where(options, client=Client.new(options))
  resident_hashs = client.api_call :getresidentlist, options do |xml|
    xml.tem :residentsearch do |xml|
      xml.tem :extensionData
      client.add_attributes_if_present(xml, options, Resident.properties.to_a)
    end
  end

  site_properties = {siteid: options.fetch(:siteid), pmcid: options.fetch(:pmcid)}
  [resident_hashs].flatten.map{ |resident_hash| Resident.new(resident_hash.merge(site_properties)) }
end

Instance Method Details

#current_leaseObject



59
60
61
# File 'lib/rpx/resident.rb', line 59

def current_lease
  @current_lease ||= leases.sort_by{ |lease| lease.dateend }.last
end

#current_resident?Boolean

Returns:

  • (Boolean)


80
81
82
# File 'lib/rpx/resident.rb', line 80

def current_resident?
  self.leasestatus == "Current"
end

#fullnameObject



84
85
86
# File 'lib/rpx/resident.rb', line 84

def fullname
  "#{firstname} #{lastname}".strip #TODO: ask them to add middleman saluration and generation in the api
end

#leasesObject



55
56
57
# File 'lib/rpx/resident.rb', line 55

def leases
  @leases ||= ResidentWithLease.find({resident_id: self.resident_id, siteid: siteid, pmcid: pmcid}).leases
end

#minor?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/rpx/resident.rb', line 73

def minor?
  current_lease.residentrelationship.downcase[/minor/]
end

#moved_out?Boolean

Returns:

  • (Boolean)


67
68
69
70
71
# File 'lib/rpx/resident.rb', line 67

def moved_out?
  return false if current_resident?

  current_lease.moved_out?
end

#residenttypeObject



39
40
41
# File 'lib/rpx/resident.rb', line 39

def residenttype
  self[:residenttype] == 'H' ? 'Head of Household' : 'Other'
end

#statusObject



63
64
65
# File 'lib/rpx/resident.rb', line 63

def status
  current_lease.leasestatus
end