|
|
<?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; |
|
|
} |
|
|
} |