PABX da Simples IP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

88 lines
2.9 KiB

<?php
namespace app\Controllers;
use app\Core\Controller;
use app\Models\Parametros;
use app\Models\Protocol;
use Exception;
class BilheteController extends Controller
{
/** @var Parametros $parametros model de Parametros */
protected $parametros;
/** @var Protocol $protocol model de Protocol */
protected $protocol;
public function __construct()
{
$this->parametros = new Parametros();
$this->protocol = new Protocol();
}
public function generateProtocol($uniqueid)
{
/*
* Função retorna numero de Protocolo de Atendimento para o agente
*/
$tentativa = 0;
while (true) {
$proto = $this->geraProtocolo($uniqueid);
if ($proto == '99') {
$proto = '0000-000000';
break;
}
if (!empty($proto) || $tentativa >= CONF_PROTOCOL_TENTATIVAS_GERAR) {
break;
}
$tentativa++;
}
return $proto;
}
private function geraProtocolo($uniqueid, $protocoloParceiro = '')
{
try {
$this->protocol->begin();
$param = $this->parametros->findProtocolByParams($uniqueid);
$useProtocolo = $param->prm_agente_proto;
$useProtoParceiro = $param->prm_use_proto_parceiro;
if (!$useProtocolo) {
$this->protocol->rollback();
return '99';
}
$numProto = $this->protocol->findProtocol($uniqueid);
if ($numProto) {
$numProtoParceiro = trim($numProto->protoparceiro);
$this->protocol->rollback();
if ($useProtoParceiro && $numProtoParceiro) {
return $numProtoParceiro;
}
return $numProto->protocolo;
}
$protoParceiro = $useProtoParceiro ? trim($protocoloParceiro) : '';
$year = date('Y');
$result = $this->protocol->findMaxProtocol($year);
if ($result) {
$numProto = $result->protocolo;
$numProto = $numProto ? $numProto + 1 : 1;
$proto = $year . str_pad($numProto, 6, '0', STR_PAD_LEFT);
$protoAgt = $year . '-' . str_pad($numProto, 6, '0', STR_PAD_LEFT);
$protoParceiro = $protoParceiro && $useProtoParceiro ? $protoParceiro : 'null';
$this->protocol->insert($uniqueid, $year, $numProto, $proto, 'null');
$this->protocol->commit();
return $protoParceiro !== 'null' ? $protoParceiro : $protoAgt;
}
$this->protocol->commit();
} catch (Exception $ex) {
$this->protocol->rollback();
logger()->error($ex->getMessage());
}
return false;
}
}