forked from SimplesIP/pabx-app
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
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; |
|
} |
|
} |