|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace app\Controllers;
|
|
|
|
|
|
|
|
|
|
use app\Core\Controller;
|
|
|
|
|
use app\Models\EventQueue;
|
|
|
|
|
use app\Models\Agent;
|
|
|
|
|
use app\Models\Classificacao;
|
|
|
|
|
use Exception;
|
|
|
|
|
|
|
|
|
|
class ClassificacaoController extends Controller
|
|
|
|
|
{
|
|
|
|
|
/** @var Agent $agent model de Agent */
|
|
|
|
|
protected $agent;
|
|
|
|
|
|
|
|
|
|
/** @var EventQueue $eventqueue model de EventQueue */
|
|
|
|
|
protected $eventqueue;
|
|
|
|
|
|
|
|
|
|
/** @var Classificacao $classificacao model de Classificacao */
|
|
|
|
|
protected $classificacao;
|
|
|
|
|
|
|
|
|
|
public function __construct()
|
|
|
|
|
{
|
|
|
|
|
$this->agent = new Agent();
|
|
|
|
|
$this->eventqueue = new EventQueue();
|
|
|
|
|
$this->classificacao = new Classificacao();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function classificacaoList($queue)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
$classificacao = $this->classificacao->findClassificacaoByQueue($queue);
|
|
|
|
|
return $classificacao;
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
$this->message($ex->getMessage());
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function classificacaoRegister($matricula, $clas_id, $clit_id, $id_bilhetes, $id_dac)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
$this->classificacao->begin();
|
|
|
|
|
$this->classificacao->addClassificacaoReg($matricula, $clas_id, $clit_id, $id_bilhetes, $id_dac);
|
|
|
|
|
$agentData = $this->agent->findAgentByMatricula($matricula);
|
|
|
|
|
$this->agent->updateAgent($matricula, $agentData->ramal, CONF_AGENT_STATUS_LIVRE, null, null, 1, null, 1);
|
|
|
|
|
$this->classificacao->commit();
|
|
|
|
|
return true;
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
$this->classificacao->rollback();
|
|
|
|
|
$this->message($ex->getMessage());
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function classificacaoRegList($uniqueid)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
$classificacaoReg = $this->classificacao->findClassificacaoRegByUniqueid($uniqueid);
|
|
|
|
|
return $classificacaoReg;
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
$this->message($ex->getMessage());
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Listar classificacoes disponiveis
|
|
|
|
|
*/
|
|
|
|
|
public function agentClassificacaoList($queue)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
$classificacaoLista = $this->classificacaoList($queue);
|
|
|
|
|
|
|
|
|
|
if ($classificacaoLista) {
|
|
|
|
|
$strmsg = "Informe o n<EFBFBD>mero da classifica<EFBFBD><EFBFBD>o para o atendimento: \n";
|
|
|
|
|
$count = 1;
|
|
|
|
|
foreach ($classificacaoLista as $classificacao) {
|
|
|
|
|
$strmsg .= "{$count}. *{$classificacao->clas_descricao}* - _{$classificacao->clit_descricao}_ \n";
|
|
|
|
|
$count++;
|
|
|
|
|
}
|
|
|
|
|
$this->message($strmsg);
|
|
|
|
|
return $strmsg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
$this->message($ex->getMessage());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Registrar uma classificacao
|
|
|
|
|
*/
|
|
|
|
|
public function agentClassificacaoRegister($matricula, $queue, $uniqueid, $option)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
$classificacaoLista = $this->classificacaoList($queue);
|
|
|
|
|
|
|
|
|
|
if ($classificacaoLista) {
|
|
|
|
|
$count = 1;
|
|
|
|
|
foreach ($classificacaoLista as $classificacao) {
|
|
|
|
|
if ($option == $count || $option == $classificacao->clas_descricao . '-' . $classificacao->clit_descricao) {
|
|
|
|
|
$registro = $this->classificacaoRegister($matricula, $classificacao->clas_id, $classificacao->clit_id, $uniqueid, $classificacao->id_dac);
|
|
|
|
|
|
|
|
|
|
if (!$registro) {
|
|
|
|
|
throw new Exception("N<EFBFBD>o foi poss<EFBFBD>vel classificar o atendimento. " . $this->message());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->message("Atendimento classificado com sucesso!");
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
$count++;
|
|
|
|
|
}
|
|
|
|
|
throw new Exception("Informe uma classifica<EFBFBD><EFBFBD>o v<EFBFBD>lida!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
$this->classificacao->rollback();
|
|
|
|
|
$this->message($ex->getMessage());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Verificar se o agente esta pendente de classificacao
|
|
|
|
|
* @return string uniqueid
|
|
|
|
|
*/
|
|
|
|
|
public function agentClassificacaoPending($matricula, $queue)
|
|
|
|
|
{
|
|
|
|
|
$pendenteClassificacao = null;
|
|
|
|
|
$classificacaoLista = $this->classificacaoList($queue); //SE NAO EXISTIR CLASSIFICACAO NAO PRECISA CLASSIFICAR
|
|
|
|
|
if ($classificacaoLista) {
|
|
|
|
|
$eventQueue = $this->eventqueue->findEventQueueByAgent($matricula, $queue);
|
|
|
|
|
$uniqueid = null;
|
|
|
|
|
if ($eventQueue) {
|
|
|
|
|
$uniqueid = $eventQueue->uid2;
|
|
|
|
|
$classificacaoReg = $this->classificacao->findClassificacaoRegByUniqueid($uniqueid);
|
|
|
|
|
|
|
|
|
|
if (!$classificacaoReg) {
|
|
|
|
|
$pendenteClassificacao = $uniqueid;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $pendenteClassificacao;
|
|
|
|
|
}
|
|
|
|
|
}
|