caboose-rets 0.0.2

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.
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,44 @@
1
+ <h1>Residential Properties</h1>
2
+
3
+ <style type='text/css'>
4
+ #search_form_wrapper { margin-bottom: 10px; position: absolute; top:0; right: 0; }
5
+ </style>
6
+
7
+ <div id='search_form_wrapper'>
8
+ <form action='/admin/residential' method='get' id='search_form'>
9
+ <input type='text' name='mls_acct' placeholder='MLS #' value="<%= @gen.params['mls_acct'] %>" style='width: 100px;' />
10
+ <input type='submit' value='Search' />
11
+ </form>
12
+ </div>
13
+
14
+ <table class='data' id='properties_table'>
15
+ <tr>
16
+ <%= raw @gen.sortable_table_headings({
17
+ 'mls_acct' => 'MLS #',
18
+ 'street_num, street_name' => 'Address',
19
+ 'la_code' => 'Agent',
20
+ 'lo_code' => 'Office'
21
+ })
22
+ %>
23
+ </tr>
24
+ <% @properties.each do |p| %>
25
+ <% agent = p.agent %>
26
+ <% office = p.office %>
27
+ <tr onclick="window.location='/admin/residential/<%= p.mls_acct %>/edit';">
28
+ <td><%= raw p.mls_acct %></td>
29
+ <td><%= raw "#{p.street_num} #{p.street_name}, #{p.city}" %></td>
30
+ <td><%= p.agent ? "#{agent.first_name} #{agent.last_name}" : p.la_code %></td>
31
+ <td><%= p.office ? office.name : p.lo_code %></td>
32
+ </tr>
33
+ <% end %>
34
+ </table>
35
+
36
+ <p><%= raw @gen.generate %></p>
37
+
38
+ <% content_for :caboose_js do %>
39
+ <script type='text/javascript'>
40
+ $(document).ready(function() {
41
+ var modal = new CabooseModal(800);
42
+ });
43
+ </script>
44
+ <% end %>
@@ -0,0 +1,139 @@
1
+
2
+ <% content_for :caboose_css do %>
3
+ <style type="text/css">
4
+ #recaptcha_area, #recaptcha_table { width: auto !important; }
5
+ #recaptcha_image { width: 80% !important; }
6
+ #recaptcha_image img { width:80% !important; margin-left: -20%; padding: 0px; }
7
+ fieldset.captcha { width:100px !important; }
8
+ #recaptcha_container { margin: 0px; padding: 0px; width: 157px !important; }
9
+ input#recaptcha_response_field { padding: 0px; }
10
+ #recaptcha_widget_div { width: 150%; }
11
+ .realtor_info { background-color: white; padding: 10px; margin-bottom: 20px; text-align: center; border: 1px solid #d0d0d0;}
12
+ </style>
13
+ <% end %>
14
+
15
+ <% tiny_img = "https://s3.amazonaws.com/advantagerealtygroup.com/residential/#{@property.mls_acct}_%d_tiny.jpg" %>
16
+ <% large_img = "https://s3.amazonaws.com/advantagerealtygroup.com/residential/#{@property.mls_acct}_%d_large.jpg" %>
17
+
18
+ <div class="l-wrapper">
19
+ <div class="l-section">
20
+ <div class="l-sidebar-border inflate-tenor-baritone">
21
+ <div class="sidebar-aside">
22
+ <% if @agent %>
23
+ <div class="realtor_info">
24
+ <h4>Advantage Agent</h4>
25
+ <img src="https://s3.amazonaws.com/advantagerealtygroup.com/agents/<%= @agent.id %>_thumb.jpg?<%= DateTime.now.strftime('%F') %>" alt="<%= @agent.first_name %> <%= @agent.last_name %>" />
26
+ <br />
27
+ <a href="/agents/<%= @agent.la_code %>"><%= @agent.first_name %> <%= @agent.last_name %></a><br>
28
+ <a href="tel:<%= @agent.car_phone %>"><%= @agent.car_phone %></a>
29
+ </div>
30
+ <% end %>
31
+ <address class="h-type-h5">
32
+ <% if !@property.unit_num.nil? && @property.unit_num.strip.length > 0 %>Unit <%= @property.unit_num %>, <% end %>
33
+ <%= @property.street_num %> <%= @property.street_name.titleize %><br />
34
+ <%= @property.city.titleize %>, <%= @property.state %> <%= @property.zip %>
35
+ </address>
36
+ <p class="h-space-mvs h-type-highlight h-type-h4"> <%=h number_to_currency @property.current_price %>
37
+ <% if @property.foreclosure_yn == 'Y' %>
38
+ <br><span style='font-size: 0.8em; color: rgb(114, 114, 114);'>(Foreclosure)</span>
39
+ <% end %>
40
+ <!-- if @property.foreclosure_yn == 'Y' -->
41
+ </p>
42
+ <p class="h-space-mvs h-type-highlight h-type-h4">MLS #<%= @property.mls_acct %></p>
43
+
44
+ <% if @property.street_num && @property.street_name && @property.city && @property.state && @property.zip %>
45
+ <div class="m-map-small h-border h-space-mbm" address="<%= @property.street_num %> <%= @property.street_name %> <%= @property.city %>, <%= @property.state %> <%= @property.zip %>"></div>
46
+ <% end %>
47
+
48
+
49
+ <h4 class="h-space-mvt">Directions</h4>
50
+ <p class="paragraph"><%= @property.directions %></p>
51
+ <h4 class="h-space-mvt">Neighborhood Information</h4>
52
+
53
+ <ul class="m-list-pad">
54
+ <li><strong>Area</strong>: <%= @property.area.titleize %></li>
55
+ <% if @property.subdivision %><li><strong>Subdivision</strong>: <%= @property.subdivision.titleize %></li><% end %>
56
+ <% if @property.elem_school %><li><strong>Elementary School</strong>: <%= @property.elem_school.titleize %></li><% end %>
57
+ <% if @property.middle_school %><li><strong>Middle School</strong>: <%= @property.middle_school.titleize %></li><% end %>
58
+ <% if @property.high_school %><li><strong>High School</strong>: <%= @property.high_school.titleize %></li><% end %>
59
+ <li><strong>County</strong>: <%= @property.county.titleize %></li>
60
+ <li><strong>Lot Size</strong>: <%= @property.ftr_lotdesc %></li>
61
+ </ul>
62
+
63
+ <% if @agent %>
64
+ <h4 class="h-space-mvt">Contact <%= @agent.first_name %> <%= @agent.last_name %> </h4>
65
+ <% else %>
66
+ <h4 class="h-space-mvt">Contact Advantage</h4>
67
+ <% end %>
68
+
69
+ <%= form_for @message, :url => "/contact/create", :html => { :class => "m-form", :'accept-charset' => "utf-8", :method => "POST" } do |f| %>
70
+ <%= f.text_field :name, :placeholder => "Name", :value => "", :id => "contact_name", :maxlength => "150" %>
71
+ <%= f.text_field :email, :placeholder => "Email", :value => "", :id => "contact_addres", :maxlength => "150" %>
72
+ <%= f.text_area :body, :placeholder => "Message", :cols => "50", :rows => "4", :id => "contact_message", :class => "contact_message" %>
73
+ <p class="h-space-mvs"><%= recaptcha_tags %></p>
74
+ <input class="m-btn-red btn-large h-float-right h-space-mts" type="submit" value="Send" />
75
+ <% end %>
76
+
77
+ </div> <!-- .sidebar-aside -->
78
+
79
+ <div class="sidebar-body">
80
+
81
+ <div class="photos" style="text-align: center;">
82
+ <% if @property.photo_count.to_i >= 1 %>
83
+ <a class="photo" style="display: block; margin: 25px;" href="<%= large_img % 1 %>"><img src="<%= large_img % 1 %>"/></a>
84
+ <div style="display: block;">
85
+ <% (2..@property.photo_count.to_i).each do |i| %>
86
+ <% if i != 2 && (i - 2) % 8 == 0 %></div><div style="display: block;"><% end %>
87
+ <a class="photo" style="float: left; display: block; width: 12.5%; padding: 2px;" href="<%= large_img % i %>">
88
+ <img style="display: block; width: 100%;" src="<%= tiny_img % i %>"/>
89
+ </a>
90
+ <% end %>
91
+ </div>
92
+ <% end %>
93
+ </div>
94
+ <div style="clear: both;"></div><br />
95
+ <p class="paragraph"><%= @property.remarks %></p>
96
+ <h4 class="h-type-standard h-type-highlight h-type-caps h-space-mts">Property Details</h4>
97
+ <h5 class="h-type-standard">Single Family Home</h5>
98
+
99
+ <ul class="m-list-bullet h-space-mts">
100
+ <% if @property.price_sqft != "" %><li><strong>Price/Sq. Ft.</strong>: <span id='square_footage'><%=h number_to_currency @property.price_sqft %></span></li><% end %>
101
+ <% if @property.bedrooms != "" %><li><strong>Bedrooms</strong>: <%= @property.bedrooms %></li><% end %>
102
+ <% if @property.baths != "" %><li><strong>Baths</strong>: <%= @property.baths %> full <% if @property.baths_half != "" && @property.baths_half != "0" %> &amp; <%= @property.baths_half %> half baths<% end %></li><% end %>
103
+ <% if @property.acreage != "" %><li><strong>Acreage</strong>: <%= @property.acreage %></li><% end %>
104
+ </ul> <!-- .m-list-bullet -->
105
+ <h4 class="h-type-standard h-type-highlight h-type-caps h-space-mts">Features</h4>
106
+
107
+ <ul>
108
+ <% if @property.ftr_interior %><li><strong>Interior</strong>: <%= @property.ftr_interior %> </li><% end %>
109
+ <% if @property.ftr_cooling %><li><strong>Cooling</strong>: <%= @property.ftr_cooling %> </li><% end %>
110
+ <% if @property.ftr_heating %><li><strong>Heating</strong>: <%= @property.ftr_heating %> </li><% end %>
111
+ <% if @property.year_built %><li><strong>Year Built</strong>: <%= @property.year_built %> </li><% end %>
112
+ </ul>
113
+ <br>
114
+ <% if @property.virtual_tour %><a class="m-btn h-space-mtm" href='<%= @property.virtual_tour %>' target='_blank'>Virtual Tour</a><% end %>
115
+
116
+ <a data-pin-do="buttonPin" data-pin-config="beside" href="//pinterest.com/pin/create/button/?url=<%= request.original_url %>&amp;media=<%= large_img % 1 %>" ></a>
117
+ </div> <!-- .sidebar-body -->
118
+ </div> <!-- .l-sidebar -->
119
+ </div> <!-- .body-section -->
120
+ </div> <!-- .l-wrapper -->
121
+
122
+ <div class="body-sink"></div>
123
+
124
+ <% content_for :caboose_js do %>
125
+ <%= javascript_include_tag '//assets.pinterest.com/js/pinit.js' %>
126
+ <%= javascript_include_tag 'details_colorbox' %>
127
+ <script type="text/javascript">
128
+
129
+ if (document.contains('square_footage')) {
130
+ var str = document.getElementById('square_footage').innerHTML;
131
+ str = str.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
132
+ document.getElementById('square_footage').innerHTML = str;
133
+ }
134
+
135
+ <% if !flash[:notice].blank? %>
136
+ alert('<%= flash[:notice] %>');
137
+ <% end %>
138
+ </script>
139
+ <% end %>
@@ -0,0 +1,102 @@
1
+ <div class="l-wrapper">
2
+ <a class="m-btn h-space-mtm" href="/search/residential">Search Residential Listings</a>
3
+
4
+ <div class="l-sidebar-border inflate-tenor-baritone h-space-pvm">
5
+ <div class="sidebar-body l-grid-border">
6
+ <p></p>
7
+ <div class="l-grid inflate-baritone-bass listing">
8
+ <% if @properties.nil? || @properties == [] %>
9
+ <div class='no-results'>No results found</div>
10
+ <% else %>
11
+ <% @properties.each do |p| %>
12
+ <div class='grid-row'>
13
+ <div class='grid-unit-1of4 list-part' id='list1'>
14
+ <a href="/residential/<%= p.mls_acct %>/details"><img src='https://s3.amazonaws.com/advantagerealtygroup.com/residential/<%= p.mls_acct %>_1_thumb.jpg' width="400" /></a><br>
15
+ <div id='list-meta'>
16
+ <span class='address'><% if !p.unit_num.nil? && p.unit_num.strip.length > 0 %>Unit <%= p.unit_num %>, <% end %><%= p.street_num %> <%= p.street_name.titleize %></span><br> <!-- , {city}, {state} {zip} -->
17
+ <% if p.lo_code != '46' %>
18
+ <span class="nonadvantage_agent"><% if p.owner_name && p.office && p.office.name %>Listing Courtesy of <%= p.office.name.titleize %><% end %></span>
19
+ <% else %>
20
+ <span class="advantage_agent"><% if p.agent %>Listing Courtesy of <%= p.agent.first_name.titleize %> <%= p.agent.last_name.titleize %><% end %></span>
21
+ <% end %>
22
+ </div>
23
+ </div>
24
+
25
+ <div class='grid-unit-1of4 list-part' id='list2'>
26
+ <% if p.current_price != 0 %><span class='price'><%=h number_to_currency(p.current_price, :precision => 0) %></span><br><% end %>
27
+ <% if p.foreclosure_yn == 'Y' %> <span class='list-info' style='font-size: 0.8em;'>(Foreclosure)</span><br> <% end %>
28
+ <div class="info-meta">
29
+ <span class='list-info'>Sq. footage: <span class='sqfeet'> <%= p.tot_heat_sqft %></span></span> <br>
30
+ <span class='list-info'>Bedrooms: <%= p.bedrooms %></span> <br>
31
+ <span class='list-info'>Full baths: <%= p.baths_full %></span> <br>
32
+ <span class='list-info'>Half baths: <%= p.baths_half %></span> <br>
33
+ </div>
34
+ <span>MLS#: <%= p.mls_acct %></span>
35
+ </div>
36
+
37
+ <div class='grid-unit-1of4 list-part' id='list3'>
38
+ <div class="list-schools">
39
+ Schools:<br>
40
+ <span class="school"> Elementary - <%= p.elem_school.titleize %></span> <br>
41
+ <span class="school">Middle - <%= p.middle_school.titleize %></span> <br>
42
+ <span class="school">High - <%= p.high_school.titleize %></span> <br>
43
+ </div>
44
+ <div class='desc-container'>
45
+ <span class='description'><%= p.remarks %></span>
46
+ </div>
47
+ </div>
48
+
49
+ <div class='grid-unit-1of4 list-part' id='list4'>
50
+ <a href="/residential/<%= p.mls_acct %>/details" class="m-btn-ornate">
51
+ <div class="btn-inner see-more">MORE DETAILS</div>
52
+ </a>
53
+ <br>
54
+ <% if p.lo_code == '46' && p.agent %>
55
+ <a href="/agents/<%= p.la_code %>" class="m-btn-ornate">
56
+ <div class="btn-inner contact-btn">Contact <%= p.agent.first_name.titleize %> <%= p.agent.last_name.titleize %></div>
57
+ </a>
58
+ <% else %>
59
+ <a href="/agents/048540000" class="m-btn-ornate">
60
+ <div class="btn-inner contact-btn">Contact Advantage</div>
61
+ </a>
62
+ <% end %>
63
+ <br>
64
+ <% unless defined? p.virtual_tour && p.virtual_tour %>
65
+ <a href="<%= p.virtual_tour %>" class="m-btn-ornate">
66
+ <div class="btn-inner contact-btn">Take Virtual Tour</div>
67
+ </a>
68
+ <% end %>
69
+ </div>
70
+ </div>
71
+ <% end %>
72
+ <%= @gen.generate.html_safe %>
73
+ <% end %>
74
+ </div>
75
+ </div> <!-- .sidebar-body -->
76
+ </div> <!-- .l-sidebar -->
77
+ </div> <!-- .l-wrapper -->
78
+
79
+ <% content_for :caboose_js do %>
80
+ <script style="text/javascript">
81
+ function toTitleCase(str) {
82
+ return str.replace(/\w\S*/g, function(txt) {
83
+ if (txt != "of" && txt != "<br>") {
84
+ return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
85
+ } else {
86
+ return txt;
87
+ }
88
+ });
89
+ }
90
+ $.fn.digits = function() {
91
+ return this.each(function(){
92
+ $(this).text( $(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") );
93
+ })
94
+ }
95
+ $('.price').digits();
96
+ $('.sqfeet').digits();
97
+ //$.each( $(".advantage_agent"), function() { $(this).text( toTitleCase( $(this).text() ))});
98
+ //$.each( $(".contact-btn"), function() { $(this).text( toTitleCase( $(this).text() ))});
99
+ //$.each( $(".address"), function() { $(this).text( toTitleCase( $(this).text() ))});
100
+ //$.each( $(".school"), function() { $(this).text( toTitleCase( $(this).text() ))});
101
+ </script>
102
+ <% end %>
@@ -0,0 +1,15 @@
1
+ <div class="l-wrapper">
2
+ <div class="l-section">
3
+ <div class="l-sidebar-border inflate-tenor-baritone">
4
+ <div class="sidebar-body">
5
+
6
+ <h4 class="h-type-standard h-type-highlight h-type-caps">Sorry</h4>
7
+ <p>A property with MLS #<%= @mls_acct %> doesn't exist.</p>
8
+
9
+ </div> <!-- .sidebar-body -->
10
+ </div> <!-- .l-sidebar -->
11
+ </div> <!-- .body-section -->
12
+ </div> <!-- .l-wrapper -->
13
+
14
+ <div class="body-sink"></div>
15
+
@@ -0,0 +1,4 @@
1
+ <form action='/residential/test' method='post' enctype="multipart/form-data">
2
+ <input type='file' name='myimage' />
3
+ <input type='submit' value='Go' />
4
+ </form>
data/config/routes.rb ADDED
@@ -0,0 +1,87 @@
1
+ Caboose::Engine.routes.draw do
2
+
3
+ get "admin" => "admin#index"
4
+ put "admin/station" => "station#index_admin"
5
+ get "station" => "station#index"
6
+ get "station/plugin-count" => "station#plugin_count"
7
+
8
+ get "login" => "login#index"
9
+ post "login" => "login#login"
10
+ get "logout" => "logout#index"
11
+ get "register" => "register#index"
12
+ post "register" => "register#register"
13
+
14
+ get "admin/users" => "users#index"
15
+ get "admin/users/options" => "users#options"
16
+ get "admin/users/new" => "users#new"
17
+ get "admin/users/:id/edit-password" => "users#edit_password"
18
+ get "admin/users/:id/edit" => "users#edit"
19
+ put "admin/users/:id" => "users#update"
20
+ post "admin/users" => "users#create"
21
+ delete "admin/users/:id" => "users#destroy"
22
+
23
+ get "admin/roles" => "roles#index"
24
+ get "admin/roles/options" => "roles#options"
25
+ get "admin/roles/new" => "roles#new"
26
+ get "admin/roles/:id/edit" => "roles#edit"
27
+ put "admin/roles/:id" => "roles#update"
28
+ post "admin/roles" => "roles#create"
29
+ delete "admin/roles/:id" => "roles#destroy"
30
+
31
+ get "admin/permissions" => "permissions#index"
32
+ get "admin/permissions/options" => "permissions#options"
33
+ get "admin/permissions/new" => "permissions#new"
34
+ get "admin/permissions/:id/edit" => "permissions#edit"
35
+ put "admin/permissions/:id" => "permissions#update"
36
+ post "admin/permissions" => "permissions#create"
37
+ delete "admin/permissions/:id" => "permissions#destroy"
38
+
39
+ get "admin/settings" => "settings#index"
40
+ get "admin/settings/options" => "settings#options"
41
+ get "admin/settings/new" => "settings#new"
42
+ get "admin/settings/:id/edit" => "settings#edit"
43
+ put "admin/settings/:id" => "settings#update"
44
+ post "admin/settings" => "settings#create"
45
+ delete "admin/settings/:id" => "settings#destroy"
46
+
47
+ #get "pages" => "pages#index"
48
+ get "pages/:id" => "pages#show"
49
+ get "pages/:id/redirect" => "pages#redirect"
50
+ get "admin/pages/sitemap-options" => "pages#admin_sitemap_options"
51
+ get "admin/pages/robots-options" => "pages#admin_robots_options"
52
+ get "admin/pages/format-options" => "pages#admin_content_format_options"
53
+ get "admin/pages/new" => "pages#admin_new"
54
+ get "admin/pages/:id/uri" => "pages#admin_page_uri"
55
+ get "admin/pages/:id/delete" => "pages#admin_delete_form"
56
+ get "admin/pages/:id/sitemap" => "pages#admin_sitemap"
57
+ get "admin/pages/:id/edit" => "pages#admin_edit_general"
58
+ get "admin/pages/:id/css" => "pages#admin_edit_css"
59
+ get "admin/pages/:id/js" => "pages#admin_edit_js"
60
+ get "admin/pages/:id/seo" => "pages#admin_edit_seo"
61
+ get "admin/pages/:id/content" => "pages#admin_edit_content"
62
+ put "admin/pages/:id" => "pages#admin_update"
63
+ get "admin/pages" => "pages#admin_index"
64
+ post "admin/pages" => "pages#admin_create"
65
+ delete "admin/pages/:id" => "pages#admin_delete"
66
+
67
+ get "posts" => "posts#index"
68
+ get "posts/:id" => "posts#detail"
69
+ get "admin/posts/category-options" => "posts#admin_category_options"
70
+ get "admin/posts/new" => "posts#admin_new"
71
+ get "admin/posts/:id/delete" => "posts#admin_delete_form"
72
+ get "admin/posts/:id/edit" => "posts#admin_edit_general"
73
+ get "admin/posts/:id/content" => "posts#admin_edit_content"
74
+ get "admin/posts/:id/categories" => "posts#admin_edit_categories"
75
+ get "admin/posts/:id/add-to-category" => "posts#admin_add_to_category"
76
+ get "admin/posts/:id/remove-from-category" => "posts#admin_remove_from_category"
77
+ get "admin/posts/:id/delete" => "posts#admin_delete_form"
78
+ put "admin/posts/:id" => "posts#admin_update"
79
+ post "admin/posts/:id" => "posts#admin_update"
80
+ get "admin/posts" => "posts#admin_index"
81
+ post "admin/posts" => "posts#admin_add"
82
+ delete "admin/posts/:id" => "posts#admin_delete"
83
+
84
+ match '*path' => 'pages#show'
85
+ root :to => 'pages#show'
86
+
87
+ end
@@ -0,0 +1,4 @@
1
+ require "caboose_rets/engine"
2
+
3
+ module CabooseRets
4
+ end
@@ -0,0 +1,2 @@
1
+ class CabooseRetsHelper
2
+ end
@@ -0,0 +1,7 @@
1
+ require 'caboose'
2
+
3
+ module CabooseRets
4
+ class Engine < ::Rails::Engine
5
+ isolate_namespace CabooseRets
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module CabooseRets
2
+ VERSION = '0.0.2'
3
+ end
@@ -0,0 +1,855 @@
1
+ require "caboose_rets/version"
2
+
3
+ namespace :caboose_rets do
4
+
5
+ desc "Initialize RETS database"
6
+ task :init_db => :environment do
7
+ c = ActiveRecord::Base.connection
8
+ create_agents(c)
9
+ create_offices(c)
10
+ create_media(c)
11
+ create_open_houses(c)
12
+ create_residential(c)
13
+ create_commercial(c)
14
+ create_land(c)
15
+ create_multi_family(c)
16
+ end
17
+
18
+ def create_agents(c)
19
+ c.drop_table :rets_agents if c.table_exists?('rets_agents')
20
+ c.create_table :rets_agents do |t|
21
+ t.string :beeper_phone
22
+ t.string :last_name
23
+ t.string :member_email
24
+ t.string :phone_home_fax
25
+ t.string :car_phone
26
+ t.string :la_code
27
+ t.string :member_page
28
+ t.string :phone_pager
29
+ t.string :date_created
30
+ t.string :lo_code
31
+ t.string :member_status
32
+ t.string :phone_second_home
33
+ t.string :date_modified
34
+ t.string :mail_addr1
35
+ t.string :nrds_id
36
+ t.string :phone_toll_free
37
+ t.string :defaultemail
38
+ t.string :mail_addr2
39
+ t.string :office_phone
40
+ t.string :phone_voice_mail
41
+ t.string :fax_phone
42
+ t.string :mail_city
43
+ t.string :other_phone
44
+ t.string :phone_voice_pager
45
+ t.string :first_name
46
+ t.string :mail_state
47
+ t.string :phone_change_date
48
+ t.string :photo_count
49
+ t.string :home_phone
50
+ t.string :mail_zip
51
+ t.string :phone_direct_office
52
+ t.string :photo_date_modified
53
+
54
+ t.boolean :hide, :default => false
55
+ t.text :bio
56
+ t.text :contact_info
57
+ t.string :assistant_to
58
+ end
59
+ c.add_attachment :rets_agents, :image
60
+ end
61
+
62
+ def create_offices(c)
63
+ c.drop_table :rets_offices if c.table_exists?('rets_offices')
64
+ c.create_table :rets_offices do |t|
65
+ t.string :lo_date_created
66
+ t.string :lo_date_modified
67
+ t.string :lo_email
68
+ t.string :lo_fax_phone
69
+ t.string :lo_idx_yn
70
+ t.string :lo_lo_code
71
+ t.string :lo_mailaddr1
72
+ t.string :lo_mailaddr2
73
+ t.string :lo_mailcity
74
+ t.string :lo_mailstate
75
+ t.string :lo_mailzip
76
+ t.string :lo_main_lo_code
77
+ t.string :lo_name
78
+ t.string :lo_other_phone
79
+ t.string :lo_page
80
+ t.string :lo_phone
81
+ t.string :lo_status
82
+ t.string :photo_count
83
+ t.string :photo_date_modified
84
+ end
85
+ end
86
+
87
+ def create_media(c)
88
+ c.drop_table :rets_media if c.table_exists?('rets_media')
89
+ c.create_table :rets_media do |t|
90
+ t.string :date_modified
91
+ t.string :file_name
92
+ t.string :media_id
93
+ t.string :media_order
94
+ t.string :media_remarks
95
+ t.string :media_type
96
+ t.string :mls_acct
97
+ t.text :url
98
+ end
99
+ c.add_attachment :rets_media, :image
100
+ end
101
+
102
+ def create_open_houses(c)
103
+ c.drop_table :rets_open_houses if c.table_exists?('rets_open_houses')
104
+ c.create_table :rets_open_houses do |t|
105
+ #t.string :id
106
+ t.string :comments
107
+ t.string :date_created
108
+ t.string :date_modified
109
+ t.string :end_time
110
+ t.string :la_code
111
+ t.string :mls_acct
112
+ t.string :open_house_date
113
+ t.string :open_house_type
114
+ t.string :perpetual_yn
115
+ t.string :prop_type
116
+ t.string :start_time
117
+ end
118
+ end
119
+
120
+ def create_residential(c)
121
+ c.drop_table :rets_residential if c.table_exists?('rets_residential')
122
+ c.create_table :rets_residential do |t|
123
+ t.text :bedrooms
124
+ t.text :dom
125
+ t.text :ftr_pool
126
+ t.text :rm_other3_desc
127
+ t.text :baths_full
128
+ t.text :ftr_diningroom
129
+ t.text :ftr_porchpatio
130
+ t.text :rm_other3_name
131
+ t.text :baths_half
132
+ t.text :directions
133
+ t.text :ftr_possession
134
+ t.text :rm_other4
135
+ t.text :baths
136
+ t.text :display_address_yn
137
+ t.integer :current_price, :default => 0
138
+ t.text :rm_other4_desc
139
+ t.text :avm_automated_sales_disabled
140
+ t.text :ftr_drive
141
+ t.text :price_change_date
142
+ t.text :rm_other4_name
143
+ t.text :avm_instant_valuation_disabled
144
+ t.text :elem_school
145
+ t.text :price_sqft
146
+ t.text :rm_recrm
147
+ t.text :acreage
148
+ t.text :expire_date
149
+ t.text :prop_type
150
+ t.text :rm_recrm_desc
151
+ t.text :ftr_age
152
+ t.text :ftr_exterior
153
+ t.text :rm_bath1
154
+ t.text :rm_study
155
+ t.text :agent_notes
156
+ t.text :ftr_citycommunit
157
+ t.text :rm_bath1_desc
158
+ t.text :rm_study_desc
159
+ t.text :agent_other_contact_desc
160
+ t.text :ftr_fireplace
161
+ t.text :rm_bath2
162
+ t.text :rm_sun
163
+ t.text :agent_other_contact_phone
164
+ t.text :flood_plain
165
+ t.text :rm_bath2_desc
166
+ t.text :rm_sun_desc
167
+ t.text :annual_taxes
168
+ t.text :foreclosure_yn
169
+ t.text :rm_bath3
170
+ t.text :remarks
171
+ t.text :internet_yn
172
+ t.text :georesult
173
+ t.text :rm_bath3_desc
174
+ t.text :right_red_date
175
+ t.text :ftr_appliances
176
+ t.text :ftr_garage
177
+ t.text :rm_br1
178
+ t.text :ftr_roof
179
+ t.text :tot_heat_sqft
180
+ t.text :geo_precision
181
+ t.text :rm_br1_desc
182
+ t.text :status_flag
183
+ t.text :area
184
+ t.text :ftr_hoaamenities
185
+ t.text :rm_br2
186
+ t.text :hoa_fee
187
+ t.text :ftr_hoaincludes
188
+ t.text :rm_br2_desc
189
+ t.text :sale_notes
190
+ t.text :hoa_term
191
+ t.text :hoa_fee_yn
192
+ t.text :rm_br3
193
+ t.text :ftr_terms
194
+ t.text :ftr_attic
195
+ t.text :ftr_heating
196
+ t.text :rm_br3_desc
197
+ t.text :sale_lease
198
+ t.text :ftr_docs_on_file
199
+ t.text :high_school
200
+ t.text :rm_br4
201
+ t.text :owner_name
202
+ t.text :bom_date
203
+ t.text :homestead_yn
204
+ t.text :rm_br4_desc
205
+ t.text :owner_phone
206
+ t.text :basement_yn
207
+ t.text :ftr_interior
208
+ t.text :rm_br5
209
+ t.text :sa_code
210
+ t.text :ftr_basement
211
+ t.text :lease_exp_date
212
+ t.text :rm_br5_desc
213
+ t.text :so_code
214
+ t.text :book_number
215
+ t.text :ftr_landscaping
216
+ t.text :rm_brkfst
217
+ t.text :ftr_sewer
218
+ t.text :book_page
219
+ t.text :ftr_laundry
220
+ t.text :rm_brkfst_desc
221
+ t.text :ftr_showing
222
+ t.text :book_type
223
+ t.text :legals
224
+ t.text :rm_den
225
+ t.text :sold_date
226
+ t.text :buyer_name
227
+ t.text :levels
228
+ t.text :rm_den_desc
229
+ t.text :sold_price
230
+ t.text :city_code
231
+ t.text :list_price
232
+ t.text :rm_dining
233
+ t.text :sold_terms
234
+ t.text :converted
235
+ t.text :list_date
236
+ t.text :rm_dining_desc
237
+ t.text :sqft_source
238
+ t.text :currentlease_yn
239
+ t.text :status
240
+ t.text :rm_family
241
+ t.text :state
242
+ t.text :category
243
+ t.text :listing_type
244
+ t.text :rm_family_desc
245
+ t.text :street_dir
246
+ t.text :city
247
+ t.text :la_code
248
+ t.text :rm_foyer
249
+ t.text :street_name
250
+ t.text :co_la_code
251
+ t.text :lo_code
252
+ t.text :rm_foyer_desc
253
+ t.text :street_num
254
+ t.text :co_lo_code
255
+ t.text :ftr_lotdesc
256
+ t.text :rm_great
257
+ t.text :style
258
+ t.text :co_so_code
259
+ t.text :lot_dimensions
260
+ t.text :rm_great_desc
261
+ t.text :subdivision
262
+ t.text :co_sa_code
263
+ t.text :mls_acct
264
+ t.text :rm_kitchen
265
+ t.text :take_photo_yn
266
+ t.text :buyer_broker
267
+ t.text :master_bed_lvl
268
+ t.text :rm_kitchen2
269
+ t.text :upload_source
270
+ t.text :buyer_broker_type
271
+ t.text :middle_school
272
+ t.text :rm_kitchen2_desc
273
+ t.text :unit_num
274
+ t.text :sub_agent
275
+ t.text :ftr_miscellaneous
276
+ t.text :rm_kitchen_desc
277
+ t.text :valuation_yn
278
+ t.text :sub_agent_type
279
+ t.text :other_fee
280
+ t.text :rm_laundry
281
+ t.text :third_party_comm_yn
282
+ t.text :contr_broker
283
+ t.text :off_mkt_date
284
+ t.text :rm_laundry_desc
285
+ t.text :vt_yn
286
+ t.text :contr_broker_type
287
+ t.text :off_mkt_days
288
+ t.text :rm_living
289
+ t.text :ftr_warrantyprogrm
290
+ t.text :construction_date_comp
291
+ t.text :outlier_yn
292
+ t.text :rm_living_desc
293
+ t.text :wf_feet
294
+ t.text :ftr_construction
295
+ t.text :office_notes
296
+ t.text :rm_lrdr
297
+ t.text :ftr_waterheater
298
+ t.text :construction_status
299
+ t.text :onsite_yn
300
+ t.text :rm_lrdr_desc
301
+ t.text :ftr_watersupply
302
+ t.text :contacts
303
+ t.text :onsite_days_hours
304
+ t.text :rm_master
305
+ t.text :waterfront
306
+ t.text :ftr_cooling
307
+ t.text :orig_lp
308
+ t.text :rm_master_desc
309
+ t.text :ftr_window_treat
310
+ t.text :county
311
+ t.text :other_fee_type
312
+ t.text :rm_other1
313
+ t.text :ftr_windows
314
+ t.text :df_yn
315
+ t.text :photo_count
316
+ t.text :rm_other1_desc
317
+ t.text :year_built
318
+ t.text :date_modified
319
+ t.text :photo_date_modified
320
+ t.text :rm_other1_name
321
+ t.text :year_built_source
322
+ t.text :status_date
323
+ t.text :prop_id
324
+ t.text :rm_other2
325
+ t.text :zip
326
+ t.text :date_created
327
+ t.text :parcel_id
328
+ t.text :rm_other2_desc
329
+ t.text :proj_close_date
330
+ t.text :pending_date
331
+ t.text :rm_other2_name
332
+ t.text :withdrawn_date
333
+ t.text :media_flag
334
+ t.text :rm_other3
335
+ t.text :virtual_tour
336
+
337
+ t.float :latitude
338
+ t.float :longitude
339
+ end
340
+ end
341
+
342
+ def create_commercial(c)
343
+ c.drop_table :rets_commercial if c.table_exists?('rets_commercial')
344
+ c.create_table :rets_commercial do |t|
345
+ t.text :acreage
346
+ t.text :adjoining_land_use
347
+ t.text :agent_notes
348
+ t.text :agent_other_contact_desc
349
+ t.text :agent_other_contact_phone
350
+ t.text :annual_taxes
351
+ t.text :approx_age
352
+ t.text :area
353
+ t.text :baths
354
+ t.text :baths_full
355
+ t.text :baths_half
356
+ t.text :bedrooms
357
+ t.text :bom_date
358
+ t.text :book_number
359
+ t.text :book_page
360
+ t.text :book_type
361
+ t.text :box_on_unit
362
+ t.text :box_on_unit_yn
363
+ t.text :business_included_yn
364
+ t.text :buyer_broker
365
+ t.text :buyer_broker_type
366
+ t.text :buyer_city
367
+ t.text :buyer_name
368
+ t.text :buyer_state
369
+ t.text :buyer_zip
370
+ t.text :category
371
+ t.text :city
372
+ t.text :city_code
373
+ t.text :co_la_code
374
+ t.text :co_lo_code
375
+ t.text :co_sa_code
376
+ t.text :co_so_code
377
+ t.text :contacts
378
+ t.text :contr_broker
379
+ t.text :contr_broker_type
380
+ t.text :county
381
+ t.integer :current_price, :default => 0
382
+ t.text :date_created
383
+ t.text :date_leased
384
+ t.text :date_modified
385
+ t.text :df_yn
386
+ t.text :directions
387
+ t.text :display_address_yn
388
+ t.text :dom
389
+ t.text :elem_school
390
+ t.text :expenses_assoc
391
+ t.text :expenses_ins
392
+ t.text :expenses_maint
393
+ t.text :expenses_mgmt
394
+ t.text :expenses_other
395
+ t.text :expenses_tax
396
+ t.text :expenses_utility
397
+ t.text :expire_date
398
+ t.text :flood_plain
399
+ t.text :ftr_building
400
+ t.text :ftr_building_type
401
+ t.text :ftr_closing
402
+ t.text :ftr_cooling
403
+ t.text :ftr_docs_on_file
404
+ t.text :ftr_exterior
405
+ t.text :ftr_financing
406
+ t.text :ftr_flooring
407
+ t.text :ftr_heating
408
+ t.text :ftr_interior
409
+ t.text :ftr_internet
410
+ t.text :ftr_lease_terms
411
+ t.text :ftr_property_desc
412
+ t.text :ftr_roof
413
+ t.text :ftr_sale_terms
414
+ t.text :ftr_sewer
415
+ t.text :ftr_showing
416
+ t.text :ftr_sprinkler
417
+ t.text :ftr_style
418
+ t.text :ftr_utilities
419
+ t.text :ftr_utilities_rental
420
+ t.text :ftr_water
421
+ t.text :geo_precision
422
+ t.text :georesult
423
+ t.text :high_school
424
+ t.text :hoa_fee
425
+ t.text :hoa_fee_yn
426
+ t.text :hoa_term
427
+ t.text :income_gross
428
+ t.text :income_net
429
+ t.text :income_other
430
+ t.text :income_rental
431
+ t.text :internet_yn
432
+ t.text :la_code
433
+ t.text :leased_through
434
+ t.text :legal_block
435
+ t.text :legal_lot
436
+ t.text :legals
437
+ t.text :list_date
438
+ t.text :list_price
439
+ t.text :listing_type
440
+ t.text :lo_code
441
+ t.text :lockbox_yn
442
+ t.text :lot_dimensions
443
+ t.text :lot_dimensions_source
444
+ t.text :media_flag
445
+ t.text :middle_school
446
+ t.text :mls_acct
447
+ t.text :municipality
448
+ t.text :num_units
449
+ t.text :num_units_occupied
450
+ t.text :off_mkt_date
451
+ t.text :off_mkt_days
452
+ t.text :office_notes
453
+ t.text :orig_lp
454
+ t.text :other_fee
455
+ t.text :other_fee_type
456
+ t.text :owner_name
457
+ t.text :owner_phone
458
+ t.text :parcel_id
459
+ t.text :pending_date
460
+ t.text :photo_count
461
+ t.text :photo_date_modified
462
+ t.text :photo_description
463
+ t.text :photo_instr
464
+ t.text :posession
465
+ t.text :price_change_date
466
+ t.text :price_sqft
467
+ t.text :proj_close_date
468
+ t.text :prop_desc
469
+ t.text :prop_id
470
+ t.text :prop_type
471
+ t.text :remarks
472
+ t.text :road_frontage_ft
473
+ t.text :sa_code
474
+ t.text :sale_lease
475
+ t.text :sale_notes
476
+ t.text :so_code
477
+ t.text :sold_date
478
+ t.text :sold_price
479
+ t.text :sold_terms
480
+ t.text :sqft_source
481
+ t.text :state
482
+ t.text :status
483
+ t.text :status_date
484
+ t.text :status_flag
485
+ t.text :street
486
+ t.text :street_dir
487
+ t.text :street_name
488
+ t.text :street_num
489
+ t.text :sub_agent
490
+ t.text :sub_agent_type
491
+ t.text :sub_area
492
+ t.text :subdivision
493
+ t.text :take_photo_yn
494
+ t.text :third_party_comm_yn
495
+ t.text :tot_heat_sqft
496
+ t.text :tour_date
497
+ t.text :tour_submit_date
498
+ t.text :type_detailed
499
+ t.text :u1_dims
500
+ t.text :u1_free_standing_yn
501
+ t.text :u1_sqft_manuf
502
+ t.text :u1_sqft_office
503
+ t.text :u1_sqft_retail
504
+ t.text :u1_sqft_total
505
+ t.text :u1_sqft_warehouse
506
+ t.text :u1_year_built
507
+ t.text :u2_dims
508
+ t.text :u2_free_standing_yn
509
+ t.text :u2_sqft_manuf
510
+ t.text :u2_sqft_office
511
+ t.text :u2_sqft_retail
512
+ t.text :u2_sqft_total
513
+ t.text :u2_sqft_warehouse
514
+ t.text :u2_year_built
515
+ t.text :u3_dims
516
+ t.text :u3_free_standing_yn
517
+ t.text :u3_sqft_manuf
518
+ t.text :u3_sqft_office
519
+ t.text :u3_sqft_retail
520
+ t.text :u3_sqft_total
521
+ t.text :u3_sqft_warehouse
522
+ t.text :u3_year_built
523
+ t.text :unit_num
524
+ t.text :upload_source
525
+ t.text :vacancy_rate
526
+ t.text :vacant_yn
527
+ t.text :valuation_yn
528
+ t.text :vt_yn
529
+ t.text :waterfront_yn
530
+ t.text :withdrawn_date
531
+ t.text :year_built
532
+ t.text :zip
533
+ t.text :zoning_northport
534
+ t.text :zoning_tusc
535
+ t.text :virtual_tour
536
+
537
+ t.float :latitude
538
+ t.float :longitude
539
+ end
540
+ end
541
+
542
+ def create_land(c)
543
+ c.drop_table :rets_land if c.table_exists?('rets_land')
544
+ c.create_table :rets_land do |t|
545
+ t.text :acreage
546
+ t.text :acreage_source
547
+ t.text :adjoining_land_use
548
+ t.text :agent_notes
549
+ t.text :agent_other_contact_desc
550
+ t.text :agent_other_contact_phone
551
+ t.text :annual_taxes
552
+ t.text :area
553
+ t.text :bom_date
554
+ t.text :book_number
555
+ t.text :book_page
556
+ t.text :book_type
557
+ t.text :buyer_broker
558
+ t.text :buyer_broker_type
559
+ t.text :buyer_name
560
+ t.text :category
561
+ t.text :city
562
+ t.text :city_code
563
+ t.text :co_la_code
564
+ t.text :co_lo_code
565
+ t.text :co_sa_code
566
+ t.text :co_so_code
567
+ t.text :contacts
568
+ t.text :contr_broker
569
+ t.text :contr_broker_type
570
+ t.text :converted
571
+ t.text :county
572
+ t.integer :current_price, :default => 0
573
+ t.text :date_created
574
+ t.text :date_modified
575
+ t.text :df_yn
576
+ t.text :directions
577
+ t.text :display_address_yn
578
+ t.text :dom
579
+ t.text :elem_school
580
+ t.text :expire_date
581
+ t.text :ftr_access
582
+ t.text :ftr_docs_on_file
583
+ t.text :ftr_existing_struct
584
+ t.text :ftr_extras
585
+ t.text :ftr_internet
586
+ t.text :ftr_lotdesc
587
+ t.text :ftr_mineralrights
588
+ t.text :ftr_possibleuse
589
+ t.text :ftr_restrictions
590
+ t.text :ftr_sewer
591
+ t.text :ftr_showing
592
+ t.text :ftr_terms
593
+ t.text :ftr_topography
594
+ t.text :ftr_utils
595
+ t.text :ftr_zoning
596
+ t.text :geo_precision
597
+ t.text :georesult
598
+ t.text :high_school
599
+ t.text :internet_yn
600
+ t.text :la_code
601
+ t.text :legal_block
602
+ t.text :legal_lot
603
+ t.text :legal_section
604
+ t.text :legals
605
+ t.text :list_date
606
+ t.text :list_price
607
+ t.text :listing_type
608
+ t.text :lo_code
609
+ t.text :lot_dim_source
610
+ t.text :lot_dimensions
611
+ t.text :media_flag
612
+ t.text :middle_school
613
+ t.text :mls_acct
614
+ t.text :municipality
615
+ t.text :off_mkt_date
616
+ t.text :off_mkt_days
617
+ t.text :office_notes
618
+ t.text :orig_lp
619
+ t.text :orig_price
620
+ t.text :other_fee
621
+ t.text :other_fee_type
622
+ t.text :owner_name
623
+ t.text :owner_phone
624
+ t.text :parcel_id
625
+ t.text :pending_date
626
+ t.text :photo_count
627
+ t.text :photo_date_modified
628
+ t.text :price_change_date
629
+ t.text :price_sqft
630
+ t.text :proj_close_date
631
+ t.text :prop_id
632
+ t.text :prop_type
633
+ t.text :remarks
634
+ t.text :road_frontage_ft
635
+ t.text :sa_code
636
+ t.text :sale_lease
637
+ t.text :sale_notes
638
+ t.text :so_code
639
+ t.text :sold_date
640
+ t.text :sold_price
641
+ t.text :sold_terms
642
+ t.text :state
643
+ t.text :status
644
+ t.text :status_date
645
+ t.text :status_flag
646
+ t.text :street
647
+ t.text :street_dir
648
+ t.text :street_name
649
+ t.text :street_num
650
+ t.text :sub_agent
651
+ t.text :sub_agent_type
652
+ t.text :subdivision
653
+ t.text :third_party_comm_yn
654
+ t.text :unit_num
655
+ t.text :upload_source
656
+ t.text :valuation_yn
657
+ t.text :vt_yn
658
+ t.text :waterfront
659
+ t.text :waterfront_yn
660
+ t.text :wf_feet
661
+ t.text :withdrawn_date
662
+ t.text :zip
663
+ t.text :zoning_northport
664
+ t.text :zoning_tusc
665
+
666
+ t.float :latitude
667
+ t.float :longitude
668
+ end
669
+ end
670
+
671
+ def create_multi_family(c)
672
+ c.drop_table :rets_multi_family if c.table_exists?('rets_multi_family')
673
+ c.create_table :rets_multi_family do |t|
674
+ t.text :acreage
675
+ t.text :agent_notes
676
+ t.text :agent_other_contact_desc
677
+ t.text :agent_other_contact_phone
678
+ t.text :annual_taxes
679
+ t.text :area
680
+ t.text :bom_date
681
+ t.text :book_number
682
+ t.text :book_page
683
+ t.text :book_type
684
+ t.text :box_on_unit
685
+ t.text :buyer_broker
686
+ t.text :buyer_broker_type
687
+ t.text :buyer_name
688
+ t.text :category
689
+ t.text :city
690
+ t.text :city_code
691
+ t.text :contacts
692
+ t.text :contr_broker
693
+ t.text :contr_broker_type
694
+ t.text :county
695
+ t.text :co_la_code
696
+ t.text :co_lo_code
697
+ t.text :co_sa_code
698
+ t.text :co_so_code
699
+ t.integer :current_price
700
+ t.text :date_created
701
+ t.text :date_leased
702
+ t.text :date_modified
703
+ t.text :df_yn
704
+ t.text :directions
705
+ t.text :display_address_yn
706
+ t.text :dom
707
+ t.text :elem_school
708
+ t.text :expenses_association
709
+ t.text :expenses_insurance
710
+ t.text :expenses_maintenance
711
+ t.text :expenses_management
712
+ t.text :expenses_other
713
+ t.text :expenses_tax
714
+ t.text :expire_date
715
+ t.text :flood_plain
716
+ t.text :ftr_building_type
717
+ t.text :ftr_construction
718
+ t.text :ftr_cooling
719
+ t.text :ftr_exterior
720
+ t.text :ftr_exterioramenit
721
+ t.text :ftr_floors
722
+ t.text :ftr_heating
723
+ t.text :ftr_interior
724
+ t.text :ftr_rent_incl
725
+ t.text :ftr_roof
726
+ t.text :ftr_roof_age
727
+ t.text :ftr_showing
728
+ t.text :ftr_utils
729
+ t.text :ftr_zoning
730
+ t.text :georesult
731
+ t.text :geo_precision
732
+ t.text :high_school
733
+ t.text :hoa_fee
734
+ t.text :hoa_fee_yn
735
+ t.text :hoa_term
736
+ t.text :income
737
+ t.text :income_other
738
+ t.text :income_rent
739
+ t.text :internet_yn
740
+ t.text :la_code
741
+ t.text :legals
742
+ t.text :limited_service_yn
743
+ t.text :listing_type
744
+ t.text :list_date
745
+ t.text :list_price
746
+ t.text :lot_dimensions
747
+ t.text :lot_dimensions_source
748
+ t.text :lo_code
749
+ t.text :management
750
+ t.text :media_flag
751
+ t.text :middle_school
752
+ t.text :mls_acct
753
+ t.text :municipality
754
+ t.text :num_units
755
+ t.text :num_units_occupied
756
+ t.text :office_notes
757
+ t.text :off_mkt_date
758
+ t.text :off_mkt_days
759
+ t.text :orig_lp
760
+ t.text :orig_price
761
+ t.text :other_fee
762
+ t.text :other_fee_type
763
+ t.text :owner_name
764
+ t.text :owner_phone
765
+ t.text :parcel_id
766
+ t.text :pending_date
767
+ t.text :photo_count
768
+ t.text :photo_date_modified
769
+ t.text :price_change_date
770
+ t.text :price_sqft
771
+ t.text :proj_close_date
772
+ t.text :prop_id
773
+ t.text :prop_type
774
+ t.text :remarks
775
+ t.text :sale_notes
776
+ t.text :sale_rent
777
+ t.text :sa_code
778
+ t.text :sold_date
779
+ t.text :sold_price
780
+ t.text :sold_terms
781
+ t.text :so_code
782
+ t.text :state
783
+ t.text :status
784
+ t.text :status_date
785
+ t.text :status_flag
786
+ t.text :street
787
+ t.text :street_dir
788
+ t.text :street_name
789
+ t.text :street_num
790
+ t.text :subdivision
791
+ t.text :sub_agent
792
+ t.text :sub_agent_type
793
+ t.text :third_party_comm_yn
794
+ t.text :tot_heat_sqft
795
+ t.text :u1_baths
796
+ t.text :u1_num
797
+ t.text :u1_occ
798
+ t.text :u1_rent
799
+ t.text :u1_sqft
800
+ t.text :u1_yn
801
+ t.text :u2_baths
802
+ t.text :u2_num
803
+ t.text :u2_occ
804
+ t.text :u2_rent
805
+ t.text :u2_sqft
806
+ t.text :u2_yn
807
+ t.text :u3_baths
808
+ t.text :u3_num
809
+ t.text :u3_occ
810
+ t.text :u3_rent
811
+ t.text :u3_sqft
812
+ t.text :u3_yn
813
+ t.text :u4_baths
814
+ t.text :u4_num
815
+ t.text :u4_occ
816
+ t.text :u4_rent
817
+ t.text :u4_sqft
818
+ t.text :u4_yn
819
+ t.text :u5_baths
820
+ t.text :u5_num
821
+ t.text :u5_occ
822
+ t.text :u5_rent
823
+ t.text :u5_sqft
824
+ t.text :u5_yn
825
+ t.text :u6_baths
826
+ t.text :u6_num
827
+ t.text :u6_occ
828
+ t.text :u6_rent
829
+ t.text :u6_sqft
830
+ t.text :u6_yn
831
+ t.text :u7_baths
832
+ t.text :u7_num
833
+ t.text :u7_occ
834
+ t.text :u7_rent
835
+ t.text :u7_sqft
836
+ t.text :u7_yn
837
+ t.text :u8_num
838
+ t.text :u8_occ
839
+ t.text :u8_rent
840
+ t.text :u8_sqft
841
+ t.text :u8_yn
842
+ t.text :unit_num
843
+ t.text :upload_source
844
+ t.text :valuation_yn
845
+ t.text :vt_yn
846
+ t.text :withdrawn_date
847
+ t.text :year_built
848
+ t.text :zip
849
+
850
+ t.float :latitude
851
+ t.float :longitude
852
+ end
853
+ end
854
+
855
+ end