caboose-rets 0.1.18 → 0.1.19

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,3 +1,3 @@
1
1
  module CabooseRets
2
- VERSION = '0.1.18'
2
+ VERSION = '0.1.19'
3
3
  end
@@ -256,7 +256,7 @@ module RETS
256
256
  req[:params][:Select] = args[:select].join(",") if args[:select].is_a?(Array)
257
257
  req[:params][:StandardNames] = 1 if args[:standard_names]
258
258
 
259
- if args[:count_mode] == :only
259
+ if args[:count] == 1
260
260
  req[:params][:Count] = 2
261
261
  elsif args[:count_mode] == :both
262
262
  req[:params][:Count] = 1
@@ -13,7 +13,7 @@ class RETS::Base::SAXSearch < Nokogiri::XML::SAX::Document
13
13
  # Figure out if the request is a success
14
14
  if tag == "RETS"
15
15
  @rets_data[:code], @rets_data[:text] = attrs.first.last, attrs.last.last
16
- if @rets_data[:code] != "0" and @rets_data[:code] != "20201"
16
+ if @rets_data[:code] != "0" and @rets_data[:code] != "20201" and @rets_data[:code] != "20206" #added this check 7385
17
17
  raise RETS::APIError.new("#{@rets_data[:code]}: #{@rets_data[:text]}", @rets_data[:code], @rets_data[:text])
18
18
  end
19
19
 
@@ -1,31 +1,120 @@
1
+ require "rets/version"
2
+ require "rets/exceptions"
3
+ require "rets/client"
4
+ require "rets/http"
5
+ require "rets/stream_http"
6
+ require "rets/base/core"
7
+ require "rets/base/sax_search"
8
+ require "rets/base/sax_metadata"
1
9
  require "caboose_rets/version"
2
10
 
3
11
  namespace :caboose_rets do
12
+
13
+ desc "Do a simple search"
14
+ task :simple_search => :environment do
15
+ type = ['p','a','o','oh']
16
+ client = RETS::Client.login(
17
+ :url => 'http://rets.wamls.mlsmatrix.com/rets/Login.ashx',
18
+ :username => 'RETS_6',
19
+ :password => 'ellis'
20
+ )
21
+ type.each do |t|
22
+ if t == 'p'
23
+ params = {
24
+ :search_type => 'Property',
25
+ :class => 'Listing',
26
+ :query => "(Matrix_Unique_ID=0+)",
27
+ :limit => 1,
28
+ :timeout => -1
29
+ }
30
+ elsif t == 'a'
31
+ params = {
32
+ :search_type => 'Agent',
33
+ :class => 'Agent',
34
+ :query => "(Matrix_Unique_ID=0+)",
35
+ :limit => 1,
36
+ :timeout => -1
37
+ }
38
+ elsif t == 'o'
39
+ params = {
40
+ :search_type => 'Office',
41
+ :class => 'Office',
42
+ :query => "(Matrix_Unique_ID=0+)",
43
+ :limit => 1,
44
+ :timeout => -1
45
+ }
46
+ elsif t == 'oh'
47
+ params = {
48
+ :search_type => 'OpenHouse',
49
+ :class => 'OpenHouse',
50
+ :query => "(Matrix_Unique_ID=0+)",
51
+ :limit => 1,
52
+ :timeout => -1
53
+ }
54
+ end
55
+
56
+ client.search(params) do |data|
57
+ ap data
58
+ end
59
+ end
60
+ end
61
+
62
+ desc "Import Image"
63
+ task :img => :environment do
64
+ p = CabooseRets::Property.where(:matrix_unique_id => "1026532").first
65
+ CabooseRets::RetsImporter.download_property_images(p)
66
+ end
67
+
68
+ desc "Import rets data"
69
+ task :import => :environment do
70
+ CabooseRets::RetsImporter.import('Agent' , "(Matrix_Unique_ID=0+)")
71
+ CabooseRets::RetsImporter.import('Listing' , "(Matrix_Unique_ID=0+)")
72
+ CabooseRets::RetsImporter.import('Office' , "(Matrix_Unique_ID=0+)")
73
+ CabooseRets::RetsImporter.import('OpenHouse', "(Matrix_Unique_ID=0+)")
74
+ end
4
75
 
76
+ desc "Single Import Test"
77
+ task :import_one => :environment do
78
+ CabooseRets::RetsImporter.import_properties('1026532' , "(Matrix_Unique_ID=1026532)")
79
+ end
80
+
81
+ desc "Purge rets data"
82
+ task :purge => :environment do
83
+ CabooseRets::RetsImporter.purge_helper('Listing', '2013-08-06')
84
+ CabooseRets::RetsImporter.purge_helper('Office', '2012-01-01')
85
+ CabooseRets::RetsImporter.purge_helper('Agent', '2012-01-01')
86
+ CabooseRets::RetsImporter.purge_helper('OpenHouse', '2012-01-01')
87
+ end
88
+
89
+ desc "update helper"
90
+ task :uh => :environment do
91
+ CabooseRets::RetsImporter.update_helper('Listing', last_updated)
92
+ end
93
+
5
94
  #desc "Delete old rets properties"
6
95
  #task :delete_old_properties => :environment do
7
96
  # CabooseRets::RetsImporter.delete_old_properties
8
97
  #end
9
-
98
+
10
99
  desc "Update search options"
11
100
  task :update_search_options => :environment do
12
101
  CabooseRets::SearchOption.update_search_options
13
102
  end
14
-
103
+
15
104
  desc "Initializes the database for a caboose installation"
16
105
  task :rename_media => :environment do
17
- CabooseRets::Media.rename_media
106
+ CabooseRets::Media.rename_media
18
107
  end
19
-
108
+
20
109
  desc "Initializes the database for a caboose installation"
21
110
  task :db => :environment do
22
111
  CabooseRets::Schema.create_schema
23
112
  CabooseRets::Schema.load_data
24
113
  end
25
-
114
+
26
115
  desc "Verifies all tables and columns are created."
27
116
  task :create_schema => :environment do CabooseRets::Schema.create_schema end
28
-
117
+
29
118
  desc "Loads data into caboose tables"
30
119
  task :load_data => :environment do CabooseRets::Schema.load_data end
31
120
 
@@ -36,20 +125,20 @@ namespace :caboose_rets do
36
125
  next
37
126
  end
38
127
  CabooseRets::RetsImporter.log("Updating rets data...")
39
- task_started = lock_task
40
-
128
+ task_started = lock_task
129
+
41
130
  begin
42
131
  # RetsImporter.update_all_after(last_updated - Rational(1,86400))
43
- CabooseRets::RetsImporter.update_after(last_updated)
132
+ CabooseRets::RetsImporter.update_after(last_updated)
44
133
  save_last_updated(task_started)
45
134
  unlock_task
46
135
  rescue
47
136
  raise
48
137
  ensure
49
138
  unlock_task_if_last_updated(task_started)
50
- end
139
+ end
51
140
  end
52
-
141
+
53
142
  def last_updated
54
143
  if !Caboose::Setting.exists?(:name => 'rets_last_updated')
55
144
  Caboose::Setting.create(:name => 'rets_last_updated', :value => '2013-08-06T00:00:01')
@@ -57,30 +146,30 @@ namespace :caboose_rets do
57
146
  s = Caboose::Setting.where(:name => 'rets_last_updated').first
58
147
  return DateTime.parse(s.value)
59
148
  end
60
-
149
+
61
150
  def save_last_updated(d)
62
151
  s = Caboose::Setting.where(:name => 'rets_last_updated').first
63
152
  s.value = d.strftime('%FT%T')
64
153
  s.save
65
154
  end
66
-
155
+
67
156
  def task_is_locked
68
157
  return Caboose::Setting.exists?(:name => 'rets_update_running')
69
158
  end
70
-
159
+
71
160
  def lock_task
72
161
  date = DateTime.now
73
162
  Caboose::Setting.create(:name => 'rets_update_running', :value => date.strftime('%F %T'))
74
163
  return date
75
164
  end
76
-
165
+
77
166
  def unlock_task
78
167
  Caboose::Setting.where(:name => 'rets_update_running').first.destroy
79
168
  end
80
-
169
+
81
170
  def unlock_task_if_last_updated(d)
82
171
  setting = Caboose::Setting.where(:name => 'rets_update_running').first
83
172
  unlock_task if setting && d.strftime('%F %T') == setting.value
84
173
  end
85
-
174
+
86
175
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caboose-rets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.18
4
+ version: 0.1.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-24 00:00:00.000000000 Z
11
+ date: 2017-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: caboose-cms
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.8'
19
+ version: '0.9'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.8'
26
+ version: '0.9'
27
27
  description: Library to download RETS data to a local website for easy use.
28
28
  email:
29
29
  - william@nine.is
@@ -38,12 +38,9 @@ files:
38
38
  - app/assets/javascripts/caboose_rets/caboose_rets.js
39
39
  - app/controllers/caboose_rets/agents_controller.rb
40
40
  - app/controllers/caboose_rets/application_controller.rb
41
- - app/controllers/caboose_rets/commercial_controller.rb
42
- - app/controllers/caboose_rets/land_controller.rb
43
- - app/controllers/caboose_rets/multi_family_controller.rb
44
41
  - app/controllers/caboose_rets/offices_controller.rb
45
42
  - app/controllers/caboose_rets/open_houses_controller.rb
46
- - app/controllers/caboose_rets/residential_controller.rb
43
+ - app/controllers/caboose_rets/properties_controller.rb
47
44
  - app/controllers/caboose_rets/rets_controller.rb
48
45
  - app/controllers/caboose_rets/rets_media_controller.rb
49
46
  - app/controllers/caboose_rets/saved_properties_controller.rb
@@ -51,44 +48,24 @@ files:
51
48
  - app/helpers/caboose_rets/application_helper.rb
52
49
  - app/models/caboose_rets/agent.rb
53
50
  - app/models/caboose_rets/agent_meta.rb
54
- - app/models/caboose_rets/commercial_property.rb
55
- - app/models/caboose_rets/land_property.rb
56
51
  - app/models/caboose_rets/media.rb
57
- - app/models/caboose_rets/multi_family_property.rb
58
52
  - app/models/caboose_rets/office.rb
59
53
  - app/models/caboose_rets/office_meta.rb
60
54
  - app/models/caboose_rets/open_house.rb
61
- - app/models/caboose_rets/residential_property.rb
55
+ - app/models/caboose_rets/property.rb
62
56
  - app/models/caboose_rets/rets_importer.rb
63
57
  - app/models/caboose_rets/rets_importer_bak.rb
58
+ - app/models/caboose_rets/rets_importer_old.rb
64
59
  - app/models/caboose_rets/rets_plugin.rb
65
60
  - app/models/caboose_rets/saved_property.rb
66
61
  - app/models/caboose_rets/saved_search.rb
67
62
  - app/models/caboose_rets/schema.rb
63
+ - app/models/caboose_rets/schema_past.rb
68
64
  - app/models/caboose_rets/search_option.rb
69
65
  - app/views/caboose/blocks/_layout_rets.html.erb
70
66
  - app/views/caboose/blocks/_rets_agent_details.html.erb
71
67
  - app/views/caboose/blocks/_rets_agent_listings.html.erb
72
68
  - app/views/caboose/blocks/_rets_agents_index.html.erb
73
- - app/views/caboose/blocks/_rets_commercial_details.html.erb
74
- - app/views/caboose/blocks/_rets_commercial_headers.html.erb
75
- - app/views/caboose/blocks/_rets_commercial_index.html.erb
76
- - app/views/caboose/blocks/_rets_commercial_row.html.erb
77
- - app/views/caboose/blocks/_rets_commercial_search_form.html.erb
78
- - app/views/caboose/blocks/_rets_land_details.html.erb
79
- - app/views/caboose/blocks/_rets_land_index.html.erb
80
- - app/views/caboose/blocks/_rets_land_row.html.erb
81
- - app/views/caboose/blocks/_rets_land_search_form.html.erb
82
- - app/views/caboose/blocks/_rets_multifamily_details.html.erb
83
- - app/views/caboose/blocks/_rets_multifamily_index.html.erb
84
- - app/views/caboose/blocks/_rets_multifamily_row.html.erb
85
- - app/views/caboose/blocks/_rets_multifamily_search_form.html.erb
86
- - app/views/caboose/blocks/_rets_openhouse_details.html.erb
87
- - app/views/caboose/blocks/_rets_openhouses_index.html.erb
88
- - app/views/caboose/blocks/_rets_residential_details.html.erb
89
- - app/views/caboose/blocks/_rets_residential_index.html.erb
90
- - app/views/caboose/blocks/_rets_residential_row.html.erb
91
- - app/views/caboose/blocks/_rets_residential_search_form.html.erb
92
69
  - app/views/caboose/blocks/_rets_savedproperties_index.html.erb
93
70
  - app/views/caboose_rets/agents/_admin_top_nav.html.erb
94
71
  - app/views/caboose_rets/agents/admin_edit.html.erb
@@ -99,29 +76,18 @@ files:
99
76
  - app/views/caboose_rets/agents/details.html.erb
100
77
  - app/views/caboose_rets/agents/index.html.erb
101
78
  - app/views/caboose_rets/agents/listings.html.erb
102
- - app/views/caboose_rets/commercial/admin_edit.html.erb
103
- - app/views/caboose_rets/commercial/admin_index.html.erb
104
- - app/views/caboose_rets/commercial/admin_new.html.erb
105
- - app/views/caboose_rets/commercial/details.html.erb
106
- - app/views/caboose_rets/commercial/index.html.erb
107
- - app/views/caboose_rets/land/admin_edit.html.erb
108
- - app/views/caboose_rets/land/admin_index.html.erb
109
- - app/views/caboose_rets/land/details.html.erb
110
- - app/views/caboose_rets/land/index.html.erb
111
79
  - app/views/caboose_rets/media/admin_property_media.html.erb
112
- - app/views/caboose_rets/multi_family/admin_edit.html.erb
113
- - app/views/caboose_rets/multi_family/admin_index.html.erb
114
80
  - app/views/caboose_rets/offices/admin_edit.html.erb
115
81
  - app/views/caboose_rets/offices/admin_index.html.erb
116
82
  - app/views/caboose_rets/open_houses/admin_index.html.erb
117
83
  - app/views/caboose_rets/open_houses/admin_new.html.erb
118
- - app/views/caboose_rets/residential/_search_form.html.erb
119
- - app/views/caboose_rets/residential/admin_edit.html.erb
120
- - app/views/caboose_rets/residential/admin_index.html.erb
121
- - app/views/caboose_rets/residential/details.html.erb
122
- - app/views/caboose_rets/residential/index.html.erb
123
- - app/views/caboose_rets/residential/residential_not_exists.html.erb
124
- - app/views/caboose_rets/residential/test_form.html.erb
84
+ - app/views/caboose_rets/properties/_search_form.html.erb
85
+ - app/views/caboose_rets/properties/admin_edit.html.erb
86
+ - app/views/caboose_rets/properties/admin_index.html.erb
87
+ - app/views/caboose_rets/properties/details.html.erb
88
+ - app/views/caboose_rets/properties/index.html.erb
89
+ - app/views/caboose_rets/properties/property_not_exists.html.erb
90
+ - app/views/caboose_rets/properties/test_form.html.erb
125
91
  - app/views/caboose_rets/rets/admin_import_form.html.erb
126
92
  - app/views/caboose_rets/saved_searches/edit.html.erb
127
93
  - app/views/caboose_rets/saved_searches/index.html.erb
@@ -192,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
192
158
  version: '0'
193
159
  requirements: []
194
160
  rubyforge_project:
195
- rubygems_version: 2.5.1
161
+ rubygems_version: 2.6.12
196
162
  signing_key:
197
163
  specification_version: 4
198
164
  summary: Library to download RETS data to a local website.
@@ -1,349 +0,0 @@
1
-
2
- module CabooseRets
3
- class CommercialController < ApplicationController
4
-
5
- # GET /commercial
6
- def index
7
- @gen = Caboose::PageBarGenerator.new(params, {
8
- 'name' => '',
9
- 'current_price_gte' => '',
10
- 'current_price_lte' => '',
11
- 'address_like' => '',
12
- 'prop_type' => '',
13
- 'tot_heat_sqft_gte' => '',
14
- 'city' => '',
15
- 'county' => '',
16
- 'zip' => '',
17
- 'mls_acct' => '',
18
- # 'added_by_advantage' => '',
19
- 'lo_code' => '',
20
- 'address' => '',
21
- 'status' => 'Active'
22
- },{
23
- 'model' => 'CabooseRets::CommercialProperty',
24
- 'sort' => CabooseRets::default_property_sort,
25
- 'desc' => false,
26
- 'skip' => ['status'],
27
- 'abbreviations' => {
28
- 'address_like' => 'street_num_concat_street_name_like'
29
- },
30
- 'base_url' => '/commercial/search',
31
- 'items_per_page' => 10
32
- })
33
- @properties = @gen.items
34
-
35
- @block_options = {
36
- :properties => @properties,
37
- :pager => @gen
38
- }
39
-
40
- end
41
-
42
- # GET /commercial/:mls_acct/details
43
- def details
44
- @property = CommercialProperty.where(:mls_acct => params[:mls_acct]).first
45
- #@agent = Agent.where(:la_code => @property.la_code).first ? Agent.where(:la_code => @property.la_code).exists? : nil
46
- @saved = logged_in? && SavedProperty.where(:user_id => logged_in_user.id, :mls_acct => params[:mls_acct]).exists?
47
-
48
- @block_options = {
49
- :mls_acct => params[:mls_acct],
50
- :property => @property,
51
- :saved => @saved,
52
- :agent => @property ? Agent.where(:la_code => @property.la_code).first : nil,
53
- :form_authenticity_token => form_authenticity_token
54
- }
55
-
56
- end
57
-
58
- #=============================================================================
59
- # Admin actions
60
- #=============================================================================
61
-
62
- # GET /admin/commercial
63
- def admin_index
64
- return if !user_is_allowed('properties', 'view')
65
-
66
- @gen = Caboose::PageBarGenerator.new(params, {
67
- 'mls_acct' => ''
68
- },{
69
- 'model' => 'CabooseRets::CommercialProperty',
70
- 'sort' => 'mls_acct',
71
- 'desc' => false,
72
- 'base_url' => '/admin/commercial',
73
- 'use_url_params' => false
74
- })
75
- @properties = @gen.items
76
- render :layout => 'caboose/admin'
77
- end
78
-
79
- # GET /admin/commercial/new
80
- def admin_new
81
- return if !user_is_allowed('properties', 'edit')
82
- @agents = Agent.reorder("last_name, first_name").all
83
- @offices = Office.reorder("lo_name")
84
- render :layout => 'caboose/admin'
85
- end
86
-
87
- # POST /admin/commercial
88
- def admin_add
89
- return if !user_is_allowed('properties', 'edit')
90
-
91
- max_id = 1000001
92
- if CommercialProperty.where("id > 1000000").count > 0
93
- max_id = CommercialProperty.maximum(:id, :conditions => ['id > 1000000'])
94
- end
95
-
96
- p = CommercialProperty.new
97
- p.id = max_id + 1
98
- p.mls_acct = p.id
99
- p.la_code = params[:la_code]
100
- p.lo_code = params[:lo_code]
101
- p.save
102
-
103
- render :json => Caboose::StdClass.new({
104
- 'redirect' => "/admin/commercial/#{p.id}/edit"
105
- })
106
- end
107
-
108
- # GET /admin/commercial/:mls_acct/edit
109
- def admin_edit
110
- return if !user_is_allowed('properties', 'edit')
111
- @property = CommercialProperty.where(:mls_acct => params[:mls_acct]).first
112
- render :layout => 'caboose/admin'
113
- end
114
-
115
- # POST /admin/commercial/:mls_acct
116
- def admin_update
117
- return if !user_is_allowed('properties', 'edit')
118
-
119
- resp = Caboose::StdClass.new({'attributes' => {}})
120
- property = CommercialProperty.find(params[:mls_acct])
121
-
122
- save = true
123
- params.each do |name,value|
124
- case name
125
- when 'la_code'
126
- property.la_code = value
127
- a = Agent.where(:la_code => value).first
128
- resp.attributes['la_code'] = { 'text' => "#{a.first_name} #{a.last_name}" }
129
- break
130
- when 'lo_code'
131
- property.lo_code = value
132
- o = Office.where(:lo_code => value).first
133
- resp.attributes['lo_code'] = { 'text' => o.lo_name }
134
- break
135
- when 'acreage',
136
- 'adjoining_land_use',
137
- 'agent_notes',
138
- 'agent_other_contact_desc',
139
- 'agent_other_contact_phone',
140
- 'annual_taxes',
141
- 'approx_age',
142
- 'area',
143
- 'banner',
144
- 'baths',
145
- 'baths_full',
146
- 'baths_half',
147
- 'bedrooms',
148
- 'bom_date',
149
- 'book_number',
150
- 'book_page',
151
- 'book_type',
152
- 'box_on_unit',
153
- 'box_on_unit_yn',
154
- 'business_included_yn',
155
- 'buyer_broker',
156
- 'buyer_broker_type',
157
- 'buyer_city',
158
- 'buyer_name',
159
- 'buyer_state',
160
- 'buyer_zip',
161
- 'category',
162
- 'city',
163
- 'city_code',
164
- 'co_la_code',
165
- 'co_lo_code',
166
- 'co_sa_code',
167
- 'co_so_code',
168
- 'contacts',
169
- 'contr_broker',
170
- 'contr_broker_type',
171
- 'county',
172
- 'current_price',
173
- 'date_created',
174
- 'date_leased',
175
- 'date_modified',
176
- 'df_yn',
177
- 'directions',
178
- 'display_address_yn',
179
- 'dom',
180
- 'elem_school',
181
- 'expenses_assoc',
182
- 'expenses_ins',
183
- 'expenses_maint',
184
- 'expenses_mgmt',
185
- 'expenses_other',
186
- 'expenses_tax',
187
- 'expenses_utility',
188
- 'expire_date',
189
- 'flood_plain',
190
- 'ftr_building',
191
- 'ftr_building_type',
192
- 'ftr_closing',
193
- 'ftr_cooling',
194
- 'ftr_docs_on_file',
195
- 'ftr_exterior',
196
- 'ftr_financing',
197
- 'ftr_flooring',
198
- 'ftr_heating',
199
- 'ftr_interior',
200
- 'ftr_internet',
201
- 'ftr_lease_terms',
202
- 'ftr_property_desc',
203
- 'ftr_roof',
204
- 'ftr_sale_terms',
205
- 'ftr_sewer',
206
- 'ftr_showing',
207
- 'ftr_sprinkler',
208
- 'ftr_style',
209
- 'ftr_utilities',
210
- 'ftr_utilities_rental',
211
- 'ftr_water',
212
- 'geo_precision',
213
- 'georesult',
214
- 'high_school',
215
- 'hoa_fee',
216
- 'hoa_fee_yn',
217
- 'hoa_term',
218
- 'income_gross',
219
- 'income_net',
220
- 'income_other',
221
- 'income_rental',
222
- 'internet_yn',
223
- #'la_code',
224
- 'leased_through',
225
- 'legal_block',
226
- 'legal_lot',
227
- 'legals',
228
- 'list_date',
229
- 'list_price',
230
- 'listing_type',
231
- 'lo_code',
232
- 'lockbox_yn',
233
- 'lot_dimensions',
234
- 'lot_dimensions_source',
235
- 'media_flag',
236
- 'middle_school',
237
- 'mls_acct',
238
- 'municipality',
239
- 'negotiable_price',
240
- 'num_units',
241
- 'num_units_occupied',
242
- 'off_mkt_date',
243
- 'off_mkt_days',
244
- 'office_notes',
245
- 'orig_lp',
246
- 'other_fee',
247
- 'other_fee_type',
248
- 'owner_name',
249
- 'owner_phone',
250
- 'parcel_id',
251
- 'pending_date',
252
- 'photo_count',
253
- 'photo_date_modified',
254
- 'photo_description',
255
- 'photo_instr',
256
- 'posession',
257
- 'price_change_date',
258
- 'price_sqft',
259
- 'proj_close_date',
260
- 'prop_desc',
261
- 'prop_id',
262
- 'prop_type',
263
- 'remarks',
264
- 'road_frontage_ft',
265
- 'sa_code',
266
- 'sale_lease',
267
- 'sale_notes',
268
- 'so_code',
269
- 'sold_date',
270
- 'sold_price',
271
- 'sold_terms',
272
- 'sqft_source',
273
- 'state',
274
- 'status',
275
- 'status_date',
276
- 'status_flag',
277
- 'street',
278
- 'street_dir',
279
- 'street_name',
280
- 'street_num',
281
- 'sub_agent',
282
- 'sub_agent_type',
283
- 'sub_area',
284
- 'subdivision',
285
- 'take_photo_yn',
286
- 'third_party_comm_yn',
287
- 'tot_heat_sqft',
288
- 'tour_date',
289
- 'tour_submit_date',
290
- 'type_detailed',
291
- 'u1_dims',
292
- 'u1_free_standing_yn',
293
- 'u1_sqft_manuf',
294
- 'u1_sqft_office',
295
- 'u1_sqft_retail',
296
- 'u1_sqft_total',
297
- 'u1_sqft_warehouse',
298
- 'u1_year_built',
299
- 'u2_dims',
300
- 'u2_free_standing_yn',
301
- 'u2_sqft_manuf',
302
- 'u2_sqft_office',
303
- 'u2_sqft_retail',
304
- 'u2_sqft_total',
305
- 'u2_sqft_warehouse',
306
- 'u2_year_built',
307
- 'u3_dims',
308
- 'u3_free_standing_yn',
309
- 'u3_sqft_manuf',
310
- 'u3_sqft_office',
311
- 'u3_sqft_retail',
312
- 'u3_sqft_total',
313
- 'u3_sqft_warehouse',
314
- 'u3_year_built',
315
- 'unit_num',
316
- 'upload_source',
317
- 'vacancy_rate',
318
- 'vacant_yn',
319
- 'valuation_yn',
320
- 'vt_yn',
321
- 'waterfront_yn',
322
- 'withdrawn_date',
323
- 'year_built',
324
- 'zip',
325
- 'zoning_northport',
326
- 'zoning_tusc'
327
- property[name.to_sym] = value
328
- end
329
- end
330
- resp.success = save && property.save
331
- render json: resp
332
- end
333
-
334
- # GET /admin/commercial/:mls_acct/refresh
335
- def admin_refresh
336
- return if !user_is_allowed('properties', 'edit')
337
-
338
- p = CommercialProperty.find(params[:mls_acct])
339
- p.delay(:queue => 'rets').refresh_from_mls
340
-
341
- #RetsImporter.import("(MLS_ACCT=#{p.mls_acct})", 'Property', 'COM')
342
- #RetsImporter.download_property_images(p)
343
-
344
- resp = Caboose::StdClass.new
345
- resp.success = "The property's info is being updated from MLS. This may take a few minutes depending on how many images it has."
346
- render :json => resp
347
- end
348
- end
349
- end