Module: Mapper::Reso
- Defined in:
- lib/mapper/reso.rb
Class Method Summary collapse
- .address(queued_listing, listing) ⇒ Object
- .alternate_prices(queued_listing, listing) ⇒ Object
- .appliances(queued_listing, listing) ⇒ Object
- .architecture_style(queued_listing, listing) ⇒ Object
- .architecture_style_description(queued_listing, listing) ⇒ Object
- .bathrooms(queued_listing, listing) ⇒ Object
- .bedrooms(queued_listing, listing) ⇒ Object
- .brokerage(queued_listing, listing) ⇒ Object
- .builder(queued_listing, listing) ⇒ Object
- .building_unit_count(queued_listing, listing) ⇒ Object
- .condo_floor_num(queued_listing, listing) ⇒ Object
- .cooling_systems(queued_listing, listing) ⇒ Object
- .county(queued_listing, listing) ⇒ Object
- .currency_code(queued_listing, listing) ⇒ Object
- .directions(queued_listing, listing) ⇒ Object
- .disclaimer(queued_listing, listing) ⇒ Object
- .disclose_address(queued_listing, listing) ⇒ Object
- .elevation(queued_listing, listing) ⇒ Object
- .expenses(queued_listing, listing) ⇒ Object
- .exterior_types(queued_listing, listing) ⇒ Object
- .floor_coverings(queued_listing, listing) ⇒ Object
- .foreclosure_status(queued_listing, listing) ⇒ Object
- .franchise(queued_listing, listing) ⇒ Object
- .full_bathrooms(queued_listing, listing) ⇒ Object
- .geocode_options(queued_listing, listing) ⇒ Object
- .get_boolean_value(queued_listing, elements) ⇒ Object
- .get_enums(queued_listing, elements) ⇒ Object
- .get_repeaters(queued_listing, elements) ⇒ Object
-
.get_reso_business(queued_listing, business_type) ⇒ Object
Utilities.
- .get_simple_value(queued_listing, element) ⇒ Object
- .get_subvalue(queued_listing, element, child_elements) ⇒ Object
- .get_value(queued_listing, elements) ⇒ Object
- .half_bathrooms(queued_listing, listing) ⇒ Object
- .has_attic(queued_listing, listing) ⇒ Object
- .has_barbecue_area(queued_listing, listing) ⇒ Object
- .has_basement(queued_listing, listing) ⇒ Object
- .has_ceiling_fan(queued_listing, listing) ⇒ Object
- .has_deck(queued_listing, listing) ⇒ Object
- .has_disabled_access(queued_listing, listing) ⇒ Object
- .has_dock(queued_listing, listing) ⇒ Object
- .has_doorman(queued_listing, listing) ⇒ Object
- .has_double_pane_windows(queued_listing, listing) ⇒ Object
- .has_elevator(queued_listing, listing) ⇒ Object
- .has_fireplace(queued_listing, listing) ⇒ Object
- .has_garden(queued_listing, listing) ⇒ Object
- .has_gated_entry(queued_listing, listing) ⇒ Object
- .has_greenhouse(queued_listing, listing) ⇒ Object
- .has_hot_tub_spa(queued_listing, listing) ⇒ Object
- .has_intercom(queued_listing, listing) ⇒ Object
- .has_jetted_bath_tub(queued_listing, listing) ⇒ Object
- .has_lawn(queued_listing, listing) ⇒ Object
- .has_mother_in_law(queued_listing, listing) ⇒ Object
- .has_patio(queued_listing, listing) ⇒ Object
- .has_pond(queued_listing, listing) ⇒ Object
- .has_pool(queued_listing, listing) ⇒ Object
- .has_porch(queued_listing, listing) ⇒ Object
- .has_rv_parking(queued_listing, listing) ⇒ Object
- .has_sauna(queued_listing, listing) ⇒ Object
- .has_security_system(queued_listing, listing) ⇒ Object
- .has_skylight(queued_listing, listing) ⇒ Object
- .has_sports_court(queued_listing, listing) ⇒ Object
- .has_sprinkler_system(queued_listing, listing) ⇒ Object
- .has_vaulted_ceiling(queued_listing, listing) ⇒ Object
- .has_wet_bar(queued_listing, listing) ⇒ Object
- .heating_fuels(queued_listing, listing) ⇒ Object
- .heating_systems(queued_listing, listing) ⇒ Object
- .is_cable_ready(queued_listing, listing) ⇒ Object
- .is_new_construction(queued_listing, listing) ⇒ Object
- .is_waterfront(queued_listing, listing) ⇒ Object
- .is_wired(queued_listing, listing) ⇒ Object
- .latitude(queued_listing, listing) ⇒ Object
- .lead_routing_email(queued_listing, listing) ⇒ Object
- .legal_description(queued_listing, listing) ⇒ Object
- .list_price(queued_listing, listing) ⇒ Object
- .list_price_low(queued_listing, listing) ⇒ Object
- .listing_category(queued_listing, listing) ⇒ Object
- .listing_date(queued_listing, listing) ⇒ Object
- .listing_description(queued_listing, listing) ⇒ Object
- .listing_media(queued_listing, listing, elements) ⇒ Object
-
.listing_provider(queued_listing, listing) ⇒ Object
TODO: Make ListingProvider and SourceProviderCategory Provider and ProviderCategory.
- .listing_status(queued_listing, listing) ⇒ Object
- .listing_title(queued_listing, listing) ⇒ Object
- .listing_url(queued_listing, listing) ⇒ Object
- .living_area(queued_listing, listing) ⇒ Object
- .living_area_unit(queued_listing, listing) ⇒ Object
- .longitude(queued_listing, listing) ⇒ Object
- .lot_size(queued_listing, listing) ⇒ Object
- .method_missing(method_name, *args) ⇒ Object
- .mls_number(queued_listing, listing) ⇒ Object
- .modification_timestamp(queued_listing, listing) ⇒ Object
- .multiple_listing_service(queued_listing, listing) ⇒ Object
- .neighborhoods(queued_listing, listing) ⇒ Object
- .num_floors(queued_listing, listing) ⇒ Object
- .num_parking_spaces(queued_listing, listing) ⇒ Object
- .office(queued_listing, listing) ⇒ Object
- .one_quarter_bathrooms(queued_listing, listing) ⇒ Object
-
.open_houses(queued_listing, listing) ⇒ Object
TODO: Figure out how to provide time zone for StartTime and EndTime.
- .parcel_id(queued_listing, listing) ⇒ Object
-
.participants(queued_listing, listing) ⇒ Object
TODO: Change participant_identifier to participant_id.
- .permit_address_on_internet(queued_listing, listing) ⇒ Object
- .photos(queued_listing, listing) ⇒ Object
- .property_sub_type(queued_listing, listing) ⇒ Object
- .property_sub_type_description(queued_listing, listing) ⇒ Object
- .property_type(queued_listing, listing) ⇒ Object
- .property_type_description(queued_listing, listing) ⇒ Object
- .roof_types(queued_listing, listing) ⇒ Object
- .room_count(queued_listing, listing) ⇒ Object
- .rooms(queued_listing, listing) ⇒ Object
- .taxes(queued_listing, listing) ⇒ Object
- .three_quarter_bathrooms(queued_listing, listing) ⇒ Object
- .unique_identifier(queued_listing) ⇒ Object
- .videos(queued_listing, listing) ⇒ Object
- .view_types(queued_listing, listing) ⇒ Object
- .virtual_tours(queued_listing, listing) ⇒ Object
- .vow_address_display(queued_listing, listing) ⇒ Object
- .vow_automated_valuation_display(queued_listing, listing) ⇒ Object
- .vow_consumer_comment(queued_listing, listing) ⇒ Object
- .year_built(queued_listing, listing) ⇒ Object
- .year_updated(queued_listing, listing) ⇒ Object
Class Method Details
.address(queued_listing, listing) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/mapper/reso.rb', line 8 def self.address queued_listing, listing if (result = get_value(queued_listing, %w(Address))) listing.address ||= Address.new listing.address.assign_attributes({ preference_order: result.drilldown('preference_order'), address_preference_order: result.drilldown('address_preference_order'), full_street_address: result.drilldown('FullStreetAddress'), unit_number: result.drilldown('UnitNumber'), city: result.drilldown('City'), state_or_province: result.drilldown('StateOrProvince'), postal_code: result.drilldown('PostalCode'), country: result.drilldown('Country') }) listing.address end end |
.alternate_prices(queued_listing, listing) ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/mapper/reso.rb', line 25 def self.alternate_prices queued_listing, listing if (result = get_repeaters(queued_listing, %w(AlternatePrices AlternatePrice))) result.map{|item| listing.alternate_prices.find_or_initialize_by( list_price: item.drilldown('AlternateListPrice'), currency_code: item.drilldown('AlternateListPrice currencyCode'), list_price_low: item.drilldown('AlternateListPriceLow'), currency_code_low: item.drilldown('AlternateListPriceLow currencyCode') )} end end |
.appliances(queued_listing, listing) ⇒ Object
36 37 38 |
# File 'lib/mapper/reso.rb', line 36 def self.appliances queued_listing, listing get_enums(queued_listing, %w(DetailedCharacteristics Appliances Appliance)) end |
.architecture_style(queued_listing, listing) ⇒ Object
40 41 42 |
# File 'lib/mapper/reso.rb', line 40 def self.architecture_style queued_listing, listing (result = get_value(queued_listing, %w(DetailedCharacteristics ArchitectureStyle))) ? Mapper::architecture_styles[result] : nil end |
.architecture_style_description(queued_listing, listing) ⇒ Object
44 45 46 |
# File 'lib/mapper/reso.rb', line 44 def self.architecture_style_description queued_listing, listing get_value(queued_listing, %w(DetailedCharacteristics ArchitectureStyle otherDescription)) end |
.bathrooms(queued_listing, listing) ⇒ Object
48 49 50 |
# File 'lib/mapper/reso.rb', line 48 def self.bathrooms queued_listing, listing get_value(queued_listing, %w(Bathrooms)) end |
.bedrooms(queued_listing, listing) ⇒ Object
52 53 54 |
# File 'lib/mapper/reso.rb', line 52 def self.bedrooms queued_listing, listing get_value(queued_listing, %w(Bedrooms)) end |
.brokerage(queued_listing, listing) ⇒ Object
56 57 58 |
# File 'lib/mapper/reso.rb', line 56 def self.brokerage queued_listing, listing get_reso_business(queued_listing, 'Brokerage') end |
.builder(queued_listing, listing) ⇒ Object
60 61 62 |
# File 'lib/mapper/reso.rb', line 60 def self.builder queued_listing, listing get_reso_business(queued_listing, 'Builder') end |
.building_unit_count(queued_listing, listing) ⇒ Object
64 65 66 |
# File 'lib/mapper/reso.rb', line 64 def self.building_unit_count queued_listing, listing get_value(queued_listing, %w(DetailedCharacteristics BuildingUnitCount)) end |
.condo_floor_num(queued_listing, listing) ⇒ Object
68 69 70 |
# File 'lib/mapper/reso.rb', line 68 def self.condo_floor_num queued_listing, listing get_value(queued_listing, %w(DetailedCharacteristics CondoFloorNum)) end |
.cooling_systems(queued_listing, listing) ⇒ Object
72 73 74 |
# File 'lib/mapper/reso.rb', line 72 def self.cooling_systems queued_listing, listing get_enums(queued_listing, %w(DetailedCharacteristics CoolingSystems CoolingSystem)) end |
.county(queued_listing, listing) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/mapper/reso.rb', line 76 def self.county queued_listing, listing if (get_value(queued_listing, %w(Location County))) county = County.find_or_initialize_by( name: get_value(queued_listing, %w(Location County)), state_or_province: get_value(queued_listing, %w(Address StateOrProvince)), country: get_value(queued_listing, %w(Address Country)) ) else return nil end end |
.currency_code(queued_listing, listing) ⇒ Object
88 89 90 |
# File 'lib/mapper/reso.rb', line 88 def self.currency_code queued_listing, listing get_value(queued_listing, %w(ListPrice currencyCode)) end |
.directions(queued_listing, listing) ⇒ Object
92 93 94 |
# File 'lib/mapper/reso.rb', line 92 def self.directions queued_listing, listing get_value(queued_listing, %w(Location Directions)) end |
.disclaimer(queued_listing, listing) ⇒ Object
96 97 98 |
# File 'lib/mapper/reso.rb', line 96 def self.disclaimer queued_listing, listing get_value(queued_listing, %w(Disclaimer)) end |
.disclose_address(queued_listing, listing) ⇒ Object
100 101 102 |
# File 'lib/mapper/reso.rb', line 100 def self.disclose_address queued_listing, listing get_boolean_value(queued_listing, %w(DiscloseAddress)) end |
.elevation(queued_listing, listing) ⇒ Object
104 105 106 |
# File 'lib/mapper/reso.rb', line 104 def self.elevation queued_listing, listing get_value(queued_listing, %w(Location Elevation)) end |
.expenses(queued_listing, listing) ⇒ Object
108 109 110 111 112 113 114 115 116 |
# File 'lib/mapper/reso.rb', line 108 def self.expenses queued_listing, listing if (result = get_repeaters(queued_listing, %w(Expenses Expense))) result.map{|item| listing.expenses.find_or_initialize_by( expense_category: Mapper::expense_categories[item['ExpenseCategory']], currency_period: Mapper::expense_categories[item['ExpenseValue']['currencyPeriod']], expense_value: item['ExpenseValue'].unwrap_attribute )} end end |
.exterior_types(queued_listing, listing) ⇒ Object
118 119 120 |
# File 'lib/mapper/reso.rb', line 118 def self.exterior_types queued_listing, listing get_enums(queued_listing, %w(DetailedCharacteristics ExteriorTypes ExteriorType)) end |
.floor_coverings(queued_listing, listing) ⇒ Object
122 123 124 |
# File 'lib/mapper/reso.rb', line 122 def self.floor_coverings queued_listing, listing get_enums(queued_listing, %w(DetailedCharacteristics FloorCoverings FloorCovering)) end |
.foreclosure_status(queued_listing, listing) ⇒ Object
126 127 128 |
# File 'lib/mapper/reso.rb', line 126 def self.foreclosure_status queued_listing, listing (result = get_value(queued_listing, %w(ForeclosureStatus))) ? Mapper::foreclosure_statuses[result] : nil end |
.franchise(queued_listing, listing) ⇒ Object
130 131 132 |
# File 'lib/mapper/reso.rb', line 130 def self.franchise queued_listing, listing get_reso_business(queued_listing, 'Franchise') end |
.full_bathrooms(queued_listing, listing) ⇒ Object
134 135 136 |
# File 'lib/mapper/reso.rb', line 134 def self.full_bathrooms queued_listing, listing get_value(queued_listing, %w(FullBathrooms)) end |
.geocode_options(queued_listing, listing) ⇒ Object
138 139 140 |
# File 'lib/mapper/reso.rb', line 138 def self. queued_listing, listing get_value(queued_listing, %w(Location GeocodeOptions)) end |
.get_boolean_value(queued_listing, elements) ⇒ Object
613 614 615 |
# File 'lib/mapper/reso.rb', line 613 def self.get_boolean_value queued_listing, elements (result = get_value(queued_listing, elements)) ? result.to_s.to_bool : nil end |
.get_enums(queued_listing, elements) ⇒ Object
625 626 627 628 629 630 |
# File 'lib/mapper/reso.rb', line 625 def self.get_enums queued_listing, elements if (result = get_repeaters(queued_listing, elements)) enums = result.map{|name| Mapper.send(elements.last.tableize)[name]} end enums ? enums.compact : nil end |
.get_repeaters(queued_listing, elements) ⇒ Object
617 618 619 620 621 622 623 |
# File 'lib/mapper/reso.rb', line 617 def self.get_repeaters queued_listing, elements if (value = get_value(queued_listing, elements[0..-2])) (result = value.drilldown(elements.last)) ? (result.is_a?(Array) ? result : [result]) : nil else return [] end end |
.get_reso_business(queued_listing, business_type) ⇒ Object
Utilities
583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 |
# File 'lib/mapper/reso.rb', line 583 def self.get_reso_business queued_listing, business_type if (result = get_value(queued_listing, [business_type])) business = business_type.constantize.find_or_initialize_by( name: result.drilldown('Name'), phone: result.drilldown('Phone') ) business.assign_attributes({ email: result.drilldown('Email'), logo_url: result.drilldown('LogoURL'), website_url: result.drilldown('WebsiteURL') }) business.address ||= Address.new business.address.assign_attributes({ preference_order: result.drilldown('Address preference_order'), address_preference_order: result.drilldown('Address address_preference_order'), full_street_address: result.drilldown('Address FullStreetAddress'), unit_number: result.drilldown('Address UnitNumber'), city: result.drilldown('Address City'), state_or_province: result.drilldown('Address StateOrProvince'), postal_code: result.drilldown('Address PostalCode'), country: result.drilldown('Address Country') }) business end end |
.get_simple_value(queued_listing, element) ⇒ Object
640 641 642 643 644 |
# File 'lib/mapper/reso.rb', line 640 def self.get_simple_value queued_listing, element if (value = queued_listing.listing_data[element]) value.unwrap_attribute end end |
.get_subvalue(queued_listing, element, child_elements) ⇒ Object
646 647 648 649 650 651 652 |
# File 'lib/mapper/reso.rb', line 646 def self.get_subvalue queued_listing, element, child_elements if (value = get_simple_value(queued_listing, element)) if (subvalue = child_elements.inject(value){|v, e| v[e] ? v[e] : Hash.new }) subvalue.present? ? subvalue.unwrap_attribute : nil end end end |
.get_value(queued_listing, elements) ⇒ Object
632 633 634 635 636 637 638 |
# File 'lib/mapper/reso.rb', line 632 def self.get_value queued_listing, elements if elements.count.eql?(1) get_simple_value(queued_listing, elements.first) else get_subvalue(queued_listing, elements.first, elements[1..-1]) end end |
.half_bathrooms(queued_listing, listing) ⇒ Object
142 143 144 |
# File 'lib/mapper/reso.rb', line 142 def self.half_bathrooms queued_listing, listing get_value(queued_listing, %w(HalfBathrooms)) end |
.has_attic(queued_listing, listing) ⇒ Object
146 147 148 |
# File 'lib/mapper/reso.rb', line 146 def self.has_attic queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasAttic)) end |
.has_barbecue_area(queued_listing, listing) ⇒ Object
150 151 152 |
# File 'lib/mapper/reso.rb', line 150 def self. queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasBarbecueArea)) end |
.has_basement(queued_listing, listing) ⇒ Object
154 155 156 |
# File 'lib/mapper/reso.rb', line 154 def self.has_basement queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasBasement)) end |
.has_ceiling_fan(queued_listing, listing) ⇒ Object
158 159 160 |
# File 'lib/mapper/reso.rb', line 158 def self.has_ceiling_fan queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasCeilingFan)) end |
.has_deck(queued_listing, listing) ⇒ Object
162 163 164 |
# File 'lib/mapper/reso.rb', line 162 def self.has_deck queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDeck)) end |
.has_disabled_access(queued_listing, listing) ⇒ Object
166 167 168 |
# File 'lib/mapper/reso.rb', line 166 def self.has_disabled_access queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDisabledAccess)) end |
.has_dock(queued_listing, listing) ⇒ Object
170 171 172 |
# File 'lib/mapper/reso.rb', line 170 def self.has_dock queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDock)) end |
.has_doorman(queued_listing, listing) ⇒ Object
174 175 176 |
# File 'lib/mapper/reso.rb', line 174 def self.has_doorman queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDoorman)) end |
.has_double_pane_windows(queued_listing, listing) ⇒ Object
178 179 180 |
# File 'lib/mapper/reso.rb', line 178 def self.has_double_pane_windows queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDoublePaneWindows)) end |
.has_elevator(queued_listing, listing) ⇒ Object
182 183 184 |
# File 'lib/mapper/reso.rb', line 182 def self.has_elevator queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasElevator)) end |
.has_fireplace(queued_listing, listing) ⇒ Object
186 187 188 |
# File 'lib/mapper/reso.rb', line 186 def self.has_fireplace queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasFireplace)) end |
.has_garden(queued_listing, listing) ⇒ Object
190 191 192 |
# File 'lib/mapper/reso.rb', line 190 def self.has_garden queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasGarden)) end |
.has_gated_entry(queued_listing, listing) ⇒ Object
194 195 196 |
# File 'lib/mapper/reso.rb', line 194 def self.has_gated_entry queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasGatedEntry)) end |
.has_greenhouse(queued_listing, listing) ⇒ Object
198 199 200 |
# File 'lib/mapper/reso.rb', line 198 def self.has_greenhouse queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasGreenhouse)) end |
.has_hot_tub_spa(queued_listing, listing) ⇒ Object
202 203 204 |
# File 'lib/mapper/reso.rb', line 202 def self.has_hot_tub_spa queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasHotTubSpa)) end |
.has_intercom(queued_listing, listing) ⇒ Object
206 207 208 |
# File 'lib/mapper/reso.rb', line 206 def self.has_intercom queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics Intercom)) end |
.has_jetted_bath_tub(queued_listing, listing) ⇒ Object
210 211 212 |
# File 'lib/mapper/reso.rb', line 210 def self.has_jetted_bath_tub queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasJettedBathTub)) end |
.has_lawn(queued_listing, listing) ⇒ Object
214 215 216 |
# File 'lib/mapper/reso.rb', line 214 def self.has_lawn queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasLawn)) end |
.has_mother_in_law(queued_listing, listing) ⇒ Object
218 219 220 |
# File 'lib/mapper/reso.rb', line 218 def self.has_mother_in_law queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasMotherInLaw)) end |
.has_patio(queued_listing, listing) ⇒ Object
222 223 224 |
# File 'lib/mapper/reso.rb', line 222 def self.has_patio queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasPatio)) end |
.has_pond(queued_listing, listing) ⇒ Object
226 227 228 |
# File 'lib/mapper/reso.rb', line 226 def self.has_pond queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasPond)) end |
.has_pool(queued_listing, listing) ⇒ Object
230 231 232 |
# File 'lib/mapper/reso.rb', line 230 def self.has_pool queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasPool)) end |
.has_porch(queued_listing, listing) ⇒ Object
234 235 236 |
# File 'lib/mapper/reso.rb', line 234 def self.has_porch queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasPorch)) end |
.has_rv_parking(queued_listing, listing) ⇒ Object
238 239 240 |
# File 'lib/mapper/reso.rb', line 238 def self.has_rv_parking queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasRVParking)) end |
.has_sauna(queued_listing, listing) ⇒ Object
242 243 244 |
# File 'lib/mapper/reso.rb', line 242 def self.has_sauna queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSauna)) end |
.has_security_system(queued_listing, listing) ⇒ Object
246 247 248 |
# File 'lib/mapper/reso.rb', line 246 def self.has_security_system queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSecuritySystem)) end |
.has_skylight(queued_listing, listing) ⇒ Object
250 251 252 |
# File 'lib/mapper/reso.rb', line 250 def self.has_skylight queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSkylight)) end |
.has_sports_court(queued_listing, listing) ⇒ Object
254 255 256 |
# File 'lib/mapper/reso.rb', line 254 def self.has_sports_court queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSportsCourt)) end |
.has_sprinkler_system(queued_listing, listing) ⇒ Object
258 259 260 |
# File 'lib/mapper/reso.rb', line 258 def self.has_sprinkler_system queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSprinklerSystem)) end |
.has_vaulted_ceiling(queued_listing, listing) ⇒ Object
262 263 264 |
# File 'lib/mapper/reso.rb', line 262 def self.has_vaulted_ceiling queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasVaultedCeiling)) end |
.has_wet_bar(queued_listing, listing) ⇒ Object
266 267 268 |
# File 'lib/mapper/reso.rb', line 266 def self. queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics HasWetBar)) end |
.heating_fuels(queued_listing, listing) ⇒ Object
270 271 272 |
# File 'lib/mapper/reso.rb', line 270 def self.heating_fuels queued_listing, listing get_enums(queued_listing, %w(DetailedCharacteristics HeatingFuels HeatingFuel)).uniq end |
.heating_systems(queued_listing, listing) ⇒ Object
274 275 276 |
# File 'lib/mapper/reso.rb', line 274 def self.heating_systems queued_listing, listing get_enums(queued_listing, %w(DetailedCharacteristics HeatingSystems HeatingSystem)).uniq end |
.is_cable_ready(queued_listing, listing) ⇒ Object
278 279 280 |
# File 'lib/mapper/reso.rb', line 278 def self.is_cable_ready queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics IsCableReady)) end |
.is_new_construction(queued_listing, listing) ⇒ Object
282 283 284 |
# File 'lib/mapper/reso.rb', line 282 def self.is_new_construction queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics IsNewConstruction)) end |
.is_waterfront(queued_listing, listing) ⇒ Object
286 287 288 |
# File 'lib/mapper/reso.rb', line 286 def self.is_waterfront queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics IsWaterfront)) end |
.is_wired(queued_listing, listing) ⇒ Object
290 291 292 |
# File 'lib/mapper/reso.rb', line 290 def self.is_wired queued_listing, listing get_boolean_value(queued_listing, %w(DetailedCharacteristics IsWired)) end |
.latitude(queued_listing, listing) ⇒ Object
294 295 296 |
# File 'lib/mapper/reso.rb', line 294 def self.latitude queued_listing, listing get_value(queued_listing, %w(Location Latitude)) end |
.lead_routing_email(queued_listing, listing) ⇒ Object
298 299 300 |
# File 'lib/mapper/reso.rb', line 298 def self.lead_routing_email queued_listing, listing get_value(queued_listing, %w(LeadRoutingEmail)) end |
.legal_description(queued_listing, listing) ⇒ Object
302 303 304 |
# File 'lib/mapper/reso.rb', line 302 def self.legal_description queued_listing, listing get_value(queued_listing, %w(DetailedCharacteristics LegalDescription)) end |
.list_price(queued_listing, listing) ⇒ Object
306 307 308 |
# File 'lib/mapper/reso.rb', line 306 def self.list_price queued_listing, listing get_value(queued_listing, %w(ListPrice)) end |
.list_price_low(queued_listing, listing) ⇒ Object
310 311 312 |
# File 'lib/mapper/reso.rb', line 310 def self.list_price_low queued_listing, listing get_value(queued_listing, %w(ListPriceLow)) end |
.listing_category(queued_listing, listing) ⇒ Object
314 315 316 |
# File 'lib/mapper/reso.rb', line 314 def self.listing_category queued_listing, listing (result = get_value(queued_listing, %w(ListingCategory))) ? Mapper::listing_categories[result] : nil end |
.listing_date(queued_listing, listing) ⇒ Object
318 319 320 |
# File 'lib/mapper/reso.rb', line 318 def self.listing_date queued_listing, listing (result = get_value(queued_listing, %w(ListingDate))) ? Chronic::parse(result).to_date : nil end |
.listing_description(queued_listing, listing) ⇒ Object
322 323 324 |
# File 'lib/mapper/reso.rb', line 322 def self.listing_description queued_listing, listing get_value(queued_listing, %w(ListingDescription)) end |
.listing_media(queued_listing, listing, elements) ⇒ Object
326 327 328 329 330 331 332 333 334 335 336 337 338 |
# File 'lib/mapper/reso.rb', line 326 def self.listing_media queued_listing, listing, elements if (result = get_repeaters(queued_listing, elements)) result.map do |item| listing.send(elements.last.tableize).find_or_initialize_by( media_url: item.drilldown('MediaURL'), media_modification_timestamp: item.drilldown('MediaModificationTimestamp'), media_order_number: item.drilldown('MediaOrderNumber'), media_caption: item.drilldown('MediaCaption'), media_description: item.drilldown('MediaDescription') ) end end end |
.listing_provider(queued_listing, listing) ⇒ Object
TODO: Make ListingProvider and SourceProviderCategory Provider and ProviderCategory
341 342 343 344 345 346 347 348 349 |
# File 'lib/mapper/reso.rb', line 341 def self.listing_provider queued_listing, listing if get_value(queued_listing, %w(ProviderName)).present? result = ListingProvider.find_or_initialize_by( name: get_value(queued_listing, %w(ProviderName)), url: get_value(queued_listing, %w(ProviderURL)), source_provider_category: Mapper::source_provider_categories[get_value(queued_listing, %w(ProviderCategory))] ) end end |
.listing_status(queued_listing, listing) ⇒ Object
351 352 353 |
# File 'lib/mapper/reso.rb', line 351 def self.listing_status queued_listing, listing (result = get_value(queued_listing, %w(ListingStatus))) ? Mapper::listing_statuses[result] : nil end |
.listing_title(queued_listing, listing) ⇒ Object
355 356 357 |
# File 'lib/mapper/reso.rb', line 355 def self.listing_title queued_listing, listing get_value(queued_listing, %w(ListingTitle)) end |
.listing_url(queued_listing, listing) ⇒ Object
359 360 361 |
# File 'lib/mapper/reso.rb', line 359 def self.listing_url queued_listing, listing get_value(queued_listing, %w(ListingURL)) end |
.living_area(queued_listing, listing) ⇒ Object
363 364 365 |
# File 'lib/mapper/reso.rb', line 363 def self.living_area queued_listing, listing get_value(queued_listing, %w(LivingArea)) end |
.living_area_unit(queued_listing, listing) ⇒ Object
367 368 369 |
# File 'lib/mapper/reso.rb', line 367 def self.living_area_unit queued_listing, listing get_value(queued_listing, %w(LivingArea areaUnits)) end |
.longitude(queued_listing, listing) ⇒ Object
371 372 373 |
# File 'lib/mapper/reso.rb', line 371 def self.longitude queued_listing, listing get_value(queued_listing, %w(Location Longitude)) end |
.lot_size(queued_listing, listing) ⇒ Object
375 376 377 |
# File 'lib/mapper/reso.rb', line 375 def self.lot_size queued_listing, listing get_value(queued_listing, %w(LotSize)) end |
.method_missing(method_name, *args) ⇒ Object
4 5 6 |
# File 'lib/mapper/reso.rb', line 4 def self.method_missing method_name, *args args[1][method_name] end |
.mls_number(queued_listing, listing) ⇒ Object
379 380 381 |
# File 'lib/mapper/reso.rb', line 379 def self.mls_number queued_listing, listing get_value(queued_listing, %w(MlsNumber)) end |
.modification_timestamp(queued_listing, listing) ⇒ Object
383 384 385 386 |
# File 'lib/mapper/reso.rb', line 383 def self. queued_listing, listing # TODO: Change from string to datetime get_value(queued_listing, %w(ModificationTimestamp)) end |
.multiple_listing_service(queued_listing, listing) ⇒ Object
388 389 390 391 392 393 394 395 |
# File 'lib/mapper/reso.rb', line 388 def self.multiple_listing_service queued_listing, listing if (get_value(queued_listing, %w(MlsId)) || get_value(queued_listing, %w(MlsName))) MultipleListingService.find_or_initialize_by( mls_id: get_value(queued_listing, %w(MlsId)), mls_name: get_value(queued_listing, %w(MlsName)) ) end end |
.neighborhoods(queued_listing, listing) ⇒ Object
397 398 399 400 401 402 403 404 405 406 407 408 409 410 |
# File 'lib/mapper/reso.rb', line 397 def self.neighborhoods queued_listing, listing if (result = get_value(queued_listing, %w(Location Neighborhoods Neighborhood))) places = result.map do |item| place = Neighborhood.find_or_initialize_by( city: get_value(queued_listing, %w(Address City)), name: item.drilldown('Name'), state_or_province: get_value(queued_listing, %w(Address StateOrProvince)) ) place.description = item.drilldown('Description') place end end places.present? ? places : [] end |
.num_floors(queued_listing, listing) ⇒ Object
412 413 414 |
# File 'lib/mapper/reso.rb', line 412 def self.num_floors queued_listing, listing get_value(queued_listing, %w(DetailedCharacteristics NumFloors)) end |
.num_parking_spaces(queued_listing, listing) ⇒ Object
416 417 418 |
# File 'lib/mapper/reso.rb', line 416 def self.num_parking_spaces queued_listing, listing get_value(queued_listing, %w(DetailedCharacteristics NumParkingSpaces)) end |
.office(queued_listing, listing) ⇒ Object
420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 |
# File 'lib/mapper/reso.rb', line 420 def self.office queued_listing, listing if (result = get_value(queued_listing, %w(Offices Office))) office = Office.find_or_initialize_by( office_identifier: result.drilldown('OfficeId'), name: result.drilldown('Name') ) office.assign_attributes({ office_key: result.drilldown('OfficeKey'), level: result.drilldown('Level'), office_code_identifier: result.drilldown('OfficeCode OfficeCodeId'), corporate_name: result.drilldown('CorporateName'), broker_identifier: result.drilldown('BrokerId'), phone_number: result.drilldown('PhoneNumber'), website: result.drilldown('Website'), }) office.address ||= Address.new office.address.assign_attributes({ preference_order: result.drilldown('Address preference_order'), address_preference_order: result.drilldown('Address address_preference_order'), full_street_address: result.drilldown('Address FullStreetAddress'), unit_number: result.drilldown('Address UnitNumber'), city: result.drilldown('Address City'), state_or_province: result.drilldown('Address StateOrProvince'), postal_code: result.drilldown('Address PostalCode'), country: result.drilldown('Address Country') }) office end end |
.one_quarter_bathrooms(queued_listing, listing) ⇒ Object
450 451 452 |
# File 'lib/mapper/reso.rb', line 450 def self.one_quarter_bathrooms queued_listing, listing get_value(queued_listing, %w(OneQuarterBathrooms)) end |
.open_houses(queued_listing, listing) ⇒ Object
TODO: Figure out how to provide time zone for StartTime and EndTime
455 456 457 458 459 460 461 462 463 464 465 466 467 |
# File 'lib/mapper/reso.rb', line 455 def self.open_houses queued_listing, listing if (result = get_repeaters(queued_listing, %w(OpenHouses OpenHouse))) result.map do |open_house| oh = listing.open_houses.find_or_initialize_by( showing_date: Chronic::parse(open_house['Date']).to_date, start_time: open_house['StartTime'], end_time: open_house['EndTime'] ) oh.description = open_house['Description'] oh end end end |
.parcel_id(queued_listing, listing) ⇒ Object
469 470 471 |
# File 'lib/mapper/reso.rb', line 469 def self.parcel_id queued_listing, listing get_value(queued_listing, %w(Location ParcelId)) end |
.participants(queued_listing, listing) ⇒ Object
TODO: Change participant_identifier to participant_id
474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 |
# File 'lib/mapper/reso.rb', line 474 def self.participants queued_listing, listing if (result = get_repeaters(queued_listing, %w(ListingParticipants Participant))) result.map do |item| participant = Participant.find_or_initialize_by( first_name: item['FirstName'], last_name: item['LastName'], email: item['Email'] ) participant.assign_attributes({ participant_key: item['ParticipantKey'], participant_identifier: item['ParticipantId'], participant_role: Mapper::participant_roles[item['Role']], primary_contact_phone: item['PrimaryContactPhone'], office_phone: item['OfficePhone'], fax: item['Fax'], website_url: item['WebsiteURL'] }) participant end end end |
.permit_address_on_internet(queued_listing, listing) ⇒ Object
496 497 498 |
# File 'lib/mapper/reso.rb', line 496 def self.permit_address_on_internet queued_listing, listing get_boolean_value(queued_listing, %w(MarketingInformation PermitAddressOnInternet')) end |
.photos(queued_listing, listing) ⇒ Object
500 501 502 |
# File 'lib/mapper/reso.rb', line 500 def self.photos queued_listing, listing listing_media(queued_listing, listing, %w(Photos Photo)) end |
.property_sub_type(queued_listing, listing) ⇒ Object
504 505 506 |
# File 'lib/mapper/reso.rb', line 504 def self.property_sub_type queued_listing, listing (result = get_value(queued_listing, %w(PropertySubType))) ? Mapper::property_sub_types[result] : nil end |
.property_sub_type_description(queued_listing, listing) ⇒ Object
508 509 510 |
# File 'lib/mapper/reso.rb', line 508 def self.property_sub_type_description queued_listing, listing get_value(queued_listing, %w(PropertySubType otherDescription)) end |
.property_type(queued_listing, listing) ⇒ Object
512 513 514 |
# File 'lib/mapper/reso.rb', line 512 def self.property_type queued_listing, listing (result = get_value(queued_listing, %w(PropertyType))) ? Mapper::property_types[result] : nil end |
.property_type_description(queued_listing, listing) ⇒ Object
516 517 518 |
# File 'lib/mapper/reso.rb', line 516 def self.property_type_description queued_listing, listing get_value(queued_listing, %w(PropertyType otherDescription)) end |
.roof_types(queued_listing, listing) ⇒ Object
520 521 522 |
# File 'lib/mapper/reso.rb', line 520 def self.roof_types queued_listing, listing get_enums(queued_listing, %w(DetailedCharacteristics RoofTypes RoofType)) end |
.room_count(queued_listing, listing) ⇒ Object
524 525 526 |
# File 'lib/mapper/reso.rb', line 524 def self.room_count queued_listing, listing get_value(queued_listing, %w(DetailedCharacteristics RoomCount)) end |
.rooms(queued_listing, listing) ⇒ Object
528 529 530 531 532 533 |
# File 'lib/mapper/reso.rb', line 528 def self.rooms queued_listing, listing if (result = get_value(queued_listing, %w(DetailedCharacteristics Rooms Room))) rooms = Array(result).map{|room_category| Room.new(listing: listing, room_category: Mapper::room_categories[room_category])} end rooms ? rooms : [] end |
.taxes(queued_listing, listing) ⇒ Object
535 536 537 538 539 540 541 542 543 |
# File 'lib/mapper/reso.rb', line 535 def self.taxes queued_listing, listing if (result = get_repeaters(queued_listing, %w(Taxes Tax))) result.map{|item| Tax.find_or_initialize_by( year: item['Year'], amount: item['Amount'], description: item['TaxDescription'] )} end end |
.three_quarter_bathrooms(queued_listing, listing) ⇒ Object
545 546 547 |
# File 'lib/mapper/reso.rb', line 545 def self.three_quarter_bathrooms queued_listing, listing get_value(queued_listing, %w(ThreeQuarterBathrooms)) end |
.unique_identifier(queued_listing) ⇒ Object
609 610 611 |
# File 'lib/mapper/reso.rb', line 609 def self.unique_identifier queued_listing (result = get_value(queued_listing, queued_listing.import.unique_identifier.split(' '))) end |
.videos(queued_listing, listing) ⇒ Object
549 550 551 |
# File 'lib/mapper/reso.rb', line 549 def self.videos queued_listing, listing listing_media(queued_listing, listing, %w(Videos Video)) end |
.view_types(queued_listing, listing) ⇒ Object
553 554 555 |
# File 'lib/mapper/reso.rb', line 553 def self.view_types queued_listing, listing get_enums(queued_listing, %w(DetailedCharacteristics ViewTypes ViewType)) end |
.virtual_tours(queued_listing, listing) ⇒ Object
557 558 559 |
# File 'lib/mapper/reso.rb', line 557 def self.virtual_tours queued_listing, listing listing_media(queued_listing, listing, %w(VirtualTours VirtualTour)) end |
.vow_address_display(queued_listing, listing) ⇒ Object
561 562 563 |
# File 'lib/mapper/reso.rb', line 561 def self.vow_address_display queued_listing, listing get_boolean_value(queued_listing, %w(MarketingInformation VOWAutomatedValuationDisplay')) end |
.vow_automated_valuation_display(queued_listing, listing) ⇒ Object
565 566 567 |
# File 'lib/mapper/reso.rb', line 565 def self.vow_automated_valuation_display queued_listing, listing get_boolean_value(queued_listing, %w(MarketingInformation VOWAddressDisplay')) end |
.vow_consumer_comment(queued_listing, listing) ⇒ Object
569 570 571 |
# File 'lib/mapper/reso.rb', line 569 def self.vow_consumer_comment queued_listing, listing get_boolean_value(queued_listing, %w(MarketingInformation VOWConsumerComment')) end |
.year_built(queued_listing, listing) ⇒ Object
573 574 575 |
# File 'lib/mapper/reso.rb', line 573 def self.year_built queued_listing, listing get_value(queued_listing, %w(YearBuilt)) end |
.year_updated(queued_listing, listing) ⇒ Object
577 578 579 |
# File 'lib/mapper/reso.rb', line 577 def self.year_updated queued_listing, listing get_value(queued_listing, %w(DetailedCharacteristics YearUpdated)) end |