trabajo-afectivo/app/models/chat/agent.rb

47 lines
1,013 B
Ruby
Raw Normal View History

2015-11-13 14:15:44 +00:00
class Chat::Agent < ApplicationModel
belongs_to :created_by, class_name: 'User'
belongs_to :updated_by, class_name: 'User'
2015-11-13 14:15:44 +00:00
def seads_available
concurrent - active_chat_count
end
def active_chat_count
2017-11-23 08:09:44 +00:00
Chat::Session.where(state: %w[waiting running], user_id: updated_by_id).count
2015-11-13 14:15:44 +00:00
end
def self.state(user_id, state = nil)
chat_agent = Chat::Agent.find_by(
updated_by_id: user_id
)
if state.nil?
return false if !chat_agent
2015-11-13 14:15:44 +00:00
return chat_agent.active
end
if chat_agent
chat_agent.active = state
chat_agent.updated_at = Time.zone.now
chat_agent.save
else
Chat::Agent.create(
active: state,
2015-11-13 14:15:44 +00:00
updated_by_id: user_id,
created_by_id: user_id,
)
end
end
def self.create_or_update(params)
chat_agent = Chat::Agent.find_by(
updated_by_id: params[:updated_by_id]
)
if chat_agent
chat_agent.update!(params)
2015-11-13 14:15:44 +00:00
else
Chat::Agent.create(params)
end
end
end