caboose-rets 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +15 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +4 -0
  4. data/Rakefile +38 -0
  5. data/app/controllers/caboose_rets/agents_controller.rb +169 -0
  6. data/app/controllers/caboose_rets/application_controller.rb +6 -0
  7. data/app/controllers/caboose_rets/commercial_controller.rb +281 -0
  8. data/app/controllers/caboose_rets/land_controller.rb +69 -0
  9. data/app/controllers/caboose_rets/open_houses_controller.rb +60 -0
  10. data/app/controllers/caboose_rets/residential_controller.rb +108 -0
  11. data/app/helpers/caboose_rets/application_helper.rb +4 -0
  12. data/app/models/caboose_rets/agent.rb +65 -0
  13. data/app/models/caboose_rets/commercial_property.rb +214 -0
  14. data/app/models/caboose_rets/land_property.rb +143 -0
  15. data/app/models/caboose_rets/media.rb +23 -0
  16. data/app/models/caboose_rets/multi_family_property.rb +198 -0
  17. data/app/models/caboose_rets/office.rb +27 -0
  18. data/app/models/caboose_rets/open_house.rb +19 -0
  19. data/app/models/caboose_rets/residential_property.rb +236 -0
  20. data/app/models/caboose_rets/rets_importer.rb +303 -0
  21. data/app/models/caboose_rets/rets_plugin.rb +26 -0
  22. data/app/views/caboose_rets/agents/_admin_top_nav.html.erb +7 -0
  23. data/app/views/caboose_rets/agents/admin_edit.html.erb +28 -0
  24. data/app/views/caboose_rets/agents/admin_edit_bio.html.erb +31 -0
  25. data/app/views/caboose_rets/agents/admin_edit_contact_info.html.erb +31 -0
  26. data/app/views/caboose_rets/agents/admin_edit_mls_info.html.erb +71 -0
  27. data/app/views/caboose_rets/agents/admin_index.html.erb +48 -0
  28. data/app/views/caboose_rets/agents/details.html.erb +140 -0
  29. data/app/views/caboose_rets/agents/index.html.erb +163 -0
  30. data/app/views/caboose_rets/agents/listings.html.erb +121 -0
  31. data/app/views/caboose_rets/commercial/admin_edit.html.erb +452 -0
  32. data/app/views/caboose_rets/commercial/admin_index.html.erb +46 -0
  33. data/app/views/caboose_rets/commercial/details.html.erb +134 -0
  34. data/app/views/caboose_rets/commercial/index.html.erb +87 -0
  35. data/app/views/caboose_rets/open_houses/admin_new.html.erb +31 -0
  36. data/app/views/caboose_rets/residential/admin_edit.html.erb +250 -0
  37. data/app/views/caboose_rets/residential/admin_index.html.erb +44 -0
  38. data/app/views/caboose_rets/residential/details.html.erb +139 -0
  39. data/app/views/caboose_rets/residential/index.html.erb +102 -0
  40. data/app/views/caboose_rets/residential/residential_not_exists.html.erb +15 -0
  41. data/app/views/caboose_rets/residential/test_form.html.erb +4 -0
  42. data/config/routes.rb +87 -0
  43. data/lib/caboose-rets.rb +4 -0
  44. data/lib/caboose_rets/caboose_rets_helper.rb +2 -0
  45. data/lib/caboose_rets/engine.rb +7 -0
  46. data/lib/caboose_rets/version.rb +3 -0
  47. data/lib/tasks/caboose_rets.rake +855 -0
  48. data/test/caboose_test.rb +7 -0
  49. data/test/dummy/README.rdoc +261 -0
  50. data/test/dummy/Rakefile +7 -0
  51. data/test/dummy/app/assets/javascripts/application.js +15 -0
  52. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  53. data/test/dummy/app/controllers/application_controller.rb +3 -0
  54. data/test/dummy/app/helpers/application_helper.rb +2 -0
  55. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  56. data/test/dummy/config.ru +4 -0
  57. data/test/dummy/config/application.rb +59 -0
  58. data/test/dummy/config/boot.rb +10 -0
  59. data/test/dummy/config/database.yml +25 -0
  60. data/test/dummy/config/environment.rb +5 -0
  61. data/test/dummy/config/environments/development.rb +37 -0
  62. data/test/dummy/config/environments/production.rb +67 -0
  63. data/test/dummy/config/environments/test.rb +37 -0
  64. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  65. data/test/dummy/config/initializers/inflections.rb +15 -0
  66. data/test/dummy/config/initializers/mime_types.rb +5 -0
  67. data/test/dummy/config/initializers/secret_token.rb +7 -0
  68. data/test/dummy/config/initializers/session_store.rb +8 -0
  69. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  70. data/test/dummy/config/locales/en.yml +5 -0
  71. data/test/dummy/config/routes.rb +4 -0
  72. data/test/dummy/db/test.sqlite3 +0 -0
  73. data/test/dummy/log/test.log +25 -0
  74. data/test/dummy/public/404.html +26 -0
  75. data/test/dummy/public/422.html +26 -0
  76. data/test/dummy/public/500.html +25 -0
  77. data/test/dummy/public/favicon.ico +0 -0
  78. data/test/dummy/script/rails +6 -0
  79. data/test/integration/navigation_test.rb +10 -0
  80. data/test/test_helper.rb +15 -0
  81. metadata +169 -0
@@ -0,0 +1,143 @@
1
+
2
+ class CabooseRets::LandProperty < ActiveRecord::Base
3
+ self.table_name = "rets_land"
4
+
5
+ def agent
6
+ return Agent.where(:la_code => self.la_code).first
7
+ end
8
+
9
+ def office
10
+ return Office.where(:lo_code => self.lo_code).first
11
+ end
12
+
13
+ def images
14
+ return Media.where(:mls_acct => self.id).order(:media_order).all
15
+ end
16
+
17
+ def self.geolocatable
18
+ all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL")
19
+ end
20
+
21
+ def parse(data)
22
+ self.acreage = data['ACREAGE']
23
+ self.acreage_source = data['ACREAGE_SOURCE']
24
+ self.adjoining_land_use = data['ADJOINING_LAND_USE']
25
+ self.agent_notes = data['AGENT_NOTES']
26
+ self.agent_other_contact_desc = data['AGENT_OTHER_CONTACT_DESC']
27
+ self.agent_other_contact_phone = data['AGENT_OTHER_CONTACT_PHONE']
28
+ self.annual_taxes = data['ANNUAL_TAXES']
29
+ self.area = data['AREA']
30
+ self.bom_date = data['BOM_DATE']
31
+ self.book_number = data['BOOK_NUMBER']
32
+ self.book_page = data['BOOK_PAGE']
33
+ self.book_type = data['BOOK_TYPE']
34
+ self.buyer_broker = data['BUYER_BROKER']
35
+ self.buyer_broker_type = data['BUYER_BROKER_TYPE']
36
+ self.buyer_name = data['BUYER_NAME']
37
+ self.category = data['CATEGORY']
38
+ self.city = data['CITY']
39
+ self.city_code = data['CITY_CODE']
40
+ self.co_la_code = data['CO_LA_CODE']
41
+ self.co_lo_code = data['CO_LO_CODE']
42
+ self.co_sa_code = data['CO_SA_CODE']
43
+ self.co_so_code = data['CO_SO_CODE']
44
+ self.contacts = data['CONTACTS']
45
+ self.contr_broker = data['CONTR_BROKER']
46
+ self.contr_broker_type = data['CONTR_BROKER_TYPE']
47
+ self.converted = data['CONVERTED']
48
+ self.county = data['COUNTY']
49
+ self.current_price = data['CURRENT_PRICE']
50
+ self.date_created = data['DATE_CREATED']
51
+ self.date_modified = data['DATE_MODIFIED']
52
+ self.df_yn = data['DF_YN']
53
+ self.directions = data['DIRECTIONS']
54
+ self.display_address_yn = data['DISPLAY_ADDRESS_YN']
55
+ self.dom = data['DOM']
56
+ self.elem_school = data['ELEM_SCHOOL']
57
+ self.expire_date = data['EXPIRE_DATE']
58
+ self.ftr_access = data['FTR_ACCESS']
59
+ self.ftr_docs_on_file = data['FTR_DOCS_ON_FILE']
60
+ self.ftr_existing_struct = data['FTR_EXISTING_STRUCT']
61
+ self.ftr_extras = data['FTR_EXTRAS']
62
+ self.ftr_internet = data['FTR_INTERNET']
63
+ self.ftr_lotdesc = data['FTR_LOTDESC']
64
+ self.ftr_mineralrights = data['FTR_MINERALRIGHTS']
65
+ self.ftr_possibleuse = data['FTR_POSSIBLEUSE']
66
+ self.ftr_restrictions = data['FTR_RESTRICTIONS']
67
+ self.ftr_sewer = data['FTR_SEWER']
68
+ self.ftr_showing = data['FTR_SHOWING']
69
+ self.ftr_terms = data['FTR_TERMS']
70
+ self.ftr_topography = data['FTR_TOPOGRAPHY']
71
+ self.ftr_utils = data['FTR_UTILS']
72
+ self.ftr_zoning = data['FTR_ZONING']
73
+ self.geo_precision = data['GEO_PRECISION']
74
+ self.georesult = data['GEORESULT']
75
+ self.high_school = data['HIGH_SCHOOL']
76
+ self.internet_yn = data['INTERNET_YN']
77
+ self.la_code = data['LA_CODE']
78
+ self.legal_block = data['LEGAL_BLOCK']
79
+ self.legal_lot = data['LEGAL_LOT']
80
+ self.legal_section = data['LEGAL_SECTION']
81
+ self.legals = data['LEGALS']
82
+ self.list_date = data['LIST_DATE']
83
+ self.list_price = data['LIST_PRICE']
84
+ self.listing_type = data['LISTING_TYPE']
85
+ self.lo_code = data['LO_CODE']
86
+ self.lot_dim_source = data['LOT_DIM_SOURCE']
87
+ self.lot_dimensions = data['LOT_DIMENSIONS']
88
+ self.media_flag = data['MEDIA_FLAG']
89
+ self.middle_school = data['MIDDLE_SCHOOL']
90
+ self.mls_acct = data['MLS_ACCT']
91
+ self.municipality = data['MUNICIPALITY']
92
+ self.off_mkt_date = data['OFF_MKT_DATE']
93
+ self.off_mkt_days = data['OFF_MKT_DAYS']
94
+ self.office_notes = data['OFFICE_NOTES']
95
+ self.orig_lp = data['ORIG_LP']
96
+ self.orig_price = data['ORIG_PRICE']
97
+ self.other_fee = data['OTHER_FEE']
98
+ self.other_fee_type = data['OTHER_FEE_TYPE']
99
+ self.owner_name = data['OWNER_NAME']
100
+ self.owner_phone = data['OWNER_PHONE']
101
+ self.parcel_id = data['PARCEL_ID']
102
+ self.pending_date = data['PENDING_DATE']
103
+ self.photo_count = data['PHOTO_COUNT']
104
+ self.photo_date_modified = data['PHOTO_DATE_MODIFIED']
105
+ self.price_change_date = data['PRICE_CHANGE_DATE']
106
+ self.price_sqft = data['PRICE_SQFT']
107
+ self.proj_close_date = data['PROJ_CLOSE_DATE']
108
+ self.prop_id = data['PROP_ID']
109
+ self.prop_type = data['PROP_TYPE']
110
+ self.remarks = data['REMARKS']
111
+ self.road_frontage_ft = data['ROAD_FRONTAGE_FT']
112
+ self.sa_code = data['SA_CODE']
113
+ self.sale_lease = data['SALE_LEASE']
114
+ self.sale_notes = data['SALE_NOTES']
115
+ self.so_code = data['SO_CODE']
116
+ self.sold_date = data['SOLD_DATE']
117
+ self.sold_price = data['SOLD_PRICE']
118
+ self.sold_terms = data['SOLD_TERMS']
119
+ self.state = data['STATE']
120
+ self.status = data['STATUS']
121
+ self.status_date = data['STATUS_DATE']
122
+ self.status_flag = data['STATUS_FLAG']
123
+ self.street = data['STREET']
124
+ self.street_dir = data['STREET_DIR']
125
+ self.street_name = data['STREET_NAME']
126
+ self.street_num = data['STREET_NUM']
127
+ self.sub_agent = data['SUB_AGENT']
128
+ self.sub_agent_type = data['SUB_AGENT_TYPE']
129
+ self.subdivision = data['SUBDIVISION']
130
+ self.third_party_comm_yn = data['THIRD_PARTY_COMM_YN']
131
+ self.unit_num = data['UNIT_NUM']
132
+ self.upload_source = data['UPLOAD_SOURCE']
133
+ self.valuation_yn = data['VALUATION_YN']
134
+ self.vt_yn = data['VT_YN']
135
+ self.waterfront = data['WATERFRONT']
136
+ self.waterfront_yn = data['WATERFRONT_YN']
137
+ self.wf_feet = data['WF_FEET']
138
+ self.withdrawn_date = data['WITHDRAWN_DATE']
139
+ self.zip = data['ZIP']
140
+ self.zoning_northport = data['ZONING_NORTHPORT']
141
+ self.zoning_tusc = data['ZONING_TUSC']
142
+ end
143
+ end
@@ -0,0 +1,23 @@
1
+
2
+ class CabooseRets::Media < ActiveRecord::Base
3
+ self.table_name = "rets_media"
4
+
5
+ has_attached_file :image,
6
+ :path => 'rets/media/:mls_acct_:media_order_:style.:extension',
7
+ :styles => {
8
+ :tiny => '160x120>',
9
+ :thumb => '400x300>',
10
+ :large => '640x480>'
11
+ }
12
+
13
+ def parse(data)
14
+ self.date_modified = data['DATE_MODIFIED']
15
+ self.file_name = data['FILE_NAME']
16
+ self.media_id = data['MEDIA_ID']
17
+ self.media_order = data['MEDIA_ORDER']
18
+ self.media_remarks = data['MEDIA_REMARKS']
19
+ self.media_type = data['MEDIA_TYPE']
20
+ self.mls_acct = data['MLS_ACCT']
21
+ self.url = data['URL']
22
+ end
23
+ end
@@ -0,0 +1,198 @@
1
+
2
+ class CabooseRets::MultiFamilyProperty < ActiveRecord::Base
3
+ self.table_name = "rets_multi_family"
4
+
5
+ def agent
6
+ return Agent.where(:la_code => self.la_code).first
7
+ end
8
+
9
+ def office
10
+ return Office.where(:lo_code => self.lo_code).first
11
+ end
12
+
13
+ def images
14
+ return Media.where(:mls_acct => self.id).order(:media_order).all
15
+ end
16
+
17
+ def self.geolocatable
18
+ all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL")
19
+ end
20
+
21
+ def parse(data)
22
+ self.acreage = data['ACREAGE']
23
+ self.agent_notes = data['AGENT_NOTES']
24
+ self.agent_other_contact_desc = data['AGENT_OTHER_CONTACT_DESC']
25
+ self.agent_other_contact_phone = data['AGENT_OTHER_CONTACT_PHONE']
26
+ self.annual_taxes = data['ANNUAL_TAXES']
27
+ self.area = data['AREA']
28
+ self.bom_date = data['BOM_DATE']
29
+ self.book_number = data['BOOK_NUMBER']
30
+ self.book_page = data['BOOK_PAGE']
31
+ self.book_type = data['BOOK_TYPE']
32
+ self.box_on_unit = data['BOX_ON_UNIT']
33
+ self.buyer_broker = data['BUYER_BROKER']
34
+ self.buyer_broker_type = data['BUYER_BROKER_TYPE']
35
+ self.buyer_name = data['BUYER_NAME']
36
+ self.category = data['CATEGORY']
37
+ self.city = data['CITY']
38
+ self.city_code = data['CITY_CODE']
39
+ self.contacts = data['CONTACTS']
40
+ self.contr_broker = data['CONTR_BROKER']
41
+ self.contr_broker_type = data['CONTR_BROKER_TYPE']
42
+ self.county = data['COUNTY']
43
+ self.co_la_code = data['CO_LA_CODE']
44
+ self.co_lo_code = data['CO_LO_CODE']
45
+ self.co_sa_code = data['CO_SA_CODE']
46
+ self.co_so_code = data['CO_SO_CODE']
47
+ self.current_price = data['CURRENT_PRICE']
48
+ self.date_created = data['DATE_CREATED']
49
+ self.date_leased = data['DATE_LEASED']
50
+ self.date_modified = data['DATE_MODIFIED']
51
+ self.df_yn = data['DF_YN']
52
+ self.directions = data['DIRECTIONS']
53
+ self.display_address_yn = data['DISPLAY_ADDRESS_YN']
54
+ self.dom = data['DOM']
55
+ self.elem_school = data['ELEM_SCHOOL']
56
+ self.expenses_association = data['EXPENSES_ASSOCIATION']
57
+ self.expenses_insurance = data['EXPENSES_INSURANCE']
58
+ self.expenses_maintenance = data['EXPENSES_MAINTENANCE']
59
+ self.expenses_management = data['EXPENSES_MANAGEMENT']
60
+ self.expenses_other = data['EXPENSES_OTHER']
61
+ self.expenses_tax = data['EXPENSES_TAX']
62
+ self.expire_date = data['EXPIRE_DATE']
63
+ self.flood_plain = data['FLOOD_PLAIN']
64
+ self.ftr_building_type = data['FTR_BUILDING_TYPE']
65
+ self.ftr_construction = data['FTR_CONSTRUCTION']
66
+ self.ftr_cooling = data['FTR_COOLING']
67
+ self.ftr_exterior = data['FTR_EXTERIOR']
68
+ self.ftr_exterioramenit = data['FTR_EXTERIORAMENIT']
69
+ self.ftr_floors = data['FTR_FLOORS']
70
+ self.ftr_heating = data['FTR_HEATING']
71
+ self.ftr_interior = data['FTR_INTERIOR']
72
+ self.ftr_rent_incl = data['FTR_RENT_INCL']
73
+ self.ftr_roof = data['FTR_ROOF']
74
+ self.ftr_roof_age = data['FTR_ROOF_AGE']
75
+ self.ftr_showing = data['FTR_SHOWING']
76
+ self.ftr_utils = data['FTR_UTILS']
77
+ self.ftr_zoning = data['FTR_ZONING']
78
+ self.georesult = data['GEORESULT']
79
+ self.geo_precision = data['GEO_PRECISION']
80
+ self.high_school = data['HIGH_SCHOOL']
81
+ self.hoa_fee = data['HOA_FEE']
82
+ self.hoa_fee_yn = data['HOA_FEE_YN']
83
+ self.hoa_term = data['HOA_TERM']
84
+ self.income = data['INCOME']
85
+ self.income_other = data['INCOME_OTHER']
86
+ self.income_rent = data['INCOME_RENT']
87
+ self.internet_yn = data['INTERNET_YN']
88
+ self.la_code = data['LA_CODE']
89
+ self.legals = data['LEGALS']
90
+ self.limited_service_yn = data['LIMITED_SERVICE_YN']
91
+ self.listing_type = data['LISTING_TYPE']
92
+ self.list_date = data['LIST_DATE']
93
+ self.list_price = data['LIST_PRICE']
94
+ self.lot_dimensions = data['LOT_DIMENSIONS']
95
+ self.lot_dimensions_source = data['LOT_DIMENSIONS_SOURCE']
96
+ self.lo_code = data['LO_CODE']
97
+ self.management = data['MANAGEMENT']
98
+ self.media_flag = data['MEDIA_FLAG']
99
+ self.middle_school = data['MIDDLE_SCHOOL']
100
+ self.mls_acct = data['MLS_ACCT']
101
+ self.municipality = data['MUNICIPALITY']
102
+ self.num_units = data['NUM_UNITS']
103
+ self.num_units_occupied = data['NUM_UNITS_OCCUPIED']
104
+ self.office_notes = data['OFFICE_NOTES']
105
+ self.off_mkt_date = data['OFF_MKT_DATE']
106
+ self.off_mkt_days = data['OFF_MKT_DAYS']
107
+ self.orig_lp = data['ORIG_LP']
108
+ self.orig_price = data['ORIG_PRICE']
109
+ self.other_fee = data['OTHER_FEE']
110
+ self.other_fee_type = data['OTHER_FEE_TYPE']
111
+ self.owner_name = data['OWNER_NAME']
112
+ self.owner_phone = data['OWNER_PHONE']
113
+ self.parcel_id = data['PARCEL_ID']
114
+ self.pending_date = data['PENDING_DATE']
115
+ self.photo_count = data['PHOTO_COUNT']
116
+ self.photo_date_modified = data['PHOTO_DATE_MODIFIED']
117
+ self.price_change_date = data['PRICE_CHANGE_DATE']
118
+ self.price_sqft = data['PRICE_SQFT']
119
+ self.proj_close_date = data['PROJ_CLOSE_DATE']
120
+ self.prop_id = data['PROP_ID']
121
+ self.prop_type = data['PROP_TYPE']
122
+ self.remarks = data['REMARKS']
123
+ self.sale_notes = data['SALE_NOTES']
124
+ self.sale_rent = data['SALE_RENT']
125
+ self.sa_code = data['SA_CODE']
126
+ self.sold_date = data['SOLD_DATE']
127
+ self.sold_price = data['SOLD_PRICE']
128
+ self.sold_terms = data['SOLD_TERMS']
129
+ self.so_code = data['SO_CODE']
130
+ self.state = data['STATE']
131
+ self.status = data['STATUS']
132
+ self.status_date = data['STATUS_DATE']
133
+ self.status_flag = data['STATUS_FLAG']
134
+ self.street = data['STREET']
135
+ self.street_dir = data['STREET_DIR']
136
+ self.street_name = data['STREET_NAME']
137
+ self.street_num = data['STREET_NUM']
138
+ self.subdivision = data['SUBDIVISION']
139
+ self.sub_agent = data['SUB_AGENT']
140
+ self.sub_agent_type = data['SUB_AGENT_TYPE']
141
+ self.third_party_comm_yn = data['THIRD_PARTY_COMM_YN']
142
+ self.tot_heat_sqft = data['TOT_HEAT_SQFT']
143
+ self.u1_baths = data['U1_BATHS']
144
+ self.u1_num = data['U1_NUM']
145
+ self.u1_occ = data['U1_OCC']
146
+ self.u1_rent = data['U1_RENT']
147
+ self.u1_sqft = data['U1_SQFT']
148
+ self.u1_yn = data['U1_YN']
149
+ self.u2_baths = data['U2_BATHS']
150
+ self.u2_num = data['U2_NUM']
151
+ self.u2_occ = data['U2_OCC']
152
+ self.u2_rent = data['U2_RENT']
153
+ self.u2_sqft = data['U2_SQFT']
154
+ self.u2_yn = data['U2_YN']
155
+ self.u3_baths = data['U3_BATHS']
156
+ self.u3_num = data['U3_NUM']
157
+ self.u3_occ = data['U3_OCC']
158
+ self.u3_rent = data['U3_RENT']
159
+ self.u3_sqft = data['U3_SQFT']
160
+ self.u3_yn = data['U3_YN']
161
+ self.u4_baths = data['U4_BATHS']
162
+ self.u4_num = data['U4_NUM']
163
+ self.u4_occ = data['U4_OCC']
164
+ self.u4_rent = data['U4_RENT']
165
+ self.u4_sqft = data['U4_SQFT']
166
+ self.u4_yn = data['U4_YN']
167
+ self.u5_baths = data['U5_BATHS']
168
+ self.u5_num = data['U5_NUM']
169
+ self.u5_occ = data['U5_OCC']
170
+ self.u5_rent = data['U5_RENT']
171
+ self.u5_sqft = data['U5_SQFT']
172
+ self.u5_yn = data['U5_YN']
173
+ self.u6_baths = data['U6_BATHS']
174
+ self.u6_num = data['U6_NUM']
175
+ self.u6_occ = data['U6_OCC']
176
+ self.u6_rent = data['U6_RENT']
177
+ self.u6_sqft = data['U6_SQFT']
178
+ self.u6_yn = data['U6_YN']
179
+ self.u7_baths = data['U7_BATHS']
180
+ self.u7_num = data['U7_NUM']
181
+ self.u7_occ = data['U7_OCC']
182
+ self.u7_rent = data['U7_RENT']
183
+ self.u7_sqft = data['U7_SQFT']
184
+ self.u7_yn = data['U7_YN']
185
+ self.u8_num = data['U8_NUM']
186
+ self.u8_occ = data['U8_OCC']
187
+ self.u8_rent = data['U8_RENT']
188
+ self.u8_sqft = data['U8_SQFT']
189
+ self.u8_yn = data['U8_YN']
190
+ self.unit_num = data['UNIT_NUM']
191
+ self.upload_source = data['UPLOAD_SOURCE']
192
+ self.valuation_yn = data['VALUATION_YN']
193
+ self.vt_yn = data['VT_YN']
194
+ self.withdrawn_date = data['WITHDRAWN_DATE']
195
+ self.year_built = data['YEAR_BUILT']
196
+ self.zip = data['ZIP']
197
+ end
198
+ end
@@ -0,0 +1,27 @@
1
+
2
+ class CabooseRets::Office < ActiveRecord::Base
3
+ self.table_name = "rets_offices"
4
+ attr_accessible :id, :name, :lo_code
5
+
6
+ def parse(data)
7
+ self.lo_date_created = data['LO_DATE_CREATED']
8
+ self.lo_date_modified = data['LO_DATE_MODIFIED']
9
+ self.lo_email = data['LO_EMAIL']
10
+ self.lo_fax_phone = data['LO_FAX_PHONE']
11
+ self.lo_idx_yn = data['LO_IDX_YN']
12
+ self.lo_lo_code = data['LO_LO_CODE']
13
+ self.lo_mailaddr1 = data['LO_MAILADDR1']
14
+ self.lo_mailaddr2 = data['LO_MAILADDR2']
15
+ self.lo_mailcity = data['LO_MAILCITY']
16
+ self.lo_mailstate = data['LO_MAILSTATE']
17
+ self.lo_mailzip = data['LO_MAILZIP']
18
+ self.lo_main_lo_code = data['LO_MAIN_LO_CODE']
19
+ self.lo_name = data['LO_NAME']
20
+ self.lo_other_phone = data['LO_OTHER_PHONE']
21
+ self.lo_page = data['LO_PAGE']
22
+ self.lo_phone = data['LO_PHONE']
23
+ self.lo_status = data['LO_STATUS']
24
+ self.photo_count = data['PHOTO_COUNT']
25
+ self.photo_date_modified = data['PHOTO_DATE_MODIFIED']
26
+ end
27
+ end
@@ -0,0 +1,19 @@
1
+
2
+ class CabooseRets::OpenHouse < ActiveRecord::Base
3
+ self.table_name = "rets_open_houses"
4
+
5
+ def parse(data)
6
+ self.id = data['ID']
7
+ self.comments = data['COMMENTS']
8
+ self.date_created = data['DATE_CREATED']
9
+ self.date_modified = data['DATE_MODIFIED']
10
+ self.end_time = data['END_TIME']
11
+ self.la_code = data['LA_CODE']
12
+ self.mls_acct = data['MLS_ACCT']
13
+ self.open_house_date = data['OPEN_HOUSE_DATE']
14
+ self.open_house_type = data['OPEN_HOUSE_TYPE']
15
+ self.perpetual_yn = data['PERPETUAL_YN']
16
+ self.prop_type = data['PROP_TYPE']
17
+ self.start_time = data['START_TIME']
18
+ end
19
+ end
@@ -0,0 +1,236 @@
1
+
2
+ class CabooseRets::ResidentialProperty < ActiveRecord::Base
3
+ self.table_name = "rets_residential"
4
+
5
+ def agent
6
+ return Agent.where(:la_code => self.la_code).first
7
+ end
8
+
9
+ def office
10
+ return Office.where(:lo_code => self.lo_code).first
11
+ end
12
+
13
+ def images
14
+ return Media.where(:mls_acct => self.id).order(:media_order).all
15
+ end
16
+
17
+ def self.geolocatable
18
+ all(conditions: "latitude IS NOT NULL AND longitude IS NOT NULL")
19
+ end
20
+
21
+ def parse(data)
22
+ self.bedrooms = data['BEDROOMS']
23
+ self.dom = data['DOM']
24
+ self.ftr_pool = data['FTR_POOL']
25
+ self.rm_other3_desc = data['RM_OTHER3_DESC']
26
+ self.baths_full = data['BATHS_FULL']
27
+ self.ftr_diningroom = data['FTR_DININGROOM']
28
+ self.ftr_porchpatio = data['FTR_PORCHPATIO']
29
+ self.rm_other3_name = data['RM_OTHER3_NAME']
30
+ self.baths_half = data['BATHS_HALF']
31
+ self.directions = data['DIRECTIONS']
32
+ self.ftr_possession = data['FTR_POSSESSION']
33
+ self.rm_other4 = data['RM_OTHER4']
34
+ self.baths = data['BATHS']
35
+ self.display_address_yn = data['DISPLAY_ADDRESS_YN']
36
+ self.current_price = data['CURRENT_PRICE']
37
+ self.rm_other4_desc = data['RM_OTHER4_DESC']
38
+ self.avm_automated_sales_disabled = data['AVM_AUTOMATED_SALES_DISABLED']
39
+ self.ftr_drive = data['FTR_DRIVE']
40
+ self.price_change_date = data['PRICE_CHANGE_DATE']
41
+ self.rm_other4_name = data['RM_OTHER4_NAME']
42
+ self.avm_instant_valuation_disabled = data['AVM_INSTANT_VALUATION_DISABLED']
43
+ self.elem_school = data['ELEM_SCHOOL']
44
+ self.price_sqft = data['PRICE_SQFT']
45
+ self.rm_recrm = data['RM_RECRM']
46
+ self.acreage = data['ACREAGE']
47
+ self.expire_date = data['EXPIRE_DATE']
48
+ self.prop_type = data['PROP_TYPE']
49
+ self.rm_recrm_desc = data['RM_RECRM_DESC']
50
+ self.ftr_age = data['FTR_AGE']
51
+ self.ftr_exterior = data['FTR_EXTERIOR']
52
+ self.rm_bath1 = data['RM_BATH1']
53
+ self.rm_study = data['RM_STUDY']
54
+ self.agent_notes = data['AGENT_NOTES']
55
+ self.ftr_citycommunit = data['FTR_CITYCOMMUNIT']
56
+ self.rm_bath1_desc = data['RM_BATH1_DESC']
57
+ self.rm_study_desc = data['RM_STUDY_DESC']
58
+ self.agent_other_contact_desc = data['AGENT_OTHER_CONTACT_DESC']
59
+ self.ftr_fireplace = data['FTR_FIREPLACE']
60
+ self.rm_bath2 = data['RM_BATH2']
61
+ self.rm_sun = data['RM_SUN']
62
+ self.agent_other_contact_phone = data['AGENT_OTHER_CONTACT_PHONE']
63
+ self.flood_plain = data['FLOOD_PLAIN']
64
+ self.rm_bath2_desc = data['RM_BATH2_DESC']
65
+ self.rm_sun_desc = data['RM_SUN_DESC']
66
+ self.annual_taxes = data['ANNUAL_TAXES']
67
+ self.foreclosure_yn = data['FORECLOSURE_YN']
68
+ self.rm_bath3 = data['RM_BATH3']
69
+ self.remarks = data['REMARKS']
70
+ self.internet_yn = data['INTERNET_YN']
71
+ self.georesult = data['GEORESULT']
72
+ self.rm_bath3_desc = data['RM_BATH3_DESC']
73
+ self.right_red_date = data['RIGHT_RED_DATE']
74
+ self.ftr_appliances = data['FTR_APPLIANCES']
75
+ self.ftr_garage = data['FTR_GARAGE']
76
+ self.rm_br1 = data['RM_BR1']
77
+ self.ftr_roof = data['FTR_ROOF']
78
+ self.tot_heat_sqft = data['TOT_HEAT_SQFT']
79
+ self.geo_precision = data['GEO_PRECISION']
80
+ self.rm_br1_desc = data['RM_BR1_DESC']
81
+ self.status_flag = data['STATUS_FLAG']
82
+ self.area = data['AREA']
83
+ self.ftr_hoaamenities = data['FTR_HOAAMENITIES']
84
+ self.rm_br2 = data['RM_BR2']
85
+ self.hoa_fee = data['HOA_FEE']
86
+ self.ftr_hoaincludes = data['FTR_HOAINCLUDES']
87
+ self.rm_br2_desc = data['RM_BR2_DESC']
88
+ self.sale_notes = data['SALE_NOTES']
89
+ self.hoa_term = data['HOA_TERM']
90
+ self.hoa_fee_yn = data['HOA_FEE_YN']
91
+ self.rm_br3 = data['RM_BR3']
92
+ self.ftr_terms = data['FTR_TERMS']
93
+ self.ftr_attic = data['FTR_ATTIC']
94
+ self.ftr_heating = data['FTR_HEATING']
95
+ self.rm_br3_desc = data['RM_BR3_DESC']
96
+ self.sale_lease = data['SALE_LEASE']
97
+ self.ftr_docs_on_file = data['FTR_DOCS_ON_FILE']
98
+ self.high_school = data['HIGH_SCHOOL']
99
+ self.rm_br4 = data['RM_BR4']
100
+ self.owner_name = data['OWNER_NAME']
101
+ self.bom_date = data['BOM_DATE']
102
+ self.homestead_yn = data['HOMESTEAD_YN']
103
+ self.rm_br4_desc = data['RM_BR4_DESC']
104
+ self.owner_phone = data['OWNER_PHONE']
105
+ self.basement_yn = data['BASEMENT_YN']
106
+ self.ftr_interior = data['FTR_INTERIOR']
107
+ self.rm_br5 = data['RM_BR5']
108
+ self.sa_code = data['SA_CODE']
109
+ self.ftr_basement = data['FTR_BASEMENT']
110
+ self.lease_exp_date = data['LEASE_EXP_DATE']
111
+ self.rm_br5_desc = data['RM_BR5_DESC']
112
+ self.so_code = data['SO_CODE']
113
+ self.book_number = data['BOOK_NUMBER']
114
+ self.ftr_landscaping = data['FTR_LANDSCAPING']
115
+ self.rm_brkfst = data['RM_BRKFST']
116
+ self.ftr_sewer = data['FTR_SEWER']
117
+ self.book_page = data['BOOK_PAGE']
118
+ self.ftr_laundry = data['FTR_LAUNDRY']
119
+ self.rm_brkfst_desc = data['RM_BRKFST_DESC']
120
+ self.ftr_showing = data['FTR_SHOWING']
121
+ self.book_type = data['BOOK_TYPE']
122
+ self.legals = data['LEGALS']
123
+ self.rm_den = data['RM_DEN']
124
+ self.sold_date = data['SOLD_DATE']
125
+ self.buyer_name = data['BUYER_NAME']
126
+ self.levels = data['LEVELS']
127
+ self.rm_den_desc = data['RM_DEN_DESC']
128
+ self.sold_price = data['SOLD_PRICE']
129
+ self.city_code = data['CITY_CODE']
130
+ self.list_price = data['LIST_PRICE']
131
+ self.rm_dining = data['RM_DINING']
132
+ self.sold_terms = data['SOLD_TERMS']
133
+ self.converted = data['CONVERTED']
134
+ self.list_date = data['LIST_DATE']
135
+ self.rm_dining_desc = data['RM_DINING_DESC']
136
+ self.sqft_source = data['SQFT_SOURCE']
137
+ self.currentlease_yn = data['CURRENTLEASE_YN']
138
+ self.status = data['STATUS']
139
+ self.rm_family = data['RM_FAMILY']
140
+ self.state = data['STATE']
141
+ self.category = data['CATEGORY']
142
+ self.listing_type = data['LISTING_TYPE']
143
+ self.rm_family_desc = data['RM_FAMILY_DESC']
144
+ self.street_dir = data['STREET_DIR']
145
+ self.city = data['CITY']
146
+ self.la_code = data['LA_CODE']
147
+ self.rm_foyer = data['RM_FOYER']
148
+ self.street_name = data['STREET_NAME']
149
+ self.co_la_code = data['CO_LA_CODE']
150
+ self.lo_code = data['LO_CODE']
151
+ self.rm_foyer_desc = data['RM_FOYER_DESC']
152
+ self.street_num = data['STREET_NUM']
153
+ self.co_lo_code = data['CO_LO_CODE']
154
+ self.ftr_lotdesc = data['FTR_LOTDESC']
155
+ self.rm_great = data['RM_GREAT']
156
+ self.style = data['STYLE']
157
+ self.co_so_code = data['CO_SO_CODE']
158
+ self.lot_dimensions = data['LOT_DIMENSIONS']
159
+ self.rm_great_desc = data['RM_GREAT_DESC']
160
+ self.subdivision = data['SUBDIVISION']
161
+ self.co_sa_code = data['CO_SA_CODE']
162
+ self.mls_acct = data['MLS_ACCT']
163
+ self.rm_kitchen = data['RM_KITCHEN']
164
+ self.take_photo_yn = data['TAKE_PHOTO_YN']
165
+ self.buyer_broker = data['BUYER_BROKER']
166
+ self.master_bed_lvl = data['MASTER_BED_LVL']
167
+ self.rm_kitchen2 = data['RM_KITCHEN2']
168
+ self.upload_source = data['UPLOAD_SOURCE']
169
+ self.buyer_broker_type = data['BUYER_BROKER_TYPE']
170
+ self.middle_school = data['MIDDLE_SCHOOL']
171
+ self.rm_kitchen2_desc = data['RM_KITCHEN2_DESC']
172
+ self.unit_num = data['UNIT_NUM']
173
+ self.sub_agent = data['SUB_AGENT']
174
+ self.ftr_miscellaneous = data['FTR_MISCELLANEOUS']
175
+ self.rm_kitchen_desc = data['RM_KITCHEN_DESC']
176
+ self.valuation_yn = data['VALUATION_YN']
177
+ self.sub_agent_type = data['SUB_AGENT_TYPE']
178
+ self.other_fee = data['OTHER_FEE']
179
+ self.rm_laundry = data['RM_LAUNDRY']
180
+ self.third_party_comm_yn = data['THIRD_PARTY_COMM_YN']
181
+ self.contr_broker = data['CONTR_BROKER']
182
+ self.off_mkt_date = data['OFF_MKT_DATE']
183
+ self.rm_laundry_desc = data['RM_LAUNDRY_DESC']
184
+ self.vt_yn = data['VT_YN']
185
+ self.contr_broker_type = data['CONTR_BROKER_TYPE']
186
+ self.off_mkt_days = data['OFF_MKT_DAYS']
187
+ self.rm_living = data['RM_LIVING']
188
+ self.ftr_warrantyprogrm = data['FTR_WARRANTYPROGRM']
189
+ self.construction_date_comp = data['CONSTRUCTION_DATE_COMP']
190
+ self.outlier_yn = data['OUTLIER_YN']
191
+ self.rm_living_desc = data['RM_LIVING_DESC']
192
+ self.wf_feet = data['WF_FEET']
193
+ self.ftr_construction = data['FTR_CONSTRUCTION']
194
+ self.office_notes = data['OFFICE_NOTES']
195
+ self.rm_lrdr = data['RM_LRDR']
196
+ self.ftr_waterheater = data['FTR_WATERHEATER']
197
+ self.construction_status = data['CONSTRUCTION_STATUS']
198
+ self.onsite_yn = data['ONSITE_YN']
199
+ self.rm_lrdr_desc = data['RM_LRDR_DESC']
200
+ self.ftr_watersupply = data['FTR_WATERSUPPLY']
201
+ self.contacts = data['CONTACTS']
202
+ self.onsite_days_hours = data['ONSITE_DAYS_HOURS']
203
+ self.rm_master = data['RM_MASTER']
204
+ self.waterfront = data['WATERFRONT']
205
+ self.ftr_cooling = data['FTR_COOLING']
206
+ self.orig_lp = data['ORIG_LP']
207
+ self.rm_master_desc = data['RM_MASTER_DESC']
208
+ self.ftr_window_treat = data['FTR_WINDOW_TREAT']
209
+ self.county = data['COUNTY']
210
+ self.other_fee_type = data['OTHER_FEE_TYPE']
211
+ self.rm_other1 = data['RM_OTHER1']
212
+ self.ftr_windows = data['FTR_WINDOWS']
213
+ self.df_yn = data['DF_YN']
214
+ self.photo_count = data['PHOTO_COUNT']
215
+ self.rm_other1_desc = data['RM_OTHER1_DESC']
216
+ self.year_built = data['YEAR_BUILT']
217
+ self.date_modified = data['DATE_MODIFIED']
218
+ self.photo_date_modified = data['PHOTO_DATE_MODIFIED']
219
+ self.rm_other1_name = data['RM_OTHER1_NAME']
220
+ self.year_built_source = data['YEAR_BUILT_SOURCE']
221
+ self.status_date = data['STATUS_DATE']
222
+ self.prop_id = data['PROP_ID']
223
+ self.rm_other2 = data['RM_OTHER2']
224
+ self.zip = data['ZIP']
225
+ self.date_created = data['DATE_CREATED']
226
+ self.parcel_id = data['PARCEL_ID']
227
+ self.rm_other2_desc = data['RM_OTHER2_DESC']
228
+ self.proj_close_date = data['PROJ_CLOSE_DATE']
229
+ self.pending_date = data['PENDING_DATE']
230
+ self.rm_other2_name = data['RM_OTHER2_NAME']
231
+ self.withdrawn_date = data['WITHDRAWN_DATE']
232
+ self.media_flag = data['MEDIA_FLAG']
233
+ self.rm_other3 = data['RM_OTHER3']
234
+ self.virtual_tour = data['VIRTUAL_TOUR']
235
+ end
236
+ end