|
|
<?php |
|
|
|
|
|
namespace app\Middleware; |
|
|
|
|
|
use app\Controllers\QueueController; |
|
|
use app\Controllers\SystemMessageController; |
|
|
use app\Interfaces\IApi; |
|
|
use app\Interfaces\IApiMedia; |
|
|
use app\Models\Atendimento; |
|
|
use app\Models\Evento; |
|
|
use app\Models\SupervisorModel; |
|
|
|
|
|
class ApiSupervisor implements IApi |
|
|
{ |
|
|
/** @var SupervisorModel $supervisor model de supervisor */ |
|
|
protected $supervisor; |
|
|
|
|
|
/** @var Atendimento $atendimentoModel model de supervisor */ |
|
|
protected $atendimentoModel; |
|
|
|
|
|
/** @var Evento $eventosModel model de evento */ |
|
|
protected $eventosModel; |
|
|
|
|
|
/** @var QueueController $queue controller da queue*/ |
|
|
protected $queue; |
|
|
|
|
|
/** @var SystemMessageController $systemController controller da queue*/ |
|
|
protected $systemController; |
|
|
|
|
|
/** @var IApiMedia $api provider de mensagens */ |
|
|
protected $api; |
|
|
|
|
|
public function __construct() |
|
|
{ |
|
|
$this->eventosModel = new Evento(); |
|
|
$this->atendimentoModel = new Atendimento(); |
|
|
$this->supervisor = new SupervisorModel(); |
|
|
$this->queue = new QueueController(); |
|
|
$this->systemController = new SystemMessageController(); |
|
|
} |
|
|
|
|
|
function router($rota, $request) |
|
|
{ |
|
|
$request = json_decode($request, true); |
|
|
switch ($rota) { |
|
|
case 'listarAgentesDisponivel': |
|
|
$this->listaAgentesDisponivel(); |
|
|
break; |
|
|
case 'removerAtendimentoFila': |
|
|
$this->removerAtendimentoFila($request); |
|
|
break; |
|
|
default: |
|
|
echo json_encode(['status' => '404']); |
|
|
break; |
|
|
} |
|
|
} |
|
|
function listaAgentesDisponivel() |
|
|
{ |
|
|
try { |
|
|
$ret = $this->supervisor->listaAgentesDisponivel(); |
|
|
$agentes = []; |
|
|
foreach ($ret as $key => $value) { |
|
|
array_push($agentes, $value); |
|
|
} |
|
|
$this->retorno( |
|
|
$agentes ? "Sucesso" : "Nenhum agente disponivel", |
|
|
$agentes ? $agentes : null, |
|
|
$agentes ? $agentes : null |
|
|
); |
|
|
} catch (\Exception $th) { |
|
|
$this->retorno($th->getMessage()); |
|
|
} |
|
|
return null; |
|
|
} |
|
|
|
|
|
function removerAtendimentoFila($request) |
|
|
{ |
|
|
try { |
|
|
$atendimento = $this->atendimentoModel->findAtendId($request['uniqueid']); |
|
|
logger()->error(print_r($request, true)); |
|
|
$this->api = returnChannel($atendimento->context); |
|
|
$ret = $this->eventosModel->createEvento( |
|
|
$atendimento->uniqueid, |
|
|
CONF_EVENT_ABANDONADA, |
|
|
date('Y-m-d H:i:s'), |
|
|
date('Y-m-d H:i:s'), |
|
|
$atendimento->fila |
|
|
); |
|
|
if ($ret) { |
|
|
//envia as mensagens do sistema do momento atual para o cliente |
|
|
$this->systemController->sendMessageSystem( |
|
|
CONF_MOMENT_CANCELAR_FILA, |
|
|
[], |
|
|
$this->api, |
|
|
$atendimento->cliente_id |
|
|
); |
|
|
$filas = $this->queue->listAllQueueWhatsApp($this->api->getMessage()); |
|
|
if ($filas['LIST']) { |
|
|
$this->api->enviarMsg($atendimento->cliente_id, $filas['LIST']); |
|
|
} |
|
|
$this->retorno( |
|
|
$ret ? "Sucesso" : "Erro", |
|
|
$ret ? $ret : null, |
|
|
); |
|
|
} else { |
|
|
$this->retorno("N<EFBFBD>o foi poss<EFBFBD>vel cancelar o atendimento!"); |
|
|
} |
|
|
} catch (\Exception $th) { |
|
|
$this->retorno($th->getMessage()); |
|
|
} |
|
|
return null; |
|
|
} |
|
|
|
|
|
function retorno($mensagem, $status = null, $dados = null) |
|
|
{ |
|
|
//{ "status": "success", "message": "register created!", "data": [ "id": 20 ] } |
|
|
$data = []; |
|
|
$data['message'] = utf8_encode($mensagem); |
|
|
if (!empty($status)) { |
|
|
$data['status'] = "success"; |
|
|
} else { |
|
|
$data['status'] = "error"; |
|
|
} |
|
|
if (!empty($dados)) { |
|
|
$data['data'] = $dados; |
|
|
} |
|
|
echo json_encode($data); |
|
|
} |
|
|
} |