caboose-rets 0.1.18 → 0.1.19

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 (83) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/caboose_rets/admin_media.js +7 -7
  3. data/app/assets/javascripts/caboose_rets/caboose_rets.js +8 -8
  4. data/app/controllers/caboose_rets/agents_controller.rb +67 -75
  5. data/app/controllers/caboose_rets/offices_controller.rb +4 -4
  6. data/app/controllers/caboose_rets/open_houses_controller.rb +3 -3
  7. data/app/controllers/caboose_rets/properties_controller.rb +160 -0
  8. data/app/controllers/caboose_rets/rets_controller.rb +2 -2
  9. data/app/controllers/caboose_rets/rets_media_controller.rb +13 -13
  10. data/app/controllers/caboose_rets/saved_properties_controller.rb +35 -35
  11. data/app/models/caboose_rets/agent.rb +42 -55
  12. data/app/models/caboose_rets/agent_meta.rb +7 -7
  13. data/app/models/caboose_rets/media.rb +63 -57
  14. data/app/models/caboose_rets/office.rb +35 -21
  15. data/app/models/caboose_rets/open_house.rb +15 -15
  16. data/app/models/caboose_rets/property.rb +203 -0
  17. data/app/models/caboose_rets/rets_importer.rb +193 -233
  18. data/app/models/caboose_rets/rets_importer_bak.rb +77 -77
  19. data/app/models/caboose_rets/rets_importer_old.rb +625 -0
  20. data/app/models/caboose_rets/saved_property.rb +4 -4
  21. data/app/models/caboose_rets/saved_search.rb +36 -33
  22. data/app/models/caboose_rets/schema.rb +324 -855
  23. data/app/models/caboose_rets/schema_past.rb +918 -0
  24. data/app/models/caboose_rets/search_option.rb +6 -6
  25. data/app/views/caboose/blocks/_layout_rets.html.erb +9 -6
  26. data/app/views/caboose/blocks/_rets_agent_listings.html.erb +3 -3
  27. data/app/views/caboose_rets/agents/index.html.erb +23 -40
  28. data/app/views/caboose_rets/media/admin_property_media.html.erb +2 -2
  29. data/app/views/caboose_rets/{residential → properties}/_search_form.html.erb +42 -42
  30. data/app/views/caboose_rets/{residential → properties}/admin_edit.html.erb +7 -7
  31. data/app/views/caboose_rets/{land → properties}/admin_index.html.erb +11 -11
  32. data/app/views/caboose_rets/properties/details.html.erb +127 -0
  33. data/app/views/caboose_rets/{land → properties}/index.html.erb +0 -0
  34. data/app/views/caboose_rets/{residential/residential_not_exists.html.erb → properties/property_not_exists.html.erb} +4 -5
  35. data/app/views/caboose_rets/{residential → properties}/test_form.html.erb +1 -1
  36. data/app/views/caboose_rets/rets/admin_import_form.html.erb +1 -1
  37. data/config/routes.rb +70 -55
  38. data/lib/caboose-rets.rb +1 -1
  39. data/lib/caboose_rets/engine.rb +3 -3
  40. data/lib/caboose_rets/version.rb +1 -1
  41. data/lib/rets/base/core.rb +1 -1
  42. data/lib/rets/base/sax_search.rb +1 -1
  43. data/lib/tasks/caboose_rets.rake +106 -17
  44. metadata +16 -50
  45. data/app/controllers/caboose_rets/commercial_controller.rb +0 -349
  46. data/app/controllers/caboose_rets/land_controller.rb +0 -144
  47. data/app/controllers/caboose_rets/multi_family_controller.rb +0 -107
  48. data/app/controllers/caboose_rets/residential_controller.rb +0 -163
  49. data/app/models/caboose_rets/commercial_property.rb +0 -214
  50. data/app/models/caboose_rets/land_property.rb +0 -144
  51. data/app/models/caboose_rets/multi_family_property.rb +0 -199
  52. data/app/models/caboose_rets/residential_property.rb +0 -236
  53. data/app/views/caboose/blocks/_rets_commercial_details.html.erb +0 -192
  54. data/app/views/caboose/blocks/_rets_commercial_headers.html.erb +0 -17
  55. data/app/views/caboose/blocks/_rets_commercial_index.html.erb +0 -71
  56. data/app/views/caboose/blocks/_rets_commercial_row.html.erb +0 -39
  57. data/app/views/caboose/blocks/_rets_commercial_search_form.html.erb +0 -201
  58. data/app/views/caboose/blocks/_rets_land_details.html.erb +0 -165
  59. data/app/views/caboose/blocks/_rets_land_index.html.erb +0 -63
  60. data/app/views/caboose/blocks/_rets_land_row.html.erb +0 -58
  61. data/app/views/caboose/blocks/_rets_land_search_form.html.erb +0 -194
  62. data/app/views/caboose/blocks/_rets_multifamily_details.html.erb +0 -161
  63. data/app/views/caboose/blocks/_rets_multifamily_index.html.erb +0 -63
  64. data/app/views/caboose/blocks/_rets_multifamily_row.html.erb +0 -56
  65. data/app/views/caboose/blocks/_rets_multifamily_search_form.html.erb +0 -273
  66. data/app/views/caboose/blocks/_rets_openhouse_details.html.erb +0 -12
  67. data/app/views/caboose/blocks/_rets_openhouses_index.html.erb +0 -79
  68. data/app/views/caboose/blocks/_rets_residential_details.html.erb +0 -243
  69. data/app/views/caboose/blocks/_rets_residential_index.html.erb +0 -65
  70. data/app/views/caboose/blocks/_rets_residential_row.html.erb +0 -59
  71. data/app/views/caboose/blocks/_rets_residential_search_form.html.erb +0 -304
  72. data/app/views/caboose_rets/commercial/admin_edit.html.erb +0 -269
  73. data/app/views/caboose_rets/commercial/admin_index.html.erb +0 -51
  74. data/app/views/caboose_rets/commercial/admin_new.html.erb +0 -57
  75. data/app/views/caboose_rets/commercial/details.html.erb +0 -0
  76. data/app/views/caboose_rets/commercial/index.html.erb +0 -87
  77. data/app/views/caboose_rets/land/admin_edit.html.erb +0 -156
  78. data/app/views/caboose_rets/land/details.html.erb +0 -0
  79. data/app/views/caboose_rets/multi_family/admin_edit.html.erb +0 -211
  80. data/app/views/caboose_rets/multi_family/admin_index.html.erb +0 -46
  81. data/app/views/caboose_rets/residential/admin_index.html.erb +0 -46
  82. data/app/views/caboose_rets/residential/details.html.erb +0 -0
  83. data/app/views/caboose_rets/residential/index.html.erb +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 917afdb7de2bc5bb0d36a47c292f6fb10903d012
4
- data.tar.gz: 8b882f7d7180ed95dcbc456db6a1434b041e7d3a
3
+ metadata.gz: 9d7f0af5009de721e3eeccd3950f7b190e430b9e
4
+ data.tar.gz: ee72a1ce4b2f82a4efc9b183a51154aae960e0d2
5
5
  SHA512:
6
- metadata.gz: 4b6d6cbc811131266556e7656d974b20fc5f6b22200327746d1fa61a1e6c4d7bb7f1c7fce243ea21ba5eb2c1f076f68297bec6b780e4538f0c726b04aa0606f5
7
- data.tar.gz: 94a48b9a8ce704544d6d063f9a772f52bcfeb8d300d69c6ea71f5c20da774b29888517c2c2bc6a01df1ce877fe6e13f3274fd78ee59488300f457d8e247f01b0
6
+ metadata.gz: 9f5f12dbd2fcd814f89db2d3515a13c53e611f1149dcb30debe8975fa8b3765953bf917471ff99b6490256da22270412bdc11f6ee2851916d0ec32aa229e030c
7
+ data.tar.gz: c4001da2f08953647d8aa3e8aadefdb791f6e24253166ca089d1b573d2fd7d9f31b797390b250fef17ddd5475e9a4f8f5325a5b433afaf600ed62559df3276b9
@@ -5,7 +5,7 @@ MediaController.prototype = {
5
5
 
6
6
  cdn_domain: false,
7
7
  s3_domain: false,
8
- mls_acct: false,
8
+ mls: false,
9
9
 
10
10
  s3_url: function(url)
11
11
  {
@@ -34,7 +34,7 @@ MediaController.prototype = {
34
34
  handle: '.sort_handle',
35
35
  update: function(e, ui) {
36
36
  $.ajax({
37
- url: '/admin/properties/' + that.mls_acct + '/media/order',
37
+ url: '/admin/properties/' + that.mls + '/media/order',
38
38
  type: 'put',
39
39
  data: $('#images').sortable('serialize', { key: 'sort[]' }),
40
40
  success: function(resp) {}
@@ -51,7 +51,7 @@ MediaController.prototype = {
51
51
  handle: '.sort_handle',
52
52
  update: function(e, ui) {
53
53
  $.ajax({
54
- url: '/admin/properties/' + that.mls_acct + '/media/order',
54
+ url: '/admin/properties/' + that.mls + '/media/order',
55
55
  type: 'put',
56
56
  data: $('#files').sortable('serialize', { key: 'sort[]' }),
57
57
  success: function(resp) {}
@@ -116,7 +116,7 @@ MediaController.prototype = {
116
116
  $('#images').empty().append($('<p/>').addClass('loading').html('Getting images...'));
117
117
  var that = this;
118
118
  $.ajax({
119
- url: '/admin/properties/' + this.mls_acct + '/photos',
119
+ url: '/admin/properties/' + this.mls + '/photos',
120
120
  success: function(media) {
121
121
  $('#images').empty();
122
122
  $(media).each(function(i,m) {
@@ -150,7 +150,7 @@ MediaController.prototype = {
150
150
  $('#files').empty().append($('<p/>').addClass('loading').html('Getting files...'));
151
151
  var that = this;
152
152
  $.ajax({
153
- url: '/admin/properties/' + this.mls_acct + '/files',
153
+ url: '/admin/properties/' + this.mls + '/files',
154
154
  success: function(media) {
155
155
  $('#files').empty();
156
156
  if (!media || media.length == 0)
@@ -186,7 +186,7 @@ MediaController.prototype = {
186
186
  var that = this;
187
187
  var form = $('<form/>')
188
188
  .attr('id', 'new_image_form')
189
- .attr('action', '/admin/properties/' + this.mls_acct +'/photos')
189
+ .attr('action', '/admin/properties/' + this.mls +'/photos')
190
190
  .attr('method', 'post')
191
191
  .attr('target', 'image_upload_iframe')
192
192
  .attr('enctype', 'multipart/form-data')
@@ -218,7 +218,7 @@ MediaController.prototype = {
218
218
  var that = this;
219
219
  var form = $('<form/>')
220
220
  .attr('id', 'new_file_form')
221
- .attr('action', '/admin/properties/' + this.mls_acct +'/files')
221
+ .attr('action', '/admin/properties/' + this.mls +'/files')
222
222
  .attr('method', 'post')
223
223
  .attr('target', 'file_upload_iframe')
224
224
  .attr('enctype', 'multipart/form-data')
@@ -19,10 +19,10 @@ CabooseRets.save_search = function(uri, property_type, params)
19
19
  });
20
20
  };
21
21
 
22
- CabooseRets.get_save_property = function(mls_acct, el)
22
+ CabooseRets.get_save_property = function(mls, el)
23
23
  {
24
24
  $.ajax({
25
- url: '/saved-properties/' + mls_acct + '/status',
25
+ url: '/saved-properties/' + mls + '/status',
26
26
  type: 'get',
27
27
  success: function(resp) {
28
28
  if (resp.saved == true) el.html("<span style='color: #e5cd58; font-size: 2em;'>&#9733;</span> Saved");
@@ -31,10 +31,10 @@ CabooseRets.get_save_property = function(mls_acct, el)
31
31
  });
32
32
  }
33
33
 
34
- CabooseRets.toggle_save_property = function(mls_acct, el)
34
+ CabooseRets.toggle_save_property = function(mls, el)
35
35
  {
36
36
  $.ajax({
37
- url: '/saved-properties/' + mls_acct + '/toggle',
37
+ url: '/saved-properties/' + mls + '/toggle',
38
38
  type: 'get',
39
39
  success: function(resp) {
40
40
  if (resp.saved == true) el.html("<span style='color: #e5cd58; font-size: 2em;'>&#9733;</span> Saved");
@@ -54,13 +54,13 @@ $(document).ready(function() {
54
54
 
55
55
  $('.toggle_save_property').click(function(e) {
56
56
  e.preventDefault();
57
- var mls_acct = $(e.target).data('mls_acct');
58
- CabooseRets.toggle_save_property(mls_acct, $(e.target));
57
+ var mls = $(e.target).data('mls');
58
+ CabooseRets.toggle_save_property(mls, $(e.target));
59
59
  });
60
60
 
61
61
  $('.toggle_save_property').each(function(i, el) {
62
- var mls_acct = $(el).data('mls_acct');
63
- CabooseRets.get_save_property(mls_acct, $(el));
62
+ var mls = $(el).data('mls');
63
+ CabooseRets.get_save_property(mls, $(el));
64
64
  });
65
65
 
66
66
  });
@@ -1,107 +1,99 @@
1
1
 
2
2
  module CabooseRets
3
- class AgentsController < ApplicationController
4
-
3
+ class AgentsController < ApplicationController
4
+
5
5
  # GET /agents
6
6
  def index
7
- @agents = Agent.where("lo_code = '46' AND hide IS false").order("last_name, first_name")
8
- @agent = Agent.where(:la_code => '048540000').first
7
+ @agents = Agent.where("office_mls_id = '46' ").order("last_name, first_name")
8
+ @agent = Agent.where(:mls_id => '048540000').first
9
9
  @assistants = Agent.where(:assistant_to => '048540000').order("last_name, first_name")
10
10
  end
11
-
12
- # GET /agents/:la_code
11
+
12
+ # GET /agents/:mls_id
13
13
  def details
14
- la_code = params[:la_code]
15
- @agents = Agent.where("lo_code = '46' AND hide IS false").order("last_name, first_name")
16
- @agent = Agent.where(:la_code => la_code).first || Agent.where(:la_code => '048540000').first
17
- @assistants = Agent.where(:assistant_to => la_code).order("last_name, first_name")
18
- @next = Agent.where("\'la_code\' > \'#{la_code}\' AND \'la_code\' <> \'048540000\' AND \'lo_code\' = \'46\' AND hide IS false").order("last_name, first_name").first
19
- @prev = Agent.where("\'la_code\' < \'#{la_code}\' AND \'la_code\' <> \'048540000\' AND \'lo_code\' = \'46\' AND hide IS false").order("last_name, first_name").first
14
+ mls_id = params[:mls_id]
15
+ @agents = Agent.where("mls_id = '46'").order("last_name, first_name")
16
+ @agent = Agent.where(:mls_id => mls_id).first || Agent.where(:mls_id => '048540000').first
17
+ # @assistants = Agent.where(:assistant_to => la_code).order("last_name, first_name")
18
+ @next = Agent.where("\'mls_id\' > \'#{mls_id}\' AND \'mls_id\' <> \'048540000\' AND \'office_mls_id\' = \'46\'").order("last_name, first_name").first
19
+ @prev = Agent.where("\'mls_id\' < \'#{mls_id}\' AND \'mls_id\' <> \'048540000\' AND \'office_mls_id\' = \'46\'").order("last_name, first_name").first
20
20
  end
21
-
22
- # GET /agents/:la_code/listings
21
+
22
+ # GET /agents/:mls_id/listings
23
23
  def listings
24
- @agent = Agent.where(:la_code => params[:la_code]).first
25
- is_agents = "la_code = ? AND status = 'Active'"
26
- is_coagents = "co_la_code = ? AND status = 'Active'"
27
-
28
- residential_properties = ResidentialProperty.where(is_agents, params[:la_code])
29
- residential_properties += ResidentialProperty.where(is_coagents, params[:la_code]).select{ |p| defined? p && p.mls_acct }
30
-
31
- commercial_properties = CommercialProperty.where(is_agents, params[:la_code])
32
- commercial_properties += CommercialProperty.where(is_coagents, params[:la_code]).select{ |p| defined? p && p.mls_acct }
33
-
34
- land_properties = LandProperty.where(is_agents, params[:la_code])
35
- land_properties += LandProperty.where(is_coagents, params[:la_code]).select{ |p| defined? p && p.mls_acct }
36
-
24
+ @agent = Agent.where(:mls_id => params[:mls_id]).first
25
+ is_agents = "mls_id = ? AND status = 'Active'"
26
+ # is_coagents = "co_la_code = ? AND status = 'Active'"
27
+
28
+ properties = Property.where(is_agents, params[:mls_id])
29
+ # residential_properties += Property.where(is_coagents, params[:mls_id]).select{ |p| defined? p && p.mls_acct }
30
+
37
31
  @property_groups = [
38
- { type: 'RES' , title: 'Residential Listings' , url_prefix: 'residential' , properties: residential_properties },
39
- { type: 'COM' , title: 'Commercial Listings' , url_prefix: 'commercial' , properties: commercial_properties },
40
- { type: 'LND' , title: 'Land Listings' , url_prefix: 'land' , properties: land_properties },
41
- ]
32
+ { type: 'Listing' , title: 'Property Listings' , url_prefix: 'properties' , properties: properties }
33
+ ]
42
34
  end
43
-
35
+
44
36
  #=============================================================================
45
37
  # Admin functions
46
38
  #=============================================================================
47
-
39
+
48
40
  # GET /admin/agents
49
41
  def admin_index
50
42
  return if !user_is_allowed('agents', 'view')
51
-
43
+
52
44
  @gen = Caboose::PageBarGenerator.new(params, {
53
- 'lo_code' => '',
54
- 'la_code' => '',
45
+ 'office_mls_id' => '',
46
+ 'mls_id' => '',
55
47
  'first_name_like' => '',
56
- 'last_name_like' => ''
48
+ 'last_name_like' => ''
57
49
  },{
58
- 'model' => 'CabooseRets::Agent',
59
- 'sort' => 'last_name, first_name',
60
- 'desc' => false,
61
- 'base_url' => '/admin/agents',
62
- 'use_url_params' => false
50
+ 'model' => 'CabooseRets::Agent',
51
+ 'sort' => 'last_name, first_name',
52
+ 'desc' => false,
53
+ 'base_url' => '/admin/agents',
54
+ 'use_url_params' => false
63
55
  })
64
- @agents = @gen.items
56
+ @agents = @gen.items
65
57
  render :layout => 'caboose/admin'
66
58
  end
67
-
59
+
68
60
  # GET /admin/agents/:id/edit
69
61
  def admin_edit
70
- return if !user_is_allowed('agents', 'edit')
62
+ return if !user_is_allowed('agents', 'edit')
71
63
  @agent = Agent.find(params[:id])
72
- @boss = @agent.assistant_to.nil? || @agent.assistant_to.strip.length == 0 ? nil : Agent.where(:la_code => @agent.assistant_to).first
64
+ @boss = @agent.assistant_to.nil? || @agent.assistant_to.strip.length == 0 ? nil : Agent.where(:mls_id => @agent.assistant_to).first
73
65
  render :layout => 'caboose/admin'
74
66
  end
75
-
67
+
76
68
  # GET /admin/agents/:id/edit-bio
77
69
  def admin_edit_bio
78
- return if !user_is_allowed('agents', 'edit')
70
+ return if !user_is_allowed('agents', 'edit')
79
71
  @agent = Agent.find(params[:id])
80
72
  render :layout => 'caboose/admin'
81
73
  end
82
-
74
+
83
75
  # GET /admin/agents/:id/edit-contact-info
84
76
  def admin_edit_contact_info
85
- return if !user_is_allowed('agents', 'edit')
77
+ return if !user_is_allowed('agents', 'edit')
86
78
  @agent = Agent.find(params[:id])
87
79
  render :layout => 'caboose/admin'
88
80
  end
89
-
81
+
90
82
  # GET /admin/agents/:id/edit-mls-info
91
- def admin_edit_mls_info
92
- return if !user_is_allowed('agents', 'edit')
83
+ def admin_edit_mls_info
84
+ return if !user_is_allowed('agents', 'edit')
93
85
  @agent = Agent.find(params[:id])
94
86
  render :layout => 'caboose/admin'
95
87
  end
96
-
88
+
97
89
  # POST /admin/agents/:id
98
90
  def admin_update
99
91
  Caboose.log(params)
100
92
  return if !user_is_allowed('agents', 'edit')
101
-
93
+
102
94
  resp = Caboose::StdClass.new({'attributes' => {}})
103
- agent = Agent.find(params[:id])
104
-
95
+ agent = Agent.find(params[:id])
96
+
105
97
  save = true
106
98
  params.each do |name,value|
107
99
  case name
@@ -115,55 +107,55 @@ module CabooseRets
115
107
  agent.designation = value
116
108
  when 'assistant_to'
117
109
  agent.assistant_to = value
118
- if !value.nil? && value.length > 0 && Agent.exists?(:la_code => value)
119
- boss = Agent.where(:la_code => value).first
110
+ if !value.nil? && value.length > 0 && Agent.exists?(:mls_id => value)
111
+ boss = Agent.where(:mls_id => value).first
120
112
  resp.attributes['assistant_to'] = { 'text' => "#{boss.first_name} #{boss.last_name}" }
121
113
  else
122
114
  resp.attributes['assistant_to'] = { 'text' => "Not an assistant" }
123
115
  end
124
- end
125
- end
126
- resp.success = save && agent.save
116
+ end
117
+ end
118
+ resp.success = save && agent.save
127
119
  render :json => resp
128
120
  end
129
-
121
+
130
122
  # GET /admin/agents/:id/refresh
131
123
  def admin_refresh
132
- agent = Agent.find(params[:id])
133
- RetsImporter.import("(LA_LA_CODE=#{agent.la_code})", 'Agent', 'AGT')
124
+ agent = Agent.find(params[:id])
125
+ RetsImporter.import("(LA_LA_CODE=#{agent.mls_id})", 'Agent', 'AGT')
134
126
  RetsImporter.download_agent_images(agent)
135
127
  render :json => Caboose::StdClass.new({ 'success' => "The agent's info has been updated from MLS." })
136
128
  end
137
-
129
+
138
130
  # GET /admin/agents/assistant-to-options
139
131
  def admin_assistant_to_options
140
132
  options = [{
141
133
  'value' => '',
142
134
  'text' => '-- Not an assistant --'
143
135
  }]
144
- Agent.where(:lo_code => '46').reorder('last_name, first_name').all.each do |a|
136
+ Agent.where(:office_mls_id => '46').reorder('last_name, first_name').all.each do |a|
145
137
  options << {
146
- 'value' => a.la_code,
138
+ 'value' => a.mls_id,
147
139
  'text' => "#{a.first_name} #{a.last_name}"
148
140
  }
149
141
  end
150
- render :json => options
142
+ render :json => options
151
143
  end
152
-
144
+
153
145
  # GET /admin/agents/agent_options
154
146
  def agent_options
155
147
  options = [{
156
148
  'value' => '',
157
149
  'text' => '-- No Agent --'
158
150
  }]
159
- Agent.where(:lo_code => '46').reorder('last_name, first_name').all.each do |a|
160
- options << {
161
- 'value' => a.la_code,
151
+ Agent.where(:office_mls_id => '46').reorder('last_name, first_name').all.each do |a|
152
+ options << {
153
+ 'value' => a.mls_id,
162
154
  'text' => "#{a.first_name} #{a.last_name}"
163
155
  }
164
156
  end
165
- render :json => options
157
+ render :json => options
166
158
  end
167
-
159
+
168
160
  end
169
161
  end
@@ -11,7 +11,7 @@ module CabooseRets
11
11
  return if !user_is_allowed('offices', 'view')
12
12
 
13
13
  @gen = Caboose::PageBarGenerator.new(params, {
14
- 'lo_code' => '',
14
+ 'lo_mls_id' => '',
15
15
  'lo_name_like' => ''
16
16
  },{
17
17
  'model' => 'CabooseRets::Office',
@@ -24,17 +24,17 @@ module CabooseRets
24
24
  render :layout => 'caboose/admin'
25
25
  end
26
26
 
27
- # GET /admin/offices/:id/edit
27
+ # GET /admin/offices/:mls_number/edit
28
28
  def admin_edit
29
29
  return if !user_is_allowed('offices', 'edit')
30
30
  @office = Office.find(params[:id])
31
31
  render :layout => 'caboose/admin'
32
32
  end
33
33
 
34
- # GET /admin/offices/:id/refresh
34
+ # GET /admin/offices/:mls_number/refresh
35
35
  def admin_refresh
36
36
  office = Office.find(params[:id])
37
- RetsImporter.import("(LO_LO_CODE=#{office.lo_code})", 'Office', 'OFF')
37
+ RetsImporter.import('Office', "(Matrix_Unique_ID=#{office.matrix_unique_id})")
38
38
  render :json => Caboose::StdClass.new({ 'success' => "The office's info has been updated from MLS." })
39
39
  end
40
40
 
@@ -8,9 +8,9 @@ module CabooseRets
8
8
  @open_houses = OpenHouse.where("open_house_type = 'PUB' and open_house_date >= '#{DateTime.now.strftime("%F")}'").reorder("open_house_date, start_time").all
9
9
  end
10
10
 
11
- # get /open-houses/:id
11
+ # get /open-houses/:mls_number
12
12
  def details
13
- @open_houses = OpenHouse.find(params[:id])
13
+ @open_houses = OpenHouse.find(params[:mls_number])
14
14
  end
15
15
 
16
16
  # get /admin/open-houses
@@ -20,7 +20,7 @@ module CabooseRets
20
20
 
21
21
  # get /admin/open-houses/refresh
22
22
  def admin_refresh
23
- RetsImporter.update_helper('OPH', DateTime.parse(1.month.ago.strftime('%F %T')))
23
+ RetsImporter.update_helper('OpenHouse', DateTime.parse(1.month.ago.strftime('%F %T')))
24
24
  resp = Caboose::StdClass.new
25
25
  resp.success = "The open houses have been refreshed successfully."
26
26
  render :json => resp
@@ -0,0 +1,160 @@
1
+
2
+ module CabooseRets
3
+ class PropertiesController < ApplicationController
4
+
5
+ # @route GET /properties/search-options
6
+ # q=rock quary
7
+ def search_options
8
+ count = params[:count_per_name] ? params[:count_per_name] : 10
9
+ arr = SearchOption.results(params[:q], count)
10
+ render :json => arr
11
+ end
12
+
13
+ # @route GET /properties
14
+ def index
15
+ params[:street_num_like] = params[:street_name_like].tr('A-z', '').tr(' ', '') unless params[:street_name_like].nil?
16
+ unless params[:street_name_like].nil?
17
+ params[:street_name_like] = params[:street_name_like].tr('0-9', "")
18
+ until params[:street_name_like][0] != " " || params[:street_name_like] == ''
19
+ params[:street_name_like][0] = '' if params[:street_name_like][0].to_i == 0
20
+ end
21
+ end
22
+
23
+ @pager = Caboose::PageBarGenerator.new(params, {
24
+ 'area' => '',
25
+ 'area_like' => '',
26
+ 'acreage_gte' => '',
27
+ 'acreage_lte' => '',
28
+ 'city' => '',
29
+ 'city_like' => '',
30
+ 'county_or_parish' => '',
31
+ 'county_or_parishy_like' => '',
32
+ 'current_price_gte' => '',
33
+ 'current_price_lte' => '',
34
+ 'bedrooms_gte' => '',
35
+ 'bedrooms_lte' => '',
36
+ 'property_type' => '',
37
+ 'property_subtype' => '',
38
+ 'sqft_total_gte' => '',
39
+ 'sqft_total_gte_lte' => '',
40
+ 'neighborhood' => '',
41
+ 'elementary_school' => '',
42
+ 'middle_school' => '',
43
+ 'high_school' => '',
44
+ 'list_agent_mls_id' => '',
45
+ 'list_office_mls_id' => '',
46
+ 'public_remarks_like' => '',
47
+ 'waterfronts' => '',
48
+ 'waterfronts_not_null' => '',
49
+ 'lot_desc_like' => '',
50
+ 'mls_number' => '',
51
+ 'subdivision' => '',
52
+ 'style' => '',
53
+ 'foreclosure_yn' => '',
54
+ 'address_like' => '',
55
+ 'street_name_like' => '',
56
+ 'street_num_like' => '',
57
+ 'postal_code' => '',
58
+ 'postal_code_like' => '',
59
+ 'status' => 'Active'
60
+ },{
61
+ 'model' => 'CabooseRets::Property',
62
+ 'sort' => CabooseRets::default_property_sort,
63
+ 'desc' => false,
64
+ 'abbreviations' => {
65
+ 'address_like' => 'street_num_concat_street_name_like'
66
+ },
67
+ 'skip' => ['status'],
68
+ 'base_url' => '/properties',
69
+ 'items_per_page' => 10
70
+ })
71
+
72
+ @properties = @pager.items
73
+ if params[:waterfronts].present? then @properties.reject!{|p| p.waterfronts.blank?} end
74
+ # if params[:ftr_lotdesc] == 'golf' then @properties.reject!{|p| p.ftr_lotdesc != 'golf'} end
75
+ if params[:foreclosure_yn] then @properties.reject!{|p| p.foreclosure_yn != "Y"} end
76
+
77
+ @saved_search = nil
78
+ if CabooseRets::SavedSearch.exists?(:uri => request.fullpath)
79
+ @saved_search = CabooseRets::SavedSearch.where(:uri => request.fullpath).first
80
+ end
81
+
82
+ @block_options = {
83
+ :properties => @properties,
84
+ :saved_search => @saved_search,
85
+ :pager => @pager
86
+ }
87
+ end
88
+
89
+ # @route GET /properties/:mls_number/details
90
+ def details
91
+ @property = Property.where(:mls_number => params[:mls_number]).first
92
+ @saved = logged_in? && SavedProperty.where(:user_id => logged_in_user.id, :mls_number => params[:mls_number]).exists?
93
+ if @property && @property.list_office_code == '46'
94
+ @agent = Property.where(:la_code => @property.list_agent_mls_id).first
95
+ end
96
+ if @property.nil?
97
+ @mls_number = params[:mls_number]
98
+ CabooseRets::RetsImporter.delay(:queue => 'rets').import_property(@mls_number.to_i)
99
+ render 'properties/property_not_exists'
100
+ return
101
+ end
102
+
103
+ @block_options = {
104
+ :mls_number => params[:mls_number],
105
+ :property => @property,
106
+ :saved => @saved,
107
+ :agent => @property ? @property.where(:list_agent_mls_id => @property.list_agent_mls_id).first : nil,
108
+ :form_authenticity_token => form_authenticity_token
109
+ }
110
+
111
+ if @property.nil?
112
+ @mls = params[:mls]
113
+ CabooseRets::RetsImporter.delay(:queue => 'rets').import_property(@mls_number.to_i)
114
+ render 'properties/property_not_exists'
115
+ return
116
+ end
117
+ end
118
+
119
+ #=============================================================================
120
+ # Admin actions
121
+ #=============================================================================
122
+
123
+ # @route GET /admin/properties
124
+ def admin_index
125
+ return if !user_is_allowed('properties', 'view')
126
+
127
+ @gen = Caboose::PageBarGenerator.new(params, {
128
+ 'mls_number' => ''
129
+ },{
130
+ 'model' => 'CabooseRets::Property',
131
+ 'sort' => 'mls_number',
132
+ 'desc' => false,
133
+ 'base_url' => '/admin/properties',
134
+ 'use_url_params' => false
135
+ })
136
+ @properties = @gen.items
137
+ render :layout => 'caboose/admin'
138
+ end
139
+
140
+ # @route GET /admin/properties/:mls_number/edit
141
+ def admin_edit
142
+ return if !user_is_allowed('properties', 'edit')
143
+ @property = Property.where(:mls => params[:mls_number]).first
144
+ render :layout => 'caboose/admin'
145
+ end
146
+
147
+ # @route GET /admin/properties/:mls_number/refresh
148
+ def admin_refresh
149
+ return if !user_is_allowed('properties', 'edit')
150
+
151
+ p = Property.find(params[:mls_number])
152
+ p.delay(:queue => 'rets').refresh_from_mls
153
+
154
+ resp = Caboose::StdClass.new
155
+ resp.success = "The property's info is being updated from MLS. This may take a few minutes depending on how many images it has."
156
+ render :json => resp
157
+ end
158
+
159
+ end
160
+ end