caboose-rets 0.1.172 → 0.1.177

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ffe1bb33340eca294f66a11d3b0d30cdb1f3c0bafac94d98f6c9e35cc5b936b6
4
- data.tar.gz: 33e44cedfeed2d4dcc0aeff18f51c874617a7dd21b255d09ab883f6adea3c700
3
+ metadata.gz: 91703c4b5ddc0ad895c33f112660b0f3d5d89edb1bfe677783883b24509d0119
4
+ data.tar.gz: ed94f877eaf291ba16c49f7eca34326a24680bc06845ed8699ec7aa38924c305
5
5
  SHA512:
6
- metadata.gz: 5c896ef5ef41cc6747e6ada1d539aa8274f754bcb25874bd7615c82f6f70c255718e9b00118682cf1dc45742031938fb6f9fa120a55c83dbf8dbe34ffeb2ebad
7
- data.tar.gz: 3d0ed4a79ab4e28422570891a49c93ff1245fe12047b42f37544e5893e73c88719bff47c1b363ec83d4e18999a333b5a251ea5e021110d0e3cf6b71e1a74d8c9
6
+ metadata.gz: ced91843e6e7a7e85a36a152a030b0bb84ccc159f2b4bfcf8ba4514b41ad9db6a20a3a9ad5d2e8fa42bff357801bea824213c8e706faece75ea9941f2b7d339f
7
+ data.tar.gz: 51c5ecb850f35e475e69f02b8fa74f6262c5ae7841d9aa7ed6fe96bdb3e68af8915ff8e4e1ead46e5184431b9543d188d2c1daf32d73d3dfff46cdb7181ae66f
@@ -14,12 +14,12 @@ module CabooseRets
14
14
  @agent = Agent.where(:mls_id => params[:mls_id]).where("office_mls_id ILIKE ?", @site.rets_office_id).first if !params[:mls_id].blank?
15
15
  @agent = Agent.where(:slug => params[:slug]).where("office_mls_id ILIKE ?", @site.rets_office_id).first if !params[:slug].blank?
16
16
  @listings = Property.where("list_agent_mls_id ILIKE ? OR co_list_agent_mls_id ILIKE ?", @agent.mls_id, @agent.mls_id).where(:status => 'Active').order('list_price desc').all
17
- end
17
+ end
18
18
 
19
19
  # @route GET /real-estate/agents/:slug/contact
20
- # @route GET /agents/:mls_id/contact
20
+ # @route GET /agents/:id/contact
21
21
  def contact
22
- @agent = Agent.where(:mls_id => params[:mls_id]).where("office_mls_id ILIKE ?", @site.rets_office_id).first if !params[:mls_id].blank?
22
+ @agent = Agent.where(:id => params[:id]).first if !params[:id].blank?
23
23
  @agent = Agent.where(:slug => params[:slug]).where("office_mls_id ILIKE ?", @site.rets_office_id).first if !params[:slug].blank?
24
24
  end
25
25
 
@@ -2,7 +2,6 @@ module CabooseRets
2
2
  class PropertiesController < ApplicationController
3
3
 
4
4
  # @route GET /properties/search-options
5
- # q=rock quary
6
5
  def search_options
7
6
  count = params[:count_per_name] ? params[:count_per_name] : 10
8
7
  arr = SearchOption.results(params[:q], count)
@@ -23,6 +22,7 @@ module CabooseRets
23
22
  end
24
23
  where = "(id is not null)"
25
24
  search_options = []
25
+ searched_address = false
26
26
 
27
27
  if (@site && @site.id == 558) || request.original_fullpath =~ /^\/tuscaloosa-condos-for-sale(.*?)$/
28
28
  where = "(style ILIKE '%condo%' OR public_remarks ILIKE '%condo%' OR legal_description ILIKE '%unit%' OR res_style ILIKE '%condo%' OR property_subtype ILIKE '%condo%' OR property_subtype ILIKE '%townhouse%')"
@@ -33,8 +33,14 @@ module CabooseRets
33
33
  if lc && lc.count > 0
34
34
  lc.each do |lcid|
35
35
  so = CabooseRets::SearchOption.where(:id => lcid).first
36
- if so
36
+ if so && so.name == "Street Address"
37
+ search_options << "( CONCAT(CONCAT(CONCAT(CONCAT(street_number, ' '),street_name),' '),street_suffix) ILIKE '%#{so.value}%' )"
38
+ searched_address = true
39
+ elsif so && so.name == "Street Name"
40
+ search_options << "( CONCAT(CONCAT(street_name,' '),street_suffix) ILIKE '%#{so.value}%' )"
41
+ elsif so
37
42
  search_options << "(#{so.field} = '#{so.value}')"
43
+ searched_address = true if so.name == 'MLS Number'
38
44
  end
39
45
  end
40
46
  end
@@ -114,6 +120,13 @@ module CabooseRets
114
120
  :saved_search => @saved_search,
115
121
  :pager => @pager
116
122
  }
123
+
124
+ if @properties && @properties.count == 1 && searched_address
125
+ only_property = @properties.first
126
+ redirect_to only_property.url and return
127
+ end
128
+
129
+
117
130
  end
118
131
 
119
132
  # @route GET /properties/:mls_number/details
@@ -130,27 +143,19 @@ module CabooseRets
130
143
 
131
144
  @related = Property.near("#{@property.latitude}, #{@property.longitude}", 50).where(:property_type => @property.property_type, :status => 'Active', :property_subtype => @property.property_subtype).where(price_where,price_min,price_max).where(beds_where,beds_min,beds_max).where("mls_number != ?",@property.mls_number).order('distance asc').limit(3) if @property
132
145
 
133
- if @property.nil?
134
- @mls_number = params[:mls_number]
135
- # CabooseRets::RetsImporter.delay(:priority => 10, :queue => 'rets').import_property(@mls_number.to_i)
136
- render 'caboose_rets/properties/property_not_exists'
137
- return
138
- end
146
+ render :file => "caboose/extras/error404", :layout => "caboose/application", :status => 404 and return if @property.nil?
139
147
 
140
148
  @block_options = {
141
149
  :mls_number => params[:mls_number],
142
150
  :property => @property,
143
151
  :saved => @saved,
144
- # :agent => @property ? @property.where(:list_agent_mls_id => @property.list_agent_mls_id).first : nil,
145
152
  :form_authenticity_token => form_authenticity_token
146
153
  }
147
154
 
148
- if @property.nil?
149
- @mls = params[:mls]
150
- # CabooseRets::RetsImporter.delay(:priority => 10, :queue => 'rets').import_property(@mls_number.to_i)
151
- render 'caboose_rets/properties/property_not_exists'
152
- return
153
- end
155
+ @page.title = @property.full_address
156
+ @page.meta_description = @property.meta_description(@site)
157
+ @page.uri = "properties/#{@property.mls_number}/details"
158
+
154
159
  end
155
160
 
156
161
  #=============================================================================
@@ -41,12 +41,17 @@ class CabooseRets::Property <ActiveRecord::Base
41
41
 
42
42
  def full_address
43
43
  address = "#{self.unit_number.blank? ? '' : 'Unit ' + self.unit_number + ', '}#{self.street_number} #{self.street_dir_prefix.blank? ? '' : self.street_dir_prefix + ' '}#{self.street_name.blank? ? '' : self.street_name.titleize}#{self.street_suffix.blank? ? '' : ' ' + self.street_suffix.titleize}#{self.street_dir_suffix.blank? ? '' : ' ' + self.street_dir_suffix}"
44
- return address.blank? ? '' : address.gsub('Mc ','Mc')
44
+ return address.blank? ? '' : address.gsub('Mc ','Mc').gsub('Mlk',"MLK").gsub(" Us ", " US ").gsub(" Th ", "th ").gsub("Mcfarland","McFarland")
45
45
  end
46
46
 
47
47
  def full_address_city
48
48
  address = "#{self.unit_number.blank? ? '' : 'Unit ' + self.unit_number + ', '}#{self.street_number} #{self.street_dir_prefix.blank? ? '' : self.street_dir_prefix + ' '}#{self.street_name.blank? ? '' : self.street_name.titleize}#{self.street_suffix.blank? ? '' : ' ' + self.street_suffix.titleize}#{self.street_dir_suffix.blank? ? '' : ' ' + self.street_dir_suffix}#{self.city.blank? ? '' : '<br />' + self.city.titleize + ', ' + self.state_or_province + ' ' + self.postal_code}"
49
- return address.blank? ? '' : address.gsub('Mc ','Mc')
49
+ return address.blank? ? '' : address.gsub('Mc ','Mc').gsub('Mlk',"MLK").gsub(" Us ", " US ").gsub(" Th ", "th ").gsub("Mcfarland","McFarland")
50
+ end
51
+
52
+ def meta_description(site)
53
+ fa = self.full_address_city.blank? ? nil : self.full_address_city.gsub("<br />",", ")
54
+ return "View the property listed for sale at #{fa}. #{site.description}"
50
55
  end
51
56
 
52
57
  def parse(data)
@@ -723,10 +723,14 @@ class CabooseRets::RetsImporter # < ActiveRecord::Base
723
723
  if count == 0 || (count == 1 && Delayed::Job.where(q).first.locked_at)
724
724
  self.delay(:run_at => 20.minutes.from_now, :priority => 10, :queue => 'rets').update_rets
725
725
  end
726
- # Delete old logs
727
- CabooseRets::Log.where("timestamp < ?",(DateTime.now - 30.days)).destroy_all
726
+
727
+ # Delete RETS logs over 7 days old
728
+ dt = DateTime.now - 7.days
729
+ sql = "delete from rets_logs where timestamp < '#{dt}';"
730
+ ActiveRecord::Base.connection.select_all(sql)
731
+
728
732
  # Update search options
729
- CabooseRets::SearchOption.delay(:queue => "rets").update_search_options
733
+ CabooseRets::SearchOption.delay(:queue => "rets", :priority => 15).update_search_options
730
734
  end
731
735
 
732
736
  def self.last_updated
@@ -16,6 +16,7 @@ class CabooseRets::SearchOption < ActiveRecord::Base
16
16
  'MLS Area' => ['area'],
17
17
  'Neighborhood' => ['subdivision'],
18
18
  'Street Name' => ['street_name'],
19
+ 'Street Address' => ['street_address'],
19
20
  'Property Type' => ['property_type'],
20
21
  'MLS Number' => ['mls_number']
21
22
  }
@@ -24,21 +25,51 @@ class CabooseRets::SearchOption < ActiveRecord::Base
24
25
  self.update_search_options_for_field(name, field)
25
26
  end
26
27
  end
27
-
28
+
28
29
  # Delete all flagged
29
30
  self.where(:flag_for_delete => true).delete_all
30
31
  end
31
32
 
32
33
  def self.update_search_options_for_field(name, field)
33
- q = ["select distinct(#{field}) from rets_properties where status = ?", 'Active']
34
- rows = ActiveRecord::Base.connection.select_rows(ActiveRecord::Base.send(:sanitize_sql_array, q))
35
- rows.each do |row|
36
- so = self.where(:name => name, :field => field, :value => row[0]).first
37
- if so.nil? && !field.blank?
38
- self.create(:name => name, :field => field, :value => row[0])
39
- else
40
- so.flag_for_delete = false
41
- so.save
34
+ if field == 'street_name'
35
+ CabooseRets::Property.where(:status => "Active", :property_type => "Residential").where("street_name is not null").order(:id).all.each do |prop|
36
+ add = "#{prop.street_name} #{prop.street_suffix}"
37
+ val = add.blank? ? nil : add.strip
38
+ next if val.blank?
39
+ so = self.where(:name => name, :field => field, :value => val).first
40
+ if so.nil? && !field.blank?
41
+ self.create(:name => name, :field => field, :value => val)
42
+ elsif so
43
+ so.flag_for_delete = false
44
+ so.save
45
+ end
46
+ end
47
+ elsif field == 'street_address'
48
+ CabooseRets::Property.where(:status => "Active", :property_type => "Residential").where("street_name is not null and street_number is not null").order(:id).all.each do |prop|
49
+ add = "#{prop.street_number} #{prop.street_name} #{prop.street_suffix}"
50
+ val = add.blank? ? nil : add.strip
51
+ next if val.blank?
52
+ so = self.where(:name => name, :field => field, :value => val).first
53
+ if so.nil? && !field.blank?
54
+ self.create(:name => name, :field => field, :value => val)
55
+ elsif so
56
+ so.flag_for_delete = false
57
+ so.save
58
+ end
59
+ end
60
+ else
61
+ q = ["select distinct(#{field}) from rets_properties where status = ? and property_type = ?", 'Active', 'Residential']
62
+ rows = ActiveRecord::Base.connection.select_rows(ActiveRecord::Base.send(:sanitize_sql_array, q))
63
+ rows.each do |row|
64
+ val = row[0].blank? ? nil : row[0].titleize.strip
65
+ next if val.blank?
66
+ so = self.where(:name => name, :field => field, :value => val).first
67
+ if so.nil? && !field.blank?
68
+ self.create(:name => name, :field => field, :value => val)
69
+ elsif so
70
+ so.flag_for_delete = false
71
+ so.save
72
+ end
42
73
  end
43
74
  end
44
75
  end
@@ -1,3 +1,3 @@
1
1
  module CabooseRets
2
- VERSION = '0.1.172'
2
+ VERSION = '0.1.177'
3
3
  end
@@ -292,7 +292,6 @@ namespace :caboose_rets do
292
292
  ensure
293
293
  unlock_task_if_last_updated(task_started)
294
294
  end
295
- CabooseRets::SearchOption.delay(:queue => "rets").update_search_options
296
295
  end
297
296
 
298
297
  def last_updated
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.172
4
+ version: 0.1.177
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-30 00:00:00.000000000 Z
11
+ date: 2021-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: caboose-cms