caboose-rets 0.1.137 → 0.1.138

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: 3721be10e7efeeac492d4d6f0356529b354de233c08fbffe6ad6da9405384165
4
- data.tar.gz: cecb7cc4d5183a7b63193213ce214170430b6a0ff8a76bedf7c7dbcd2cf6cc1d
3
+ metadata.gz: '0693d66d51cc96cc0047406427a7995952d4ff49811f00e4ddc29a42e8ce10cd'
4
+ data.tar.gz: f64af0ab95cc78276e1c7fcedfbe07f24ffb2156812771845b697cb268cc02d5
5
5
  SHA512:
6
- metadata.gz: 870f358c326b3f9b24a779e1d2b86d31a0e4e424c96fa4fcf2a2704cb84d576cbca4d6f8bb012c907b86df1822b524b8ff24ab7c7d237185925484b66ff9a1db
7
- data.tar.gz: 0c87f5e78d2f6c30cd3745a6740289cf1b9cb03eabe9ecbe4ba80aece7bb80e281b785098728b5345c359d941bd52db177cf284d6d4b4373c417954c4027e8fb
6
+ metadata.gz: a1fc5cb0670567151252eb6fce0fc78a11befe94d9893e070682838b8941c7448dba03e5708c95247c4615bfc6eb0a0310f64c3287a813afca13546a34afff24
7
+ data.tar.gz: 18ae14806df3455790c5c98db7d3e96191557415c1509ca44a71c74f205f059ad297102fbe5a5560c88405b97ab3c613a4b8a6cd61b3ebd90e41a7e22fe82364
@@ -33,6 +33,17 @@ module CabooseRets
33
33
  render :layout => 'caboose/admin'
34
34
  end
35
35
 
36
+ # @route GET /admin/agents/options
37
+ def admin_agent_options
38
+ options = []
39
+ rc = CabooseRets::RetsConfig.where(:site_id => @site.id).first
40
+ agents = rc ? CabooseRets::Agent.joins(:meta).where(:office_mls_id => rc.office_mls, rets_agents_meta: {hide: FALSE, accepts_listings: true}).order(:sort_order).all : []
41
+ agents.each do |c|
42
+ options << { 'value' => c.mls_id, 'text' => "#{c.first_name} #{c.last_name}" }
43
+ end
44
+ render :json => options
45
+ end
46
+
36
47
  # @route GET /admin/agents/json
37
48
  def admin_json
38
49
  render :json => false and return if !user_is_allowed_to 'view', 'rets_agents'
@@ -7,6 +7,12 @@ module CabooseRets
7
7
  @properties = SavedProperty.where(:user_id => logged_in_user.id).all
8
8
  end
9
9
 
10
+ # GET /admin/users/:id/mls
11
+ def rets_info
12
+ @edituser = Caboose::User.where(:id => params[:id], :site_id => @site.id).first
13
+ render :layout => 'caboose/admin'
14
+ end
15
+
10
16
  # POST /saved-properties
11
17
  def add
12
18
  return if !verify_logged_in
@@ -39,6 +39,29 @@ class CabooseRets::Agent < ActiveRecord::Base
39
39
  CabooseRets::RetsImporter.import('Member', "(MemberMlsId=#{self.mls_id})")
40
40
  CabooseRets::RetsImporter.import_agent(self.mls_id)
41
41
  end
42
+
43
+ def self.assign_to_new_user(user)
44
+ if user && user.site && user.site.use_rets
45
+ rc = CabooseRets::RetsConfig.where(:site_id => user.site_id).first
46
+ agents = rc ? CabooseRets::Agent.joins(:meta).where(:office_mls_id => rc.office_mls, rets_agents_meta: {hide: FALSE, accepts_listings: true}).order(:sort_order).all : []
47
+ last_agent_mls_id = Caboose::Setting.where(:name => "latest_user_agent", :site_id => user.site_id).exists? ? Caboose::Setting.where(:name => "latest_user_agent", :site_id => user.site_id).first : Caboose::Setting.create(:name => "latest_user_agent", :site_id => user.site_id, :value => agents.first.mls_id)
48
+ last_agent = CabooseRets::Agent.joins(:meta).where(:mls_id => last_agent_mls_id.value, rets_agents_meta: {hide: FALSE, accepts_listings: true}).first
49
+ agent_index = last_agent.present? ? agents.find_index(last_agent) : 0
50
+ agent_index + 1 < agents.count ? agent_index += 1 : agent_index = 0
51
+ agent = agents[agent_index]
52
+ if agent.mls_id == '118593505' # Steven Deal shouldn't be assigned
53
+ agent_index + 1 < agents.count ? agent_index += 1 : agent_index = 0
54
+ agent = agents[agent_index]
55
+ end
56
+ Caboose.log("Assigning agent #{agent.mls_id} to user #{user.id}")
57
+ user.rets_agent_mls_id = agent.mls_id
58
+ last_agent_mls_id.value = agent.mls_id
59
+ user.save
60
+ last_agent_mls_id.save
61
+ role = Caboose::Role.where(:name => 'RETS Visitor', :site_id => user.site_id).exists? ? Caboose::Role.where(:name => 'RETS Visitor', :site_id => user.site_id).first : Caboose::Role.create(:name => 'RETS Visitor', :site_id => user.site_id)
62
+ Caboose::RoleMembership.create(:user_id => user.id, :role_id => role.id)
63
+ end
64
+ end
42
65
 
43
66
  def parse(data)
44
67
  # self.agent_number = data['AgentNumber']
@@ -26,5 +26,11 @@ class CabooseRets::RetsPlugin < Caboose::CaboosePlugin
26
26
 
27
27
  return nav
28
28
  end
29
+
30
+ def self.admin_user_tabs(tabs, user, site)
31
+ arr = tabs.to_a.insert(-2, ['MLS Profile', "/admin/users/#{user.id}/mls"])
32
+ tabs = Hash[arr]
33
+ return tabs
34
+ end
29
35
 
30
36
  end
@@ -1,10 +1,11 @@
1
-
2
1
  class CabooseRets::SavedProperty < ActiveRecord::Base
3
2
  self.table_name = "rets_saved_properties"
3
+
4
4
  belongs_to :user, :class_name => 'Caboose::User'
5
- attr_accessible :user_id, :mls
5
+ attr_accessible :user_id, :mls_number
6
6
 
7
7
  def property
8
- return CabooseRets.get_property(self.mls)
8
+ return CabooseRets::Property.where(:mls_number => self.mls_number).first
9
9
  end
10
+
10
11
  end
@@ -7,6 +7,12 @@ class CabooseRets::Schema < Caboose::Utilities::Schema
7
7
  }
8
8
  end
9
9
 
10
+ def self.removed_columns
11
+ {
12
+ CabooseRets::SavedProperty => [:mls_acct]
13
+ }
14
+ end
15
+
10
16
  # The schema of the database
11
17
  # { Model => [[name, data_type, options]] }
12
18
  def self.schema
@@ -315,7 +321,7 @@ class CabooseRets::Schema < Caboose::Utilities::Schema
315
321
  ],
316
322
  CabooseRets::SavedProperty => [
317
323
  [ :user_id , :integer ],
318
- [ :mls_number , :integer ]
324
+ [ :mls_number , :string ]
319
325
  ],
320
326
  CabooseRets::SavedSearch => [
321
327
  [ :user_id , :integer ],
@@ -336,6 +342,9 @@ class CabooseRets::Schema < Caboose::Utilities::Schema
336
342
  Caboose::Site => [
337
343
  [ :use_rets , :boolean, { :default => false }]
338
344
  ],
345
+ Caboose::User => [
346
+ [ :rets_agent_mls_id , :string ]
347
+ ],
339
348
  CabooseRets::RetsConfig => [
340
349
  [ :site_id, :integer ],
341
350
  [ :office_mls, :string ],
@@ -35,13 +35,9 @@
35
35
  <span class="title">MLS ID</span>
36
36
  <span class="value"><%= @agent.mls_id %></span>
37
37
  </p>
38
-
39
-
40
38
  <div id="agent_<%= @agent.id %>_accepts_listings"></div>
41
39
  <br />
42
- <div id="agent_<%= @agent.id %>_weight"></div>
43
- <br />
44
- <div id="agent_<%= @agent.id %>_hide"></div>
40
+ <div id="agent_<%= @agent.id %>_hide"></div>
45
41
  <br />
46
42
  <div id="agent_<%= @agent.id %>_slug"></div>
47
43
 
@@ -59,13 +55,24 @@
59
55
  <div class="unit1of2 right">
60
56
  <% properties = CabooseRets::Property.where(:representative_agent_mui => @agent.mls_id).order('id desc').limit(100) %>
61
57
  <% if properties.count > 0 %>
62
- <h5>Assigned Listings (<%= properties.count %>)</h5>
58
+ <h5 style="margin:0;">Assigned Listings (<%= properties.count %>)</h5>
63
59
  <ul>
64
60
  <% properties.each do |prop| %>
65
61
  <li><a target="_blank" href="/properties/<%= prop.mls_number %>/details">MLS # <%= prop.mls_number %> - <%= prop.full_address %></a></li>
66
62
  <% end %>
67
63
  </ul>
68
- <% end %>
64
+ <% end %>
65
+
66
+ <% users = Caboose::User.where(:rets_agent_mls_id => @agent.mls_id).order('id desc').limit(100) %>
67
+ <% if users.count > 0 %>
68
+ <h5 style="margin:0;">Assigned Users (<%= users.count %>)</h5>
69
+ <ul>
70
+ <% users.each do |user| %>
71
+ <li><a href="/admin/users/<%= user.id %>"><%= user.first_name %> <%= user.last_name %></a></li>
72
+ <% end %>
73
+ </ul>
74
+ <% end %>
75
+
69
76
  </div>
70
77
  </div>
71
78
 
@@ -86,6 +93,7 @@
86
93
  .unit1of2.right ul {
87
94
  list-style-type: none;
88
95
  padding: 0;
96
+ margin-top: 6px;
89
97
  }
90
98
  .unit1of2.right ul li {
91
99
  margin-bottom: 1px;
@@ -0,0 +1,32 @@
1
+
2
+
3
+ <%= render :partial => 'caboose/users/admin_header' %>
4
+
5
+ <h3 style="margin:0;">MLS Profile</h3>
6
+
7
+ <div class="mb-holder">
8
+ <p><div id='user_<%= @edituser.id %>_rets_agent_mls_id' ></div></p>
9
+ </div>
10
+
11
+
12
+
13
+ <%= render :partial => 'caboose/users/admin_footer' %>
14
+
15
+ <% content_for :caboose_js do %>
16
+ <%= javascript_include_tag "caboose/model/all" %>
17
+ <script type="text/javascript">
18
+
19
+ $(document).ready(function() {
20
+ new ModelBinder({
21
+ name: 'User',
22
+ id: <%= @edituser.id %>,
23
+ update_url: '/admin/users/<%= @edituser.id %>',
24
+ authenticity_token: '<%= form_authenticity_token %>',
25
+ attributes: [
26
+ { name: 'rets_agent_mls_id' , nice_name: 'Assigned Agent', type: 'select' , value: <%= raw Caboose.json(@edituser.rets_agent_mls_id) %>, width: 400, options_url: '/admin/agents/options' }
27
+ ]
28
+ });
29
+ });
30
+
31
+ </script>
32
+ <% end %>
@@ -96,6 +96,7 @@ CabooseRets::Engine.routes.draw do
96
96
  get "/saved-properties" => "saved_properties#index"
97
97
  post "/saved-properties" => "saved_properties#add"
98
98
  delete "/saved-properties/:mls" => "saved_properties#delete"
99
+ get "/admin/users/:id/mls" => "saved_properties#rets_info"
99
100
 
100
101
  get "/admin/properties/:mls/photos" => "rets_media#admin_photos"
101
102
  get "/admin/properties/:mls/files" => "rets_media#admin_files"
@@ -1,3 +1,3 @@
1
1
  module CabooseRets
2
- VERSION = '0.1.137'
2
+ VERSION = '0.1.138'
3
3
  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.137
4
+ version: 0.1.138
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Barry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-27 00:00:00.000000000 Z
11
+ date: 2019-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: caboose-cms
@@ -100,6 +100,7 @@ files:
100
100
  - app/views/caboose_rets/properties/property_not_exists.html.erb
101
101
  - app/views/caboose_rets/properties/test_form.html.erb
102
102
  - app/views/caboose_rets/rets/admin_import_form.html.erb
103
+ - app/views/caboose_rets/saved_properties/rets_info.html.erb
103
104
  - app/views/caboose_rets/saved_searches/edit.html.erb
104
105
  - app/views/caboose_rets/saved_searches/index.html.erb
105
106
  - config/routes.rb