From 3607681bffe8b3b2e1ce0a2d3d238e62cdaa34ea Mon Sep 17 00:00:00 2001 From: mateussbh Date: Fri, 21 Feb 2025 14:40:11 -0300 Subject: [PATCH] =?UTF-8?q?fix:=20Corre=C3=A7=C3=A3o=20de=20erro=20que=20o?= =?UTF-8?q?corria=20no=20m=C3=A9todo=20receberProcedimentoInterno,=20pois?= =?UTF-8?q?=20tentava=20realizar=20a=20leitura=20de=20informa=C3=A7=C3=B5e?= =?UTF-8?q?s=20acessando=20um=20array=20como=20se=20fosse=20um=20objeto.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Foi identificado que, após atualização de bibliotecas que o módulo usa no sei5, versão de php 8.2, biblioteca guzzle, etc, alguns pontos do código, que estavam acessando informação de array, na forma de acessar objeto, pararam de funcionar, pelo fato do php 8.2 ser mais fortemente tipado, com isso foi necessário atualizar a forma corretamente de acessar as variáveis. Foi fixado que o guzzle irá acessar os endpoints da api entregando um objeto, ao invés de array, para, com isso, ficar compatível com a forma de manipulação destas informações no código. --- src/rn/EnviarReciboTramiteRN.php | 4 +- src/rn/ExpedirProcedimentoRN.php | 20 +-- src/rn/PENAgendamentoRN.php | 16 +-- src/rn/ProcessoEletronicoRN.php | 199 +++++++++++--------------- src/rn/ReceberComponenteDigitalRN.php | 6 +- src/rn/ReceberProcedimentoRN.php | 51 ++----- 6 files changed, 117 insertions(+), 179 deletions(-) diff --git a/src/rn/EnviarReciboTramiteRN.php b/src/rn/EnviarReciboTramiteRN.php index 5fceb8b9..4152cdd6 100755 --- a/src/rn/EnviarReciboTramiteRN.php +++ b/src/rn/EnviarReciboTramiteRN.php @@ -154,8 +154,8 @@ private function obterDataRecebimentoComponentesDigitais($parObjTramite) } foreach ($parObjTramite->itensHistorico->operacao as $operacao) { - if($operacao['situacao'] == ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO) { - return ProcessoEletronicoRN::converterDataSEI($operacao['dataHora']); + if($operacao->situacao == ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO) { + return ProcessoEletronicoRN::converterDataSEI($operacao->dataHora); } } diff --git a/src/rn/ExpedirProcedimentoRN.php b/src/rn/ExpedirProcedimentoRN.php index 3774dedd..aef3919d 100755 --- a/src/rn/ExpedirProcedimentoRN.php +++ b/src/rn/ExpedirProcedimentoRN.php @@ -209,14 +209,14 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe $novoTramite = $this->objProcessoEletronicoRN->enviarProcessoREST($param); - $numIdTramite = $novoTramite['IDT']; + $numIdTramite = $novoTramite->IDT; $this->lancarEventoEnvioMetadados($numIdTramite); $this->atualizarPenProtocolo($dblIdProcedimento); if (isset($novoTramite)) { $objTramite = $novoTramite; - $this->objProcedimentoAndamentoRN->setOpts($objTramite['NRE'], $objTramite['IDT'], ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), $dblIdProcedimento); + $this->objProcedimentoAndamentoRN->setOpts($objTramite->NRE, $objTramite->IDT, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), $dblIdProcedimento); try { $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Envio do metadados do processo', 'S')); @@ -232,23 +232,23 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe $this->objProcessoEletronicoRN->cadastrarTramiteDeProcesso( $arrProcesso['idProcedimentoSEI'], - $objTramite['NRE'], - $objTramite['IDT'], + $objTramite->NRE, + $objTramite->IDT, ProcessoEletronicoRN::$STA_TIPO_TRAMITE_ENVIO, - $objTramite['dataHoraDeRegistroDoTramite'], + $objTramite->dataHoraDeRegistroDoTramite, $objExpedirProcedimentoDTO->getNumIdRepositorioOrigem(), $objExpedirProcedimentoDTO->getNumIdUnidadeOrigem(), $objExpedirProcedimentoDTO->getNumIdRepositorioDestino(), $objExpedirProcedimentoDTO->getNumIdUnidadeDestino(), $arrProcesso, - $objTramite['ticketParaEnvioDeComponentesDigitais'], - $objTramite['processosComComponentesDigitaisSolicitados'], + $objTramite->ticketParaEnvioDeComponentesDigitais, + $objTramite->processosComComponentesDigitaisSolicitados, $bolSinProcessamentoEmBloco, $numIdUnidade ); - $this->objProcessoEletronicoRN->cadastrarTramitePendente($objTramite['IDT'], $idAtividadeExpedicao); + $this->objProcessoEletronicoRN->cadastrarTramitePendente($objTramite->IDT, $idAtividadeExpedicao); //TODO: Erro no BARRAMENTO: Processo no pode ser enviado se possuir 2 documentos iguais(mesmo hash) //TODO: Melhoria no barramento de servios. O mtodo solicitar metadados no deixa claro quais os componentes digitais que @@ -257,7 +257,7 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe //componentes precisam ser baixados, semelhante ao que ocorre no enviarProcesso onde o barramento informa quais os componentes //que precisam ser enviados - $this->enviarComponentesDigitais($objTramite['NRE'], $objTramite['IDT'], $arrProcesso['protocolo'], $bolSinProcessamentoEmBloco); + $this->enviarComponentesDigitais($objTramite->NRE, $objTramite->IDT, $arrProcesso['protocolo'], $bolSinProcessamentoEmBloco); //TODO: Ao enviar o processo e seus documentos, necessrio bloquear os documentos para alterao //pois eles j foram visualizados @@ -280,7 +280,7 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Concluído envio dos componentes do processo', 'S')); - $this->receberReciboDeEnvio($objTramite['IDT']); + $this->receberReciboDeEnvio($objTramite->IDT); $this->gravarLogDebug(sprintf('Trâmite do processo %s foi concluído', $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado()), 2); diff --git a/src/rn/PENAgendamentoRN.php b/src/rn/PENAgendamentoRN.php index 58d3bba8..39e891a8 100755 --- a/src/rn/PENAgendamentoRN.php +++ b/src/rn/PENAgendamentoRN.php @@ -23,12 +23,12 @@ protected function atualizarHipotesesLegaisControlado() $hipotesesPenDesativadas = $processoEletronicoRN->consultarHipotesesLegais(false); $hipoteses = []; - if (!empty($hipotesesPen) && !empty($hipotesesPen['hipotesesLegais'])) { - $hipoteses = $hipotesesPen['hipotesesLegais']; + if (!empty($hipotesesPen) && !empty($hipotesesPen->hipotesesLegais)) { + $hipoteses = $hipotesesPen->hipotesesLegais; } - if (!empty($hipotesesPenDesativadas) && !empty($hipotesesPenDesativadas['hipotesesLegais'])) { - $hipoteses = array_merge($hipoteses, $hipotesesPenDesativadas['hipotesesLegais']); + if (!empty($hipotesesPenDesativadas) && !empty($hipotesesPenDesativadas->hipotesesLegais)) { + $hipoteses = array_merge($hipoteses, $hipotesesPenDesativadas->hipotesesLegais); } if(empty($hipoteses)) { @@ -39,20 +39,20 @@ protected function atualizarHipotesesLegaisControlado() foreach ($hipoteses as $hipotese) { $objDTO = new PenHipoteseLegalDTO(); - $objDTO->setNumIdentificacao($hipotese['identificacao']); + $objDTO->setNumIdentificacao($hipotese->identificacao); $objDTO->setNumMaxRegistrosRetorno(1); $objDTO->retStrNome(); $objDTO->retNumIdHipoteseLegal(); $objConsulta = $objBD->consultar($objDTO); //Caso não haja um nome para a hipótese legal, ele pula para a próxima. - if (empty($hipotese['nome'])) { + if (empty($hipotese->nome)) { continue; } - $objDTO->setStrNome(mb_convert_encoding($hipotese['nome'], 'ISO-8859-1', 'UTF-8')); + $objDTO->setStrNome(mb_convert_encoding($hipotese->nome, 'ISO-8859-1', 'UTF-8')); - if ($hipotese['status']) { + if ($hipotese->status) { $objDTO->setStrAtivo('S'); } else { $objDTO->setStrAtivo('N'); diff --git a/src/rn/ProcessoEletronicoRN.php b/src/rn/ProcessoEletronicoRN.php index 77c7585e..6b8cd22f 100755 --- a/src/rn/ProcessoEletronicoRN.php +++ b/src/rn/ProcessoEletronicoRN.php @@ -184,11 +184,11 @@ public function consultarRepositoriosDeEstruturas($numIdentificacaoDoRepositorio if (isset($arrResultado)) { foreach ($arrResultado as $repositorio) { - if ($repositorio['id'] == $numIdentificacaoDoRepositorioDeEstruturas) { + if ($repositorio->id == $numIdentificacaoDoRepositorioDeEstruturas) { $objRepositorioDTO = new RepositorioDTO(); - $objRepositorioDTO->setNumId($repositorio['id']); - $objRepositorioDTO->setStrNome(mb_convert_encoding($repositorio['nome'], 'ISO-8859-1', 'UTF-8')); - $objRepositorioDTO->setBolAtivo($repositorio['ativo']); + $objRepositorioDTO->setNumId($repositorio->id); + $objRepositorioDTO->setStrNome(mb_convert_encoding($repositorio->nome, 'ISO-8859-1', 'UTF-8')); + $objRepositorioDTO->setBolAtivo($repositorio->ativo); } } } @@ -221,9 +221,9 @@ public function listarRepositoriosDeEstruturas($ativo = true) if (isset($arrResultado)) { foreach ($arrResultado as $repositorio) { $objRepositorioDTO = new RepositorioDTO(); - $objRepositorioDTO->setNumId($repositorio['id']); - $objRepositorioDTO->setStrNome(mb_convert_encoding($repositorio['nome'], 'ISO-8859-1', 'UTF-8')); - $objRepositorioDTO->setBolAtivo($repositorio['ativo']); + $objRepositorioDTO->setNumId($repositorio->id); + $objRepositorioDTO->setStrNome(mb_convert_encoding($repositorio->nome, 'ISO-8859-1', 'UTF-8')); + $objRepositorioDTO->setBolAtivo($repositorio->ativo); $arrObjRepositorioDTO[] = $objRepositorioDTO; } } @@ -253,12 +253,12 @@ public function consultarEstrutura($idRepositorioEstrutura, $numeroDeIdentificac $arrResultado = $this->get($endpoint, $parametros); if ($bolRetornoRaw !== false) { - $arrResultado['nome'] = mb_convert_encoding($arrResultado['nome'], 'ISO-8859-1', 'UTF-8'); - $arrResultado['sigla'] = mb_convert_encoding($arrResultado['sigla'], 'ISO-8859-1', 'UTF-8'); + $arrResultado->nome = mb_convert_encoding($arrResultado->nome, 'ISO-8859-1', 'UTF-8'); + $arrResultado->sigla = mb_convert_encoding($arrResultado->sigla, 'ISO-8859-1', 'UTF-8'); - if (isset($arrResultado['hierarquia']) && is_array($arrResultado['hierarquia'])) { - foreach ($arrResultado['hierarquia'] as &$arrHierarquia) { - $arrHierarquia['nome'] = mb_convert_encoding($arrHierarquia['nome'], 'ISO-8859-1', 'UTF-8'); + if (isset($arrResultado->hierarquia) && is_array($arrResultado->hierarquia)) { + foreach ($arrResultado->hierarquia as &$arrHierarquia) { + $arrHierarquia->nome = mb_convert_encoding($arrHierarquia->nome, 'ISO-8859-1', 'UTF-8'); } } @@ -266,12 +266,12 @@ public function consultarEstrutura($idRepositorioEstrutura, $numeroDeIdentificac } $objEstruturaDTO = new EstruturaDTO(); - $objEstruturaDTO->setNumNumeroDeIdentificacaoDaEstrutura($arrResultado['numeroDeIdentificacaoDaEstrutura']); - $objEstruturaDTO->setStrNome(mb_convert_encoding($arrResultado['nome'], 'ISO-8859-1', 'UTF-8')); - $objEstruturaDTO->setStrSigla(mb_convert_encoding($arrResultado['sigla'], 'ISO-8859-1', 'UTF-8')); - $objEstruturaDTO->setBolAtivo($arrResultado['ativo']); - $objEstruturaDTO->setBolAptoParaReceberTramites($arrResultado['aptoParaReceberTramites']); - $objEstruturaDTO->setStrCodigoNoOrgaoEntidade($arrResultado['codigoNoOrgaoEntidade']); + $objEstruturaDTO->setNumNumeroDeIdentificacaoDaEstrutura($arrResultado->numeroDeIdentificacaoDaEstrutura); + $objEstruturaDTO->setStrNome(mb_convert_encoding($arrResultado->nome, 'ISO-8859-1', 'UTF-8')); + $objEstruturaDTO->setStrSigla(mb_convert_encoding($arrResultado->sigla, 'ISO-8859-1', 'UTF-8')); + $objEstruturaDTO->setBolAtivo($arrResultado->ativo); + $objEstruturaDTO->setBolAptoParaReceberTramites($arrResultado->aptoParaReceberTramites); + $objEstruturaDTO->setStrCodigoNoOrgaoEntidade($arrResultado->codigoNoOrgaoEntidade); return $objEstruturaDTO; } catch (Exception $e) { @@ -438,17 +438,17 @@ public function buscarEstrutura( if ($estrutura !== null) { $objEstruturaDTO = new EstruturaDTO(); - $objEstruturaDTO->setNumNumeroDeIdentificacaoDaEstrutura($estrutura['numeroDeIdentificacaoDaEstrutura']); - $objEstruturaDTO->setStrNome(mb_convert_encoding($estrutura['nome'], 'ISO-8859-1', 'UTF-8')); - $objEstruturaDTO->setStrSigla(mb_convert_encoding($estrutura['sigla'], 'ISO-8859-1', 'UTF-8')); - $objEstruturaDTO->setBolAtivo($estrutura['ativo']); - $objEstruturaDTO->setBolAptoParaReceberTramites($estrutura['aptoParaReceberTramites']); - $objEstruturaDTO->setStrCodigoNoOrgaoEntidade($estrutura['codigoNoOrgaoEntidade']); + $objEstruturaDTO->setNumNumeroDeIdentificacaoDaEstrutura($estrutura->numeroDeIdentificacaoDaEstrutura); + $objEstruturaDTO->setStrNome(mb_convert_encoding($estrutura->nome, 'ISO-8859-1', 'UTF-8')); + $objEstruturaDTO->setStrSigla(mb_convert_encoding($estrutura->sigla, 'ISO-8859-1', 'UTF-8')); + $objEstruturaDTO->setBolAtivo($estrutura->ativo); + $objEstruturaDTO->setBolAptoParaReceberTramites($estrutura->aptoParaReceberTramites); + $objEstruturaDTO->setStrCodigoNoOrgaoEntidade($estrutura->codigoNoOrgaoEntidade); $arrHerarquia = array_map( function ($nivel) { - return mb_convert_encoding($nivel['sigla'], 'ISO-8859-1', 'UTF-8'); - }, $estrutura['hierarquia'] ?: [] + return mb_convert_encoding($nivel->sigla, 'ISO-8859-1', 'UTF-8'); + }, $estrutura->hierarquia ?: [] ); $objEstruturaDTO->setArrHierarquia($arrHerarquia); @@ -663,22 +663,22 @@ public function listarEstruturasAutoCompletar( $arrResultado = $this->consultarEstruturas($idRepositorioEstrutura, $parametros); - if ($arrResultado['totalDeRegistros'] > 0) { - foreach ($arrResultado['estruturas'] as $estrutura) { + if ($arrResultado->totalDeRegistros > 0) { + foreach ($arrResultado->estruturas as $estrutura) { $objEstruturaDTO = new EstruturaDTO(); - $objEstruturaDTO->setNumNumeroDeIdentificacaoDaEstrutura($estrutura['numeroDeIdentificacaoDaEstrutura']); - $objEstruturaDTO->setStrNome(mb_convert_encoding($estrutura['nome'], 'UTF-8')); - $objEstruturaDTO->setStrSigla(mb_convert_encoding($estrutura['sigla'], 'UTF-8')); - $objEstruturaDTO->setBolAtivo($estrutura['ativo']); - $objEstruturaDTO->setBolAptoParaReceberTramites($estrutura['aptoParaReceberTramites']); - $objEstruturaDTO->setStrCodigoNoOrgaoEntidade($estrutura['codigoNoOrgaoEntidade']); - $objEstruturaDTO->setNumTotalDeRegistros($arrResultado['totalDeRegistros']); + $objEstruturaDTO->setNumNumeroDeIdentificacaoDaEstrutura($estrutura->numeroDeIdentificacaoDaEstrutura); + $objEstruturaDTO->setStrNome(mb_convert_encoding($estrutura->nome, 'UTF-8')); + $objEstruturaDTO->setStrSigla(mb_convert_encoding($estrutura->sigla, 'UTF-8')); + $objEstruturaDTO->setBolAtivo($estrutura->ativo); + $objEstruturaDTO->setBolAptoParaReceberTramites($estrutura->aptoParaReceberTramites); + $objEstruturaDTO->setStrCodigoNoOrgaoEntidade($estrutura->codigoNoOrgaoEntidade); + $objEstruturaDTO->setNumTotalDeRegistros($arrResultado->totalDeRegistros); $arrHerarquia = array_map( function ($nivel) { - return mb_convert_encoding($nivel['sigla'], 'UTF-8'); - }, $estrutura['hierarquia'] ?: [] + return mb_convert_encoding($nivel->sigla, 'UTF-8'); + }, $estrutura->hierarquia ?: [] ); $objEstruturaDTO->setArrHierarquia($arrHerarquia); @@ -686,7 +686,7 @@ function ($nivel) { $arrObjEstruturaDTO["itens"][] = $objEstruturaDTO; } - $totalDeRegistros = $arrResultado['totalDeRegistros']; + $totalDeRegistros = $arrResultado->totalDeRegistros; $arrObjEstruturaDTO["diferencaDeRegistros"] = $totalDeRegistros > count($arrObjEstruturaDTO["itens"]) ? $totalDeRegistros - count($arrObjEstruturaDTO["itens"]) : 0; } @@ -709,10 +709,10 @@ public function consultarMotivosUrgencia() $arrResultado = $this->get($endpoint, $parametros); $arrMotivosUrgencia = []; if (isset($arrResultado)) { - $count = count($arrResultado['motivosUrgencia']); + $count = count($arrResultado->motivosUrgencia); for ($i = 0; $i < $count; $i++) { $codigo = $i + 1; - $arrMotivosUrgencia[$codigo] = mb_convert_encoding($arrResultado['motivosUrgencia'][$i]['descricao'], 'ISO-8859-1', 'UTF-8'); + $arrMotivosUrgencia[$codigo] = mb_convert_encoding($arrResultado->motivosUrgencia[$i]->descricao, 'ISO-8859-1', 'UTF-8'); } } @@ -741,10 +741,10 @@ public function consultarEspeciesDocumentais() $arrResultado = $this->get($endpoint, $parametros); $arrEspecies = []; if (isset($arrResultado)) { - $count = count($arrResultado['especies']); + $count = count($arrResultado->especies); for ($i = 0; $i < $count; $i++) { $codigo = $i + 1; - $arrEspecies[$codigo] = mb_convert_encoding($arrResultado['especies'][$i]['nomeNoProdutor'], 'ISO-8859-1', 'UTF-8'); + $arrEspecies[$codigo] = mb_convert_encoding($arrResultado->especies[$i]->nomeNoProdutor, 'ISO-8859-1', 'UTF-8'); } } @@ -790,11 +790,11 @@ public function listarPendencias($bolTodasPendencias) $arrResultado = $this->get($endpoint, $parametros); - if (is_array($arrResultado) && !is_null($arrResultado)) { + if (!is_null($arrResultado)) { foreach ($arrResultado as $strPendencia) { $pendenciaDTO = new PendenciaDTO(); - $pendenciaDTO->setNumIdentificacaoTramite($strPendencia['IDT']); - $pendenciaDTO->setStrStatus($strPendencia['status']); + $pendenciaDTO->setNumIdentificacaoTramite($strPendencia->IDT); + $pendenciaDTO->setStrStatus($strPendencia->status); $arrObjPendenciaDTO[] = $pendenciaDTO; } } @@ -1163,30 +1163,23 @@ public function solicitarMetadados($parNumIdentificacaoTramite) 'IDT' => $parNumIdentificacaoTramite ]; - $arrResultado = $this->get($endpoint, $parametros); - - $arrResultado['IDT'] = $parNumIdentificacaoTramite; - $arrResultado['NRE'] = $arrResultado['nre']; + $objResultado = $this->get($endpoint, $parametros); - $objResultado = new stdClass(); $objResultado->IDT = $parNumIdentificacaoTramite; - $objResultado->NRE = $arrResultado['nre']; + $objResultado->NRE = $objResultado->nre; // verificar se é um documento avulso - if (!array_key_exists('processo', $arrResultado) || $arrResultado['processo'] == null) { - $objResultado->metadados = $this->converterArrayParaObjeto($arrResultado); - + if (!property_exists($objResultado,'processo') || $objResultado->processo == null) { + $objResultado->metadados = $objResultado; return $objResultado; } $multivalorado = false; - if (count($arrResultado['processo']['documentos']) <= 1) { - $arrResultado['processo']['documentos'] = (object) $arrResultado['processo']['documentos'][0]; - } else { + if (count($objResultado->processo->documentos) > 1) { $multivalorado = true; - } + } - $objResultado->metadados = $this->converterArrayParaObjeto($arrResultado); + $objResultado->metadados = $objResultado; if ($multivalorado) { $objResultado->metadados->processo->documentos = (array) $objResultado->metadados->processo->documentos; @@ -1279,10 +1272,10 @@ public function cadastrarTramiteDeProcesso($parDblIdProcedimento, $parStrNumeroR throw new InfraException('Parâmetro $objProcesso não informado.'); } - if (is_array($parObjProtocolo)) { - $parObjProtocolo = (object) $parObjProtocolo; - } + $parObjProtocolo = $this->converterArrayParaObjeto($parObjProtocolo); + + //Monta dados do processo eletrônico $objProcessoEletronicoDTO = new ProcessoEletronicoDTO(); $objProcessoEletronicoDTO->setStrNumeroRegistro($parStrNumeroRegistro); @@ -1435,10 +1428,7 @@ protected function cadastrarTramiteDeProcessoInternoControlado(ProcessoEletronic */ public static function getHashFromMetaDados($objMeta) { - if (is_array($objMeta)) { - $objMeta = (object) $objMeta; - } - + $strHashConteudo = ''; if (isset($objMeta)) { @@ -1478,10 +1468,6 @@ private function montarDadosMaisDeUmComponenteDigital($objDocumento, $parStrNume foreach ($arrayComponentesDigitais as $objComponenteDigital){ - if (is_array($objComponenteDigital)) { - $objComponenteDigital = (object) $objComponenteDigital; - } - $contComponentes++; $objComponenteDigitalDTO = new ComponenteDigitalDTO(); $objComponenteDigitalDTO->setStrNumeroRegistro($parStrNumeroRegistro); @@ -1570,7 +1556,7 @@ private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIden if(is_array($objDocumento->componentesDigitais) && count($objDocumento->componentesDigitais) != 1) { throw new InfraException("Erro processando componentes digitais do processo " . $parObjProtocolo->protocolo . "\n Somente é permitido o recebimento de documentos com apenas um Componente Digital."); } - + $arrComponenteDigital = is_array($objDocumento->componentesDigitais) ? $objDocumento->componentesDigitais[0] : $objDocumento->componentesDigitais; $objComponenteDigital = (object) $arrComponenteDigital; $objComponenteDigitalDTO->setStrNome(utf8_decode($objComponenteDigital->nome)); @@ -1598,9 +1584,8 @@ private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIden $arrObjItensSolicitados = $parObjComponentesDigitaisSolicitados ?? [$parObjComponentesDigitaisSolicitados]; foreach ($arrObjItensSolicitados as $objItemSolicitado) { if(!is_null($objItemSolicitado)) { - $objItemSolicitado['hashes'] = is_array($objItemSolicitado['hashes']) ? $objItemSolicitado['hashes'] : [$objItemSolicitado['hashes']]; - if($objItemSolicitado['protocolo'] == $objComponenteDigitalDTO->getStrProtocolo() && in_array($strHashConteudo, $objItemSolicitado['hashes']) && !$objDocumento->retirado) { + if($objItemSolicitado->protocolo == $objComponenteDigitalDTO->getStrProtocolo() && in_array($strHashConteudo, $objItemSolicitado->hashes) && !$objDocumento->retirado) { $objComponenteDigitalDTO->setStrSinEnviar("S"); } } @@ -1691,20 +1676,20 @@ public function consultarTramites($parNumIdTramite = null, $parNumeroRegistro = $arrResultado = $this->get($endpoint, $parametros); - if (isset($arrResultado['tramites']) && !empty($arrResultado['tramites'][0])) { + if (isset($arrResultado->tramites) && !empty($arrResultado->tramites[0])) { $itensHistorico = []; - foreach ($arrResultado['tramites'][0]['mudancasDeSituacao'] as $mudancaDeSituacao) { + foreach ($arrResultado->tramites[0]->mudancasDeSituacao as $mudancaDeSituacao) { $itensHistorico['operacao'][] = $mudancaDeSituacao; } - $arrResultado['tramites'][0] = array_filter( - $arrResultado['tramites'][0], function ($value) { + $arrResultado->tramites[0] = array_filter( + get_object_vars($arrResultado->tramites[0]), function ($value) { return !is_null($value); } ); - $arrObjTramite[] = $this->converterArrayParaObjeto($arrResultado['tramites'][0]); + $arrObjTramite[] = $this->converterArrayParaObjeto($arrResultado->tramites[0]); $arrObjTramite[0]->itensHistorico = (object) $itensHistorico; } @@ -1912,7 +1897,7 @@ public function receberReciboDeTramite($parNumIdTramite) ]; $arrResultado = $this->get($endpoint, $parametros); - $arrResultado['recibo']['hashDoComponenteDigital'] = $arrResultado['recibo']['hashesDosComponentesDigitais'][0]; + $arrResultado->recibo->hashDoComponenteDigital= $arrResultado->recibo->hashesDosComponentesDigitais[0]; return $this->converterArrayParaObjeto($arrResultado); @@ -1938,7 +1923,7 @@ public function receberReciboDeEnvio($parNumIdTramite) ]; $arrResultado = $this->get($endpoint, $parametros); - $arrResultado['reciboDeEnvio']['hashDoComponenteDigital'] = $arrResultado['reciboDeEnvio']['hashesDosComponentesDigitais'][0]; + $arrResultado->reciboDeEnvio->hashDoComponenteDigital = $arrResultado->reciboDeEnvio->hashesDosComponentesDigitais[0]; return $this->converterArrayParaObjeto($arrResultado); } @@ -2270,31 +2255,14 @@ public static function comparacaoOrdemAjustadaDocumentos($parDocumento1, $parDoc } public static function comparacaoOrdemDocumentos($parDocumento1, $parDocumento2) - { - - if (is_array($parDocumento1)) { - $parDocumento1 = (object) $parDocumento1; - } - - if (is_array($parDocumento2)) { - $parDocumento2 = (object) $parDocumento2; - } - + { $numOrdemDocumento1 = intval($parDocumento1->ordem); $numOrdemDocumento2 = intval($parDocumento2->ordem); return $numOrdemDocumento1 - $numOrdemDocumento2; } public static function comparacaoOrdemComponenteDigitais($parComponenteDigital1, $parComponenteDigital2) - { - if (is_array($parComponenteDigital1)) { - $parComponenteDigital1 = (object) $parComponenteDigital1; - } - - if (is_array($parComponenteDigital2)) { - $parComponenteDigital2 = (object) $parComponenteDigital2; - } - + { $numOrdemComponenteDigital1 = intval($parComponenteDigital1->ordem); $numOrdemComponenteDigital2 = intval($parComponenteDigital2->ordem); return $numOrdemComponenteDigital1 - $numOrdemComponenteDigital2; @@ -2308,10 +2276,7 @@ public static function obterDocumentosProtocolo($parObjProtocolo, $parBolExtrair usort($arrObjProtocolo, ["ProcessoEletronicoRN", "comparacaoOrdemAjustadaDocumentos"]); //Tratamento recursivo para processos anexados - foreach ($arrObjProtocolo as $objProtocolo) { - if (is_array(($objProtocolo))) { - $objProtocolo = (object) $objProtocolo; - } + foreach ($arrObjProtocolo as $objProtocolo) { $bolEhProcessoAnexado = $objProtocolo->staTipoProtocolo == ProcessoEletronicoRN::$STA_TIPO_PROTOCOLO_PROCESSO; if($parBolExtrairAnexados && $bolEhProcessoAnexado) { $arrProtocolosAnexados = ProcessoEletronicoRN::obterDocumentosProtocolo($objProtocolo, $parBolExtrairAnexados); @@ -2340,10 +2305,7 @@ public static function obterDocumentosProtocolo($parObjProtocolo, $parBolExtrair $arrObjDocumentoPadronizados = ($parBolExtrairAnexados) ? $arrObjDocumento : $arrObjProtocolo; - foreach ($arrObjDocumentoPadronizados as $documento) { - if (is_array($documento) && $documento['componentesDigitais']) { - $documento = (object) $documento; - } + foreach ($arrObjDocumentoPadronizados as $documento) { $documento->componentesDigitais = self::obterComponentesDocumentos($documento); } @@ -2771,6 +2733,12 @@ public function buscarEstruturaRest($idRepositorioEstrutura, $idUnidadeRH) } } + //Incluída este método isJson porque o endpoint componente-digital-parcial não retorna um Json como os demais endpoints. + //TODO: Na versão php 8.3, poderemos usar a função Json_validate + function isJson($string) { + json_decode($string); + return json_last_error() === JSON_ERROR_NONE; + } /** * Iniciar requisição HTTP utilizado para comunicação Webservice REST */ @@ -2779,13 +2747,18 @@ private function getArrPenWsRest($method, $endpoint, $options = []) try { $arrResultado = $this->strClientGuzzle->request($method, $endpoint, $options); $base64 = $arrResultado->getBody()->getContents(); + + if($this->isJson($base64)){ + $foo = json_decode($base64, false); + }else{ + $foo = $base64; + } + + if (is_array($foo)) { + return (object) $foo; + } - $foo = json_decode($arrResultado->getBody(), true); - if ($foo != null) { - return $foo; - } - - return $base64; + return $foo; } catch (RequestException $e) { $erroResposta = json_decode($e->getResponse()->getBody()->getContents()); diff --git a/src/rn/ReceberComponenteDigitalRN.php b/src/rn/ReceberComponenteDigitalRN.php index c3fbd8bf..b9c63cb9 100755 --- a/src/rn/ReceberComponenteDigitalRN.php +++ b/src/rn/ReceberComponenteDigitalRN.php @@ -256,11 +256,7 @@ public function copiarComponenteDigitalPastaTemporaria($parObjComponenteDigital, { if (!isset($parObjComponenteDigital)) { throw new InfraException("Componente Digital não informado"); - } - - if (is_array($parObjComponenteDigital)) { - $parObjComponenteDigital = (object) $parObjComponenteDigital; - } + } $objAnexoRN = new AnexoRN(); $strNomeArquivoUpload = $objAnexoRN->gerarNomeArquivoTemporario(); $strConteudoCodificado = $parObjConteudo->conteudoDoComponenteDigital; diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index 689acff2..961eaf50 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -643,11 +643,7 @@ private function listarHashDosComponentesMetadado($parObjProtocolo) } $arrObjComponentesDigitais = is_array($objDocumento->componentesDigitais) ? $objDocumento->componentesDigitais : [$objDocumento->componentesDigitais]; - foreach ($arrObjComponentesDigitais as $objComponenteDigital) { - - if (is_array($objComponenteDigital)) { - $objComponenteDigital = (object) $objComponenteDigital; - } + foreach ($arrObjComponentesDigitais as $objComponenteDigital) { $arrHashsComponentesDigitais[] = ProcessoEletronicoRN::getHashFromMetaDados($objComponenteDigital->hash); } @@ -714,10 +710,7 @@ private function validarComponentesDigitais($parObjProtocolo, $parNumIdentificac if(!isset($numIdTipoDocumentoPadrao)) { foreach($arrObjDocumentos as $objDocument){ - $especie = $objDocument->especie; - if (is_array($especie)) { - $objDocument->especie = (object) $objDocument->especie; - } + $especie = $objDocument->especie; $objPenRelTipoDocMapEnviadoDTO = new PenRelTipoDocMapRecebidoDTO(); $objPenRelTipoDocMapEnviadoDTO->retTodos(); @@ -745,10 +738,7 @@ private function validarComponentesDigitais($parObjProtocolo, $parNumIdentificac } private function validaTamanhoComponenteDigital($objComponenteDigital) - { - if (is_array($objComponenteDigital)) { - $objComponenteDigital = (object) $objComponenteDigital; - } + { if (is_null($objComponenteDigital->tamanhoEmBytes) || $objComponenteDigital->tamanhoEmBytes == 0) { throw new InfraException('Tamanho de componente digital não informado.', null, 'RECUSA: '.ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_OUTROU); @@ -1613,11 +1603,7 @@ private function atribuirDocumentos($parObjProcedimentoDTO, $parObjProtocolo, $o $this->gravarLogDebug("Quantidade de documentos para recebimento: $count", 2); foreach($arrObjDocumentos as $objDocumento) { - - if (is_array($objDocumento)) { - $objDocumento = (object) $objDocumento; - } - + if(!isset($objDocumento->staTipoProtocolo) || $bolDocumentoAvulso) { // Definição da ordem do documento para avaliação do posicionamento @@ -1866,10 +1852,7 @@ private function atribuirComponentesJaExistentesNoProcesso($objComponentesDigita { $arrObjAnexosDTO = []; $arrObjAnexoDTO = []; - foreach ($objComponentesDigitais as $objComponenteDigital) { - if (is_array($objComponenteDigital)) { - $objComponenteDigital = (object) $objComponenteDigital; - } + foreach ($objComponentesDigitais as $objComponenteDigital) { $strHashComponenteDigital = ProcessoEletronicoRN::getHashFromMetaDados($objComponenteDigital->hash); $bolComponenteDigitalBaixado = in_array($strHashComponenteDigital, $arrHashComponenteBaixados); @@ -2477,10 +2460,7 @@ public function validarExtensaoComponentesDigitais($parIdTramite, $parObjProtoco $arrComponentesDigitais = $objDocumento->componentesDigitais; foreach ($arrComponentesDigitais as $componenteDigital) { - - if (is_array($componenteDigital)) { - $componenteDigital = (object) $componenteDigital; - } + //Busca o nome do documento $nomeDocumento = $componenteDigital->nome; @@ -2598,11 +2578,7 @@ private function obterTamanhoComponenteDigitalPendente($parObjProtocolo, $parCom //Percorre os documentos e compoenntes para pegar o tamanho em bytes do componente foreach ($arrObjDocumentos as $objDocumento) { $arrObjComponentesDigitais = ProcessoEletronicoRN::obterComponentesDigitaisDocumento($objDocumento); - foreach ($arrObjComponentesDigitais as $objComponentesDigital) { - - if (is_array($objComponentesDigital)) { - $objComponentesDigital = (object) $objComponentesDigital; - } + foreach ($arrObjComponentesDigitais as $objComponentesDigital) { if (ProcessoEletronicoRN::getHashFromMetaDados($objComponentesDigital->hash) == $parComponentePendente) { $tamanhoComponentePendende = $objComponentesDigital->tamanhoEmBytes; @@ -2683,12 +2659,8 @@ private function indexarComponenteDigitaisDoProtocolo($parObjProtocolo) if(isset($arrDocumento->componentesDigitais) && !is_array($arrDocumento->componentesDigitais)) { $arrDocumento->componentesDigitais = [$arrDocumento->componentesDigitais]; } - foreach ($arrDocumento->componentesDigitais as $objComponente) { - - if (is_array($objComponente)) { - $objComponente = (object) $objComponente; - } - + foreach ($arrDocumento->componentesDigitais as $objComponente) { + $strHash = ProcessoEletronicoRN::getHashFromMetaDados($objComponente->hash); $resultado[$strHash] = $objComponente; } @@ -2773,10 +2745,7 @@ private function criarDiretorioAnexo($parObjAnexoDTO) private function adicionarObservacoesSobreNumeroDocumento($parObjDocumento) { - $arrObjObservacoes = []; - if (is_array($parObjDocumento->produtor)) { - $parObjDocumento->produtor = (object) $parObjDocumento->produtor; - } + $arrObjObservacoes = []; $strNumeroDocumentoOrigem = $parObjDocumento->protocolo ?? $parObjDocumento->produtor->numeroDeIdentificacao; if(!empty($strNumeroDocumentoOrigem)) {