43 lines
924 B
Ruby
43 lines
924 B
Ruby
|
class Chat::Agent < ApplicationModel
|
||
|
|
||
|
def seads_available
|
||
|
concurrent - active_chat_count
|
||
|
end
|
||
|
|
||
|
def active_chat_count
|
||
|
Chat::Session.where(state: %w(waiting running), user_id: updated_by_id).count
|
||
|
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
|
||
|
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,
|
||
|
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_attributes(params)
|
||
|
else
|
||
|
Chat::Agent.create(params)
|
||
|
end
|
||
|
end
|
||
|
end
|