# Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/ class Sessions::Event::ChatStatusAgent < Sessions::Event::ChatBase =begin a agent requests a the current state of all chat sessions payload { event: 'chat_status_agent', data: {}, } return is sent as message back to peer =end def run return super if super # check if user has permissions return if !permission_check('chat.agent', 'chat') # renew timestamps state = Chat::Agent.state(@session['id']) Chat::Agent.state(@session['id'], state) # update recipients of existing sessions Chat::Session.where(state: 'running', user_id: @session['id']).reorder(created_at: :asc).each do |chat_session| chat_session.add_recipient(@client_id, true) end { event: 'chat_status_agent', data: Chat.agent_state_with_sessions(@session['id']), } end end