realogy 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +260 -0
- data/lib/realogy/app/models/realogy/agent.rb +215 -0
- data/lib/realogy/app/models/realogy/company.rb +96 -0
- data/lib/realogy/app/models/realogy/entity.rb +34 -0
- data/lib/realogy/app/models/realogy/listing.rb +912 -0
- data/lib/realogy/app/models/realogy/office.rb +306 -0
- data/lib/realogy/app/models/realogy/team.rb +123 -0
- data/lib/realogy/version.rb +1 -1
- metadata +3 -8
- data/realogy-0.1.0.gem +0 -0
- data/realogy-0.2.0.gem +0 -0
- data/realogy-0.3.0.gem +0 -0
- data/realogy-0.3.1.gem +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 39157bab5613f551a79942ecaa5a7a9de1efd27696f0e5b9eb015ed9025609d3
|
|
4
|
+
data.tar.gz: c83aa9931e05ebdaf1f6d4e7e9837e55bbf8441ff06cadc78cbf2c15e614b56b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: acbf1c9e3e550a58358e43f4fd4bd9b189cd62cef6b7aca785c4a0acf518096a5415cb5f5de058df03d3de1e949784f54960ec7954a93b8da16695c455bc1941
|
|
7
|
+
data.tar.gz: 2b4a50cd19736dc716e3e365d9b8f5b2e58b54674e830540e3a6da0da605259cb6069cfd55534cecf761f1dcfaa9dcdac14e28509a2ee9f04b27e009cf58e3ca
|
data/README.md
CHANGED
|
@@ -190,6 +190,266 @@ realogy.get_team_by_id(entity_id)
|
|
|
190
190
|
|
|
191
191
|
```
|
|
192
192
|
|
|
193
|
+
## Instance methods
|
|
194
|
+
|
|
195
|
+
Convenience methods to access JSON.
|
|
196
|
+
|
|
197
|
+
#### Realogy::Agent
|
|
198
|
+
|
|
199
|
+
- addl_emails
|
|
200
|
+
- addl_languages_names
|
|
201
|
+
- addl_phones
|
|
202
|
+
- agent_summary
|
|
203
|
+
- agent_id
|
|
204
|
+
- areas_of_specialization
|
|
205
|
+
- business_phone
|
|
206
|
+
- business_phone_ext
|
|
207
|
+
- default_photo_url
|
|
208
|
+
- designations
|
|
209
|
+
- display_title
|
|
210
|
+
- email_address
|
|
211
|
+
- first_name
|
|
212
|
+
- gender
|
|
213
|
+
- is_agent?
|
|
214
|
+
- is_team_member?
|
|
215
|
+
- languages_spoken
|
|
216
|
+
- last_name
|
|
217
|
+
- last_update_on
|
|
218
|
+
- lead_email_address
|
|
219
|
+
- license_info
|
|
220
|
+
- media
|
|
221
|
+
- middle_name
|
|
222
|
+
- mls_information
|
|
223
|
+
- mobile_phone
|
|
224
|
+
- name
|
|
225
|
+
- office
|
|
226
|
+
- remarks
|
|
227
|
+
- roles
|
|
228
|
+
- specialty
|
|
229
|
+
- websites
|
|
230
|
+
|
|
231
|
+
#### Realogy::Company
|
|
232
|
+
|
|
233
|
+
- addl_language_names
|
|
234
|
+
- addl_websites
|
|
235
|
+
- brand_code
|
|
236
|
+
- can_do_commercial_business?
|
|
237
|
+
- commercial_company_name
|
|
238
|
+
- company_id
|
|
239
|
+
- company_summary
|
|
240
|
+
- is_nrt?
|
|
241
|
+
- last_update_on
|
|
242
|
+
- media
|
|
243
|
+
- name
|
|
244
|
+
- programs
|
|
245
|
+
- rfg_id
|
|
246
|
+
- website_url
|
|
247
|
+
|
|
248
|
+
#### Realogy::Listing
|
|
249
|
+
|
|
250
|
+
- active?
|
|
251
|
+
- agents
|
|
252
|
+
- agricultural_property_number
|
|
253
|
+
- anchor_stores
|
|
254
|
+
- annual_tax
|
|
255
|
+
- available_floors
|
|
256
|
+
- available_space
|
|
257
|
+
- average_floor_size
|
|
258
|
+
- average_occupancy_rate
|
|
259
|
+
- bay_depth
|
|
260
|
+
- building_area
|
|
261
|
+
- building_class
|
|
262
|
+
- by_appointment_only?
|
|
263
|
+
- call_to_show?
|
|
264
|
+
- cap_rate_percent
|
|
265
|
+
- cash_flow
|
|
266
|
+
- ceiling_height
|
|
267
|
+
- city
|
|
268
|
+
- clearance
|
|
269
|
+
- column_spacing
|
|
270
|
+
- common_area_factor
|
|
271
|
+
- country
|
|
272
|
+
- country_code
|
|
273
|
+
- default_photo_url
|
|
274
|
+
- development
|
|
275
|
+
- district
|
|
276
|
+
- dock_height
|
|
277
|
+
- down_payment
|
|
278
|
+
- floors
|
|
279
|
+
- formatted_address
|
|
280
|
+
- full_bath
|
|
281
|
+
- fully_leased_income
|
|
282
|
+
- geocode_confidence_level
|
|
283
|
+
- geographic_regions
|
|
284
|
+
- gross_income
|
|
285
|
+
- ground_level?
|
|
286
|
+
- half_bath
|
|
287
|
+
- has_cross_docks?
|
|
288
|
+
- has_rail_access?
|
|
289
|
+
- has_sprinkler?
|
|
290
|
+
- hide_list_price?
|
|
291
|
+
- is_for_auction?
|
|
292
|
+
- is_foreclosure?
|
|
293
|
+
- is_short_sale?
|
|
294
|
+
- last_sold_on
|
|
295
|
+
- last_update_on
|
|
296
|
+
- latitude
|
|
297
|
+
- lead_email
|
|
298
|
+
- lease_term
|
|
299
|
+
- lease_type
|
|
300
|
+
- levels
|
|
301
|
+
- linked_office
|
|
302
|
+
- list_price
|
|
303
|
+
- list_price_amount
|
|
304
|
+
- list_price_currency_code
|
|
305
|
+
- listed_on
|
|
306
|
+
- listing_id
|
|
307
|
+
- listing_type
|
|
308
|
+
- listing_url
|
|
309
|
+
- loan_payment
|
|
310
|
+
- longitude
|
|
311
|
+
- lot_dimension
|
|
312
|
+
- lot_size
|
|
313
|
+
- mapping_allowed?
|
|
314
|
+
- max_contiguous_area
|
|
315
|
+
- maximum_lease_rate
|
|
316
|
+
- media
|
|
317
|
+
- min_divisible_area
|
|
318
|
+
- minimum_lease_rate
|
|
319
|
+
- mls_information
|
|
320
|
+
- mls_numbers
|
|
321
|
+
- net_operating_income
|
|
322
|
+
- new_construction?
|
|
323
|
+
- no_of_bedrooms
|
|
324
|
+
- number_of_ballrooms
|
|
325
|
+
- number_of_conference_rooms
|
|
326
|
+
- number_of_docks
|
|
327
|
+
- occupancy_rate
|
|
328
|
+
- open_house
|
|
329
|
+
- parking_places
|
|
330
|
+
- parking_ratio
|
|
331
|
+
- partial_bath
|
|
332
|
+
- pending?
|
|
333
|
+
- photo_count
|
|
334
|
+
- postal_code
|
|
335
|
+
- power
|
|
336
|
+
- price_per_area
|
|
337
|
+
- price_upon_request?
|
|
338
|
+
- property_address
|
|
339
|
+
- property_category
|
|
340
|
+
- property_features
|
|
341
|
+
- property_fees
|
|
342
|
+
- property_floors
|
|
343
|
+
- property_name
|
|
344
|
+
- property_rooms
|
|
345
|
+
- property_style
|
|
346
|
+
- property_type
|
|
347
|
+
- property_use
|
|
348
|
+
- provider_category
|
|
349
|
+
- provider_key
|
|
350
|
+
- provider_name
|
|
351
|
+
- provider_url
|
|
352
|
+
- quarter_bath
|
|
353
|
+
- remarks
|
|
354
|
+
- rental_frequency
|
|
355
|
+
- rfg_listing_id
|
|
356
|
+
- schedule_income
|
|
357
|
+
- schools
|
|
358
|
+
- show_address_on_internet?
|
|
359
|
+
- square_footage
|
|
360
|
+
- state_province
|
|
361
|
+
- state_province_code
|
|
362
|
+
- street_address
|
|
363
|
+
- sub_lease?
|
|
364
|
+
- sub_units
|
|
365
|
+
- suite_apartment_name
|
|
366
|
+
- suites
|
|
367
|
+
- tax_id_number
|
|
368
|
+
- tax_information
|
|
369
|
+
- tax_roll_number
|
|
370
|
+
- tax_year
|
|
371
|
+
- team
|
|
372
|
+
- three_quarter_bath
|
|
373
|
+
- total_acres
|
|
374
|
+
- total_bath
|
|
375
|
+
- total_expenses
|
|
376
|
+
- total_rooms
|
|
377
|
+
- total_units
|
|
378
|
+
- turning_radius
|
|
379
|
+
- video_count
|
|
380
|
+
- websites
|
|
381
|
+
- year_built
|
|
382
|
+
- year_renovated
|
|
383
|
+
- zoning
|
|
384
|
+
|
|
385
|
+
#### Realogy::Office
|
|
386
|
+
|
|
387
|
+
- addl_language_names
|
|
388
|
+
- addl_phone_numbers
|
|
389
|
+
- addl_websites
|
|
390
|
+
- area_served
|
|
391
|
+
- brand_code
|
|
392
|
+
- broker_name
|
|
393
|
+
- city
|
|
394
|
+
- company_id
|
|
395
|
+
- company_name
|
|
396
|
+
- country
|
|
397
|
+
- country_code
|
|
398
|
+
- default_photo_url
|
|
399
|
+
- district
|
|
400
|
+
- email_address
|
|
401
|
+
- entity_preference
|
|
402
|
+
- fax_number
|
|
403
|
+
- formatted_address
|
|
404
|
+
- geographic_regions
|
|
405
|
+
- languages_spoken
|
|
406
|
+
- last_update_on
|
|
407
|
+
- latitude
|
|
408
|
+
- lead_email_address
|
|
409
|
+
- longitude
|
|
410
|
+
- media
|
|
411
|
+
- mls_information
|
|
412
|
+
- name
|
|
413
|
+
- office_address
|
|
414
|
+
- office_id
|
|
415
|
+
- office_manager_name
|
|
416
|
+
- office_summary
|
|
417
|
+
- office_type
|
|
418
|
+
- phone_number
|
|
419
|
+
- postal_code
|
|
420
|
+
- recruiting_email_address
|
|
421
|
+
- remarks
|
|
422
|
+
- rfg_company_id
|
|
423
|
+
- rfg_office_id
|
|
424
|
+
- seasonal_close_mmdd
|
|
425
|
+
- seasonal_open_mmdd
|
|
426
|
+
- special_markets
|
|
427
|
+
- state_province
|
|
428
|
+
- state_province_code
|
|
429
|
+
- street_address
|
|
430
|
+
- website_url
|
|
431
|
+
|
|
432
|
+
#### Realogy::Team
|
|
433
|
+
|
|
434
|
+
- awards
|
|
435
|
+
- addl_phone_numbers
|
|
436
|
+
- addl_emails
|
|
437
|
+
- addl_language_names
|
|
438
|
+
- addl_websites
|
|
439
|
+
- email_address
|
|
440
|
+
- last_update_on
|
|
441
|
+
- media
|
|
442
|
+
- members
|
|
443
|
+
- name
|
|
444
|
+
- office
|
|
445
|
+
- phone_number
|
|
446
|
+
- remarks
|
|
447
|
+
- rfg_team_id
|
|
448
|
+
- team_id
|
|
449
|
+
- team_type
|
|
450
|
+
- team_summary
|
|
451
|
+
- website_url
|
|
452
|
+
|
|
193
453
|
## Development
|
|
194
454
|
|
|
195
455
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
@@ -1,2 +1,217 @@
|
|
|
1
1
|
class Realogy::Agent < Realogy::Entity
|
|
2
|
+
|
|
3
|
+
# addlEmails : [Hash]
|
|
4
|
+
# Additional emails of agent
|
|
5
|
+
|
|
6
|
+
def addl_emails
|
|
7
|
+
self.dig_for_array("addlEmails")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# addlLanguageNames : [Hash]
|
|
11
|
+
# Additional languages of agent
|
|
12
|
+
|
|
13
|
+
def addl_languages_names
|
|
14
|
+
self.dig_for_array("addlLanguageNames")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# addlPhones : [Hash]
|
|
18
|
+
# Additional phone numbers for agent
|
|
19
|
+
|
|
20
|
+
def addl_phones
|
|
21
|
+
self.dig_for_array("addlPhones")
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# agentSummary : Hash
|
|
25
|
+
|
|
26
|
+
def agent_summary
|
|
27
|
+
self.dig_for_hash("agentSummary")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# id : String
|
|
31
|
+
# Globally unique identifier assigned to an Agent by Realogy
|
|
32
|
+
|
|
33
|
+
def agent_id
|
|
34
|
+
self.dig_for_string("agentSummary", "id")
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# areasOfSpecialization : [String]
|
|
38
|
+
# Area of specialization for the agent
|
|
39
|
+
|
|
40
|
+
def areas_of_specialization
|
|
41
|
+
self.dig_for_array("areasOfSpecialization")
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# businessPhone : String
|
|
45
|
+
# Business phone number of agent
|
|
46
|
+
|
|
47
|
+
def business_phone
|
|
48
|
+
self.dig_for_string("agentSummary", "businessPhone")
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# businessPhoneExt : String
|
|
52
|
+
# Business phone extension of agent
|
|
53
|
+
|
|
54
|
+
def business_phone_ext
|
|
55
|
+
self.dig_for_string("agentSummary", "businessPhoneExt")
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# defaultPhotoURL : String
|
|
59
|
+
# Profile photo URL for the Agent
|
|
60
|
+
|
|
61
|
+
def default_photo_url
|
|
62
|
+
self.dig_for_string("agentSummary", "defaultPhotoURL")
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# designations : String
|
|
66
|
+
# Designation of the agent
|
|
67
|
+
|
|
68
|
+
def designations
|
|
69
|
+
self.dig_for_string("designations")
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# displayTitle : String
|
|
73
|
+
# Title of the agent
|
|
74
|
+
|
|
75
|
+
def display_title
|
|
76
|
+
self.dig_for_string("agentSummary", "displayTitle")
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# emailAddress : String
|
|
80
|
+
# Email address of the agent
|
|
81
|
+
|
|
82
|
+
def email_address
|
|
83
|
+
self.dig_for_string("agentSummary", "emailAddress")
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# firstName : String
|
|
87
|
+
# First name of the agent
|
|
88
|
+
|
|
89
|
+
def first_name
|
|
90
|
+
self.dig_for_string("agentSummary", "firstName")
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# gender : String
|
|
94
|
+
# Gender of the agent (male/female)
|
|
95
|
+
|
|
96
|
+
def gender
|
|
97
|
+
self.dig_for_string("agentSummary", "gender")
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# isAgent : Boolean
|
|
101
|
+
# Indicates whether the person is an agent or not
|
|
102
|
+
|
|
103
|
+
def is_agent?
|
|
104
|
+
self.dig_for_boolean("agentSummary", "isAgent")
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# isTeamMember : Boolean
|
|
108
|
+
# Indicates whether the person is a team member or not
|
|
109
|
+
|
|
110
|
+
def is_team_member?
|
|
111
|
+
self.dig_for_boolean("isTeamMember")
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# languagesSpoken : [Hash]
|
|
115
|
+
# The languages agent speaks
|
|
116
|
+
|
|
117
|
+
def languages_spoken
|
|
118
|
+
self.dig_for_array("languagesSpoken")
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# lastName : String
|
|
122
|
+
# Last name of the agent
|
|
123
|
+
|
|
124
|
+
def last_name
|
|
125
|
+
self.dig_for_string("agentSummary", "lastName")
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# lastUpdateOn : DateTime
|
|
129
|
+
# The date/time that the Agent record was last updated in the system (UTC)
|
|
130
|
+
|
|
131
|
+
def last_update_on
|
|
132
|
+
self.dig_for_datetime("lastUpdateOn")
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# leadEmailAddress : String
|
|
136
|
+
# Email address to send leads to the agent
|
|
137
|
+
|
|
138
|
+
def lead_email_address
|
|
139
|
+
self.dig_for_string("agentSummary", "leadEmailAddress")
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
# licenseInfo : [Hash]
|
|
143
|
+
# A collection of licenses associated with the Agent
|
|
144
|
+
|
|
145
|
+
def license_info
|
|
146
|
+
self.dig_for_array("licenseInfo")
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# media: [Hash]
|
|
150
|
+
|
|
151
|
+
def media
|
|
152
|
+
self.dig_for_array("media")
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# middleName : String
|
|
156
|
+
# Middle name of the agent
|
|
157
|
+
|
|
158
|
+
def middle_name
|
|
159
|
+
self.dig_for_string("agentSummary", "middleName")
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# mlsInformation : [String]
|
|
163
|
+
# MLS numbers associated with the Agent
|
|
164
|
+
|
|
165
|
+
def mls_information
|
|
166
|
+
self.dig_for_array("mlsInformation")
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
# mobilePhone : String
|
|
170
|
+
# Mobile phone number of agent
|
|
171
|
+
|
|
172
|
+
def mobile_phone
|
|
173
|
+
self.dig_for_string("agentSummary", "mobilePhone")
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# name : String
|
|
177
|
+
# Display Name of the agent
|
|
178
|
+
|
|
179
|
+
def name
|
|
180
|
+
self.dig_for_string("agentSummary", "name")
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
# office : String
|
|
184
|
+
|
|
185
|
+
def office
|
|
186
|
+
self.dig_for_string("agentSummary", "office")
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
# remarks : [Hash]
|
|
190
|
+
# A collection of Profile descriptions associated with the Agent
|
|
191
|
+
|
|
192
|
+
def remarks
|
|
193
|
+
self.dig_for_array("remarks")
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
# roles : [Hash]
|
|
197
|
+
# Role details of the agent
|
|
198
|
+
|
|
199
|
+
def roles
|
|
200
|
+
self.dig_for_array("roles")
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
# specialty : String
|
|
204
|
+
# Specialty of the agent
|
|
205
|
+
|
|
206
|
+
def specialty
|
|
207
|
+
self.dig_for_string("agentSummary", "specialty")
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
# webSites : [Hash]
|
|
211
|
+
# A collection of websites associated with the Agent
|
|
212
|
+
|
|
213
|
+
def websites
|
|
214
|
+
self.dig_for_array("webSites")
|
|
215
|
+
end
|
|
216
|
+
|
|
2
217
|
end
|
|
@@ -1,2 +1,98 @@
|
|
|
1
1
|
class Realogy::Company < Realogy::Entity
|
|
2
|
+
|
|
3
|
+
# addlLanguageNames : [Hash]
|
|
4
|
+
# A collection of Company names in other languages (non-English)
|
|
5
|
+
|
|
6
|
+
def addl_language_names
|
|
7
|
+
self.dig_for_array("addlLanguageNames")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# addlWebSites : [Hash]
|
|
11
|
+
# A collection of websites associated with the Company
|
|
12
|
+
|
|
13
|
+
def addl_websites
|
|
14
|
+
self.dig_for_array("addlWebSites")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# brandCode : String
|
|
18
|
+
# The brand that the Company is associated with
|
|
19
|
+
|
|
20
|
+
def brand_code
|
|
21
|
+
self.dig_for_array("companySummary", "brandCode")
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# canDoCommercialBusiness : Boolean
|
|
25
|
+
# Will be 'true' if this company can do commercial business
|
|
26
|
+
|
|
27
|
+
def can_do_commercial_business?
|
|
28
|
+
self.dig_for_boolean("companySummary", "canDoCommercialBusiness")
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# commercialCompanyName : String
|
|
32
|
+
# commercialCompanyName of the company
|
|
33
|
+
|
|
34
|
+
def commercial_company_name
|
|
35
|
+
self.dig_for_string("companySummary", "commercialCompanyName")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# id : String
|
|
39
|
+
# Globally unique identifier assigned to a Company by Realogy
|
|
40
|
+
|
|
41
|
+
def company_id
|
|
42
|
+
self.dig_for_string("companySummary", "id")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# companySummary : Hash
|
|
46
|
+
|
|
47
|
+
def company_summary
|
|
48
|
+
self.dig_for_hash("companySummary")
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# isNrt : Boolean
|
|
52
|
+
# This indicates whether it is Nrt Type or not
|
|
53
|
+
|
|
54
|
+
def is_nrt?
|
|
55
|
+
self.dig_for_boolean("companySummary", "isNrt")
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# lastUpdateOn : DateTime
|
|
59
|
+
# The date/time that the Company record was last updated in the system (UTC)
|
|
60
|
+
|
|
61
|
+
def last_update_on
|
|
62
|
+
self.dig_for_datetime("companySummary", "lastUpdateOn")
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# media : [Hash]
|
|
66
|
+
|
|
67
|
+
def media
|
|
68
|
+
self.dig_for_array("media")
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# name : String
|
|
72
|
+
# Name of the Company
|
|
73
|
+
|
|
74
|
+
def name
|
|
75
|
+
self.dig_for_string("companySummary", "name")
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# programs ; [Hash]
|
|
79
|
+
|
|
80
|
+
def programs
|
|
81
|
+
self.dig_for_array("programs")
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# RFGID : String
|
|
85
|
+
# Business identifier assigned to a Company by Realogy
|
|
86
|
+
|
|
87
|
+
def rfg_id
|
|
88
|
+
self.dig_for_string("companySummary", "RFGID")
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# websiteURL : String
|
|
92
|
+
# URL to the Company's website
|
|
93
|
+
|
|
94
|
+
def website_url
|
|
95
|
+
self.dig_for_string("companySummary", "websiteURL")
|
|
96
|
+
end
|
|
97
|
+
|
|
2
98
|
end
|
|
@@ -22,4 +22,38 @@ class Realogy::Entity < ApplicationRecord
|
|
|
22
22
|
self.save if self.changed?
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
def dig_for_array(*path)
|
|
26
|
+
return nil unless (json = self.data).is_a?(Hash)
|
|
27
|
+
(v = json.dig(*path)).is_a?(Array) ? v : nil
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def dig_for_boolean(*path)
|
|
31
|
+
return nil unless (json = self.data).is_a?(Hash)
|
|
32
|
+
(v = json.dig(*path)).to_s.upcase.eql?("TRUE") ? true : nil
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def dig_for_datetime(*path)
|
|
36
|
+
self.data.dig(*path).to_datetime rescue nil
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def dig_for_decimal(*path)
|
|
40
|
+
return nil unless (json = self.data).is_a?(Hash)
|
|
41
|
+
(v = json.dig(*path).to_f) != 0.0 ? v : nil
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def dig_for_hash(*path)
|
|
45
|
+
return nil unless (json = self.data).is_a?(Hash)
|
|
46
|
+
(v = json.dig(*path)).is_a?(Hash) ? v : nil
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def dig_for_integer(*path)
|
|
50
|
+
return nil unless (json = self.data).is_a?(Hash)
|
|
51
|
+
(v = json.dig(*path).to_i) != 0 ? v : nil
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def dig_for_string(*path)
|
|
55
|
+
return nil unless (json = self.data).is_a?(Hash)
|
|
56
|
+
(v = json.dig(*path)).to_s.present? ? (v.eql?("0") ? nil : v) : nil
|
|
57
|
+
end
|
|
58
|
+
|
|
25
59
|
end
|