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