Browse Source

doc nas vars, remoção de codigo não utilizado e add transection no finalizar

websocket
lucas cardoso 3 years ago
parent
commit
ad908764eb
  1. 74
      app/Core/Commands.php

74
app/Core/Commands.php

@ -18,43 +18,30 @@ use websocket\WsInterface;
*/
class Commands
{
/*
* Permissoes
* 0 - CLIENTE & AGENTE
* 1 - AGENTE
*/
const PERMISSION = "PERMISSION";
const DESCRIPTION = "DESCRIPTION";
/** @var IApiMedia $api provider de mensagens */
protected $api;
/** @var SystemMessageController $systemController controller de mensagens de sistemas */
protected $systemController;
/** @var BilheteController $bilheteController controller de billhete */
protected $bilheteController;
/** @var Atendimento $atendimentoModel model de atendimento*/
protected $atendimentoModel;
private $bilheteController;
public $commandsConfig = array();
private $api;
private $systemController;
/** @var Evento $eventosModel model de eventos */
protected $eventosModel;
public function __construct()
{
$this->eventosModel = new Evento();
$this->atendimentoModel = new Atendimento();
$this->agente = new AgentController();
$this->bilheteController = new BilheteController();
$this->systemController = new SystemMessageController();
$this->commandsConfig = [
"CANCELAR" => [
self::PERMISSION => ["MIN" => 0, "MAX" => 0],
self::DESCRIPTION => "Cancelar posição na fila de atendimento."
],
"FINALIZAR" => [
self::PERMISSION => ["MIN" => 0, "MAX" => 1],
self::DESCRIPTION => "Encerrar o atendimento."
]
];
}
/*
* Verificar se é um comando valido
* @param string $phone
* @param string $message
*
* return string
*/
public function setApi(IApiMedia $api)
{
$this->api = $api;
@ -77,16 +64,17 @@ class Commands
public function finalizar($numero)
{
try {
$atendimentoModel = new Atendimento();
$eventosModel = new Evento();
$this->atendimentoModel->begin();
$supervisorModel = new SupervisorModel();
$atendimento = $atendimentoModel->getAtendimentoByCliente($numero, CONF_EVENT_START);
$atendimento = $this->atendimentoModel->getAtendimentoByCliente($numero, CONF_EVENT_START);
//verifica se existe atendimento
if (empty($atendimento)) {
$this->atendimentoModel->rollback();
$this->api->enviarMsg($numero, CONF_NAME_REPONSE . " : Não foi encontrado atendimento em aberto");
return true;
}
$ret = $eventosModel->createEvento(
//cria o evento pra finalizar
$ret = $this->eventosModel->createEvento(
$atendimento->uniqueid,
CONF_EVENT_TIMERMINO_CLIENTE,
date('Y-m-d H:i:s'),
@ -96,7 +84,6 @@ class Commands
if ($ret) {
$ws = new WsInterface();
$agente = $supervisorModel->findAgentByMatricula($atendimento->matricula);
$ws->enviaMsg($ws->enviaActions('Atendimento finalizado', 'finish', $agente->matricula, $atendimento->uniqueid));
$messegeModel = new Message();
$messegeModel->addMessage(
$atendimento->uniqueid,
@ -108,31 +95,39 @@ class Commands
$atendimento->context,
'read'
);
//verifica se está como indisponivel e caso não tenha atendimento ele entra em pausa
if ($agente->status == CONF_AGENT_STATUS_INDISPONIVEL) {
$atends = $atendimentoModel->getAtendimentoAbertoByAgente($atendimento->matricula);
$atends = $this->atendimentoModel->getAtendimentoAbertoByAgente($atendimento->matricula);
if (empty($atends)) {
$agente->enterPause($atendimento->matricula, $agente->motivo_pausa);
}
}
//coloca o agente como livre caso esteja ocupado e com menos atendimento que o maximo de atendimento
if ($agente->status == CONF_AGENT_STATUS_OCUPADO) {
$param = $atendimentoModel->getQuantiAtendimentSimultaneos();
$atendimentosAbertos = $atendimentoModel->getAtendimentoAbertoByAgente($agente->matricula);
$param = $this->atendimentoModel->getQuantiAtendimentSimultaneos();
$atendimentosAbertos = $this->atendimentoModel->getAtendimentoAbertoByAgente($agente->matricula);
if (count($atendimentosAbertos) < $param->prm_media_simultaneo) {
$supervisorModel->updateAgent($agente->matricula, CONF_AGENT_STATUS_LIVRE);
}
}
//envia as mensagens do sistema do momento atual para o cliente
$this->systemController->sendMessageSystem(
CONF_MOMENT_FINALIZAR_ATENDIMENTO,
[],
$this->api,
$numero
);
$this->atendimentoModel->commit();
//notifica o agente da mudança
$ws->enviaMsg($ws->enviaActions('Atendimento finalizado', 'finish', $agente->matricula, $atendimento->uniqueid));
return true;
} else {
$this->atendimentoModel->rollback();
$this->api->enviarMsg($numero, CONF_NAME_REPONSE . " : Erro ao finalizar!");
return true;
}
} catch (\Exception $th) {
$this->atendimentoModel->rollback();
$this->api->enviarMsg($numero, CONF_NAME_REPONSE . " : " . $th->getMessage());
return true;
}
@ -140,10 +135,8 @@ class Commands
private function cancelar($numero)
{
$atendimentoModel = new Atendimento();
$eventosModel = new Evento();
$atendimento = $atendimentoModel->getAtendimentoByCliente($numero, CONF_EVENT_ESPERA);
$ret = $eventosModel->createEvento(
$atendimento = $this->atendimentoModel->getAtendimentoByCliente($numero, CONF_EVENT_ESPERA);
$ret = $this->eventosModel->createEvento(
$atendimento->uniqueid,
CONF_EVENT_ABANDONADA,
date('Y-m-d H:i:s'),
@ -151,6 +144,7 @@ class Commands
$atendimento->fila
);
if ($ret) {
//envia as mensagens do sistema do momento atual para o cliente
$this->systemController->sendMessageSystem(
CONF_MOMENT_CANCELAR_FILA,
[],

Loading…
Cancel
Save