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