Class: CabooseRets::Agent

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/caboose_rets/agent.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.assign_to_new_user(user) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'app/models/caboose_rets/agent.rb', line 67

def self.assign_to_new_user(user)
  if user && user.site && user.site.use_rets
    rc = CabooseRets::RetsConfig.where(:site_id => user.site_id).first
    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 : []
    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)
    last_agent             = CabooseRets::Agent.joins(:meta).where(:mls_id => last_agent_mls_id.value, rets_agents_meta: {hide: FALSE, accepts_listings: true}).first
    agent_index            = last_agent.present? ? agents.find_index(last_agent) : 0
    agent_index + 1 < agents.count ? agent_index += 1 : agent_index = 0
    agent = agents[agent_index]   
    if agent.mls_id == '118593505' # Steven Deal shouldn't be assigned
      agent_index + 1 < agents.count ? agent_index += 1 : agent_index = 0
      agent = agents[agent_index]
    end
    Caboose.log("Assigning agent #{agent.mls_id} to user #{user.id}") if Rails.env.development?
    user.rets_agent_mls_id = agent.mls_id
    last_agent_mls_id.value = agent.mls_id
    user.save

    s1 = Caboose::Setting.where(:site_id => user.site_id, :name => "agent_text_message").first
    message = s1 ? s1.value : nil

    if !message.blank?
      message = message.gsub("|user_first_name|", user.first_name)
      message = message.gsub("|user_last_name|", user.last_name)
      message = message.gsub("|user_email|", user.email)
      message = message.gsub("|user_phone|", user.phone)
      agent.delay(:queue => 'rets', :priority => 0).send_text(message, user.site_id)
    end

    CabooseRets::RetsMailer.configure_for_site(user.site_id).new_user(agent, user).deliver_later
    CabooseRets::RetsMailer.configure_for_site(user.site_id).user_welcome(agent, user).deliver_later

    last_agent_mls_id.save
    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)
    Caboose::RoleMembership.create(:user_id => user.id, :role_id => role.id)
  end
end

.refresh_from_mls(agent_number) ⇒ Object



38
39
40
41
# File 'app/models/caboose_rets/agent.rb', line 38

def self.refresh_from_mls(agent_number)
  CabooseRets::RetsImporter.import('Member', "(MemberMlsId=#{self.mls_id})")
  CabooseRets::RetsImporter.import_agent(self.mls_id)          
end

Instance Method Details

#fix_nameObject



23
24
25
26
27
28
29
30
31
# File 'app/models/caboose_rets/agent.rb', line 23

def fix_name
  return if self.first_name.nil?
  self.first_name = self.first_name.split(' ').collect{ |str| str.downcase.capitalize }.join(' ')
  return if self.last_name.nil?          
  self.last_name  = self.last_name.split(' ').collect{ |str| str.downcase.capitalize }.join(' ')    
  if self.last_name.starts_with?('Mc')
    self.last_name[2] = self.last_name[2].upcase
  end
end

#imageObject



9
10
11
12
# File 'app/models/caboose_rets/agent.rb', line 9

def image
  return nil if self.meta.nil?
  return self.meta.image
end

#image_url(style) ⇒ Object



135
136
137
138
139
140
141
142
143
# File 'app/models/caboose_rets/agent.rb', line 135

def image_url(style)                
  if CabooseRets::use_hosted_images == true
    return "#{CabooseRets::agents_base_url}/#{self.image_location}"
    self.verify_meta_exists      
    return self.meta.image_location
  end
  return "" if self.image.nil?
  return self.image.url(style)           
end

#officeObject

end



19
20
21
# File 'app/models/caboose_rets/agent.rb', line 19

def office
  CabooseRets::Office.where(:lo_mls_id => self.mls_id).first
end

#parse(data) ⇒ Object



105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'app/models/caboose_rets/agent.rb', line 105

def parse(data)
#    self.agent_number                 = data['AgentNumber']
  self.cell_phone                   = data['MemberMobilePhone']
  self.direct_work_phone            = data['MemberDirectPhone']
  self.email                        = data['MemberEmail']
  self.fax_phone                    = data['MemberFax']
  self.first_name                   = data['MemberFirstName']
  self.full_name                    = data['MemberFullName']
 # self.generational_name            = data['MemberMiddleName']
  self.last_name                    = data['MemberLastName']
  self.matrix_unique_id             = data['MemberMlsId']
  self.matrix_modified_dt           = data['ModificationTimestamp']
  self.middle_name                  = data['MemberMiddleName']
  self.mls                          = 'West Alabama Multiple Listing Service'
  self.mls_id                       = data['MemberMlsId']
  self.office_mui                   = data['OfficeMlsId']
  self.office_mls_id                = data['OfficeMlsId']
  self.office_phone                 = data['MemberOfficePhone']
  self.other_phone                  = data['MemberPreferredPhone']
  self.phone_toll_free              = data['MemberTollFreePhone']
  self.phone_voice_mail             = data['MemberVoiceMail']        
#  self.photo_count                  = data['PhotoCount']
#  self.photo_modification_timestamp = data['PhotoModificationTimestamp']
  self.slug                         = "#{data['MemberFirstName']}-#{data['MemberLastName']}".parameterize
end

#refresh_from_mlsObject



33
34
35
36
# File 'app/models/caboose_rets/agent.rb', line 33

def refresh_from_mls
  CabooseRets::RetsImporter.import('Member',"(MemberMlsId=#{self.mls_id})")
  CabooseRets::RetsImporter.download_property_images(self)
end

#send_text(message, site_id) ⇒ Object

Sends a SMS to the agent (using Twilio) notifying them that a new user has registered and been assigned to them.



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'app/models/caboose_rets/agent.rb', line 44

def send_text(message, site_id)
  s1 = Caboose::Setting.where(:site_id => site_id, :name => "twilio_account_sid").first
   = s1 ? s1.value : nil
  s2 = Caboose::Setting.where(:site_id => site_id, :name => "twilio_auth_token").first
  auth_token = s2 ? s2.value : nil
  s3 = Caboose::Setting.where(:site_id => site_id, :name => "twilio_from_number").first
  twilio_number = s3 ? s3.value : nil
  send_to = self.cell_phone.blank? ? (self.direct_work_phone.blank? ? self.other_phone : self.direct_work_phone) : self.cell_phone
  send_to = '205-657-0937' if Rails.env.development? # Billy's cell
  if  && auth_token && twilio_number && !send_to.blank? && !message.blank?
    @client = Twilio::REST::Client.new , auth_token
    begin
      message = @client.messages.create(
        body: message,
        to:   "+1#{send_to.gsub(/[(\- )]/, '')}",
        from: "#{twilio_number}"
      )
    rescue
      Caboose.log("invalid phone number")
    end
  end
end

#verify_meta_existsObject



131
132
133
# File 'app/models/caboose_rets/agent.rb', line 131

def verify_meta_exists
   self.meta = CabooseRets::AgentMeta.create(:la_code => self.mls_id) if self.meta.nil?
end