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
