lib/mapper/reso.rb in reso-0.1.0.3 vs lib/mapper/reso.rb in reso-0.1.1.0

- old
+ new

@@ -4,11 +4,11 @@ def self.method_missing method_name, *args args[1][method_name] end def self.address queued_listing, listing - if (result = get_value(queued_listing, %w(Address))) + if (result = Mapper::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'), @@ -21,38 +21,38 @@ listing.address end end def self.alternate_prices queued_listing, listing - if (result = get_repeaters(queued_listing, %w(AlternatePrices AlternatePrice))) + if (result = Mapper::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 def self.appliances queued_listing, listing - get_enums(queued_listing, %w(DetailedCharacteristics Appliances Appliance)) + Mapper::get_enums(queued_listing, %w(DetailedCharacteristics Appliances Appliance)) end def self.architecture_style queued_listing, listing - (result = get_value(queued_listing, %w(DetailedCharacteristics ArchitectureStyle))) ? Mapper::architecture_styles(result) : nil + (result = Mapper::get_value(queued_listing, %w(DetailedCharacteristics ArchitectureStyle))) ? Mapper::architecture_styles(result) : nil end def self.architecture_style_description queued_listing, listing - get_value(queued_listing, %w(DetailedCharacteristics ArchitectureStyle otherDescription)) + Mapper::get_value(queued_listing, %w(DetailedCharacteristics ArchitectureStyle otherDescription)) end def self.bathrooms queued_listing, listing - get_value(queued_listing, %w(Bathrooms)) + Mapper::get_value(queued_listing, %w(Bathrooms)) end def self.bedrooms queued_listing, listing - get_value(queued_listing, %w(Bedrooms)) + Mapper::get_value(queued_listing, %w(Bedrooms)) end def self.brokerage queued_listing, listing get_reso_business(queued_listing, 'Brokerage') end @@ -60,273 +60,277 @@ def self.builder queued_listing, listing get_reso_business(queued_listing, 'Builder') end def self.building_unit_count queued_listing, listing - get_value(queued_listing, %w(DetailedCharacteristics BuildingUnitCount)) + Mapper::get_value(queued_listing, %w(DetailedCharacteristics BuildingUnitCount)) end def self.condo_floor_num queued_listing, listing - get_value(queued_listing, %w(DetailedCharacteristics CondoFloorNum)) + Mapper::get_value(queued_listing, %w(DetailedCharacteristics CondoFloorNum)) end def self.cooling_systems queued_listing, listing - get_enums(queued_listing, %w(DetailedCharacteristics CoolingSystems CoolingSystem)) + Mapper::get_enums(queued_listing, %w(DetailedCharacteristics CoolingSystems CoolingSystem)) end def self.county queued_listing, listing - if (get_value(queued_listing, %w(Location County))) + if (Mapper::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)) + name: Mapper::get_value(queued_listing, %w(Location County)), + state_or_province: Mapper::get_value(queued_listing, %w(Address StateOrProvince)), + country: Mapper::get_value(queued_listing, %w(Address Country)) ) else return nil end end def self.currency_code queued_listing, listing - get_value(queued_listing, %w(ListPrice currencyCode)) + Mapper::get_value(queued_listing, %w(ListPrice currencyCode)) end def self.directions queued_listing, listing - get_value(queued_listing, %w(Location Directions)) + Mapper::get_value(queued_listing, %w(Location Directions)) end def self.disclaimer queued_listing, listing - get_value(queued_listing, %w(Disclaimer)) + Mapper::get_value(queued_listing, %w(Disclaimer)) end def self.disclose_address queued_listing, listing - get_boolean_value(queued_listing, %w(DiscloseAddress)) + Mapper::get_boolean_value(queued_listing, %w(DiscloseAddress)) end def self.elevation queued_listing, listing - get_value(queued_listing, %w(Location Elevation)) + Mapper::get_value(queued_listing, %w(Location Elevation)) end def self.expenses queued_listing, listing - if (result = get_repeaters(queued_listing, %w(Expenses Expense))) + if (result = Mapper::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 def self.exterior_types queued_listing, listing - get_enums(queued_listing, %w(DetailedCharacteristics ExteriorTypes ExteriorType)) + Mapper::get_enums(queued_listing, %w(DetailedCharacteristics ExteriorTypes ExteriorType)) end def self.floor_coverings queued_listing, listing - get_enums(queued_listing, %w(DetailedCharacteristics FloorCoverings FloorCovering)) + Mapper::get_enums(queued_listing, %w(DetailedCharacteristics FloorCoverings FloorCovering)) end def self.foreclosure_status queued_listing, listing - (result = get_value(queued_listing, %w(ForeclosureStatus))) ? Mapper::foreclosure_statuses(result) : nil + (result = Mapper::get_value(queued_listing, %w(ForeclosureStatus))) ? Mapper::foreclosure_statuses(result) : nil end def self.franchise queued_listing, listing get_reso_business(queued_listing, 'Franchise') end def self.full_bathrooms queued_listing, listing - get_value(queued_listing, %w(FullBathrooms)) + Mapper::get_value(queued_listing, %w(FullBathrooms)) end def self.geocode_options queued_listing, listing - get_value(queued_listing, %w(Location GeocodeOptions)) + Mapper::get_value(queued_listing, %w(Location GeocodeOptions)) end def self.half_bathrooms queued_listing, listing - get_value(queued_listing, %w(HalfBathrooms)) + Mapper::get_value(queued_listing, %w(HalfBathrooms)) end def self.has_attic queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasAttic)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasAttic)) end def self.has_barbecue_area queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasBarbecueArea)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasBarbecueArea)) end def self.has_basement queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasBasement)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasBasement)) end def self.has_ceiling_fan queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasCeilingFan)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasCeilingFan)) end def self.has_deck queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDeck)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDeck)) end def self.has_disabled_access queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDisabledAccess)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDisabledAccess)) end def self.has_dock queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDock)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDock)) end def self.has_doorman queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDoorman)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDoorman)) end def self.has_double_pane_windows queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDoublePaneWindows)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasDoublePaneWindows)) end def self.has_elevator queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasElevator)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasElevator)) end def self.has_fireplace queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasFireplace)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasFireplace)) end def self.has_garden queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasGarden)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasGarden)) end def self.has_gated_entry queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasGatedEntry)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasGatedEntry)) end def self.has_greenhouse queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasGreenhouse)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasGreenhouse)) end def self.has_hot_tub_spa queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasHotTubSpa)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasHotTubSpa)) end def self.has_intercom queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics Intercom)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics Intercom)) end def self.has_jetted_bath_tub queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasJettedBathTub)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasJettedBathTub)) end def self.has_lawn queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasLawn)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasLawn)) end def self.has_mother_in_law queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasMotherInLaw)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasMotherInLaw)) end def self.has_patio queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasPatio)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasPatio)) end def self.has_pond queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasPond)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasPond)) end def self.has_pool queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasPool)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasPool)) end def self.has_porch queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasPorch)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasPorch)) end def self.has_rv_parking queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasRVParking)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasRVParking)) end def self.has_sauna queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSauna)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSauna)) end def self.has_security_system queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSecuritySystem)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSecuritySystem)) end def self.has_skylight queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSkylight)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSkylight)) end def self.has_sports_court queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSportsCourt)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSportsCourt)) end def self.has_sprinkler_system queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSprinklerSystem)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasSprinklerSystem)) end def self.has_vaulted_ceiling queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasVaultedCeiling)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasVaultedCeiling)) end def self.has_wet_bar queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics HasWetBar)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics HasWetBar)) end def self.heating_fuels queued_listing, listing - get_enums(queued_listing, %w(DetailedCharacteristics HeatingFuels HeatingFuel)).uniq + Mapper::get_enums(queued_listing, %w(DetailedCharacteristics HeatingFuels HeatingFuel)).uniq end def self.heating_systems queued_listing, listing - get_enums(queued_listing, %w(DetailedCharacteristics HeatingSystems HeatingSystem)).uniq + Mapper::get_enums(queued_listing, %w(DetailedCharacteristics HeatingSystems HeatingSystem)).uniq end + def self.import queued_listing, listing + queued_listing.import + end + def self.is_cable_ready queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics IsCableReady)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics IsCableReady)) end def self.is_new_construction queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics IsNewConstruction)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics IsNewConstruction)) end def self.is_waterfront queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics IsWaterfront)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics IsWaterfront)) end def self.is_wired queued_listing, listing - get_boolean_value(queued_listing, %w(DetailedCharacteristics IsWired)) + Mapper::get_boolean_value(queued_listing, %w(DetailedCharacteristics IsWired)) end def self.latitude queued_listing, listing - get_value(queued_listing, %w(Location Latitude)) + Mapper::get_value(queued_listing, %w(Location Latitude)) end def self.lead_routing_email queued_listing, listing - get_value(queued_listing, %w(LeadRoutingEmail)) + Mapper::get_value(queued_listing, %w(LeadRoutingEmail)) end def self.legal_description queued_listing, listing - get_value(queued_listing, %w(DetailedCharacteristics LegalDescription)) + Mapper::get_value(queued_listing, %w(DetailedCharacteristics LegalDescription)) end def self.list_price queued_listing, listing - get_value(queued_listing, %w(ListPrice)) + Mapper::get_value(queued_listing, %w(ListPrice)) end def self.list_price_low queued_listing, listing - get_value(queued_listing, %w(ListPriceLow)) + Mapper::get_value(queued_listing, %w(ListPriceLow)) end def self.listing_category queued_listing, listing - (result = get_value(queued_listing, %w(ListingCategory))) ? Mapper::listing_categories(result) : nil + (result = Mapper::get_value(queued_listing, %w(ListingCategory))) ? Mapper::listing_categories(result) : nil end def self.listing_date queued_listing, listing - (result = get_value(queued_listing, %w(ListingDate))) ? Chronic::parse(result).to_date : nil + (result = Mapper::get_value(queued_listing, %w(ListingDate))) ? Chronic::parse(result).to_date : nil end def self.listing_description queued_listing, listing - get_value(queued_listing, %w(ListingDescription)) + Mapper::get_value(queued_listing, %w(ListingDescription)) end def self.listing_media queued_listing, listing, elements - if (result = get_repeaters(queued_listing, elements)) + if (result = Mapper::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'), @@ -337,90 +341,90 @@ end end # TODO: Make ListingProvider and SourceProviderCategory Provider and ProviderCategory def self.listing_provider queued_listing, listing - if get_value(queued_listing, %w(ProviderName)).present? + if Mapper::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))) + name: Mapper::get_value(queued_listing, %w(ProviderName)), + url: Mapper::get_value(queued_listing, %w(ProviderURL)), + source_provider_category: Mapper::source_provider_categories(Mapper::get_value(queued_listing, %w(ProviderCategory))) ) end end def self.listing_status queued_listing, listing - (result = get_value(queued_listing, %w(ListingStatus))) ? Mapper::listing_statuses(result) : nil + (result = Mapper::get_value(queued_listing, %w(ListingStatus))) ? Mapper::listing_statuses(result) : nil end def self.listing_title queued_listing, listing - get_value(queued_listing, %w(ListingTitle)) + Mapper::get_value(queued_listing, %w(ListingTitle)) end def self.listing_url queued_listing, listing - get_value(queued_listing, %w(ListingURL)) + Mapper::get_value(queued_listing, %w(ListingURL)) end def self.living_area queued_listing, listing - get_value(queued_listing, %w(LivingArea)) + Mapper::get_value(queued_listing, %w(LivingArea)) end def self.living_area_unit queued_listing, listing - get_value(queued_listing, %w(LivingArea areaUnits)) + Mapper::get_value(queued_listing, %w(LivingArea areaUnits)) end def self.longitude queued_listing, listing - get_value(queued_listing, %w(Location Longitude)) + Mapper::get_value(queued_listing, %w(Location Longitude)) end def self.lot_size queued_listing, listing - get_value(queued_listing, %w(LotSize)) + Mapper::get_value(queued_listing, %w(LotSize)) end def self.mls_number queued_listing, listing - get_value(queued_listing, %w(MlsNumber)) + Mapper::get_value(queued_listing, %w(MlsNumber)) end def self.modification_timestamp queued_listing, listing # TODO: Change from string to datetime - get_value(queued_listing, %w(ModificationTimestamp)) + Mapper::get_value(queued_listing, %w(ModificationTimestamp)) end def self.multiple_listing_service queued_listing, listing - if (get_value(queued_listing, %w(MlsId)) || get_value(queued_listing, %w(MlsName))) + if (Mapper::get_value(queued_listing, %w(MlsId)) || Mapper::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)) + mls_id: Mapper::get_value(queued_listing, %w(MlsId)), + mls_name: Mapper::get_value(queued_listing, %w(MlsName)) ) end end def self.neighborhoods queued_listing, listing - if (result = get_value(queued_listing, %w(Location Neighborhoods Neighborhood))) + if (result = Mapper::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)), + city: Mapper::get_value(queued_listing, %w(Address City)), name: item.drilldown('Name'), - state_or_province: get_value(queued_listing, %w(Address StateOrProvince)) + state_or_province: Mapper::get_value(queued_listing, %w(Address StateOrProvince)) ) place.description = item.drilldown('Description') place end end places.present? ? places : [] end def self.num_floors queued_listing, listing - get_value(queued_listing, %w(DetailedCharacteristics NumFloors)) + Mapper::get_value(queued_listing, %w(DetailedCharacteristics NumFloors)) end def self.num_parking_spaces queued_listing, listing - get_value(queued_listing, %w(DetailedCharacteristics NumParkingSpaces)) + Mapper::get_value(queued_listing, %w(DetailedCharacteristics NumParkingSpaces)) end def self.office queued_listing, listing - if (result = get_value(queued_listing, %w(Offices Office))) + if (result = Mapper::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({ @@ -446,16 +450,16 @@ office end end def self.one_quarter_bathrooms queued_listing, listing - get_value(queued_listing, %w(OneQuarterBathrooms)) + Mapper::get_value(queued_listing, %w(OneQuarterBathrooms)) end # TODO: Figure out how to provide time zone for StartTime and EndTime def self.open_houses queued_listing, listing - if (result = get_repeaters(queued_listing, %w(OpenHouses OpenHouse))) + if (result = Mapper::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'] @@ -465,16 +469,16 @@ end end end def self.parcel_id queued_listing, listing - get_value(queued_listing, %w(Location ParcelId)) + Mapper::get_value(queued_listing, %w(Location ParcelId)) end # TODO: Change participant_identifier to participant_id def self.participants queued_listing, listing - if (result = get_repeaters(queued_listing, %w(ListingParticipants Participant))) + if (result = Mapper::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'] @@ -492,98 +496,98 @@ end end end def self.permit_address_on_internet queued_listing, listing - get_boolean_value(queued_listing, %w(MarketingInformation PermitAddressOnInternet')) + Mapper::get_boolean_value(queued_listing, %w(MarketingInformation PermitAddressOnInternet')) end def self.photos queued_listing, listing listing_media(queued_listing, listing, %w(Photos Photo)) end def self.property_sub_type queued_listing, listing - (result = get_value(queued_listing, %w(PropertySubType))) ? Mapper::property_sub_types(result) : nil + (result = Mapper::get_value(queued_listing, %w(PropertySubType))) ? Mapper::property_sub_types(result) : nil end def self.property_sub_type_description queued_listing, listing - get_value(queued_listing, %w(PropertySubType otherDescription)) + Mapper::get_value(queued_listing, %w(PropertySubType otherDescription)) end def self.property_type queued_listing, listing - (result = get_value(queued_listing, %w(PropertyType))) ? Mapper::property_types(result) : nil + (result = Mapper::get_value(queued_listing, %w(PropertyType))) ? Mapper::property_types(result) : nil end def self.property_type_description queued_listing, listing - get_value(queued_listing, %w(PropertyType otherDescription)) + Mapper::get_value(queued_listing, %w(PropertyType otherDescription)) end def self.roof_types queued_listing, listing - get_enums(queued_listing, %w(DetailedCharacteristics RoofTypes RoofType)) + Mapper::get_enums(queued_listing, %w(DetailedCharacteristics RoofTypes RoofType)) end def self.room_count queued_listing, listing - get_value(queued_listing, %w(DetailedCharacteristics RoomCount)) + Mapper::get_value(queued_listing, %w(DetailedCharacteristics RoomCount)) end def self.rooms queued_listing, listing - if (result = get_value(queued_listing, %w(DetailedCharacteristics Rooms Room))) + if (result = Mapper::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 def self.taxes queued_listing, listing - if (result = get_repeaters(queued_listing, %w(Taxes Tax))) + if (result = Mapper::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 def self.three_quarter_bathrooms queued_listing, listing - get_value(queued_listing, %w(ThreeQuarterBathrooms)) + Mapper::get_value(queued_listing, %w(ThreeQuarterBathrooms)) end def self.videos queued_listing, listing listing_media(queued_listing, listing, %w(Videos Video)) end def self.view_types queued_listing, listing - get_enums(queued_listing, %w(DetailedCharacteristics ViewTypes ViewType)) + Mapper::get_enums(queued_listing, %w(DetailedCharacteristics ViewTypes ViewType)) end def self.virtual_tours queued_listing, listing listing_media(queued_listing, listing, %w(VirtualTours VirtualTour)) end def self.vow_address_display queued_listing, listing - get_boolean_value(queued_listing, %w(MarketingInformation VOWAutomatedValuationDisplay')) + Mapper::get_boolean_value(queued_listing, %w(MarketingInformation VOWAutomatedValuationDisplay')) end def self.vow_automated_valuation_display queued_listing, listing - get_boolean_value(queued_listing, %w(MarketingInformation VOWAddressDisplay')) + Mapper::get_boolean_value(queued_listing, %w(MarketingInformation VOWAddressDisplay')) end def self.vow_consumer_comment queued_listing, listing - get_boolean_value(queued_listing, %w(MarketingInformation VOWConsumerComment')) + Mapper::get_boolean_value(queued_listing, %w(MarketingInformation VOWConsumerComment')) end def self.year_built queued_listing, listing - get_value(queued_listing, %w(YearBuilt)) + Mapper::get_value(queued_listing, %w(YearBuilt)) end def self.year_updated queued_listing, listing - get_value(queued_listing, %w(DetailedCharacteristics YearUpdated)) + Mapper::get_value(queued_listing, %w(DetailedCharacteristics YearUpdated)) end # Utilities def self.get_reso_business queued_listing, business_type - if (result = get_value(queued_listing, [business_type])) + if (result = Mapper::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({ @@ -601,54 +605,9 @@ state_or_province: result.drilldown('Address StateOrProvince'), postal_code: result.drilldown('Address PostalCode'), country: result.drilldown('Address Country') }) business - end - end - - def self.unique_identifier queued_listing - (result = get_value(queued_listing, queued_listing.import.unique_identifier.split(' '))) - end - - def self.get_boolean_value queued_listing, elements - (result = get_value(queued_listing, elements)) ? result.to_s.to_bool : nil - end - - 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 - - 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 - - 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 - - def self.get_simple_value queued_listing, element - if (value = queued_listing.listing_data[element]) - value.unwrap_attribute - end - end - - 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 end end \ No newline at end of file