caboose-rets 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/MIT-LICENSE +20 -0
- data/README.md +4 -0
- data/Rakefile +38 -0
- data/app/controllers/caboose_rets/agents_controller.rb +169 -0
- data/app/controllers/caboose_rets/application_controller.rb +6 -0
- data/app/controllers/caboose_rets/commercial_controller.rb +281 -0
- data/app/controllers/caboose_rets/land_controller.rb +69 -0
- data/app/controllers/caboose_rets/open_houses_controller.rb +60 -0
- data/app/controllers/caboose_rets/residential_controller.rb +108 -0
- data/app/helpers/caboose_rets/application_helper.rb +4 -0
- data/app/models/caboose_rets/agent.rb +65 -0
- data/app/models/caboose_rets/commercial_property.rb +214 -0
- data/app/models/caboose_rets/land_property.rb +143 -0
- data/app/models/caboose_rets/media.rb +23 -0
- data/app/models/caboose_rets/multi_family_property.rb +198 -0
- data/app/models/caboose_rets/office.rb +27 -0
- data/app/models/caboose_rets/open_house.rb +19 -0
- data/app/models/caboose_rets/residential_property.rb +236 -0
- data/app/models/caboose_rets/rets_importer.rb +303 -0
- data/app/models/caboose_rets/rets_plugin.rb +26 -0
- data/app/views/caboose_rets/agents/_admin_top_nav.html.erb +7 -0
- data/app/views/caboose_rets/agents/admin_edit.html.erb +28 -0
- data/app/views/caboose_rets/agents/admin_edit_bio.html.erb +31 -0
- data/app/views/caboose_rets/agents/admin_edit_contact_info.html.erb +31 -0
- data/app/views/caboose_rets/agents/admin_edit_mls_info.html.erb +71 -0
- data/app/views/caboose_rets/agents/admin_index.html.erb +48 -0
- data/app/views/caboose_rets/agents/details.html.erb +140 -0
- data/app/views/caboose_rets/agents/index.html.erb +163 -0
- data/app/views/caboose_rets/agents/listings.html.erb +121 -0
- data/app/views/caboose_rets/commercial/admin_edit.html.erb +452 -0
- data/app/views/caboose_rets/commercial/admin_index.html.erb +46 -0
- data/app/views/caboose_rets/commercial/details.html.erb +134 -0
- data/app/views/caboose_rets/commercial/index.html.erb +87 -0
- data/app/views/caboose_rets/open_houses/admin_new.html.erb +31 -0
- data/app/views/caboose_rets/residential/admin_edit.html.erb +250 -0
- data/app/views/caboose_rets/residential/admin_index.html.erb +44 -0
- data/app/views/caboose_rets/residential/details.html.erb +139 -0
- data/app/views/caboose_rets/residential/index.html.erb +102 -0
- data/app/views/caboose_rets/residential/residential_not_exists.html.erb +15 -0
- data/app/views/caboose_rets/residential/test_form.html.erb +4 -0
- data/config/routes.rb +87 -0
- data/lib/caboose-rets.rb +4 -0
- data/lib/caboose_rets/caboose_rets_helper.rb +2 -0
- data/lib/caboose_rets/engine.rb +7 -0
- data/lib/caboose_rets/version.rb +3 -0
- data/lib/tasks/caboose_rets.rake +855 -0
- data/test/caboose_test.rb +7 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +4 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/test.log +25 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +15 -0
- metadata +169 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YWU1ZDdiMDI1Mjk0NDE5ZTExNWJmZTc4ZGIyMDUyNDNhN2VhOTIzYw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZTQwYWY0YjJlYTM3ZGUyNDNmN2E1YmUyMzJiMmFiNzE2MTQwZWEyZg==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NjU5MjdlZWYwNWYzMzRlZjIyNjAxMTc0MGU0ZDQxNGQ4YzY5YTRjNTQ2ZjRk
|
10
|
+
OGI4MWM5ZTFmZjIwYTkzYWRiMTE4OTc5YTIxNmRiMGVkNGI4OGE4YTAyODUw
|
11
|
+
ZGJhNDAwMGZiNTQ3MjkwMzA2OGZkMThhZDUzMmE2MGM0ZWRmZTc=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZTE0ZTAxNDU4YTRmZGJjYjFlYTgzOTIwYzY0NjkyNjI3NDVmODQ3OWYzZDAx
|
14
|
+
OTEzOTg4YmY2MjRiODM0NDVjMWFmNTk2ZTMzZmIyNjdjNDJhYTZhZTg1ZTJh
|
15
|
+
ODQxZDY3ODJkY2VlNzA2NTI3YWE1ZGYwYzFiMDY3NWVjYTkxOTM=
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2013 William Barry
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'CabooseRets'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
24
|
+
load 'rails/tasks/engine.rake'
|
25
|
+
|
26
|
+
Bundler::GemHelper.install_tasks
|
27
|
+
|
28
|
+
require 'rake/testtask'
|
29
|
+
|
30
|
+
Rake::TestTask.new(:test) do |t|
|
31
|
+
t.libs << 'lib'
|
32
|
+
t.libs << 'test'
|
33
|
+
t.pattern = 'test/**/*_test.rb'
|
34
|
+
t.verbose = false
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
task :default => :test
|
@@ -0,0 +1,169 @@
|
|
1
|
+
|
2
|
+
module CabooseRets
|
3
|
+
class AgentsController < ApplicationController
|
4
|
+
|
5
|
+
# GET /agents
|
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
|
9
|
+
@assistants = Agent.where(:assistant_to => '048540000').order("last_name, first_name")
|
10
|
+
end
|
11
|
+
|
12
|
+
# GET /agents/:la_code
|
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
|
+
Caboose.log(@agent.last_name)
|
18
|
+
@assistants = Agent.where(:assistant_to => la_code).order("last_name, first_name")
|
19
|
+
@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
|
20
|
+
@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
|
21
|
+
end
|
22
|
+
|
23
|
+
# GET /agents/:la_code/listings
|
24
|
+
def listings
|
25
|
+
@agent = Agent.where(:la_code => params[:la_code]).first
|
26
|
+
is_agents = "la_code = ? AND (status = 'Active' OR status = 'Pending')"
|
27
|
+
is_coagents = "co_la_code = ? AND (status = 'Active' OR status = 'Pending')"
|
28
|
+
|
29
|
+
residential_properties = ResidentialProperty.where(is_agents, params[:la_code])
|
30
|
+
residential_properties += ResidentialProperty.where(is_coagents, params[:la_code]).select{ |p| defined? p && p.mls_acct }
|
31
|
+
|
32
|
+
commercial_properties = CommercialProperty.where(is_agents, params[:la_code])
|
33
|
+
commercial_properties += CommercialProperty.where(is_coagents, params[:la_code]).select{ |p| defined? p && p.mls_acct }
|
34
|
+
|
35
|
+
land_properties = LandProperty.where(is_agents, params[:la_code])
|
36
|
+
land_properties += LandProperty.where(is_coagents, params[:la_code]).select{ |p| defined? p && p.mls_acct }
|
37
|
+
|
38
|
+
@property_groups = [
|
39
|
+
{ type: 'RES' , title: 'Residential Listings' , url_prefix: 'residential' , properties: residential_properties },
|
40
|
+
{ type: 'COM' , title: 'Commercial Listings' , url_prefix: 'commercial' , properties: commercial_properties },
|
41
|
+
{ type: 'LND' , title: 'Land Listings' , url_prefix: 'land' , properties: land_properties },
|
42
|
+
]
|
43
|
+
|
44
|
+
@message = Message.new
|
45
|
+
end
|
46
|
+
|
47
|
+
#=============================================================================
|
48
|
+
# Admin functions
|
49
|
+
#=============================================================================
|
50
|
+
|
51
|
+
# GET /admin/agents
|
52
|
+
def admin_index
|
53
|
+
return if !user_is_allowed('agents', 'view')
|
54
|
+
|
55
|
+
@gen = Caboose::PageBarGenerator.new(params, {
|
56
|
+
'lo_code' => '',
|
57
|
+
'la_code' => '',
|
58
|
+
'first_name_like' => '',
|
59
|
+
'last_name_like' => ''
|
60
|
+
},{
|
61
|
+
'model' => 'Agent',
|
62
|
+
'sort' => 'last_name, first_name',
|
63
|
+
'desc' => false,
|
64
|
+
'base_url' => '/admin/agents'
|
65
|
+
})
|
66
|
+
@agents = @gen.items
|
67
|
+
render :layout => 'caboose/admin'
|
68
|
+
end
|
69
|
+
|
70
|
+
# GET /admin/agents/:id/edit
|
71
|
+
def admin_edit
|
72
|
+
return if !user_is_allowed('agents', 'edit')
|
73
|
+
@agent = Agent.find(params[:id])
|
74
|
+
@boss = @agent.assistant_to.nil? || @agent.assistant_to.strip.length == 0 ? nil : Agent.where(:la_code => @agent.assistant_to).first
|
75
|
+
render :layout => 'caboose/admin'
|
76
|
+
end
|
77
|
+
|
78
|
+
# GET /admin/agents/:id/edit-bio
|
79
|
+
def admin_edit_bio
|
80
|
+
return if !user_is_allowed('agents', 'edit')
|
81
|
+
@agent = Agent.find(params[:id])
|
82
|
+
render :layout => 'caboose/admin'
|
83
|
+
end
|
84
|
+
|
85
|
+
# GET /admin/agents/:id/edit-contact-info
|
86
|
+
def admin_edit_contact_info
|
87
|
+
return if !user_is_allowed('agents', 'edit')
|
88
|
+
@agent = Agent.find(params[:id])
|
89
|
+
render :layout => 'caboose/admin'
|
90
|
+
end
|
91
|
+
|
92
|
+
# GET /admin/agents/:id/edit-mls-info
|
93
|
+
def admin_edit_mls_info
|
94
|
+
return if !user_is_allowed('agents', 'edit')
|
95
|
+
@agent = Agent.find(params[:id])
|
96
|
+
render :layout => 'caboose/admin'
|
97
|
+
end
|
98
|
+
|
99
|
+
# POST /admin/agents/:id
|
100
|
+
def admin_update
|
101
|
+
Caboose.log(params)
|
102
|
+
return if !user_is_allowed('agents', 'edit')
|
103
|
+
|
104
|
+
resp = Caboose::StdClass.new({'attributes' => {}})
|
105
|
+
agent = Agent.find(params[:id])
|
106
|
+
|
107
|
+
save = true
|
108
|
+
params.each do |name,value|
|
109
|
+
case name
|
110
|
+
when 'hide'
|
111
|
+
agent.hide = value
|
112
|
+
when 'contact_info'
|
113
|
+
agent.contact_info = value
|
114
|
+
when 'bio'
|
115
|
+
agent.bio = value
|
116
|
+
when 'assistant_to'
|
117
|
+
agent.assistant_to = value
|
118
|
+
if !value.nil? && value.length > 0 && Agent.exists?(:la_code => value)
|
119
|
+
boss = Agent.where(:la_code => value).first
|
120
|
+
resp.attributes['assistant_to'] = { 'text' => "#{boss.first_name} #{boss.last_name}" }
|
121
|
+
else
|
122
|
+
resp.attributes['assistant_to'] = { 'text' => "Not an assistant" }
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
resp.success = save && agent.save
|
127
|
+
render :json => resp
|
128
|
+
end
|
129
|
+
|
130
|
+
# GET /admin/agents/:id/refresh
|
131
|
+
def admin_refresh
|
132
|
+
agent = Agent.find(params[:id])
|
133
|
+
RetsAgentsImporter.import_agent(agent.la_code)
|
134
|
+
flash[:message] = "<p class='note success'>The agent's info has been updated from MLS.</p>"
|
135
|
+
render :json => Caboose::StdClass.new({ 'reload' => true })
|
136
|
+
end
|
137
|
+
|
138
|
+
# GET /admin/agents/assistant-to-options
|
139
|
+
def admin_assistant_to_options
|
140
|
+
options = [{
|
141
|
+
'value' => '',
|
142
|
+
'text' => '-- Not an assistant --'
|
143
|
+
}]
|
144
|
+
Agent.where(:lo_code => '46').reorder('last_name, first_name').all.each do |a|
|
145
|
+
options << {
|
146
|
+
'value' => a.la_code,
|
147
|
+
'text' => "#{a.first_name} #{a.last_name}"
|
148
|
+
}
|
149
|
+
end
|
150
|
+
render :json => options
|
151
|
+
end
|
152
|
+
|
153
|
+
# GET /admin/agents/agent_options
|
154
|
+
def agent_options
|
155
|
+
options = [{
|
156
|
+
'value' => '',
|
157
|
+
'text' => '-- No Agent --'
|
158
|
+
}]
|
159
|
+
Agent.where(:lo_code => '46').reorder('last_name, first_name').all.each do |a|
|
160
|
+
options << {
|
161
|
+
'value' => a.la_code,
|
162
|
+
'text' => "#{a.first_name} #{a.last_name}"
|
163
|
+
}
|
164
|
+
end
|
165
|
+
render :json => options
|
166
|
+
end
|
167
|
+
|
168
|
+
end
|
169
|
+
end
|
@@ -0,0 +1,281 @@
|
|
1
|
+
|
2
|
+
class 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
|
+
'prop_type' => '',
|
12
|
+
'tot_heat_sqft_gte' => '',
|
13
|
+
'city' => '',
|
14
|
+
'county' => '',
|
15
|
+
'zip' => '',
|
16
|
+
'mls_acct' => '',
|
17
|
+
# 'added_by_advantage' => '',
|
18
|
+
'lo_code' => '',
|
19
|
+
'address' => '',
|
20
|
+
},{
|
21
|
+
'model' => 'CommercialProperty',
|
22
|
+
'sort' => 'mls_acct',
|
23
|
+
'desc' => false,
|
24
|
+
'base_url' => '/commercial',
|
25
|
+
'items_per_page' => 10
|
26
|
+
})
|
27
|
+
@properties = @gen.items
|
28
|
+
end
|
29
|
+
|
30
|
+
# GET /commercial/:mls_acct/details
|
31
|
+
def details
|
32
|
+
@property = CommercialProperty.where(:mls_acct => params[:mls_acct]).first
|
33
|
+
if @property.lo_code == '46'
|
34
|
+
@agent = Agent.where(:la_code => @property.la_code).first
|
35
|
+
end
|
36
|
+
@message = Message.new
|
37
|
+
end
|
38
|
+
|
39
|
+
#=============================================================================
|
40
|
+
# Admin actions
|
41
|
+
#=============================================================================
|
42
|
+
|
43
|
+
# GET /admin/commercial
|
44
|
+
def admin_index
|
45
|
+
return if !user_is_allowed('properties', 'view')
|
46
|
+
|
47
|
+
@gen = Caboose::PageBarGenerator.new(params, {
|
48
|
+
'name' => ''
|
49
|
+
},{
|
50
|
+
'model' => 'CommercialProperty',
|
51
|
+
'sort' => 'mls_acct',
|
52
|
+
'desc' => false,
|
53
|
+
'base_url' => '/admin/commercial'
|
54
|
+
})
|
55
|
+
@properties = @gen.items
|
56
|
+
render :layout => 'caboose/admin'
|
57
|
+
end
|
58
|
+
|
59
|
+
# GET /admin/commercial/:mls_acct/edit
|
60
|
+
def admin_edit
|
61
|
+
return if !user_is_allowed('properties', 'edit')
|
62
|
+
@property = CommercialProperty.where(:mls_acct => params[:mls_acct]).first
|
63
|
+
render :layout => 'caboose/admin'
|
64
|
+
end
|
65
|
+
|
66
|
+
# POST /admin/commercial/:mls_acct
|
67
|
+
def admin_update
|
68
|
+
return if !user_is_allowed('properties', 'edit')
|
69
|
+
|
70
|
+
resp = Caboose::StdClass.new({'attributes' => {}})
|
71
|
+
property = CommercialProperty.find(params[:id])
|
72
|
+
|
73
|
+
save = true
|
74
|
+
params.each do |name,value|
|
75
|
+
case name
|
76
|
+
when 'acreage',
|
77
|
+
'adjoining_land_use',
|
78
|
+
'agent_notes',
|
79
|
+
'agent_other_contact_desc',
|
80
|
+
'agent_other_contact_phone',
|
81
|
+
'annual_taxes',
|
82
|
+
'approx_age',
|
83
|
+
'area',
|
84
|
+
'baths',
|
85
|
+
'baths_full',
|
86
|
+
'baths_half',
|
87
|
+
'bedrooms',
|
88
|
+
'bom_date',
|
89
|
+
'book_number',
|
90
|
+
'book_page',
|
91
|
+
'book_type',
|
92
|
+
'box_on_unit',
|
93
|
+
'box_on_unit_yn',
|
94
|
+
'business_included_yn',
|
95
|
+
'buyer_broker',
|
96
|
+
'buyer_broker_type',
|
97
|
+
'buyer_city',
|
98
|
+
'buyer_name',
|
99
|
+
'buyer_state',
|
100
|
+
'buyer_zip',
|
101
|
+
'category',
|
102
|
+
'city',
|
103
|
+
'city_code',
|
104
|
+
'co_la_code',
|
105
|
+
'co_lo_code',
|
106
|
+
'co_sa_code',
|
107
|
+
'co_so_code',
|
108
|
+
'contacts',
|
109
|
+
'contr_broker',
|
110
|
+
'contr_broker_type',
|
111
|
+
'county',
|
112
|
+
'current_price',
|
113
|
+
'date_created',
|
114
|
+
'date_leased',
|
115
|
+
'date_modified',
|
116
|
+
'df_yn',
|
117
|
+
'directions',
|
118
|
+
'display_address_yn',
|
119
|
+
'dom',
|
120
|
+
'elem_school',
|
121
|
+
'expenses_assoc',
|
122
|
+
'expenses_ins',
|
123
|
+
'expenses_maint',
|
124
|
+
'expenses_mgmt',
|
125
|
+
'expenses_other',
|
126
|
+
'expenses_tax',
|
127
|
+
'expenses_utility',
|
128
|
+
'expire_date',
|
129
|
+
'flood_plain',
|
130
|
+
'ftr_building',
|
131
|
+
'ftr_building_type',
|
132
|
+
'ftr_closing',
|
133
|
+
'ftr_cooling',
|
134
|
+
'ftr_docs_on_file',
|
135
|
+
'ftr_exterior',
|
136
|
+
'ftr_financing',
|
137
|
+
'ftr_flooring',
|
138
|
+
'ftr_heating',
|
139
|
+
'ftr_interior',
|
140
|
+
'ftr_internet',
|
141
|
+
'ftr_lease_terms',
|
142
|
+
'ftr_property_desc',
|
143
|
+
'ftr_roof',
|
144
|
+
'ftr_sale_terms',
|
145
|
+
'ftr_sewer',
|
146
|
+
'ftr_showing',
|
147
|
+
'ftr_sprinkler',
|
148
|
+
'ftr_style',
|
149
|
+
'ftr_utilities',
|
150
|
+
'ftr_utilities_rental',
|
151
|
+
'ftr_water',
|
152
|
+
'geo_precision',
|
153
|
+
'georesult',
|
154
|
+
'high_school',
|
155
|
+
'hoa_fee',
|
156
|
+
'hoa_fee_yn',
|
157
|
+
'hoa_term',
|
158
|
+
'income_gross',
|
159
|
+
'income_net',
|
160
|
+
'income_other',
|
161
|
+
'income_rental',
|
162
|
+
'internet_yn',
|
163
|
+
'la_code',
|
164
|
+
'leased_through',
|
165
|
+
'legal_block',
|
166
|
+
'legal_lot',
|
167
|
+
'legals',
|
168
|
+
'list_date',
|
169
|
+
'list_price',
|
170
|
+
'listing_type',
|
171
|
+
'lo_code',
|
172
|
+
'lockbox_yn',
|
173
|
+
'lot_dimensions',
|
174
|
+
'lot_dimensions_source',
|
175
|
+
'media_flag',
|
176
|
+
'middle_school',
|
177
|
+
'mls_acct',
|
178
|
+
'municipality',
|
179
|
+
'num_units',
|
180
|
+
'num_units_occupied',
|
181
|
+
'off_mkt_date',
|
182
|
+
'off_mkt_days',
|
183
|
+
'office_notes',
|
184
|
+
'orig_lp',
|
185
|
+
'other_fee',
|
186
|
+
'other_fee_type',
|
187
|
+
'owner_name',
|
188
|
+
'owner_phone',
|
189
|
+
'parcel_id',
|
190
|
+
'pending_date',
|
191
|
+
'photo_count',
|
192
|
+
'photo_date_modified',
|
193
|
+
'photo_description',
|
194
|
+
'photo_instr',
|
195
|
+
'posession',
|
196
|
+
'price_change_date',
|
197
|
+
'price_sqft',
|
198
|
+
'proj_close_date',
|
199
|
+
'prop_desc',
|
200
|
+
'prop_id',
|
201
|
+
'prop_type',
|
202
|
+
'remarks',
|
203
|
+
'road_frontage_ft',
|
204
|
+
'sa_code',
|
205
|
+
'sale_lease',
|
206
|
+
'sale_notes',
|
207
|
+
'so_code',
|
208
|
+
'sold_date',
|
209
|
+
'sold_price',
|
210
|
+
'sold_terms',
|
211
|
+
'sqft_source',
|
212
|
+
'state',
|
213
|
+
'status',
|
214
|
+
'status_date',
|
215
|
+
'status_flag',
|
216
|
+
'street',
|
217
|
+
'street_dir',
|
218
|
+
'street_name',
|
219
|
+
'street_num',
|
220
|
+
'sub_agent',
|
221
|
+
'sub_agent_type',
|
222
|
+
'sub_area',
|
223
|
+
'subdivision',
|
224
|
+
'take_photo_yn',
|
225
|
+
'third_party_comm_yn',
|
226
|
+
'tot_heat_sqft',
|
227
|
+
'tour_date',
|
228
|
+
'tour_submit_date',
|
229
|
+
'type_detailed',
|
230
|
+
'u1_dims',
|
231
|
+
'u1_free_standing_yn',
|
232
|
+
'u1_sqft_manuf',
|
233
|
+
'u1_sqft_office',
|
234
|
+
'u1_sqft_retail',
|
235
|
+
'u1_sqft_total',
|
236
|
+
'u1_sqft_warehouse',
|
237
|
+
'u1_year_built',
|
238
|
+
'u2_dims',
|
239
|
+
'u2_free_standing_yn',
|
240
|
+
'u2_sqft_manuf',
|
241
|
+
'u2_sqft_office',
|
242
|
+
'u2_sqft_retail',
|
243
|
+
'u2_sqft_total',
|
244
|
+
'u2_sqft_warehouse',
|
245
|
+
'u2_year_built',
|
246
|
+
'u3_dims',
|
247
|
+
'u3_free_standing_yn',
|
248
|
+
'u3_sqft_manuf',
|
249
|
+
'u3_sqft_office',
|
250
|
+
'u3_sqft_retail',
|
251
|
+
'u3_sqft_total',
|
252
|
+
'u3_sqft_warehouse',
|
253
|
+
'u3_year_built',
|
254
|
+
'unit_num',
|
255
|
+
'upload_source',
|
256
|
+
'vacancy_rate',
|
257
|
+
'vacant_yn',
|
258
|
+
'valuation_yn',
|
259
|
+
'vt_yn',
|
260
|
+
'waterfront_yn',
|
261
|
+
'withdrawn_date',
|
262
|
+
'year_built',
|
263
|
+
'zip',
|
264
|
+
'zoning_northport',
|
265
|
+
'zoning_tusc'
|
266
|
+
property[name.to_sym] = value
|
267
|
+
end
|
268
|
+
end
|
269
|
+
resp.success = save && property.save
|
270
|
+
render json: resp
|
271
|
+
end
|
272
|
+
|
273
|
+
# GET /admin/commercial/:mls_acct/refresh
|
274
|
+
def admin_refresh
|
275
|
+
RetsCommercialImporter.import_property(params[:mls_acct], 'COM')
|
276
|
+
flash[:message] = "<p class='note success'>The property info has been updated from MLS.</p>"
|
277
|
+
render :json => Caboose::StdClass.new({ 'reload' => true })
|
278
|
+
end
|
279
|
+
|
280
|
+
end
|
281
|
+
end
|