From d0c1c92f13ca95c8e5ae698e8cfbe83f702dba66 Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Mon, 23 Dec 2024 09:48:02 -0300 Subject: [PATCH 01/26] Release/4.0.0 (#757) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: modificar a estrutura atual para funcionamento de bibliotecas externas do PHP no projeto * feat: alterar url_base API para versões sei4, sei41, sei_super e Remover arquivo de ConfiguracaoModPEN.exemplo * feat: alterar o métodos da classe expedirProcedimento para funcionamento correto com REST * feat: alterar o métodos da classe PENAgendamento para funcionamento correto com REST * feat: alterar estrutura da classe ProcessoEletronicoINT para funcionamento correto com REST * refactor: substituir todas as rotas SOAP para REST * refactor: métodos de integração para recebimento de arquivos e geração de recibos * fix: mudar estrutura para se adaptar a mudança na API * chore: correções phpcs * fix: alterar estutura removendo parametro em obsoleto --dev * fix: alterar WSDL para REST no verificador de instalação e corrigir erro de merge * fix:: corrigir atualização no banco para proceessos recebidos * chore: adicionar camiinho absoluto para chamada do vendor dentro da class * feat: alterar tipagem de variável em todos os métodos que consome a API * fix: alterar nome historico no recebimento para teste funcional * fix: correções testes automatizados * fix: Adicionar correção documento cancelado, versões SEI: 4.1.1 e 4.1.2 * chore: aumentar timeout e remover número mágico --------- Co-authored-by: Glaydson Rodrigues --- Makefile | 12 +- src/composer.json | 0 src/composer.phar | 0 src/int/ProcessoEletronicoINT.php | 4 +- src/pen_map_unidade_cadastrar.php | 21 +- src/rn/EnviarReciboTramiteRN.php | 12 +- src/rn/ExpedirProcedimentoRN.php | 644 +++--- src/rn/PENAgendamentoRN.php | 17 +- src/rn/ProcessoEletronicoRN.php | 1950 ++++++++++------- src/rn/ReceberComponenteDigitalRN.php | 33 +- src/rn/ReceberProcedimentoRN.php | 100 +- src/rn/ReceberReciboTramiteRN.php | 3 +- src/rn/VerificadorInstalacaoRN.php | 16 +- .../config/ConfiguracaoModPEN.exemplo.php | 99 - .../assets/config/ConfiguracaoModPEN.php | 6 +- .../funcional/assets/config/composer.json | 18 + tests_sei4/funcional/bootstrap.php | 2 + tests_sei4/funcional/docker-compose.yml | 6 + .../PenMapUnidadesRestricaoFixture.php | 2 +- .../funcional/tests/CenarioBaseTestCase.php | 1 - ...ontendoDocumentoBeSimpleCorrompidoTest.php | 132 -- .../config/ConfiguracaoModPEN.exemplo.php | 99 - .../assets/config/ConfiguracaoModPEN.php | 6 +- .../funcional/assets/config/composer.json | 18 + tests_sei41/funcional/bootstrap.php | 2 + tests_sei41/funcional/docker-compose.yml | 6 + .../PenMapUnidadesRestricaoFixture.php | 2 +- .../funcional/tests/CenarioBaseTestCase.php | 1 - ...ontendoDocumentoBeSimpleCorrompidoTest.php | 132 -- .../config/ConfiguracaoModPEN.exemplo.php | 99 - .../assets/config/ConfiguracaoModPEN.php | 21 +- .../funcional/assets/config/composer.json | 18 + tests_super/funcional/bootstrap.php | 2 + tests_super/funcional/docker-compose.yml | 6 + .../PenMapUnidadesRestricaoFixture.php | 2 +- .../funcional/tests/CenarioBaseTestCase.php | 1 - ...ontendoDocumentoBeSimpleCorrompidoTest.php | 132 -- 37 files changed, 1713 insertions(+), 1912 deletions(-) create mode 100755 src/composer.json create mode 100755 src/composer.phar delete mode 100644 tests_sei4/funcional/assets/config/ConfiguracaoModPEN.exemplo.php create mode 100644 tests_sei4/funcional/assets/config/composer.json delete mode 100755 tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php delete mode 100644 tests_sei41/funcional/assets/config/ConfiguracaoModPEN.exemplo.php create mode 100644 tests_sei41/funcional/assets/config/composer.json delete mode 100755 tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php delete mode 100644 tests_super/funcional/assets/config/ConfiguracaoModPEN.exemplo.php mode change 100755 => 100644 tests_super/funcional/assets/config/ConfiguracaoModPEN.php create mode 100644 tests_super/funcional/assets/config/composer.json delete mode 100755 tests_super/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php diff --git a/Makefile b/Makefile index 2d692f38a..50032fe69 100755 --- a/Makefile +++ b/Makefile @@ -144,6 +144,10 @@ install: check-isalive $(CMD_COMPOSE_FUNC) exec org1-http chown -R root:root /etc/cron.d/ $(CMD_COMPOSE_FUNC) exec org1-http chmod 0644 /etc/cron.d/sei $(CMD_COMPOSE_FUNC) exec org1-http chmod 0644 /etc/cron.d/sip + $(CMD_COMPOSE_FUNC) exec -w /opt/sei/web/modulos/pen org1-http bash -c './composer.phar update' + $(CMD_COMPOSE_FUNC) exec -w /opt/sei/web/modulos/pen org2-http bash -c './composer.phar update' + $(CMD_COMPOSE_FUNC) exec -w /opt/sei/web/modulos/pen org1-http bash -c './composer.phar install' + $(CMD_COMPOSE_FUNC) exec -w /opt/sei/web/modulos/pen org2-http bash -c './composer.phar install' $(CMD_COMPOSE_FUNC) exec -w /opt/sei/scripts/$(MODULO_PASTAS_CONFIG) org1-http bash -c "$(CMD_INSTALACAO_SEI_MODULO)" $(CMD_COMPOSE_FUNC) exec -w /opt/sip/scripts/$(MODULO_PASTAS_CONFIG) org1-http bash -c "$(CMD_INSTALACAO_SIP_MODULO)" @@ -153,10 +157,6 @@ install: check-isalive $(CMD_COMPOSE_FUNC) exec org2-http chmod 0644 /etc/cron.d/sip $(CMD_COMPOSE_FUNC) exec -w /opt/sei/scripts/$(MODULO_PASTAS_CONFIG) org2-http bash -c "$(CMD_INSTALACAO_SEI_MODULO)" $(CMD_COMPOSE_FUNC) exec -w /opt/sip/scripts/$(MODULO_PASTAS_CONFIG) org2-http bash -c "$(CMD_INSTALACAO_SIP_MODULO)" - - @if [ -e tests_$(sistema)/funcional/assets/config/ConfiguracaoModPEN.php ]; then rm tests_$(sistema)/funcional/assets/config/ConfiguracaoModPEN.php; fi; - @cp tests_$(sistema)/funcional/assets/config/ConfiguracaoModPEN.exemplo.php tests_$(sistema)/funcional/assets/config/ConfiguracaoModPEN.php - @echo "\nArquivo 'ConfiguracaoModPEN.php' restaurado conforme 'ConfiguracaoModPEN.exemplo.php'.\n"; wget -nc -i $(PEN_TEST_FUNC)/assets/arquivos/test_files_index.txt -P $(PEN_TEST_FUNC)/.tmp cp $(PEN_TEST_FUNC)/.tmp/* /tmp @@ -192,7 +192,7 @@ down: .env # make teste=TramiteProcessoComDevolucaoTest test-functional test-functional: .env $(FILE_VENDOR_FUNCIONAL) up vendor - $(CMD_COMPOSE_FUNC) run --rm php-test-functional /tests/vendor/bin/phpunit -c /tests/phpunit.xml /tests/tests/$(addsuffix .php,$(teste)) ; + $(CMD_COMPOSE_FUNC) run --rm php-test-functional /tests/vendor/bin/phpunit -c /tests/phpunit.xml $(textdox) /tests/tests/$(addsuffix .php,$(teste)) ; test-functional-parallel: .env $(FILE_VENDOR_FUNCIONAL) up @@ -204,7 +204,7 @@ test-parallel-otimizado: .env $(FILE_VENDOR_FUNCIONAL) up test-unit: $(FILE_VENDOR_UNITARIO) - $(CMD_DOCKER_COMPOSE) -f $(PEN_TEST_FUNC)/docker-compose.yml run --rm -w /tests php-test-unit bash -c 'vendor/bin/phpunit rn/ProcessoEletronicoRNTest.php' + $(CMD_DOCKER_COMPOSE) -f $(PEN_TEST_FUNC)/docker-compose.yml run --rm -w /tests php-test-unit bash -c 'vendor/bin/phpunit rn/$(addsuffix .php,$(teste))' test: test-unit test-functional diff --git a/src/composer.json b/src/composer.json new file mode 100755 index 000000000..e69de29bb diff --git a/src/composer.phar b/src/composer.phar new file mode 100755 index 000000000..e69de29bb diff --git a/src/int/ProcessoEletronicoINT.php b/src/int/ProcessoEletronicoINT.php index 62d58ceee..cf3a4bd4f 100755 --- a/src/int/ProcessoEletronicoINT.php +++ b/src/int/ProcessoEletronicoINT.php @@ -142,13 +142,13 @@ public static function formatarHierarquia($ObjEstrutura) if(isset($ObjEstrutura->hierarquia)) { - $arrObjNivel = $ObjEstrutura->hierarquia->nivel; + $arrObjNivel = $ObjEstrutura->hierarquia; $siglasUnidades = array(); $siglasUnidades[] = $ObjEstrutura->sigla; foreach($arrObjNivel as $key => $objNivel){ - $siglasUnidades[] = $objNivel->sigla ; + $siglasUnidades[] = $objNivel->sigla; } for($i = 1; $i <= 3; $i++){ diff --git a/src/pen_map_unidade_cadastrar.php b/src/pen_map_unidade_cadastrar.php index d76163131..ce03d4f84 100755 --- a/src/pen_map_unidade_cadastrar.php +++ b/src/pen_map_unidade_cadastrar.php @@ -104,10 +104,10 @@ $objInfraException->lancarValidacao('A unidade ' . $mapIdUnidade[$objResultado[0]->getNumIdUnidade()] .' do sistema já está mapeada com a unidade '.$_POST['txtUnidadePen'].' do Portal de Administração.'); } // CARREGAR NOME E SIGLA DA ESTRUTURA $objProcessoEletronico = new ProcessoEletronicoRN(); - $objProcessoEletronicoDTO = $objProcessoEletronico->listarEstruturas($numIdRepositorioOrigem, $_POST['id_unidade_rh']); + $objProcessoEletronicoDTO = $objProcessoEletronico->buscarEstrutura($numIdRepositorioOrigem, $_POST['id_unidade_rh']); - $nomeUnidadeRH = $objProcessoEletronicoDTO[0]->getStrNome(); - $siglaUnidadeRH = $objProcessoEletronicoDTO[0]->getStrSigla(); + $nomeUnidadeRH = $objProcessoEletronicoDTO->getStrNome(); + $siglaUnidadeRH = $objProcessoEletronicoDTO->getStrSigla(); $objPenUnidadeDTO = new PenUnidadeDTO(); $objPenUnidadeDTO->setNumIdUnidade($_POST['id_unidade']); $objPenUnidadeDTO->setNumIdUnidadeRH($_POST['id_unidade_rh']); @@ -183,18 +183,19 @@ $objUnidadeDTO->retStrDescricao(); $arrMapIdUnidade = array(); $objPenUnidadeRN = new PenUnidadeRN(); - foreach ($objPenUnidadeRN->listar($objUnidadeDTO) as $dados) { - $arrMapIdUnidade[$dados->getNumIdUnidade()] = $dados->getStrSigla() . ' - ' . $dados->getStrDescricao(); - } + foreach ($objPenUnidadeRN->listar($objUnidadeDTO) as $dados) { + $arrMapIdUnidade[$dados->getNumIdUnidade()] = $dados->getStrSigla() . ' - ' . $dados->getStrDescricao(); + } //Verifica se o numero da unidade esta vazio, senão estiver busca o nome da unidade para exibição $strNomeUnidadeSelecionada = ''; if(!empty($objPenUnidadeDTO->getNumIdUnidadeRH())){ - $objProcessoEletronico = new ProcessoEletronicoRN(); - $objProcessoEletronicoDTO = $objProcessoEletronico->listarEstruturas($numIdRepositorioOrigem, $objPenUnidadeDTO->getNumIdUnidadeRH()); - if(!is_null($objProcessoEletronicoDTO[0])){ - $strNomeUnidadeSelecionada = $objProcessoEletronicoDTO[0]->getStrNome(); + $objProcessoEletronico = new ProcessoEletronicoRN(); + $objProcessoEletronicoDTO = $objProcessoEletronico->buscarEstrutura($numIdRepositorioOrigem, $objPenUnidadeDTO->getNumIdUnidadeRH()); + + if(!is_null($objProcessoEletronicoDTO)){ + $strNomeUnidadeSelecionada = $objProcessoEletronicoDTO->getStrNome(); }else{ $strNomeUnidadeSelecionada = 'Unidade não encontrada.'; } diff --git a/src/rn/EnviarReciboTramiteRN.php b/src/rn/EnviarReciboTramiteRN.php index 29a8efcd4..7d4ad46b6 100755 --- a/src/rn/EnviarReciboTramiteRN.php +++ b/src/rn/EnviarReciboTramiteRN.php @@ -37,7 +37,7 @@ protected function gerarReciboTramite($numIdTramite){ $objMetaProcesso = $objMetaRetorno->metadados->processo; - $arrObjMetaDocumento = is_array($objMetaProcesso->documento) ? $objMetaProcesso->documento : array($objMetaProcesso->documento); + $arrObjMetaDocumento = is_array($objMetaProcesso->documentos) ? $objMetaProcesso->documentos : array($objMetaProcesso->documentos); $objDTO = new ComponenteDigitalDTO(); $objBD = new ComponenteDigitalBD($this->inicializarObjInfraIBanco()); @@ -152,13 +152,13 @@ private function obterDataRecebimentoComponentesDigitais($parObjTramite){ throw new InfraException('Parâmetro $parObjTramite não informado.'); } - if(!is_array($parObjTramite->historico->operacao)) { - $parObjTramite->historico->operacao = array($parObjTramite->historico->operacao); + if(!is_array($parObjTramite->itensHistorico->operacao)) { + $parObjTramite->itensHistorico->operacao = array($parObjTramite->itensHistorico->operacao); } - foreach ($parObjTramite->historico->operacao as $operacao) { - if($operacao->situacao == ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO) { - return ProcessoEletronicoRN::converterDataSEI($operacao->dataHora); + foreach ($parObjTramite->itensHistorico->operacao as $operacao) { + 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 5f889b7c9..3c1bb807b 100755 --- a/src/rn/ExpedirProcedimentoRN.php +++ b/src/rn/ExpedirProcedimentoRN.php @@ -122,17 +122,17 @@ private function gravarLogDebug($parStrMensagem, $parNumIdentacao = 0, $parBolLo protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpedirProcedimentoDTO) { - $numIdTramite = 0; + $numIdTramite = 0; try { - //Valida Permissão - SessaoSEI::getInstance()->validarAuditarPermissao('pen_procedimento_expedir', __METHOD__, $objExpedirProcedimentoDTO); - $dblIdProcedimento = $objExpedirProcedimentoDTO->getDblIdProcedimento(); + //Valida Permissão + SessaoSEI::getInstance()->validarAuditarPermissao('pen_procedimento_expedir', __METHOD__, $objExpedirProcedimentoDTO); + $dblIdProcedimento = $objExpedirProcedimentoDTO->getDblIdProcedimento(); - $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); - $bolSinProcessamentoEmBloco = $objExpedirProcedimentoDTO->getBolSinProcessamentoEmBloco(); - $numIdBloco = $objExpedirProcedimentoDTO->getNumIdBloco(); - $numIdAtividade = $objExpedirProcedimentoDTO->getNumIdAtividade(); - $numIdUnidade = $objExpedirProcedimentoDTO->getNumIdUnidade(); + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $bolSinProcessamentoEmBloco = $objExpedirProcedimentoDTO->getBolSinProcessamentoEmBloco(); + $numIdBloco = $objExpedirProcedimentoDTO->getNumIdBloco(); + $numIdAtividade = $objExpedirProcedimentoDTO->getNumIdAtividade(); + $numIdUnidade = $objExpedirProcedimentoDTO->getNumIdUnidade(); if(!$bolSinProcessamentoEmBloco){ $this->barraProgresso->exibir(); @@ -201,10 +201,10 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe $objCabecalho = $this->construirCabecalho($objExpedirProcedimentoDTO, $strNumeroRegistro, $dblIdProcedimento); //Construção do processo para envio - $objProcesso = $this->construirProcesso($dblIdProcedimento, $objExpedirProcedimentoDTO->getArrIdProcessoApensado(), $objMetadadosProcessoTramiteAnterior); + $arrProcesso = $this->construirProcessoREST($dblIdProcedimento, $objExpedirProcedimentoDTO->getArrIdProcessoApensado(), $objMetadadosProcessoTramiteAnterior); //Obtém o tamanho total da barra de progreso - $nrTamanhoTotalBarraProgresso = $this->obterTamanhoTotalDaBarraDeProgresso($objProcesso); + $nrTamanhoTotalBarraProgresso = $this->obterTamanhoTotalDaBarraDeProgressoREST($arrProcesso); if(!$bolSinProcessamentoEmBloco){ //Atribui o tamanho máximo da barra de progresso @@ -223,52 +223,55 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe $this->objProcessoEletronicoRN->cancelarTramite($objTramiteInconsistente->IDT); } - $param = new stdClass(); - $param->novoTramiteDeProcesso = new stdClass(); - $param->novoTramiteDeProcesso->cabecalho = $objCabecalho; - $param->novoTramiteDeProcesso->processo = $objProcesso; - $param->dblIdProcedimento = $dblIdProcedimento; - $novoTramite = $this->objProcessoEletronicoRN->enviarProcesso($param); + $param = [ + 'novoTramiteDeProcesso' => [ + 'cabecalho' => $objCabecalho, + 'processo' => $arrProcesso + ], + 'dblIdProcedimento' => $dblIdProcedimento + ]; + + $novoTramite = $this->objProcessoEletronicoRN->enviarProcessoREST($param); - $numIdTramite = $novoTramite->dadosTramiteDeProcessoCriado->IDT; + $numIdTramite = $novoTramite['IDT']; $this->lancarEventoEnvioMetadados($numIdTramite); $this->atualizarPenProtocolo($dblIdProcedimento); - if (isset($novoTramite->dadosTramiteDeProcessoCriado)) { - $objTramite = $novoTramite->dadosTramiteDeProcessoCriado; - $this->objProcedimentoAndamentoRN->setOpts($objTramite->NRE, $objTramite->IDT, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), $dblIdProcedimento); + if (isset($novoTramite)) { + $objTramite = $novoTramite; + $this->objProcedimentoAndamentoRN->setOpts($objTramite['NRE'], $objTramite['IDT'], ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), $dblIdProcedimento); - try { + try { $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Envio do metadados do processo', 'S')); - if($bolSinProcessamentoEmBloco){ - $this->gravarLogDebug(sprintf('Envio do metadados do processo %s', $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado()), 2); - $objPenBlocoProcessoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO); - $objPenBlocoProcessoRN->alterar($objPenBlocoProcessoDTO); - $idAtividadeExpedicao = $numIdAtividade; - }else{ - $idAtividadeExpedicao = $this->bloquearProcedimentoExpedicao($objExpedirProcedimentoDTO, $objProcesso->idProcedimentoSEI); - } + if($bolSinProcessamentoEmBloco){ + $this->gravarLogDebug(sprintf('Envio do metadados do processo %s', $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado()), 2); + $objPenBlocoProcessoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO); + $objPenBlocoProcessoRN->alterar($objPenBlocoProcessoDTO); + $idAtividadeExpedicao = $numIdAtividade; + }else{ + $idAtividadeExpedicao = $this->bloquearProcedimentoExpedicao($objExpedirProcedimentoDTO, $arrProcesso['idProcedimentoSEI']); + } $this->objProcessoEletronicoRN->cadastrarTramiteDeProcesso( - $objProcesso->idProcedimentoSEI, - $objTramite->NRE, - $objTramite->IDT, + $arrProcesso['idProcedimentoSEI'], + $objTramite['NRE'], + $objTramite['IDT'], ProcessoEletronicoRN::$STA_TIPO_TRAMITE_ENVIO, - $objTramite->dataHoraDeRegistroDoTramite, + $objTramite['dataHoraDeRegistroDoTramite'], $objExpedirProcedimentoDTO->getNumIdRepositorioOrigem(), $objExpedirProcedimentoDTO->getNumIdUnidadeOrigem(), $objExpedirProcedimentoDTO->getNumIdRepositorioDestino(), $objExpedirProcedimentoDTO->getNumIdUnidadeDestino(), - $objProcesso, - $objTramite->ticketParaEnvioDeComponentesDigitais, - $objTramite->componentesDigitaisSolicitados, + $arrProcesso, + $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 @@ -277,7 +280,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, $objProcesso->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 @@ -289,41 +292,41 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe //TODO: Alterar atualizao para somente apresentar ao final de todo o trâmite //$this->barraProgresso->mover(ProcessoEletronicoINT::NEE_EXPEDICAO_ETAPA_CONCLUSAO); - if(!$bolSinProcessamentoEmBloco){ - $this->barraProgresso->mover($this->barraProgresso->getNumMax()); - $this->barraProgresso->setStrRotulo(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_CONCLUSAO); - }else{ - $this->gravarLogDebug('Concluído envio dos componentes do processo', 2); - $objPenBlocoProcessoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE); - $objPenBlocoProcessoRN->alterar($objPenBlocoProcessoDTO); - } + if(!$bolSinProcessamentoEmBloco){ + $this->barraProgresso->mover($this->barraProgresso->getNumMax()); + $this->barraProgresso->setStrRotulo(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_CONCLUSAO); + }else{ + $this->gravarLogDebug('Concluído envio dos componentes do processo', 2); + $objPenBlocoProcessoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE); + $objPenBlocoProcessoRN->alterar($objPenBlocoProcessoDTO); + } $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); $numTempoTotalRecebimento = round(microtime(true) - $numTempoInicialRecebimento, 2); $this->gravarLogDebug("Finalizado o envio de protocolo número " . $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado() . " (Tempo total: {$numTempoTotalRecebimento}s)", 0, true); - } - catch (\Exception $e) { - //Realiza o desbloqueio do processo - try{ $this->desbloquearProcessoExpedicao($objProcesso->idProcedimentoSEI); } catch (Exception $ex) { } - - //Realiza o cancelamento do tramite - try{ - if($numIdTramite != 0){ - $this->objProcessoEletronicoRN->cancelarTramite($numIdTramite); - } - } catch (InfraException $ex) { } + } + catch (\Exception $e) { + //Realiza o desbloqueio do processo + try{ $this->desbloquearProcessoExpedicao($arrProcesso['idProcedimentoSEI']); } catch (Exception $ex) { } + + //Realiza o cancelamento do tramite + try{ + if($numIdTramite != 0){ + $this->objProcessoEletronicoRN->cancelarTramite($numIdTramite); + } + } catch (InfraException $ex) { } - $this->registrarAndamentoExpedicaoAbortada($objProcesso->idProcedimentoSEI); + $this->registrarAndamentoExpedicaoAbortada($arrProcesso['idProcedimentoSEI']); $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Concluído envio dos componentes do processo', 'N')); throw $e; + } } - } } catch (\Exception $e) { $this->gravarLogDebug("Erro processando envio de processo: $e", 0, true); @@ -383,33 +386,34 @@ private function consultarMetadadosPEN($parDblIdProcedimento) * @param $parObjProcesso * @return float|int $totalBarraProgresso */ - private function obterTamanhoTotalDaBarraDeProgresso($parObjProcesso) { - $nrTamanhoMegasMaximo = ProcessoEletronicoRN::obterTamanhoBlocoTransferencia(); - $nrTamanhoBytesMaximo = ($nrTamanhoMegasMaximo * pow(1024, 2)); //Qtd de MB definido como parametro + private function obterTamanhoTotalDaBarraDeProgressoREST($parObjProcesso) { - $totalBarraProgresso = 2; - $this->contadorDaBarraDeProgresso = 2; - $arrHashIndexados = array(); - foreach ($parObjProcesso->documento as $objDoc) - { - $arrComponentesDigitais = is_array($objDoc->componenteDigital) ? $objDoc->componenteDigital : array($objDoc->componenteDigital); + $nrTamanhoMegasMaximo = ProcessoEletronicoRN::obterTamanhoBlocoTransferencia(); + $nrTamanhoBytesMaximo = ($nrTamanhoMegasMaximo * pow(1024, 2)); //Qtd de MB definido como parametro + + $totalBarraProgresso = 2; + $this->contadorDaBarraDeProgresso = 2; + $arrHashIndexados = array(); + foreach ($parObjProcesso['documentos'] as $objDoc) + { + $arrComponentesDigitais = is_array($objDoc['componentesDigitais']) ? $objDoc['componentesDigitais'] : array($objDoc['componentesDigitais']); foreach ($arrComponentesDigitais as $objComponenteDigital) { - $strHashComponente = ProcessoEletronicoRN::getHashFromMetaDados($objComponenteDigital->hash); + $strHashComponente = ProcessoEletronicoRN::getHashFromMetaDadosREST($objComponenteDigital['hash']); if(!in_array($strHashComponente, $arrHashIndexados)){ - $arrHashIndexados[] = $strHashComponente; - $nrTamanhoComponente = $objComponenteDigital->tamanhoEmBytes; + $arrHashIndexados[] = $strHashComponente; + $nrTamanhoComponente = $objComponenteDigital['tamanhoEmBytes']; if($nrTamanhoComponente > $nrTamanhoBytesMaximo){ $qtdPartes = ceil($nrTamanhoComponente / $nrTamanhoBytesMaximo); $totalBarraProgresso += $qtdPartes; continue; } - $totalBarraProgresso++; + $totalBarraProgresso++; } } } - return $totalBarraProgresso; + return $totalBarraProgresso; } public function listarRepositoriosDeEstruturas() @@ -488,41 +492,53 @@ private function enviarApenasComponentesDigitaisPendentes($numIdRepositorioDesti return false; } - private function construirProcesso($dblIdProcedimento, $arrIdProcessoApensado = null, $parObjMetadadosTramiteAnterior = null) - { + public function construirProcessoREST($dblIdProcedimento, $arrIdProcessoApensado = null, $parObjMetadadosTramiteAnterior = null) + { if(!isset($dblIdProcedimento)){ throw new InfraException('Parâmetro $dblIdProcedimento não informado.'); } + $objProcedimentoDTO = $this->consultarProcedimento($dblIdProcedimento); $objPenRelHipoteseLegalRN = new PenRelHipoteseLegalEnvioRN(); - $objProcesso = new stdClass(); - $objProcesso->staTipoProtocolo = ProcessoEletronicoRN::$STA_TIPO_PROTOCOLO_PROCESSO; - $objProcesso->protocolo = mb_convert_encoding($objProcedimentoDTO->getStrProtocoloProcedimentoFormatado(), 'UTF-8', 'ISO-8859-1'); - $objProcesso->nivelDeSigilo = $this->obterNivelSigiloPEN($objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo()); - $objProcesso->processoDeNegocio = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objProcedimentoDTO->getStrNomeTipoProcedimento(), 100), 'UTF-8', 'ISO-8859-1'); - $objProcesso->descricao = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objProcedimentoDTO->getStrDescricaoProtocolo(), 100), 'UTF-8', 'ISO-8859-1'); - $objProcesso->dataHoraDeProducao = $this->objProcessoEletronicoRN->converterDataWebService($objProcedimentoDTO->getDtaGeracaoProtocolo()); - if($objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_RESTRITO){ - $objProcesso->hipoteseLegal = new stdClass(); - $objProcesso->hipoteseLegal->identificacao = $objPenRelHipoteseLegalRN->getIdHipoteseLegalPEN($objProcedimentoDTO->getNumIdHipoteseLegalProtocolo()); - } - - $this->atribuirProdutorProcesso($objProcesso, $objProcedimentoDTO->getNumIdUsuarioGeradorProtocolo(), $objProcedimentoDTO->getNumIdUnidadeGeradoraProtocolo()); - $this->atribuirDataHoraDeRegistro($objProcesso, $objProcedimentoDTO->getDblIdProcedimento()); - $this->atribuirDocumentos($objProcesso, $dblIdProcedimento, $parObjMetadadosTramiteAnterior); - $this->atribuirDadosInteressados($objProcesso, $dblIdProcedimento); - $this->adicionarProcessosApensados($objProcesso, $arrIdProcessoApensado); - $this->atribuirDadosHistorico($objProcesso, $dblIdProcedimento); - - $objProcesso->idProcedimentoSEI = $dblIdProcedimento; + $objProcesso = [ + 'staTipoProtocolo' => ProcessoEletronicoRN::$STA_TIPO_PROTOCOLO_PROCESSO, + 'protocolo' => mb_convert_encoding($objProcedimentoDTO->getStrProtocoloProcedimentoFormatado(), 'UTF-8', 'ISO-8859-1'), + 'nivelDeSigilo' => $this->obterNivelSigiloPEN($objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo()), + 'processoDeNegocio' => mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objProcedimentoDTO->getStrNomeTipoProcedimento(), 100), 'UTF-8', 'ISO-8859-1'), + 'descricao' => mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objProcedimentoDTO->getStrDescricaoProtocolo(), 100), 'UTF-8', 'ISO-8859-1' ), + 'dataHoraDeProducao' => $this->objProcessoEletronicoRN->converterDataWebService($objProcedimentoDTO->getDtaGeracaoProtocolo()) + ]; + + + + if ($objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_RESTRITO) { + $objProcesso['hipoteseLegal'] = [ + 'identificacao' => $objPenRelHipoteseLegalRN->getIdHipoteseLegalPEN($objProcedimentoDTO->getNumIdHipoteseLegalProtocolo()) + ]; + } + + $objProcesso = $this->atribuirProdutorProcessoREST($objProcesso, $objProcedimentoDTO->getNumIdUsuarioGeradorProtocolo(), $objProcedimentoDTO->getNumIdUnidadeGeradoraProtocolo()); + + $objProcesso = $this->atribuirDataHoraDeRegistroREST($objProcesso, $objProcedimentoDTO->getDblIdProcedimento()); + + $objProcesso = $this->atribuirDocumentosREST($objProcesso, $dblIdProcedimento, $parObjMetadadosTramiteAnterior); + + $objProcesso = $this->atribuirDadosInteressadosREST($objProcesso, $dblIdProcedimento); + + $objProcesso = $this->adicionarProcessosApensadosREST($objProcesso, $arrIdProcessoApensado); + + $objProcesso = $this->atribuirDadosHistoricoREST($objProcesso, $dblIdProcedimento); + + $objProcesso['idProcedimentoSEI'] = $dblIdProcedimento; return $objProcesso; } + //TODO: Implementar mapeamento de atividades que sero enviadas para barramento (semelhante Protocolo Integrado) - private function atribuirDadosHistorico($objProcesso, $dblIdProcedimento) - { + private function atribuirDadosHistoricoREST($objProcesso, $dblIdProcedimento) + { $objProcedimentoHistoricoDTO = new ProcedimentoHistoricoDTO(); $objProcedimentoHistoricoDTO->setDblIdProcedimento($dblIdProcedimento); $objProcedimentoHistoricoDTO->setStrStaHistorico(ProcedimentoRN::$TH_TOTAL); @@ -533,27 +549,31 @@ private function atribuirDadosHistorico($objProcesso, $dblIdProcedimento) $arrObjAtividadeDTO = $objProcedimentoDTO->getArrObjAtividadeDTO(); if($arrObjAtividadeDTO == null || count($arrObjAtividadeDTO) == 0) { - throw new InfraException("Não foi possível obter andamentos do processo {$objProcesso->protocolo}"); + throw new InfraException("Não foi possível obter andamentos do processo {$objProcesso['protocolo']}"); } $arrObjOperacao = array(); foreach ($arrObjAtividadeDTO as $objAtividadeDTO) { - $objOperacao = new stdClass(); - $objOperacao->dataHoraOperacao = $this->objProcessoEletronicoRN->converterDataWebService($objAtividadeDTO->getDthAbertura()); - $objOperacao->unidadeOperacao = $objAtividadeDTO->getStrDescricaoUnidade()?mb_convert_encoding($objAtividadeDTO->getStrDescricaoUnidade(), 'UTF-8', 'ISO-8859-1'):"NA"; - $objOperacao->operacao = $objAtividadeDTO->getStrNomeTarefa()?$this->objProcessoEletronicoRN->reduzirCampoTexto(strip_tags(mb_convert_encoding($objAtividadeDTO->getStrNomeTarefa(), 'UTF-8', 'ISO-8859-1')), 1000):"NA"; - $objOperacao->usuario = $objAtividadeDTO->getStrNomeUsuarioOrigem()?mb_convert_encoding($objAtividadeDTO->getStrNomeUsuarioOrigem(), 'UTF-8', 'ISO-8859-1'):"NA"; + $objOperacao = [ + 'dataHoraOperacao' => $this->objProcessoEletronicoRN->converterDataWebService($objAtividadeDTO->getDthAbertura()), + 'unidadeOperacao' => $objAtividadeDTO->getStrDescricaoUnidade() ? mb_convert_encoding($objAtividadeDTO->getStrDescricaoUnidade(), 'UTF-8', 'ISO-8859-1') : "NA", + 'operacao' => $objAtividadeDTO->getStrNomeTarefa() ? $this->objProcessoEletronicoRN->reduzirCampoTexto(strip_tags(mb_convert_encoding($objAtividadeDTO->getStrNomeTarefa(), 'UTF-8', 'ISO-8859-1')), 1000) : "NA", + 'usuario' => $objAtividadeDTO->getStrNomeUsuarioOrigem() ? mb_convert_encoding($objAtividadeDTO->getStrNomeUsuarioOrigem(), 'UTF-8', 'ISO-8859-1') : "NA" + ]; + $arrObjOperacao[] = $objOperacao; } - usort($arrObjOperacao, function($obj1, $obj2){ - $dt1=new DateTime($obj1->dataHoraOperacao); - $dt2=new DateTime($obj2->dataHoraOperacao); - return $dt1>$dt2; + usort($arrObjOperacao, function($obj1, $obj2) { + $dt1 = new DateTime($obj1['dataHoraOperacao']); + $dt2 = new DateTime($obj2['dataHoraOperacao']); + return $dt1 > $dt2; }); - $objProcesso->historico = $arrObjOperacao; + $objProcesso['itensHistorico'] = $arrObjOperacao; + + return $objProcesso; } /** @@ -748,14 +768,14 @@ public static function receberRecusaProcedimento($motivo, $unidade_destino, $idP } } - private function atribuirDataHoraDeRegistro($objContexto, $dblIdProcedimento, $dblIdDocumento = null) - { - //Validar parâmetro $objContexto + private function atribuirDataHoraDeRegistroREST($objContexto, $dblIdProcedimento, $dblIdDocumento = null) + { + //Validar parâmetro $objContexto if(!isset($objContexto)) { throw new InfraException('Parâmetro $objContexto não informado.'); } - //Validar parâmetro $dbIdProcedimento + //Validar parâmetro $dbIdProcedimento if(!isset($dblIdProcedimento)) { throw new InfraException('Parâmetro $dbIdProcedimento não informado.'); } @@ -777,57 +797,71 @@ private function atribuirDataHoraDeRegistro($objContexto, $dblIdProcedimento, $d $arrObjAtividadeDTOHistorico = $objProcedimentoDTOHistorico->getArrObjAtividadeDTO(); if(isset($arrObjAtividadeDTOHistorico) && count($arrObjAtividadeDTOHistorico) == 1){ - $objContexto->dataHoraDeRegistro = $this->objProcessoEletronicoRN->converterDataWebService($arrObjAtividadeDTOHistorico[0]->getDthAbertura()); + $objContexto['dataHoraDeRegistro'] = $this->objProcessoEletronicoRN->converterDataWebService($arrObjAtividadeDTOHistorico[0]->getDthAbertura()); } - } - private function atribuirProdutorProcesso($objProcesso, $dblIdProcedimento, $numIdUnidadeGeradora) + return $objContexto; + } + + private function atribuirProdutorProcessoREST($objProcesso, $dblIdProcedimento, $numIdUnidadeGeradora) { if(!isset($objProcesso)){ throw new InfraException('Parâmetro $objProcesso não informado.'); } - $objProcesso->produtor = new stdClass(); $objUsuarioProdutor = $this->consultarUsuario($dblIdProcedimento); - if(isset($objUsuarioProdutor)) { - //Dados do produtor do processo - $objProcesso->produtor->nome = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objUsuarioProdutor->getStrNome(), 150), 'UTF-8', 'ISO-8859-1'); - //TODO: Obter tipo de pessoa física dos contatos do SEI - $objProcesso->produtor->numeroDeIdentificacao = $objUsuarioProdutor->getDblCpfContato(); - $objProcesso->produtor->tipo = self::STA_TIPO_PESSOA_FISICA; - //TODO: Informar dados da estrutura organizacional (estruturaOrganizacional) + if (isset($objUsuarioProdutor)) { + // Dados do produtor do processo + $objProcesso['produtor'] = [ + 'nome' => mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objUsuarioProdutor->getStrNome(), 150), 'UTF-8', 'ISO-8859-1'), + 'tipo' => self::STA_TIPO_PESSOA_FISICA + ]; + + if ($objUsuarioProdutor->getDblCpfContato()) { + $objProcesso['produtor']['numeroDeIdentificacao'] = $objUsuarioProdutor->getDblCpfContato(); + } + // TODO: Informar dados da estrutura organizacional (estruturaOrganizacional) } - + $objUnidadeGeradora = $this->consultarUnidade($dblIdProcedimento); - if(isset($objUnidadeGeradora)){ - $objProcesso->produtor->unidade = new stdClass(); - $objProcesso->produtor->unidade->nome = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objUnidadeGeradora->getStrDescricao(), 150), 'UTF-8', 'ISO-8859-1'); - $objProcesso->produtor->unidade->tipo = self::STA_TIPO_PESSOA_ORGAOPUBLICO; - //TODO: Informar dados da estrutura organizacional (estruturaOrganizacional) + if (isset($objUnidadeGeradora)) { + $objProcesso['produtor']['unidade'] = [ + 'nome' => mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objUnidadeGeradora->getStrDescricao(), 150), 'UTF-8', 'ISO-8859-1'), + 'tipo' => self::STA_TIPO_PESSOA_ORGAOPUBLICO + ]; + // TODO: Informar dados da estrutura organizacional (estruturaOrganizacional) } + + return $objProcesso; } - private function atribuirDadosInteressados($objProcesso, $dblIdProcedimento) - { - if(!isset($objProcesso)){ + + private function atribuirDadosInteressadosREST($objProcesso, $dblIdProcedimento) + { + if (!isset($objProcesso)) { throw new InfraException('Parâmetro $objProcesso não informado.'); } - + $arrParticipantesDTO = $this->listarInteressados($dblIdProcedimento); - - if(isset($arrParticipantesDTO) && count($arrParticipantesDTO) > 0){ - $objProcesso->interessado = array(); - + + if (isset($arrParticipantesDTO) && count($arrParticipantesDTO) > 0) { + $objProcesso['interessados'] = array(); + foreach ($arrParticipantesDTO as $participanteDTO) { - $interessado = new stdClass(); - $interessado->nome = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($participanteDTO->getStrNomeContato(), 150), 'UTF-8', 'ISO-8859-1'); - $objProcesso->interessado[] = $interessado; + $interessado = [ + 'nome' => mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($participanteDTO->getStrNomeContato(), 150), 'UTF-8', 'ISO-8859-1') + ]; + $objProcesso['interessados'][] = $interessado; } - } + } + + return $objProcesso; } - private function atribuirDocumentos($objProcesso, $dblIdProcedimento, $parObjMetadadosTramiteAnterior) + private function atribuirDocumentosREST($objProcesso, $dblIdProcedimento, $parObjMetadadosTramiteAnterior) { + + if(!isset($objProcesso)) { throw new InfraException('Parâmetro $objProcesso não informado.'); } @@ -848,112 +882,124 @@ private function atribuirDocumentos($objProcesso, $dblIdProcedimento, $parObjMet $arrObjCompIndexadoPorIdDocumentoDTO = InfraArray::indexarArrInfraDTO($arrObjComponentesDigitaisDTO, 'IdDocumento'); } } - - $objProcesso->documento = array(); + + $objProcesso['documentos'] = array(); foreach ($arrDocumentosRelacionados as $ordem => $objDocumentosRelacionados) { $documentoDTO = $objDocumentosRelacionados["Documento"]; $staAssociacao = $objDocumentosRelacionados["StaAssociacao"]; - $documento = new stdClass(); $objPenRelHipoteseLegalRN = new PenRelHipoteseLegalEnvioRN(); //Considera o número/nome do documento externo para descrição do documento $boolDocumentoRecebidoComNumero = $documentoDTO->getStrStaProtocoloProtocolo() == ProtocoloRN::$TP_DOCUMENTO_RECEBIDO && $documentoDTO->getStrNumero() != null; $strDescricaoDocumento = ($boolDocumentoRecebidoComNumero) ? $documentoDTO->getStrNumero() : "***"; - $documento->ordem = $ordem + 1; - $documento->descricao = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($strDescricaoDocumento, 100), 'UTF-8', 'ISO-8859-1'); - $documento->retirado = ($documentoDTO->getStrStaEstadoProtocolo() == ProtocoloRN::$TE_DOCUMENTO_CANCELADO) ? true : false; - $documento->nivelDeSigilo = $this->obterNivelSigiloPEN($documentoDTO->getStrStaNivelAcessoLocalProtocolo()); + $documento = []; // Inicializando $documento como um array + $documento['ordem'] = $ordem + 1; + $documento['descricao'] = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($strDescricaoDocumento, 100), 'UTF-8', 'ISO-8859-1'); + + + $documento['retirado'] = ($documentoDTO->getStrStaEstadoProtocolo() == ProtocoloRN::$TE_DOCUMENTO_CANCELADO) ? true : false; + $documento['nivelDeSigilo'] = $this->obterNivelSigiloPEN($documentoDTO->getStrStaNivelAcessoLocalProtocolo()); + //Verifica se o documento faz parte de outro processo devido à sua anexação ou à sua movimentação - if($staAssociacao != RelProtocoloProtocoloRN::$TA_DOCUMENTO_MOVIDO){ - if($documentoDTO->getStrProtocoloProcedimentoFormatado() != $objProcesso->protocolo){ + if($staAssociacao != RelProtocoloProtocoloRN::$TA_DOCUMENTO_MOVIDO) { + if ($documentoDTO->getStrProtocoloProcedimentoFormatado() != $objProcesso['protocolo']) { // Caso o documento não tenha sido movido, seu protocolo é diferente devido à sua anexação à outro processo - $documento->protocoloDoProcessoAnexado = $documentoDTO->getStrProtocoloProcedimentoFormatado(); - $documento->idProcedimentoAnexadoSEI = $documentoDTO->getDblIdProcedimento(); + $documento['protocoloDoProcessoAnexado'] = $documentoDTO->getStrProtocoloProcedimentoFormatado(); + $documento['idProcedimentoAnexadoSEI'] = $documentoDTO->getDblIdProcedimento(); + } } else { // Em caso de documento movido, ele será tratado como cancelado para trâmites externos - $documento->retirado = true; + $documento['retirado'] = true; } - if($documentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_RESTRITO){ - $documento->hipoteseLegal = new stdClass(); - $documento->hipoteseLegal->identificacao = $objPenRelHipoteseLegalRN->getIdHipoteseLegalPEN($documentoDTO->getNumIdHipoteseLegalProtocolo()); + $documento['hipoteseLegal'] = array(); // Inicializando a chave 'hipoteseLegal' como um array + $documento['hipoteseLegal']['identificacao'] = $objPenRelHipoteseLegalRN->getIdHipoteseLegalPEN($documentoDTO->getNumIdHipoteseLegalProtocolo()); //TODO: Adicionar nome da hipótese legal atribuida ao documento } - $documento->dataHoraDeProducao = $this->objProcessoEletronicoRN->converterDataWebService($documentoDTO->getDtaGeracaoProtocolo()); - $documento->produtor = new stdClass(); + $documento['dataHoraDeProducao'] = $this->objProcessoEletronicoRN->converterDataWebService($documentoDTO->getDtaGeracaoProtocolo()); + $documento['dataHoraDeRegistro'] = $this->objProcessoEletronicoRN->converterDataWebService($documentoDTO->getDtaGeracaoProtocolo()); + $documento['produtor'] = array(); // Inicializando a chave 'produtor' como um array $usuarioDTO = $this->consultarUsuario($documentoDTO->getNumIdUsuarioGeradorProtocolo()); if(isset($usuarioDTO)) { - $documento->produtor->nome = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($usuarioDTO->getStrNome(), 150), 'UTF-8', 'ISO-8859-1'); - $documento->produtor->numeroDeIdentificacao = $usuarioDTO->getDblCpfContato(); - //TODO: Obter tipo de pessoa fsica dos contextos/contatos do SEI - $documento->produtor->tipo = self::STA_TIPO_PESSOA_FISICA; - ; + $documento['produtor']['nome'] = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($usuarioDTO->getStrNome(), 150), 'UTF-8', 'ISO-8859-1'); + $documento['produtor']['numeroDeIdentificacao'] = $usuarioDTO->getDblCpfContato(); + // TODO: Obter tipo de pessoa física dos contextos/contatos do SEI + $documento['produtor']['tipo'] = self::STA_TIPO_PESSOA_FISICA; + } - $unidadeDTO = $this->consultarUnidade($documentoDTO->getNumIdUnidadeResponsavel()); if(isset($unidadeDTO)) { - $documento->produtor->unidade = new stdClass(); - $documento->produtor->unidade->nome = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($unidadeDTO->getStrDescricao(), 150), 'UTF-8', 'ISO-8859-1'); - $documento->produtor->unidade->tipo = self::STA_TIPO_PESSOA_ORGAOPUBLICO; + $documento['produtor']['unidade'] = []; // Inicializando a chave 'unidade' como um array + $documento['produtor']['unidade']['nome'] = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($unidadeDTO->getStrDescricao(), 150), 'UTF-8', 'ISO-8859-1'); + $documento['produtor']['unidade']['tipo'] = self::STA_TIPO_PESSOA_ORGAOPUBLICO; + //TODO: Informar dados da estrutura organizacional (estruturaOrganizacional) } - if(array_key_exists($documentoDTO->getDblIdDocumento(), $arrObjCompIndexadoPorIdDocumentoDTO)){ $objComponenteDigitalDTO = $arrObjCompIndexadoPorIdDocumentoDTO[$documentoDTO->getDblIdDocumento()]; if(!empty($objComponenteDigitalDTO->getNumOrdemDocumentoReferenciado())){ - $documento->ordemDoDocumentoReferenciado = $objComponenteDigitalDTO->getNumOrdemDocumentoReferenciado(); + $documento['ordemDoDocumentoReferenciado'] = $objComponenteDigitalDTO->getNumOrdemDocumentoReferenciado(); } } - - $documento->produtor->numeroDeIdentificacao = $documentoDTO->getStrProtocoloDocumentoFormatado(); - $this->atribuirDataHoraDeRegistro($documento, $documentoDTO->getDblIdProcedimento(), $documentoDTO->getDblIdDocumento()); - $this->atribuirEspecieDocumental($documento, $documentoDTO, $parObjMetadadosTramiteAnterior); - - $this->atribuirNumeracaoDocumento($documento, $documentoDTO); - if($documento->retirado === true){ + $documento['produtor']['numeroDeIdentificacao'] = $documentoDTO->getStrProtocoloDocumentoFormatado(); + $this->atribuirDataHoraDeRegistroREST($documento, $documentoDTO->getDblIdProcedimento(), $documentoDTO->getDblIdDocumento()); + $documento = $this->atribuirEspecieDocumentalREST($documento, $documentoDTO, $parObjMetadadosTramiteAnterior); + $documento = $this->atribuirNumeracaoDocumentoREST($documento, $documentoDTO); + + if($documento['retirado'] === true) { $objComponenteDigitalDTO = new ComponenteDigitalDTO(); $objComponenteDigitalDTO->retTodos(); $objComponenteDigitalDTO->setDblIdDocumento($documentoDTO->getDblIdDocumento()); $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); - + if($objComponenteDigitalBD->contar($objComponenteDigitalDTO) > 0){ $arrobjComponenteDigitalDTO = $objComponenteDigitalBD->listar($objComponenteDigitalDTO); $componenteDigital = $arrobjComponenteDigitalDTO[0]; - $documento->componenteDigital = new stdClass(); - $documento->componenteDigital->ordem = 1; - $documento->componenteDigital->nome = mb_convert_encoding($componenteDigital->getStrNome(), 'UTF-8', 'ISO-8859-1'); - $documento->componenteDigital->hash = new SoapVar("{$componenteDigital->getStrHashConteudo()}", XSD_ANYXML); - $documento->componenteDigital->tamanhoEmBytes = $componenteDigital->getNumTamanho(); - $documento->componenteDigital->mimeType = $componenteDigital->getStrMimeType(); - $documento->componenteDigital->tipoDeConteudo = $componenteDigital->getStrTipoConteudo(); - $documento->componenteDigital->idAnexo = $componenteDigital->getNumIdAnexo(); - $documento->componenteDigital = $this->atribuirDadosAssinaturaDigital($documentoDTO, $documento->componenteDigital, $componenteDigital->getStrHashConteudo()); + $arrComponentesDigitais = []; + + $documento['componentesDigitais'] = []; // Inicializando 'componentesDigitais' como um array + $arrComponentesDigitais['ordem'] = 1; + $arrComponentesDigitais['nome'] = mb_convert_encoding($componenteDigital->getStrNome(), 'UTF-8', 'ISO-8859-1'); + $arrComponentesDigitais['hash'] = [ + 'algoritmo' => $componenteDigital->getStrAlgoritmoHash(), + 'conteudo' => $componenteDigital->getStrHashConteudo() + ]; + + $arrComponentesDigitais['tamanhoEmBytes'] = $componenteDigital->getNumTamanho(); + $arrComponentesDigitais['mimeType'] = $componenteDigital->getStrMimeType(); + $arrComponentesDigitais['tipoDeConteudo'] = $componenteDigital->getStrTipoConteudo(); + $arrComponentesDigitais['idAnexo'] = $componenteDigital->getNumIdAnexo(); if($componenteDigital->getStrMimeType() == 'outro'){ - $documento->componenteDigital->dadosComplementaresDoTipoDeArquivo = 'outro'; + $arrComponentesDigitais['dadosComplementaresDoTipoDeArquivo'] = 'outro'; } + + $documento['componentesDigitais'][] = $arrComponentesDigitais; + $arrComponentesDigitais = $this->atribuirDadosAssinaturaDigitalREST($documentoDTO, $documento['componentesDigitais'], $componenteDigital->getStrHashConteudo()); + }else{ - $this->atribuirComponentesDigitais($documento, $documentoDTO, $dblIdProcedimento); + $documento = $this->atribuirComponentesDigitaisREST($documento, $documentoDTO, $dblIdProcedimento); } }else{ - $this->atribuirComponentesDigitais($documento, $documentoDTO, $dblIdProcedimento); + $documento = $this->atribuirComponentesDigitaisREST($documento, $documentoDTO, $dblIdProcedimento); } - // TODO: Necessário tratar informações abaixo //- protocoloDoDocumentoAnexado //- protocoloDoProcessoAnexado //- protocoloAnterior //- historico - $documento->idDocumentoSEI = $documentoDTO->getDblIdDocumento(); - $objProcesso->documento[] = $documento; + $documento['idDocumentoSEI'] = $documentoDTO->getDblIdDocumento(); + $objProcesso['documentos'][] = $documento; } + return $objProcesso; } + public function atribuirComponentesDigitaisRetirados($documentoDTO){ } @@ -970,9 +1016,9 @@ public function atribuirComponentesDigitaisRetirados($documentoDTO){ * @return int Código da espécie documental * */ - private function atribuirEspecieDocumental($parMetaDocumento, $parDocumentoDTO, $parObjMetadadosTramiteAnterior) - { - //Validação dos parâmetros da função + private function atribuirEspecieDocumentalREST($parMetaDocumento, $parDocumentoDTO, $parObjMetadadosTramiteAnterior) + { + //Validação dos parâmetros da função if(!isset($parDocumentoDTO)){ throw new InfraException('Parâmetro $parDocumentoDTO não informado.'); } @@ -980,41 +1026,38 @@ private function atribuirEspecieDocumental($parMetaDocumento, $parDocumentoDTO, if(!isset($parMetaDocumento)){ throw new InfraException('Parâmetro $parMetaDocumento não informado.'); } - $numCodigoEspecie = null; $strNomeEspecieProdutor = null; $dblIdProcedimento = $parDocumentoDTO->getDblIdProcedimento(); $dblIdDocumento = $parDocumentoDTO->getDblIdDocumento(); - //Inicialmente, busca espécie documental atribuida pelo produtor em trâmite realizado anteriormente + //Inicialmente, busca espécie documental atribuida pelo produtor em trâmite realizado anteriormente $objComponenteDigitalDTO = new ComponenteDigitalDTO(); $objComponenteDigitalDTO->retNumCodigoEspecie(); $objComponenteDigitalDTO->retStrNomeEspecieProdutor(); - // Verifica se o documento é de um processo anexado ou não e busca no - // campo correto - if(isset($parMetaDocumento->idProcedimentoAnexadoSEI)){ + // Verifica se o documento é de um processo anexado ou não e busca no + // campo correto + if(isset($parMetaDocumento['idProcedimentoAnexadoSEI'])){ $objComponenteDigitalDTO->setDblIdProcedimentoAnexado($dblIdProcedimento); } else{ $objComponenteDigitalDTO->setDblIdProcedimento($dblIdProcedimento); } - $objComponenteDigitalDTO->setDblIdDocumento($dblIdDocumento); $objComponenteDigitalDTO->setNumMaxRegistrosRetorno(1); $objComponenteDigitalDTO->setOrd('IdTramite', InfraDTO::$TIPO_ORDENACAO_DESC); - $objComponenteDigitalBD = new ComponenteDigitalBD($this->inicializarObjInfraIBanco()); + $objComponenteDigitalBD = new ComponenteDigitalBD(BancoSEI::getInstance()); $objComponenteDigitalDTO = $objComponenteDigitalBD->consultar($objComponenteDigitalDTO); if($objComponenteDigitalDTO != null){ $numCodigoEspecie = $objComponenteDigitalDTO->getNumCodigoEspecie(); $strNomeEspecieProdutor = mb_convert_encoding($objComponenteDigitalDTO->getStrNomeEspecieProdutor(), 'UTF-8', 'ISO-8859-1'); } - - //Caso a informação sobre mapeamento esteja nulo, necessário buscar tal informação no Barramento - //A lista de documentos recuperada do trâmite anterior será indexada pela sua ordem no protocolo e - //a espécie documental e o nome do produtor serão obtidos para atribuição ao documento + //Caso a informação sobre mapeamento esteja nulo, necessário buscar tal informação no Barramento + //A lista de documentos recuperada do trâmite anterior será indexada pela sua ordem no protocolo e + //a espécie documental e o nome do produtor serão obtidos para atribuição ao documento if($objComponenteDigitalDTO != null && $numCodigoEspecie == null) { if(isset($parObjMetadadosTramiteAnterior)){ $arrObjMetaDocumentosTramiteAnterior = array(); @@ -1036,22 +1079,23 @@ private function atribuirEspecieDocumental($parMetaDocumento, $parDocumentoDTO, } //Atribui espécie documental definida pelo produtor do documento e registrado no PEN, caso exista - if(count($arrMetaDocumentosAnteriorIndexado) > 0 && array_key_exists($parMetaDocumento->ordem, $arrMetaDocumentosAnteriorIndexado)){ - $numCodigoEspecie = $arrMetaDocumentosAnteriorIndexado[$parMetaDocumento->ordem]->especie->codigo; - $strNomeEspecieProdutor = mb_convert_encoding($arrMetaDocumentosAnteriorIndexado[$parMetaDocumento->ordem]->especie->nomeNoProdutor, 'UTF-8', 'ISO-8859-1'); + if(count($arrMetaDocumentosAnteriorIndexado) > 0 && array_key_exists($parMetaDocumento['ordem'], $arrMetaDocumentosAnteriorIndexado)){ + $numCodigoEspecie = $arrMetaDocumentosAnteriorIndexado[$parMetaDocumento['ordem']]->especie->codigo; + $strNomeEspecieProdutor = mb_convert_encoding($arrMetaDocumentosAnteriorIndexado[$parMetaDocumento['ordem']]->especie->nomeNoProdutor, 'UTF-8', 'ISO-8859-1'); } } } - - //Aplica o mapeamento de espécies definida pelo administrador para os novos documentos + //Aplica o mapeamento de espécies definida pelo administrador para os novos documentos if($numCodigoEspecie == null) { $numCodigoEspecie = $this->obterEspecieMapeada($parDocumentoDTO->getNumIdSerie()); $strNomeEspecieProdutor = mb_convert_encoding($parDocumentoDTO->getStrNomeSerie(), 'UTF-8', 'ISO-8859-1'); } - $parMetaDocumento->especie = new stdClass(); - $parMetaDocumento->especie->codigo = $numCodigoEspecie; - $parMetaDocumento->especie->nomeNoProdutor = $strNomeEspecieProdutor; + $parMetaDocumento['especie'] = array( + 'codigo' => $numCodigoEspecie, + 'nomeNoProdutor' => $strNomeEspecieProdutor + ); + return $parMetaDocumento; } @@ -1104,8 +1148,8 @@ private function atribuirAssinaturaEletronica($objComponenteDigital, AssinaturaD } } - private function atribuirComponentesDigitais($objDocumento, DocumentoDTO $objDocumentoDTO, $dblIdProcedimento = null) - { + private function atribuirComponentesDigitaisREST($objDocumento, DocumentoDTO $objDocumentoDTO, $dblIdProcedimento = null) + { if(!isset($objDocumento)){ throw new InfraException('Parâmetro $objDocumento não informado.'); } @@ -1113,12 +1157,10 @@ private function atribuirComponentesDigitais($objDocumento, DocumentoDTO $objDoc if(!isset($objDocumentoDTO)){ throw new InfraException('Parâmetro $objDocumentoDTO não informado.'); } - $arrObjDocumentoDTOAssociacao = $this->listarDocumentosRelacionados($dblIdProcedimento, $objDocumentoDTO->getDblIdDocumento()); $strStaAssociacao = count($arrObjDocumentoDTOAssociacao) == 1 ? $arrObjDocumentoDTOAssociacao[0]['StaAssociacao'] : null; $arrObjDadosArquivos = $this->listarDadosArquivos($objDocumentoDTO, $strStaAssociacao); - - $objDocumento->componenteDigital = array(); + $objDocumento['componentesDigitais'] = array(); foreach ($arrObjDadosArquivos as $numOrdemComponente => $objDadosArquivos) { if(!isset($objDadosArquivos) || count($objDadosArquivos) == 0){ @@ -1130,20 +1172,21 @@ private function atribuirComponentesDigitais($objDocumento, DocumentoDTO $objDoc $strAlgoritmoHash = $objDadosArquivos['ALGORITMO_HASH_CONTEUDO']; //TODO: Revisar tal implementação para atender a gerao de hash de arquivos grandes - $objComponenteDigital = new stdClass(); - $objComponenteDigital->ordem = $numOrdemComponente; - $objComponenteDigital->nome = mb_convert_encoding($objDadosArquivos["NOME"], 'UTF-8', 'ISO-8859-1'); - $objComponenteDigital->hash = new SoapVar("{$hashDoComponenteDigital}", XSD_ANYXML); - $objComponenteDigital->tamanhoEmBytes = $objDadosArquivos['TAMANHO']; - + $objComponenteDigital = array(); + $objComponenteDigital['ordem'] = $numOrdemComponente; + $objComponenteDigital['nome'] = mb_convert_encoding($objDadosArquivos["NOME"], 'UTF-8', 'ISO-8859-1'); + $objComponenteDigital['hash'] = [ + 'algoritmo' => $strAlgoritmoHash, + 'conteudo' => $hashDoComponenteDigital + ]; + $objComponenteDigital['tamanhoEmBytes'] = $objDadosArquivos['TAMANHO']; //TODO: Validar os tipos de mimetype de acordo com o WSDL do SEI //Caso no identifique o tipo correto, informar o valor [outro] - $objComponenteDigital->mimeType = $objDadosArquivos['MIME_TYPE']; - $objComponenteDigital->tipoDeConteudo = $this->obterTipoDeConteudo($objDadosArquivos['MIME_TYPE']); - $objComponenteDigital = $this->atribuirDadosAssinaturaDigital($objDocumentoDTO, $objComponenteDigital, $hashDoComponenteDigital); - + $objComponenteDigital['mimeType'] = $objDadosArquivos['MIME_TYPE']; + $objComponenteDigital['tipoDeConteudo'] = $this->obterTipoDeConteudo($objDadosArquivos['MIME_TYPE']); + $objComponenteDigital = $this->atribuirDadosAssinaturaDigitalREST($objDocumentoDTO, $objComponenteDigital, $hashDoComponenteDigital); if($objDadosArquivos['MIME_TYPE'] == 'outro'){ - $objComponenteDigital->dadosComplementaresDoTipoDeArquivo = $objDadosArquivos['dadosComplementaresDoTipoDeArquivo']; + $objComponenteDigital['dadosComplementaresDoTipoDeArquivo'] = $objDadosArquivos['dadosComplementaresDoTipoDeArquivo']; } //TODO: Preencher dados complementares do tipo de arquivo @@ -1152,11 +1195,12 @@ private function atribuirComponentesDigitais($objDocumento, DocumentoDTO $objDoc //TODO: Carregar informações da assinatura digital //$this->atribuirAssinaturaEletronica($objComponenteDigital, $objDocumentoDTO); - $objComponenteDigital->idAnexo = $objDadosArquivos['ID_ANEXO']; + if (isset($objDadosArquivos['ID_ANEXO']) && !empty($objDadosArquivos['ID_ANEXO'])) { + $objComponenteDigital['idAnexo'] = $objDadosArquivos['ID_ANEXO']; + } - $objDocumento->componenteDigital[] = $objComponenteDigital; + $objDocumento['componentesDigitais'][] = $objComponenteDigital; } - return $objDocumento; } @@ -1169,8 +1213,9 @@ private function atribuirComponentesDigitais($objDocumento, DocumentoDTO $objDoc * @param string $strHashDocumento * @return void */ - public function atribuirDadosAssinaturaDigital($objDocumentoDTO, $objComponenteDigital, $strHashDocumento) - { + + public function atribuirDadosAssinaturaDigitalREST($objDocumentoDTO, $objComponenteDigital, $strHashDocumento) + { $objDocumentoDTOTarjas = new DocumentoDTO(); $objDocumentoDTOTarjas->retDblIdDocumento(); $objDocumentoDTOTarjas->retStrNomeSerie(); @@ -1206,7 +1251,6 @@ public function atribuirDadosAssinaturaDigital($objDocumentoDTO, $objComponenteD $objAssinaturaDTO->retStrP7sBase64(); $resAssinatura = $this->objAssinaturaRN->listarRN1323($objAssinaturaDTO); - $objComponenteDigital->assinaturaDigital = array(); foreach ($resAssinatura as $keyOrder => $assinatura) { $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setNumIdAtividade($assinatura->getNumIdAtividade()); //7 @@ -1216,20 +1260,36 @@ public function atribuirDadosAssinaturaDigital($objDocumentoDTO, $objComponenteD $objAtividadeRN = new AtividadeRN(); $objAtividade = $objAtividadeRN->consultarRN0033($objAtividadeDTO); - $objAssinaturaDigital = new stdClass(); - $objAssinaturaDigital->razao = mb_convert_encoding($dataTarjas[$keyOrder], 'UTF-8', 'ISO-8859-1'); - $objAssinaturaDigital->observacao = mb_convert_encoding($dataTarjas[count($dataTarjas) - 1], 'UTF-8', 'ISO-8859-1'); - $objAssinaturaDigital->dataHora = $this->objProcessoEletronicoRN->converterDataWebService($objAtividade->getDthAbertura()); + $objAssinaturaDigital = array(); + $objAssinaturaDigital['razao'] = mb_convert_encoding($dataTarjas[$keyOrder], 'UTF-8', 'ISO-8859-1'); + $objAssinaturaDigital['observacao'] = mb_convert_encoding($dataTarjas[count($dataTarjas) - 1], 'UTF-8', 'ISO-8859-1'); + $objAssinaturaDigital['dataHora'] = $this->objProcessoEletronicoRN->converterDataWebService($objAtividade->getDthAbertura()); if($assinatura->getStrStaFormaAutenticacao() == AssinaturaRN::$TA_CERTIFICADO_DIGITAL){ - $objAssinaturaDigital->hash = new SoapVar("{$strHashDocumento}", XSD_ANYXML); - $objAssinaturaDigital->cadeiaDoCertificado = new SoapVar(''.($assinatura->getStrP7sBase64() ? $assinatura->getStrP7sBase64() : 'null').'', XSD_ANYXML); + $objAssinaturaDigital['hash'] = [ + 'algoritmo' => self::ALGORITMO_HASH_ASSINATURA, + 'conteudo' => $strHashDocumento + ]; + $objAssinaturaDigital['cadeiaDoCertificado'] = [ + 'formato' => 'PKCS7', + 'conteudo' => $assinatura->getStrP7sBase64() ? $assinatura->getStrP7sBase64() : 'vazio' + ]; } else { - $objAssinaturaDigital->hash = new SoapVar("null", XSD_ANYXML); - $objAssinaturaDigital->cadeiaDoCertificado = new SoapVar('null', XSD_ANYXML); - } + $objAssinaturaDigital['hash'] = [ + 'algoritmo' => self::ALGORITMO_HASH_ASSINATURA, + 'conteudo' => 'vazio' + ]; + + $objAssinaturaDigital['cadeiaDoCertificado'] = [ + 'formato' => 'PKCS7', + 'conteudo' => 'vazio' + ]; + } + } - $objComponenteDigital->assinaturaDigital[] = $objAssinaturaDigital; + + if ($objAssinaturaDigital != null) { + $objComponenteDigital['assinaturasDigitais'][] = $objAssinaturaDigital; } return $objComponenteDigital; @@ -1716,14 +1776,52 @@ private function atribuirNumeracaoDocumento($objDocumento, DocumentoDTO $parObjD } } - private function adicionarProcessosApensados($objProcesso, $arrIdProcessoApensado) + private function atribuirNumeracaoDocumentoREST($objDocumento, DocumentoDTO $parObjDocumentoDTO) + { + $objSerieDTO = $this->consultarSerie($parObjDocumentoDTO->getNumIdSerie()); + + if(!isset($objSerieDTO)){ + throw new InfraException("Tipo de Documento não pode ser localizado. (Código: ".$parObjDocumentoDTO->getNumIdSerie().")"); + } + + $strStaNumeracao = $objSerieDTO->getStrStaNumeracao(); + + if ($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_UNIDADE) { + $objDocumento['identificacao']['numero'] = utf8_encode($parObjDocumentoDTO->getStrNumero()); + $objDocumento['identificacao']['siglaDaUnidadeProdutora'] = utf8_encode($parObjDocumentoDTO->getStrSiglaUnidadeGeradoraProtocolo()); + $objDocumento['identificacao']['complemento'] = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($parObjDocumentoDTO->getStrDescricaoUnidadeGeradoraProtocolo(), 100)); + } elseif ($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_ORGAO) { + $objOrgaoDTO = $this->consultarOrgao($parObjDocumentoDTO->getNumIdOrgaoUnidadeGeradoraProtocolo()); + $objDocumento['identificacao']['numero'] = utf8_encode($parObjDocumentoDTO->getStrNumero()); + $objDocumento['identificacao']['siglaDaUnidadeProdutora'] = utf8_encode($objOrgaoDTO->getStrSigla()); + $objDocumento['identificacao']['complemento'] = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($objOrgaoDTO->getStrDescricao(), 100)); + } elseif ($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_ANUAL_UNIDADE) { + $objDocumento['identificacao']['siglaDaUnidadeProdutora'] = utf8_encode($parObjDocumentoDTO->getStrSiglaUnidadeGeradoraProtocolo()); + $objDocumento['identificacao']['complemento'] = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($parObjDocumentoDTO->getStrDescricaoUnidadeGeradoraProtocolo(), 100)); + $objDocumento['identificacao']['numero'] = utf8_encode($parObjDocumentoDTO->getStrNumero()); + $objDocumento['identificacao']['ano'] = substr($parObjDocumentoDTO->getDtaGeracaoProtocolo(), 6, 4); + } elseif ($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_ANUAL_ORGAO) { + $objOrgaoDTO = $this->consultarOrgao($parObjDocumentoDTO->getNumIdOrgaoUnidadeGeradoraProtocolo()); + $objDocumento['identificacao']['numero'] = utf8_encode($parObjDocumentoDTO->getStrNumero()); + $objDocumento['identificacao']['siglaDaUnidadeProdutora'] = utf8_encode($objOrgaoDTO->getStrSigla()); + $objDocumento['identificacao']['complemento'] = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($objOrgaoDTO->getStrDescricao(), 100)); + $objDocumento['identificacao']['ano'] = substr($parObjDocumentoDTO->getDtaGeracaoProtocolo(), 6, 4); + } + + return $objDocumento; + } + + private function adicionarProcessosApensadosREST($objProcesso, $arrIdProcessoApensado) { - if(isset($arrIdProcessoApensado) && is_array($arrIdProcessoApensado) && count($arrIdProcessoApensado) > 0) { - $objProcesso->processoApensado = array(); - foreach($arrIdProcessoApensado as $idProcedimentoApensado) { - $objProcesso->processoApensado[] = $this->construirProcesso($idProcedimentoApensado); + if (isset($arrIdProcessoApensado) && is_array($arrIdProcessoApensado) && count($arrIdProcessoApensado) > 0) { + $objProcesso['processoApensado'] = array(); + + foreach ($arrIdProcessoApensado as $idProcedimentoApensado) { + $objProcesso['processoApensado'][] = $this->construirProcessoREST($idProcedimentoApensado); } } + + return $objProcesso; } private function consultarUnidade($numIdUnidade) @@ -2104,7 +2202,7 @@ private function enviarComponentesDigitais($strNumeroRegistro, $numIdTramite, $s ]; $this->salvarAnexoImutavel($dados); - $dadosDoComponenteDigital->conteudoDoComponenteDigital = new SoapVar($objDadosArquivo['CONTEUDO'], XSD_BASE64BINARY); + $dadosDoComponenteDigital->conteudoDoComponenteDigital = $objDadosArquivo['CONTEUDO']; $parametros = new stdClass(); $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; @@ -2262,7 +2360,7 @@ private function enviarComponenteDigitalParticionado($strCaminhoAnexo, $dadosDoC $identificacaoDaParte->fim = ($inicio + $tamanhoParteArquivo); $dadosDoComponenteDigital->identificacaoDaParte = $identificacaoDaParte; - $dadosDoComponenteDigital->conteudoDaParteDeComponenteDigital = new SoapVar($parteDoArquivo, XSD_BASE64BINARY); + $dadosDoComponenteDigital->conteudoDaParteDeComponenteDigital = $parteDoArquivo; $parametros = new stdClass(); $parametros->dadosDaParteDeComponenteDigital = $dadosDoComponenteDigital; @@ -2882,7 +2980,7 @@ private function enviarParteDoComponenteDigital($parInicio, $parFim, $parParteDo $identificacaoDaParte->inicio = $parInicio; $identificacaoDaParte->fim = $parFim; $parDadosDoComponenteDigital->identificacaoDaParte = $identificacaoDaParte; - $parDadosDoComponenteDigital->conteudoDaParteDeComponenteDigital = new SoapVar($parParteDoArquivo, XSD_BASE64BINARY); + $parDadosDoComponenteDigital->conteudoDaParteDeComponenteDigital = $parParteDoArquivo; $parametros = new stdClass(); $parametros->dadosDaParteDeComponenteDigital = $parDadosDoComponenteDigital; @@ -3066,18 +3164,28 @@ protected function cancelarTramiteInternoControlado(ProtocoloDTO $objDtoProtocol $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); $objPenBlocoProcessoDTO = $objPenBlocoProcessoRN->consultar($objPenBlocoProcessoDTO); + $cancelarLote=false; + + if(!is_null($objPenBlocoProcessoDTO)){ + $cancelarLote=true; + } + + if(!$cancelarLote){ - $objTramiteDTO = new TramiteDTO(); - $objTramiteDTO->setNumIdProcedimento($objDtoProtocolo->getDblIdProtocolo()); - $objTramiteDTO->setStrStaTipoTramite(ProcessoEletronicoRN::$STA_TIPO_TRAMITE_ENVIO); - $objTramiteDTO->setOrd('Registro', InfraDTO::$TIPO_ORDENACAO_DESC); - $objTramiteDTO->setNumMaxRegistrosRetorno(1); - $objTramiteDTO->retNumIdTramite(); + $objTramiteDTO = new TramiteDTO(); + $objTramiteDTO->setNumIdProcedimento($objDtoProtocolo->getDblIdProtocolo()); + $objTramiteDTO->setStrStaTipoTramite(ProcessoEletronicoRN::$STA_TIPO_TRAMITE_ENVIO); + $objTramiteDTO->setOrd('Registro', InfraDTO::$TIPO_ORDENACAO_DESC); + $objTramiteDTO->setNumMaxRegistrosRetorno(1); + $objTramiteDTO->retNumIdTramite(); - $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); - $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTO); + $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); + $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTO); + + if(!isset($objTramiteDTO)){ + throw new InfraException("Trâmite não encontrado para o processo {$objDtoProtocolo->getDblIdProtocolo()}."); + } - if(isset($objTramiteDTO)) { $tramites = $this->objProcessoEletronicoRN->consultarTramites($objTramiteDTO->getNumIdTramite(), null, $objPenUnidadeDTO->getNumIdUnidadeRH(), null, null, $numIdRespositorio); $tramite = $tramites ? $tramites[0] : null; @@ -3122,7 +3230,7 @@ protected function cancelarTramiteInternoControlado(ProtocoloDTO $objDtoProtocol break; } - // Solicitação de cancelamento de tramite de processo ao TramitaGOV.br +// Solicitação de cancelamento de tramite de processo ao TramitaGOV.br // Somente solicita cancelamento ao PEN se processo ainda não estiver cancelado if(!in_array($numSituacaoAtual, array(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO))) { $this->objProcessoEletronicoRN->cancelarTramite($tramite->IDT); @@ -3398,4 +3506,4 @@ private function lancarEventoEnvioMetadados($parNumIdTramite) } } -} +} \ No newline at end of file diff --git a/src/rn/PENAgendamentoRN.php b/src/rn/PENAgendamentoRN.php index 634c16473..7cd742fe8 100755 --- a/src/rn/PENAgendamentoRN.php +++ b/src/rn/PENAgendamentoRN.php @@ -22,12 +22,12 @@ protected function atualizarHipotesesLegaisControlado() $hipotesesPenDesativadas = $processoEletronicoRN->consultarHipotesesLegais(false); $hipoteses = array(); - if (!empty($hipotesesPen) && !empty($hipotesesPen->hipotesesLegais) && !empty($hipotesesPen->hipotesesLegais->hipotese)) { - $hipoteses = $hipotesesPen->hipotesesLegais->hipotese; + if (!empty($hipotesesPen) && !empty($hipotesesPen['hipotesesLegais'])) { + $hipoteses = $hipotesesPen['hipotesesLegais']; } - if (!empty($hipotesesPenDesativadas) && !empty($hipotesesPenDesativadas->hipotesesLegais) && !empty($hipotesesPenDesativadas->hipotesesLegais->hipotese)) { - $hipoteses = array_merge($hipoteses, $hipotesesPenDesativadas->hipotesesLegais->hipotese); + if (!empty($hipotesesPenDesativadas) && !empty($hipotesesPenDesativadas['hipotesesLegais'])) { + $hipoteses = array_merge($hipoteses, $hipotesesPenDesativadas['hipotesesLegais']); } if(empty($hipoteses)){ @@ -38,20 +38,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'); @@ -59,7 +59,6 @@ protected function atualizarHipotesesLegaisControlado() //Caso não exista a hipótese irá cadastra-la no sei. if (empty($objConsulta)) { - $objBD->cadastrar($objDTO); } else { //Caso contrário apenas irá atualizar os dados. diff --git a/src/rn/ProcessoEletronicoRN.php b/src/rn/ProcessoEletronicoRN.php index 56a38442f..b709b3397 100755 --- a/src/rn/ProcessoEletronicoRN.php +++ b/src/rn/ProcessoEletronicoRN.php @@ -1,5 +1,13 @@ "Outro" ); - private $objPenWs; private $strEnderecoWebService; - private $options; private $numTentativasErro; - private $strComumXSD; private $strLocalCert; private $strLocalCertPassword; - public function __construct() - { - $objConfiguracaoModPEN = ConfiguracaoModPEN::getInstance(); - $strEnderecoWebService = $objConfiguracaoModPEN->getValor("PEN", "WebService"); - $strLocalizacaoCertificadoDigital = $objConfiguracaoModPEN->getValor("PEN", "LocalizacaoCertificado"); - $strSenhaCertificadoDigital = $objConfiguracaoModPEN->getValor("PEN", "SenhaCertificado"); - $numTentativasErro = $objConfiguracaoModPEN->getValor("PEN", "NumeroTentativasErro", false, self::WS_TENTATIVAS_ERRO); - $numTentativasErro = (is_numeric($numTentativasErro)) ? intval($numTentativasErro) : self::WS_TENTATIVAS_ERRO; - - $this->strEnderecoWebService = $strEnderecoWebService; - $this->strComumXSD = $this->strEnderecoWebService . '?xsd=comum.xsd'; - $this->strLocalCert = $strLocalizacaoCertificadoDigital; - $this->strLocalCertPassword = $strSenhaCertificadoDigital; - $this->numTentativasErro = $numTentativasErro; - - $this->options = array( - 'soap_version' => SOAP_1_1 - , 'local_cert' => $this->strLocalCert - , 'passphrase' => $this->strLocalCertPassword - , 'resolve_wsdl_remote_includes' => true - , 'connection_timeout' => self::WS_TIMEOUT_CONEXAO - , 'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP - , 'encoding' => 'UTF-8' - , 'attachment_type' => BeSimple\SoapCommon\Helper::ATTACHMENTS_TYPE_MTOM - , 'ssl' => array( - 'allow_self_signed' => true, - ) - ); + private $strClientGuzzle; + private $strBaseUri; + private $arrheaders; + + public function __construct() + { + $objConfiguracaoModPEN = ConfiguracaoModPEN::getInstance(); + $strEnderecoWebService = $objConfiguracaoModPEN->getValor("PEN", "WebService"); + $strLocalizacaoCertificadoDigital = $objConfiguracaoModPEN->getValor("PEN", "LocalizacaoCertificado"); + $strSenhaCertificadoDigital = $objConfiguracaoModPEN->getValor("PEN", "SenhaCertificado"); + $numTentativasErro = $objConfiguracaoModPEN->getValor("PEN", "NumeroTentativasErro", false, self::WS_TENTATIVAS_ERRO); + $numTentativasErro = (is_numeric($numTentativasErro)) ? intval($numTentativasErro) : self::WS_TENTATIVAS_ERRO; + + $this->strEnderecoWebService = $strEnderecoWebService; + $this->strLocalCert = $strLocalizacaoCertificadoDigital; + $this->strLocalCertPassword = $strSenhaCertificadoDigital; + $this->numTentativasErro = $numTentativasErro; + + + // TODO: lembrar de pegar url dinamicamente quando SOAP for removido + $this->strBaseUri = $strEnderecoWebService; + $this->arrheaders = [ + 'Accept' => '*/*', + 'Content-Type' => 'application/json', + ]; + + $this->strClientGuzzle = new Client([ + 'base_uri' => $this->strBaseUri, + 'timeout' => self::WS_TIMEOUT_CONEXAO, + 'headers' => $this->arrheaders, + 'cert' => [$strLocalizacaoCertificadoDigital, $strSenhaCertificadoDigital], + ]); } - protected function inicializarObjInfraIBanco() { - return BancoSEI::getInstance(); + return BancoSEI::getInstance(); } /** - * Construtor do objeto SoapClien utilizado para comunicação Webservice SOAP + * Construtor do objeto SoapClien utilizado para comunicação Webservice * - * @return void */ private function getObjPenWs() { - if($this->objPenWs == null) { - - if (InfraString::isBolVazia($this->strEnderecoWebService)) { + if (InfraString::isBolVazia($this->strEnderecoWebService)) { throw new InfraException('Endereço do serviço de integração do Tramita GOV.BR não informado.'); - } + } - if (InfraString::isBolVazia($this->strLocalCertPassword)) { - throw new InfraException('Dados de autenticação do serviço de integração do Tramita.GOV.BR não informados.'); - } + if (InfraString::isBolVazia($this->strLocalCertPassword)) { + throw new InfraException('Dados de autenticação do serviço de integração do Tramita.GOV.BR não informados.'); + } - $this->validarDisponibilidade(); + // Validar disponibilidade do serviço + $endpoint = $this->strEnderecoWebService . 'healthcheck'; - try { - $strWSDL = $this->strEnderecoWebService . '?wsdl'; - $this->objPenWs = new BeSimple\SoapClient\SoapClient($strWSDL, $this->options); - } catch (Exception $e) { - $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); - $mensagem = "Falha de comunicação com o Tramita GOV.BR: " . $detalhes; - throw new \SoapFault("HTTP", $mensagem); + try{ + $response = $this->strClientGuzzle->request('GET', $endpoint); + + if ($response->getStatusCode() !== 200) { + throw new \RuntimeException('Falha ao conectar com o serviço REST'); } + } catch (RequestException $e) { + $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); + $mensagem = "Falha de comunicação com o Tramita GOV.BR: " . $detalhes; + throw new \Exception($mensagem); } - - return $this->objPenWs; } @@ -174,36 +180,28 @@ private function getObjPenWs() * Consulta a lista de repositório de estruturas disponíveis no Barramento de Serviços do PEN * * @param int $numIdentificacaoDoRepositorioDeEstruturas Código de identificação do repositório de estruturas do PEN - * @return void */ public function consultarRepositoriosDeEstruturas($numIdentificacaoDoRepositorioDeEstruturas) { $objRepositorioDTO = null; - try{ - $parametros = new stdClass(); - $parametros->filtroDeConsultaDeRepositoriosDeEstrutura = new stdClass(); - $parametros->filtroDeConsultaDeRepositoriosDeEstrutura->ativos = false; - - $result = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->consultarRepositoriosDeEstruturas($parametros); - }); - - if(isset($result->repositoriosEncontrados->repositorio)){ - - if(!is_array($result->repositoriosEncontrados->repositorio)) { - $result->repositoriosEncontrados->repositorio = array($result->repositoriosEncontrados->repositorio); - } - - foreach ($result->repositoriosEncontrados->repositorio as $repositorio) { - 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); + $endpoint = 'repositorios-de-estruturas'; + try { + $parametros = [ + 'ativo' => true + ]; + $arrResultado = $this->get($endpoint, $parametros); + + if (isset($arrResultado)) { + foreach ($arrResultado as $repositorio) { + 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']); + } } } - } - } catch(Exception $e){ + } catch (Exception $e) { $mensagem = "Falha na obtenção dos Repositórios de Estruturas Organizacionais"; $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); throw new InfraException($mensagem, $e, $detalhes); @@ -217,99 +215,82 @@ public function consultarRepositoriosDeEstruturas($numIdentificacaoDoRepositorio * * @return void */ - public function listarRepositoriosDeEstruturas() + public function listarRepositoriosDeEstruturas($ativo = true) { - $arrObjRepositorioDTO = array(); - - try{ - $parametros = new stdClass(); - $parametros->filtroDeConsultaDeRepositoriosDeEstrutura = new stdClass(); - $parametros->filtroDeConsultaDeRepositoriosDeEstrutura->ativos = true; - - $result = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->consultarRepositoriosDeEstruturas($parametros); - }); - - if(isset($result->repositoriosEncontrados->repositorio)){ - if(!is_array($result->repositoriosEncontrados->repositorio)) { - $result->repositoriosEncontrados->repositorio = array($result->repositoriosEncontrados->repositorio); - } - - foreach ($result->repositoriosEncontrados->repositorio as $repositorio) { - $item = new RepositorioDTO(); - $item->setNumId($repositorio->id); - $item->setStrNome(mb_convert_encoding($repositorio->nome, 'ISO-8859-1', 'UTF-8')); - $item->setBolAtivo($repositorio->ativo); - $arrObjRepositorioDTO[] = $item; + $arrObjRepositorioDTO = []; + $endpoint = 'repositorios-de-estruturas'; + + try { + $parametros = [ + 'ativos' => $ativo + ]; + + $arrResultado = $this->get($endpoint, $parametros); + + 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']); + $arrObjRepositorioDTO[] = $objRepositorioDTO; + } } - } - } catch(Exception $e){ + } catch(Exception $e) { $mensagem = "Falha na obtenção dos Repositórios de Estruturas Organizacionais"; $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); throw new InfraException($mensagem, $e, $detalhes); } - + return $arrObjRepositorioDTO; } - /** - * Método responsável por consultar as estruturas das unidades externas no barramento - * @param $idRepositorioEstrutura - * @param $numeroDeIdentificacaoDaEstrutura - * @param bool $bolRetornoRaw - * @return EstruturaDTO|mixed - * @throws InfraException - */ + * Método responsável por consultar as estruturas das unidades externas no barramento. + * + * @param int $idRepositorioEstrutura + * @param int $numeroDeIdentificacaoDaEstrutura + * @param bool $bolRetornoRaw + * @throws InfraException + * @return EstruturaDTO + */ public function consultarEstrutura($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura, $bolRetornoRaw = false) - { + { + $endpoint = "repositorios-de-estruturas/{$idRepositorioEstrutura}/estruturas-organizacionais/$numeroDeIdentificacaoDaEstrutura"; try { - $parametros = new stdClass(); - $parametros->filtroDeEstruturas = new stdClass(); - $parametros->filtroDeEstruturas->identificacaoDoRepositorioDeEstruturas = $idRepositorioEstrutura; - $parametros->filtroDeEstruturas->numeroDeIdentificacaoDaEstrutura = $numeroDeIdentificacaoDaEstrutura; - $parametros->filtroDeEstruturas->apenasAtivas = false; - $result = $this->tentarNovamenteSobErroHTTP(function ($objPenWs) use ($parametros) { - return $objPenWs->consultarEstruturas($parametros); - }); - - if ($result->estruturasEncontradas->totalDeRegistros == 1) { - $arrObjEstrutura = is_array($result->estruturasEncontradas->estrutura) ? $result->estruturasEncontradas->estrutura : array($result->estruturasEncontradas->estrutura); - $objEstrutura = current($arrObjEstrutura); + $parametros = []; + $arrResultado = $this->get($endpoint, $parametros); - $objEstrutura->nome = mb_convert_encoding($objEstrutura->nome, 'ISO-8859-1', 'UTF-8'); - $objEstrutura->sigla = mb_convert_encoding($objEstrutura->sigla, 'ISO-8859-1', 'UTF-8'); - - if ($bolRetornoRaw !== false) { - if (isset($objEstrutura->hierarquia) && isset($objEstrutura->hierarquia->nivel)) { - if (!is_array($objEstrutura->hierarquia->nivel)) { - $objEstrutura->hierarquia->nivel = array($objEstrutura->hierarquia->nivel); - } + 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'); - foreach ($objEstrutura->hierarquia->nivel as &$objNivel) { - $objNivel->nome = mb_convert_encoding($objNivel->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'); } - return $objEstrutura; - } else { - $objEstruturaDTO = new EstruturaDTO(); - $objEstruturaDTO->setNumNumeroDeIdentificacaoDaEstrutura($objEstrutura->numeroDeIdentificacaoDaEstrutura); - $objEstruturaDTO->setStrNome($objEstrutura->nome); - $objEstruturaDTO->setStrSigla($objEstrutura->sigla); - $objEstruturaDTO->setBolAtivo($objEstrutura->ativo); - $objEstruturaDTO->setBolAptoParaReceberTramites($objEstrutura->aptoParaReceberTramites); - $objEstruturaDTO->setStrCodigoNoOrgaoEntidade($objEstrutura->codigoNoOrgaoEntidade); - return $objEstruturaDTO; } + + return self::converterArrayParaObjeto($arrResultado); } + + $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']); + + return $objEstruturaDTO; } catch (Exception $e) { - $mensagem = "Falha na obtenção de unidades externas"; - $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); - throw new InfraException($mensagem, $e, $detalhes); + $mensagem = "Falha na obtenção de unidades externas"; + $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); + throw new InfraException($mensagem, $e, $detalhes); } } - /** + /** * Método responsável por recuperar pela estutura pai a estrutura de filhos de uma unidade * @param $idRepositorioEstrutura * @param null $numeroDeIdentificacaoDaEstrutura @@ -347,7 +328,149 @@ public function consultarEstruturasPorEstruturaPai($idRepositorioEstrutura, $num } } - /** + /** + * Lista estruturas de um repositório de estruturas. + * + * @param int $idRepositorioEstrutura ID do repositório de estruturas. + * @param string $nome + * @param int $numeroDeIdentificacaoDaEstruturaRaizDaConsulta + * @param string $nomeUnidade + * @param string $siglaUnidade + * @param int $offset Offset + * @param int $registrosPorPagina + * @param bool $parBolPermiteRecebimento + * @param bool $parBolPermiteEnvio + * @throws InfraException + * @return EstruturaDTO + */ + public function listarEstruturas( + $idRepositorioEstrutura, + $nome = '', + $numeroDeIdentificacaoDaEstruturaRaizDaConsulta = null, + $nomeUnidade = null, + $siglaUnidade = null, + $offset = null, + $registrosPorPagina = null, + $parBolPermiteRecebimento = null, + $parBolPermiteEnvio = null + ) { + $arrObjEstruturaDTO = []; + try { + $idRepositorioEstrutura = filter_var($idRepositorioEstrutura, FILTER_SANITIZE_NUMBER_INT); + if (!$idRepositorioEstrutura) { + throw new InfraException('Repositório de Estruturas inválido'); + } + + $parametros = [ + 'apenasAtivas' => true, + 'identificacaoDoRepositorioDeEstruturas' => $idRepositorioEstrutura, + 'sigla' => $siglaUnidade, + 'nome' => $nomeUnidade, + 'permiteRecebimento' => $parBolPermiteRecebimento, + 'permiteEnvio' => $parBolPermiteEnvio, + 'numeroDeIdentificacaoDaEstruturaRaizDaConsulta' => $numeroDeIdentificacaoDaEstruturaRaizDaConsulta ?: $nome, + 'registroInicial' => $offset, + 'quantidadeDeRegistros' => $registrosPorPagina, + ]; + + $arrResultado = $this->consultarEstruturas($idRepositorioEstrutura, $parametros); + + if ($arrResultado['totalDeRegistros'] > 0) { + + foreach ($arrResultado['estruturas'] as $estrutura) { + $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->setNumTotalDeRegistros($arrResultado['totalDeRegistros']); + + $arrHerarquia = array_map(function ($nivel) { + return mb_convert_encoding($nivel['sigla'], 'ISO-8859-1', 'UTF-8'); + }, $estrutura['hierarquia'] ?: []); + + $objEstruturaDTO->setArrHierarquia($arrHerarquia); + + $arrObjEstruturaDTO[] = $objEstruturaDTO; + } + } + } catch (Exception $e) { + $mensagem = "Falha na obtenção de unidades externas"; + $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); + throw new InfraException($mensagem, $e, $detalhes); + } + + return $arrObjEstruturaDTO; + } + + + /** + * Lista estruturas de um repositório de estruturas. + * + * @param int $idRepositorioEstrutura ID do repositório de estruturas. + * @param string $nome + * @param int $numeroDeIdentificacaoDaEstruturaRaizDaConsulta + * @param string $nomeUnidade + * @param string $siglaUnidade + * @param int $offset Offset + * @param int $registrosPorPagina + * @param bool $parBolPermiteRecebimento + * @param bool $parBolPermiteEnvio + * @throws InfraException + * @return EstruturaDTO + */ + public function buscarEstrutura( + $idRepositorioEstrutura, + $nome = '', + $numeroDeIdentificacaoDaEstruturaRaizDaConsulta = null, + $nomeUnidade = null, + $siglaUnidade = null, + $offset = null, + $registrosPorPagina = null, + $parBolPermiteRecebimento = null, + $parBolPermiteEnvio = null + ) { + $arrObjEstruturaDTO = []; + try { + $idRepositorioEstrutura = filter_var($idRepositorioEstrutura, FILTER_SANITIZE_NUMBER_INT); + if (!$idRepositorioEstrutura) { + throw new InfraException('Repositório de Estruturas inválido'); + } + + $rh = $numeroDeIdentificacaoDaEstruturaRaizDaConsulta ?: $nome; + + $estrutura = $this->buscarEstruturaRest($idRepositorioEstrutura, $rh); + + 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']); + + $arrHerarquia = array_map(function ($nivel) { + return mb_convert_encoding($nivel['sigla'], 'ISO-8859-1', 'UTF-8'); + }, $estrutura['hierarquia'] ?: []); + + $objEstruturaDTO->setArrHierarquia($arrHerarquia); + + return $objEstruturaDTO; + } + + return null; + } catch (Exception $e) { + throw new InfraException("Falha na obtenção de unidades externas"); + } + + return $arrObjEstruturaDTO; + } + + /** * Verifica se o repositório de estruturas possui limitação de repositórios/unidades mapeadas * * @param $idRepositorioEstrutura @@ -439,95 +562,6 @@ private function buscarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numer : array($result->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura); } - public function listarEstruturas($idRepositorioEstrutura, $nome = '', $numeroDeIdentificacaoDaEstruturaRaizDaConsulta = null, - $nomeUnidade = null, $siglaUnidade = null, $offset = null, $registrosPorPagina = null, $parBolPermiteRecebimento = null, $parBolPermiteEnvio = null) - { - $arrObjEstruturaDTO = array(); - - try{ - $idRepositorioEstrutura = filter_var($idRepositorioEstrutura, FILTER_SANITIZE_NUMBER_INT); - if(!$idRepositorioEstrutura) { - throw new InfraException("Repositório de Estruturas inválido"); - } - - $parametros = new stdClass(); - $parametros->filtroDeEstruturas = new stdClass(); - $parametros->filtroDeEstruturas->identificacaoDoRepositorioDeEstruturas = $idRepositorioEstrutura; - $parametros->filtroDeEstruturas->apenasAtivas = true; - - if(!is_null($numeroDeIdentificacaoDaEstruturaRaizDaConsulta)){ - $parametros->filtroDeEstruturas->numeroDeIdentificacaoDaEstruturaRaizDaConsulta = $numeroDeIdentificacaoDaEstruturaRaizDaConsulta; - }else{ - $nome = trim($nome); - if(is_numeric($nome)) { - $parametros->filtroDeEstruturas->numeroDeIdentificacaoDaEstrutura = intval($nome); - } else { - $parametros->filtroDeEstruturas->nome = mb_convert_encoding($nome, 'UTF-8', 'ISO-8859-1'); - } - } - - if(!is_null($siglaUnidade)){ - $parametros->filtroDeEstruturas->sigla = $siglaUnidade; - } - - if(!is_null($nomeUnidade)){ - $parametros->filtroDeEstruturas->nome = mb_convert_encoding($nomeUnidade, 'UTF-8', 'ISO-8859-1'); - } - - if(!is_null($registrosPorPagina) && !is_null($offset)){ - $parametros->filtroDeEstruturas->paginacao = new stdClass(); - $parametros->filtroDeEstruturas->paginacao->registroInicial = $offset; - $parametros->filtroDeEstruturas->paginacao->quantidadeDeRegistros = $registrosPorPagina; - } - - if(!is_null($parBolPermiteRecebimento) && $parBolPermiteRecebimento === true){ - $parametros->filtroDeEstruturas->permiteRecebimento = true; - } - - if(!is_null($parBolPermiteEnvio) && $parBolPermiteEnvio === true){ - $parametros->filtroDeEstruturas->permiteEnvio = true; - } - - $result = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->consultarEstruturas($parametros); - }); - - if($result->estruturasEncontradas->totalDeRegistros > 0) { - - if(!is_array($result->estruturasEncontradas->estrutura)) { - $result->estruturasEncontradas->estrutura = array($result->estruturasEncontradas->estrutura); - } - - foreach ($result->estruturasEncontradas->estrutura as $estrutura) { - $item = new EstruturaDTO(); - $item->setNumNumeroDeIdentificacaoDaEstrutura($estrutura->numeroDeIdentificacaoDaEstrutura); - $item->setStrNome(mb_convert_encoding($estrutura->nome, 'ISO-8859-1', 'UTF-8')); - $item->setStrSigla(mb_convert_encoding($estrutura->sigla, 'ISO-8859-1', 'UTF-8')); - $item->setBolAtivo($estrutura->ativo); - $item->setBolAptoParaReceberTramites($estrutura->aptoParaReceberTramites); - $item->setStrCodigoNoOrgaoEntidade($estrutura->codigoNoOrgaoEntidade); - $item->setNumTotalDeRegistros($result->estruturasEncontradas->totalDeRegistros); - - if(!empty($estrutura->hierarquia->nivel)) { - $array = array(); - foreach($estrutura->hierarquia->nivel as $nivel) { - $array[] = mb_convert_encoding($nivel->sigla, 'ISO-8859-1', 'UTF-8'); - } - $item->setArrHierarquia($array); - } - - $arrObjEstruturaDTO[] = $item; - } - } - - } catch (Exception $e) { - $mensagem = "Falha na obtenção de unidades externas"; - $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); - throw new InfraException($mensagem, $e, $detalhes); - } - - return $arrObjEstruturaDTO; - } public function listarEstruturasBuscaTextual( $idRepositorioEstrutura, @@ -543,71 +577,55 @@ public function listarEstruturasBuscaTextual( $arrObjEstruturaDTO = array(); try { - $idRepositorioEstrutura = filter_var($idRepositorioEstrutura, FILTER_SANITIZE_NUMBER_INT); + $idRepositorioEstrutura = filter_var($idRepositorioEstrutura, FILTER_SANITIZE_NUMBER_INT); if (!$idRepositorioEstrutura) { - throw new InfraException("Repositório de Estruturas inválido"); - } - - $totalDeRegistros = 0; - $estruturasUnidades = null; - if (is_null($numeroDeIdentificacaoDaEstruturaRaizDaConsulta) || empty($numeroDeIdentificacaoDaEstruturaRaizDaConsulta)) { - $estruturasUnidades = $this->validarRestricaoUnidadesCadastradas($idRepositorioEstrutura); - $totalDeRegistros = is_null($estruturasUnidades) ? 0 : count($estruturasUnidades); - } - - if (is_null($estruturasUnidades)) { - $result = $this->buscarListaEstruturas(array( - [ - 'idRepositorioEstrutura' => $idRepositorioEstrutura, - 'nome' => $nome, - 'numeroDeIdentificacaoDaEstruturaRaizDaConsulta' => $numeroDeIdentificacaoDaEstruturaRaizDaConsulta, - 'nomeUnidade' => $nomeUnidade, - 'siglaUnidade' => $siglaUnidade, - 'offset' => $offset, - 'registrosPorPagina' => $registrosPorPagina, - 'parBolPermiteRecebimento' => $parBolPermiteRecebimento, - 'parBolPermiteEnvio' => $parBolPermiteEnvio - ] - )); - - $totalDeRegistros = $result->estruturasEncontradas->totalDeRegistros; - if ($totalDeRegistros > 0 && !is_array($result->estruturasEncontradas->estrutura)) { - $result->estruturasEncontradas->estrutura = array($result->estruturasEncontradas->estrutura); - } - $estruturasUnidades = $result->estruturasEncontradas->estrutura; - } - - if ($totalDeRegistros > 0) { - foreach ($estruturasUnidades as $estrutura) { - $item = new EstruturaDTO(); - $item->setNumNumeroDeIdentificacaoDaEstrutura($estrutura->numeroDeIdentificacaoDaEstrutura); - $item->setStrNome(mb_convert_encoding($estrutura->nome, 'ISO-8859-1', 'UTF-8')); - $item->setStrSigla(mb_convert_encoding($estrutura->sigla, 'ISO-8859-1', 'UTF-8')); - $item->setBolAtivo($estrutura->ativo); - $item->setBolAptoParaReceberTramites($estrutura->aptoParaReceberTramites); - $item->setStrCodigoNoOrgaoEntidade($estrutura->codigoNoOrgaoEntidade); - $item->setNumTotalDeRegistros($totalDeRegistros); - - if (!empty($estrutura->hierarquia->nivel)) { - $array = array(); - foreach ($estrutura->hierarquia->nivel as $nivel) { - $array[] = mb_convert_encoding($nivel->sigla, 'ISO-8859-1', 'UTF-8'); - } - $item->setArrHierarquia($array); + throw new InfraException('Repositório de Estruturas inválido'); + } + + $parametros = [ + 'apenasAtivas' => true, + 'identificacaoDoRepositorioDeEstruturas' => $idRepositorioEstrutura, + 'sigla' => $siglaUnidade, + 'nome' => $nomeUnidade, + 'permiteRecebimento' => $parBolPermiteRecebimento, + 'permiteEnvio' => $parBolPermiteEnvio, + 'numeroDeIdentificacaoDaEstruturaRaizDaConsulta' => $numeroDeIdentificacaoDaEstruturaRaizDaConsulta ?: $nome, + 'registroInicial' => $offset, + 'quantidadeDeRegistros' => $registrosPorPagina, + ]; + + $arrResultado = $this->consultarEstruturas($idRepositorioEstrutura, $parametros); + + if ($arrResultado['totalDeRegistros'] > 0) { + + foreach ($arrResultado['estruturas'] as $estrutura) { + $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->setNumTotalDeRegistros($arrResultado['totalDeRegistros']); + + $arrHerarquia = array_map(function ($nivel) { + return mb_convert_encoding($nivel['sigla'], 'ISO-8859-1', 'UTF-8'); + }, $estrutura['hierarquia'] ?: []); + + $objEstruturaDTO->setArrHierarquia($arrHerarquia); + + $arrObjEstruturaDTO[] = $objEstruturaDTO; } - - $arrObjEstruturaDTO[] = $item; } - } } catch (Exception $e) { - $mensagem = "Falha na obtenção de unidades externas"; - $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); - throw new InfraException($mensagem, $e, $detalhes); + $mensagem = "Falha na obtenção de unidades externas"; + $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); + throw new InfraException($mensagem, $e, $detalhes); } - return $arrObjEstruturaDTO; + return $arrObjEstruturaDTO; } - + private function buscarListaEstruturas( $idRepositorioEstrutura, $filtro = array() @@ -656,149 +674,102 @@ private function buscarListaEstruturas( } public function listarEstruturasAutoCompletar( - $idRepositorioEstrutura, - $nome = '', - $numeroDeIdentificacaoDaEstruturaRaizDaConsulta = null, - $nomeUnidade = null, - $siglaUnidade = null, - $offset = null, - $registrosPorPagina = null, - $parBolPermiteRecebimento = null, - $parBolPermiteEnvio = null - ) { - $arrObjEstruturaDTO = array('diferencaDeRegistros' => 0, 'itens' => array()); - + $idRepositorioEstrutura, + $nome = '', + $numeroDeIdentificacaoDaEstruturaRaizDaConsulta = null, + $nomeUnidade = null, + $siglaUnidade = null, + $offset = null, + $registrosPorPagina = null, + $parBolPermiteRecebimento = null, + $parBolPermiteEnvio = null + ) { + $arrObjEstruturaDTO = array('diferencaDeRegistros' => 0, 'itens' => array()); + try { - $idRepositorioEstrutura = filter_var($idRepositorioEstrutura, FILTER_SANITIZE_NUMBER_INT); + $idRepositorioEstrutura = filter_var($idRepositorioEstrutura, FILTER_SANITIZE_NUMBER_INT); if (!$idRepositorioEstrutura) { throw new InfraException("Repositório de Estruturas inválido"); } - - $parametros = new stdClass(); - $parametros->filtroDeEstruturas = new stdClass(); - $parametros->filtroDeEstruturas->identificacaoDoRepositorioDeEstruturas = $idRepositorioEstrutura; - $parametros->filtroDeEstruturas->apenasAtivas = true; - - if (!is_null($numeroDeIdentificacaoDaEstruturaRaizDaConsulta)) { - $parametros->filtroDeEstruturas->numeroDeIdentificacaoDaEstruturaRaizDaConsulta = $numeroDeIdentificacaoDaEstruturaRaizDaConsulta; - } else { - $nome = trim($nome); - if (is_numeric($nome)) { - $parametros->filtroDeEstruturas->numeroDeIdentificacaoDaEstrutura = intval($nome); - } else { - $parametros->filtroDeEstruturas->nome = mb_convert_encoding($nome, 'UTF-8', 'ISO-8859-1'); - } - } - - if (!is_null($siglaUnidade)) { - $parametros->filtroDeEstruturas->sigla = $siglaUnidade; - } - - if (!is_null($nomeUnidade)) { - $parametros->filtroDeEstruturas->nome = mb_convert_encoding($nomeUnidade, 'UTF-8', 'ISO-8859-1'); - } - - if (!is_null($registrosPorPagina) && !is_null($offset)) { - $parametros->filtroDeEstruturas->paginacao = new stdClass(); - $parametros->filtroDeEstruturas->paginacao->registroInicial = $offset; - $parametros->filtroDeEstruturas->paginacao->quantidadeDeRegistros = $registrosPorPagina; - } - - if (!is_null($parBolPermiteRecebimento) && $parBolPermiteRecebimento === true) { - $parametros->filtroDeEstruturas->permiteRecebimento = true; - } - - if (!is_null($parBolPermiteEnvio) && $parBolPermiteEnvio === true) { - $parametros->filtroDeEstruturas->permiteEnvio = true; - } - - $result = $this->tentarNovamenteSobErroHTTP(function ($objPenWs) use ($parametros) { - return $objPenWs->consultarEstruturas($parametros); - }); - - if ($result->estruturasEncontradas->totalDeRegistros > 0) { - - if (!is_array($result->estruturasEncontradas->estrutura)) { - $result->estruturasEncontradas->estrutura = array($result->estruturasEncontradas->estrutura); - } - - foreach ($result->estruturasEncontradas->estrutura as $estrutura) { - $item = new EstruturaDTO(); - $item->setNumNumeroDeIdentificacaoDaEstrutura($estrutura->numeroDeIdentificacaoDaEstrutura); - $item->setStrNome(mb_convert_encoding($estrutura->nome, 'ISO-8859-1', 'UTF-8')); - $item->setStrSigla(mb_convert_encoding($estrutura->sigla, 'ISO-8859-1', 'UTF-8')); - $item->setBolAtivo($estrutura->ativo); - $item->setBolAptoParaReceberTramites($estrutura->aptoParaReceberTramites); - $item->setStrCodigoNoOrgaoEntidade($estrutura->codigoNoOrgaoEntidade); - $item->setNumTotalDeRegistros($result->estruturasEncontradas->totalDeRegistros); - - if (!empty($estrutura->hierarquia->nivel)) { - $array = array(); - foreach ($estrutura->hierarquia->nivel as $nivel) { - $array[] = mb_convert_encoding($nivel->sigla, 'ISO-8859-1', 'UTF-8'); - } - $item->setArrHierarquia($array); - } - - $arrObjEstruturaDTO["itens"][] = $item; - } - $totalDeRegistros = $result->estruturasEncontradas->totalDeRegistros; + $parametros = [ + 'identificacaoDoRepositorioDeEstruturas' => $idRepositorioEstrutura, + 'apenasAtivas' => true, + 'numeroDeIdentificacaoDaEstruturaRaizDaConsulta' => $numeroDeIdentificacaoDaEstruturaRaizDaConsulta, + 'sigla' => $siglaUnidade ?: null, + 'nome' => !is_null($nomeUnidade) ? mb_convert_encoding($nomeUnidade, 'UTF-8') : (is_null($numeroDeIdentificacaoDaEstruturaRaizDaConsulta) && !is_null($nome) ? (is_numeric($nome) ? intval($nome) : mb_convert_encoding($nome, 'UTF-8')) : null), + 'registroInicial' => !is_null($registrosPorPagina) && !is_null($offset) ? $offset : null, + 'quantidadeDeRegistros' => !is_null($registrosPorPagina) && !is_null($offset) ? $registrosPorPagina : null, + 'permiteRecebimento' => $parBolPermiteRecebimento ?: null, + 'permiteEnvio' => $parBolPermiteEnvio ?: null + ]; + + $parametros = array_filter($parametros, function($value) { + return !is_null($value); + }); + + $arrResultado = $this->consultarEstruturas($idRepositorioEstrutura, $parametros); + + 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']); + + $arrHerarquia = array_map(function($nivel) { + return mb_convert_encoding($nivel['sigla'], 'UTF-8'); + }, $estrutura['hierarquia'] ?: []); + + $objEstruturaDTO->setArrHierarquia($arrHerarquia); + + $arrObjEstruturaDTO["itens"][] = $objEstruturaDTO; + } + + $totalDeRegistros = $arrResultado['totalDeRegistros']; $arrObjEstruturaDTO["diferencaDeRegistros"] = $totalDeRegistros > count($arrObjEstruturaDTO["itens"]) ? - $totalDeRegistros - count($arrObjEstruturaDTO["itens"]) : 0; + $totalDeRegistros - count($arrObjEstruturaDTO["itens"]) : 0; } } catch (Exception $e) { - $mensagem = "Falha na obtenção de unidades externas"; - $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); - throw new InfraException($mensagem, $e, $detalhes); + $mensagem = "Falha na obtenção de unidades externas"; + $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); + throw new InfraException($mensagem, $e, $detalhes); } - - return $arrObjEstruturaDTO; + + return $arrObjEstruturaDTO; } + public function consultarMotivosUrgencia() { - $curl = curl_init($this->strComumXSD); - - try{ - $bolEmProducao = boolval(ConfiguracaoSEI::getInstance()->getValor('SEI', 'Producao')); - curl_setopt($curl, CURLOPT_URL, $this->strComumXSD); - curl_setopt($curl, CURLOPT_HEADER, false); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); - curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); - curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, $bolEmProducao); - curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, $bolEmProducao); - curl_setopt($curl, CURLOPT_SSLCERT, $this->strLocalCert); - curl_setopt($curl, CURLOPT_SSLCERTPASSWD, $this->strLocalCertPassword); - - $output = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($curl) { - return curl_exec($curl); - }); - - $dom = new DOMDocument(); - $dom->loadXML($output); - - $xpath = new DOMXPath($dom); - - $rootNamespace = $dom->lookupNamespaceUri($dom->namespaceURI); - $xpath->registerNamespace('x', $rootNamespace); - $entries = $xpath->query('/x:schema/x:simpleType[@name="motivoDaUrgencia"]/x:restriction/x:enumeration'); - - $resultado = array(); - foreach ($entries as $entry) { - $valor = $entry->getAttribute('value'); - $documentationNode = $xpath->query('x:annotation/x:documentation', $entry); - $descricao = $documentationNode->item(0)->nodeValue; - $resultado[$valor] = mb_convert_encoding($descricao, 'ISO-8859-1', 'UTF-8'); + $endpoint = 'motivosUrgencia'; + try { + $parametros = []; + + $arrResultado = $this->get($endpoint, $parametros); + $arrMotivosUrgencia = []; + if (isset($arrResultado)) { + $count = count($arrResultado['motivosUrgencia']); + + for ($i = 0; $i < $count; $i++) { + $arrMotivosUrgencia[] = mb_convert_encoding($arrResultado['motivosUrgencia'][$i]['descricao'], 'ISO-8859-1', 'UTF-8'); + } } - } finally{ - curl_close($curl); + + } catch (Exception $e) { + $mensagem = "Falha na obtenção de unidades externas"; + $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); + throw new InfraException($mensagem, $e, $detalhes); } - - return $resultado; + + return $arrMotivosUrgencia; } - /** * Busca as espécies documentais aceitas pelo Barramento de Serviços do PEN * @@ -808,73 +779,49 @@ public function consultarMotivosUrgencia() */ public function consultarEspeciesDocumentais() { - $curl = curl_init($this->strComumXSD); - - try{ - curl_setopt($curl, CURLOPT_URL, $this->strComumXSD); - curl_setopt($curl, CURLOPT_HEADER, 0); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); - curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); - - if(!ConfiguracaoSEI::getInstance()->getValor('SEI', 'Producao')){ - curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); - curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); + $endpoint = 'especies'; + try { + $parametros = []; + + $arrResultado = $this->get($endpoint, $parametros); + $arrEspecies = []; + if (isset($arrResultado)) { + $count = count($arrResultado['especies']); + + for ($i = 0; $i < $count; $i++) { + $arrEspecies[] = mb_convert_encoding($arrResultado['especies'][$i]['nomeNoProdutor'], 'ISO-8859-1', 'UTF-8'); + } } - curl_setopt($curl, CURLOPT_SSLCERT, $this->strLocalCert); - curl_setopt($curl, CURLOPT_SSLCERTPASSWD, $this->strLocalCertPassword); - - $output = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($curl) { - return curl_exec($curl); - }); - $dom = new DOMDocument(); - $dom->loadXML($output); - - $xpath = new DOMXPath($dom); - $rootNamespace = $dom->lookupNamespaceUri($dom->namespaceURI); - $xpath->registerNamespace('x', $rootNamespace); - $entries = $xpath->query('/x:schema/x:complexType[@name="especie"]/x:sequence/x:element[@name="codigo"]/x:simpleType/x:restriction/x:enumeration'); - if (count($entries) == 0){ - $erro_curl = empty(curl_error($curl))?'Não houve':curl_error($curl); - throw new InfraException("Não foi achado nenhuma espécie documental. Favor checar a configuração. Possível erro do curl: ".$erro_curl); - } - $resultado = array(); - foreach ($entries as $entry) { - $valor = $entry->getAttribute('value'); - $documentationNode = $xpath->query('x:annotation/x:documentation', $entry); - $descricao = $documentationNode->item(0)->nodeValue; - $resultado[$valor] = mb_convert_encoding($descricao, 'ISO-8859-1', 'UTF-8'); - } - } finally{ - curl_close($curl); + } catch (Exception $e) { + $mensagem = "Não foi encontrado nenhuma espécie documental."; + $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); + throw new InfraException($mensagem, $e, $detalhes); } - return $resultado; + return $arrEspecies; } - - public function enviarProcesso($parametros) - { + public function enviarProcessoREST($parametros) + { + $endpoint = "tramites/processo"; try { - return $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->enviarProcesso($parametros); - }); + $arrResultado = $this->post($endpoint, $parametros['novoTramiteDeProcesso']); + + return $arrResultado; + + } catch (Exception $e) { - } catch (\SoapFault $e) { - $strMensagem = str_replace(array("\n", "\r"), ' ', InfraString::formatarJavaScript(mb_convert_encoding($e->faultstring, 'ISO-8859-1', 'UTF-8'))); - - if ($e instanceof \SoapFault && !empty($e->detail->interoperabilidadeException->codigoErro) && $e->detail->interoperabilidadeException->codigoErro == '0005') { - $strMensagem .= 'O código mapeado para a unidade ' . mb_convert_encoding($parametros->novoTramiteDeProcesso->processo->documento[0]->produtor->unidade->nome, 'ISO-8859-1', 'UTF-8') . ' está incorreto.'; + $mensagem = "Falha no envio externo do processo. Verifique log de erros do sistema para maiores informações."; + $erroRequest = json_decode($e->getMessage()); + if ($erroRequest != null) { + $mensagem = "Falha no envio externo do processo. Erro: {$erroRequest->codigoErro} - {$erroRequest->message}"; } + $mensagem = mb_convert_encoding($mensagem, 'ISO-8859-1', 'UTF-8'); - $e->faultstring = $this->validarTramitaEmAndamento($parametros, $strMensagem); - $strMensagem = $e->faultstring; - $strDetalhes = str_replace(array("\n", "\r"), ' ', InfraString::formatarJavaScript($this->tratarFalhaWebService($e))); - throw new InfraException($strMensagem, $e, $strDetalhes); - } catch (\Exception $e) { - $mensagem = "Falha no envio externo do processo. Verifique log de erros do sistema para maiores informações."; $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); throw new InfraException($mensagem, $e, $detalhes); + } } @@ -898,29 +845,26 @@ private function validarTramitaEmAndamento($parametros, $strMensagem) public function listarPendencias($bolTodasPendencias) { - $arrObjPendenciaDTO = array(); + $endpoint = 'tramites/pendentes'; + $arrObjPendenciaDTO = []; try { - $parametros = new stdClass(); - $parametros->filtroDePendencias = new stdClass(); - $parametros->filtroDePendencias->todasAsPendencias = $bolTodasPendencias; - $result = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->listarPendencias($parametros); - }); - - if(isset($result->listaDePendencias->IDT)){ - if(!is_array($result->listaDePendencias->IDT)) { - $result->listaDePendencias->IDT = array($result->listaDePendencias->IDT); - } + $parametros = [ + 'todas' => $bolTodasPendencias + ]; + + $arrResultado = $this->get($endpoint, $parametros); + + if (is_array($arrResultado) && !is_null($arrResultado)) { + foreach ($arrResultado as $strPendencia) { + $pendenciaDTO = new PendenciaDTO(); + $pendenciaDTO->setNumIdentificacaoTramite($strPendencia['IDT']); + $pendenciaDTO->setStrStatus($strPendencia['status']); + $arrObjPendenciaDTO[] = $pendenciaDTO; + } + } - foreach ($result->listaDePendencias->IDT as $idt) { - $item = new PendenciaDTO(); - $item->setNumIdentificacaoTramite($idt->_); - $item->setStrStatus($idt->status); - $arrObjPendenciaDTO[] = $item; - } - } - } catch (\Exception $e) { + } catch (Exception $e) { $mensagem = "Falha na listagem de pendências de trâmite de processos"; $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); throw new InfraException($mensagem, $e, $detalhes); @@ -931,13 +875,17 @@ public function listarPendencias($bolTodasPendencias) private function tratarFalhaWebService(Exception $fault) { + $mensagem = InfraException::inspecionar($fault); - if($fault instanceof SoapFault && isset($fault->detail->interoperabilidadeException)) { - $strWsException = $fault->detail->interoperabilidadeException; - $mensagem = mb_convert_encoding($strWsException->mensagem, 'ISO-8859-1', 'UTF-8'); + + if ($fault instanceof RequestException && $fault->hasResponse()) { + + $codigoErro = $fault->getResponse()->getStatusCode(); + $mensagemDoErro = $fault->getResponse()->getReasonPhrase(); + $mensagem = mb_convert_encoding($mensagem, 'ISO-8859-1', 'UTF-8'); // Fixação de mensagem de erro para quando já existe um trâmite em andamento - if($strWsException->codigoErro == "0044"){ + if ($codigoErro == "0044") { $mensagem = 'Processo já possui um trâmite em andamento.'; } } @@ -945,92 +893,100 @@ private function tratarFalhaWebService(Exception $fault) return $mensagem; } + public function construirCabecalho($strNumeroRegistro, $idRepositorioOrigem, $idUnidadeOrigem, $idRepositorioDestino, - $idUnidadeDestino, $urgente = false, $motivoUrgencia = 0, $enviarTodosDocumentos = false, $dblIdProcedimento = null) + $idUnidadeDestino, $urgente = false, $motivoUrgencia = 0, $enviarTodosDocumentos = false, $dblIdProcedimento = null) { - $cabecalho = new stdClass(); - if(isset($strNumeroRegistro)) { - $cabecalho->NRE = $strNumeroRegistro; - } + $cabecalho = [ + "remetente" => [ + "identificacaoDoRepositorioDeEstruturas" => $idRepositorioOrigem, + "numeroDeIdentificacaoDaEstrutura" => $idUnidadeOrigem, + ], + "destinatario" => [ + "identificacaoDoRepositorioDeEstruturas" => $idRepositorioDestino, + "numeroDeIdentificacaoDaEstrutura" => $idUnidadeDestino, + ], + "enviarApenasComponentesDigitaisPendentes" => !$enviarTodosDocumentos + ]; + + if (isset($urgente) && !empty($urgente)) { + $cabecalho['urgencia'] = $urgente; + } + + if (isset($motivoUrgencia) && !empty($motivoUrgencia)) { + $cabecalho['motivoDaUrgencia'] = $urgente; + } - $cabecalho->remetente = new stdClass(); - $cabecalho->remetente->identificacaoDoRepositorioDeEstruturas = $idRepositorioOrigem; - $cabecalho->remetente->numeroDeIdentificacaoDaEstrutura = $idUnidadeOrigem; + if (isset($strNumeroRegistro) && !empty($strNumeroRegistro)) { + $cabecalho['NRE'] = $strNumeroRegistro; + } - $cabecalho->destinatario = new stdClass(); - $cabecalho->destinatario->identificacaoDoRepositorioDeEstruturas = $idRepositorioDestino; - $cabecalho->destinatario->numeroDeIdentificacaoDaEstrutura = $idUnidadeDestino; - $cabecalho->urgente = $urgente; - $cabecalho->motivoDaUrgencia = $motivoUrgencia; - //Parâmetro abaixo foi descontinuado por falhas e substituido pelo enviarApenasComponentesDigitaisPendentes - $cabecalho->enviarApenasComponentesDigitaisPendentes = !$enviarTodosDocumentos; + $atribuirInformacoes = $this->atribuirInformacoesAssuntoREST($cabecalho, $dblIdProcedimento); + $atribuirInfoModulo = $this->atribuirInformacoesModuloREST($cabecalho); - $this->atribuirInformacoesAssunto($cabecalho, $dblIdProcedimento); - $this->atribuirInformacoesModulo($cabecalho); + $cabecalho['propriedadesAdicionais'] = array_merge($atribuirInformacoes, $atribuirInfoModulo); return $cabecalho; } - private function atribuirInformacoesModulo($objCabecalho) + private function atribuirInformacoesModuloREST($objCabecalho) { - try{ + $arrInformacoeesModulo = []; + $objInfraParametro = new InfraParametro(BancoSEI::getInstance()); + + $arrInformacoeesModulo[] = [ + 'chave' => 'MODULO_PEN_VERSAO', + 'valor' => $objInfraParametro->getValor('VERSAO_MODULO_PEN') + ]; - $objInfraParametro = new InfraParametro($this->inicializarObjInfraIBanco()); - $arrPropAdicionais=$objCabecalho->propriedadeAdicional; - $arrPropAdicionais[] = new SoapVar("". $objInfraParametro->getValor('VERSAO_MODULO_PEN') . "", XSD_ANYXML); - - $objCabecalho->propriedadeAdicional= $arrPropAdicionais; + return $arrInformacoeesModulo; }catch(Exception $e){ - + $mensagem = "Erro ao obter versão do módulo PEN"; throw new InfraException($mensagem, $e); } - - } - private function atribuirInformacoesAssunto($objCabecalho, $dblIdProcedimento) - { + private function atribuirInformacoesAssuntoREST($objCabecalho, $dblIdProcedimento) + { try{ - if(!isset($dblIdProcedimento)){ - throw new InfraException('Parâmetro $dblIdProcedimento não informado.'); + throw new InfraException('Parâmetro $dblIdProcedimento não informado.'); } - $objRelProtocoloAssuntoDTO = new RelProtocoloAssuntoDTO(); - $objRelProtocoloAssuntoDTO->setDblIdProtocolo($dblIdProcedimento); - $objRelProtocoloAssuntoDTO->retStrDescricaoAssunto(); - $objRelProtocoloAssuntoDTO->retNumIdAssunto(); - $objRelProtocoloAssuntoDTO->setOrdNumSequencia(InfraDTO::$TIPO_ORDENACAO_ASC); + $objRelProtocoloAssuntoDTO = new RelProtocoloAssuntoDTO(); + $objRelProtocoloAssuntoDTO->setDblIdProtocolo($dblIdProcedimento); + $objRelProtocoloAssuntoDTO->retStrDescricaoAssunto(); + $objRelProtocoloAssuntoDTO->retNumIdAssunto(); + $objRelProtocoloAssuntoDTO->setOrdNumSequencia(InfraDTO::$TIPO_ORDENACAO_ASC); - $objRelProtocoloAssuntoRN = new RelProtocoloAssuntoRN(); - $arrobjRelProtocoloAssuntoDTO = $objRelProtocoloAssuntoRN->listarRN0188($objRelProtocoloAssuntoDTO); + $objRelProtocoloAssuntoRN = new RelProtocoloAssuntoRN(); + $arrobjRelProtocoloAssuntoDTO = $objRelProtocoloAssuntoRN->listarRN0188($objRelProtocoloAssuntoDTO); - $arrDadosAssunto = array(); - $contagem=1; - $objProcessoEletronicoRN = new ProcessoEletronicoRN(); + $arrDadosAssunto = array(); + $contagem=1; + $objProcessoEletronicoRN = new ProcessoEletronicoRN(); foreach ($arrobjRelProtocoloAssuntoDTO as $objRelProtocoloAssuntoDTO) { - $idAssunto = $objRelProtocoloAssuntoDTO->getNumIdAssunto(); - $assuntoDTO = new AssuntoDTO(); - $assuntoDTO->setNumIdAssunto($idAssunto); - $assuntoDTO->retNumPrazoCorrente(); - $assuntoDTO->retNumPrazoIntermediario(); - $assuntoDTO->retStrStaDestinacao(); - $assuntoDTO->retStrObservacao(); - $assuntoDTO->retStrCodigoEstruturado(); + $idAssunto = $objRelProtocoloAssuntoDTO->getNumIdAssunto(); + $assuntoDTO = new AssuntoDTO(); + $assuntoDTO->setNumIdAssunto($idAssunto); + $assuntoDTO->retNumPrazoCorrente(); + $assuntoDTO->retNumPrazoIntermediario(); + $assuntoDTO->retStrStaDestinacao(); + $assuntoDTO->retStrObservacao(); + $assuntoDTO->retStrCodigoEstruturado(); - $objAssuntoRN = new AssuntoRN(); - $infoAssunto = $objAssuntoRN->consultarRN0256($assuntoDTO); + $objAssuntoRN = new AssuntoRN(); + $infoAssunto = $objAssuntoRN->consultarRN0256($assuntoDTO); switch ($infoAssunto->getStrStaDestinacao()) { case AssuntoRN::$TD_ELIMINACAO: @@ -1038,43 +994,66 @@ private function atribuirInformacoesAssunto($objCabecalho, $dblIdProcedimento) break; case AssuntoRN::$TD_GUARDA_PERMANENTE: - $destinacao = "Guarda Permanente"; + $destinacao = "Guarda Permanente"; break; } + $valorInput = $objRelProtocoloAssuntoDTO->getStrDescricaoAssunto() ? + utf8_encode($objProcessoEletronicoRN->reduzirCampoTexto(htmlspecialchars($objRelProtocoloAssuntoDTO->getStrDescricaoAssunto(), ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE, 'ISO-8859-1'), 10000)) + : "NA"; - $valorInput=$objRelProtocoloAssuntoDTO->getStrDescricaoAssunto()?mb_convert_encoding($objProcessoEletronicoRN->reduzirCampoTexto(htmlspecialchars($objRelProtocoloAssuntoDTO->getStrDescricaoAssunto(), ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE, 'ISO-8859-1'), 10000), 'UTF-8', 'ISO-8859-1'):"NA"; - $arrDadosAssunto[] = new SoapVar("" . $valorInput . "", XSD_ANYXML); - - $valorInput=$infoAssunto->getStrCodigoEstruturado()?mb_convert_encoding($infoAssunto->getStrCodigoEstruturado(), 'UTF-8', 'ISO-8859-1'):"NA"; - $arrDadosAssunto[] = new SoapVar("" . $valorInput . "", XSD_ANYXML); - - $valorInput=$infoAssunto->getNumPrazoCorrente()? (int) $infoAssunto->getNumPrazoCorrente() :"NA"; - $arrDadosAssunto[] = new SoapVar("" . $valorInput . "", XSD_ANYXML); - - $valorInput=$infoAssunto->getNumPrazoIntermediario()?(int) $infoAssunto->getNumPrazoIntermediario():"NA"; - $arrDadosAssunto[] = new SoapVar("" . $valorInput . "", XSD_ANYXML); - - $valorInput=$destinacao?mb_convert_encoding($destinacao, 'UTF-8', 'ISO-8859-1'):"NA"; - $arrDadosAssunto[] = new SoapVar("" . $valorInput . "", XSD_ANYXML); - - $valorInput=$infoAssunto->getStrObservacao()?mb_convert_encoding($objProcessoEletronicoRN->reduzirCampoTexto(htmlspecialchars($infoAssunto->getStrObservacao(), ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE, 'ISO-8859-1'), 10000), 'UTF-8', 'ISO-8859-1'):"NA"; - $arrDadosAssunto[] = new SoapVar("" . $valorInput . "", XSD_ANYXML); - + $arrDadosAssunto[] = [ + 'chave' => 'CLASSIFICACAO_Descricao_' . $contagem, + 'valor' => $valorInput + ]; + + $valorInput = $infoAssunto->getStrCodigoEstruturado() ? + utf8_encode($infoAssunto->getStrCodigoEstruturado()) + : "NA"; + $arrDadosAssunto[] = [ + 'chave' => 'CLASSIFICACAO_CodigoEstruturado_' . $contagem, + 'valor' => $valorInput + ]; + + $valorInput = $infoAssunto->getNumPrazoCorrente() ? + (int) $infoAssunto->getNumPrazoCorrente() + : "NA"; + $arrDadosAssunto[] = [ + 'chave' => 'CLASSIFICACAO_PrazoCorrente_' . $contagem, + 'valor' => $valorInput + ]; + + $valorInput = $infoAssunto->getNumPrazoIntermediario() ? + (int) $infoAssunto->getNumPrazoIntermediario() + : "NA"; + $arrDadosAssunto[] = [ + 'chave' => 'CLASSIFICACAO_PrazoIntermediario_' . $contagem, + 'valor' => $valorInput + ]; + + $valorInput = $destinacao ? + utf8_encode($destinacao) + : "NA"; + $arrDadosAssunto[] = [ + 'chave' => 'CLASSIFICACAO_Destinacao_' . $contagem, + 'valor' => $valorInput + ]; + + $valorInput = $infoAssunto->getStrObservacao() ? + mb_convert_encoding($objProcessoEletronicoRN->reduzirCampoTexto(htmlspecialchars($infoAssunto->getStrObservacao(), ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE, 'ISO-8859-1'), 10000), 'UTF-8', 'ISO-8859-1') + : "NA"; + $arrDadosAssunto[] = [ + 'chave' => 'CLASSIFICACAO_Observacao_' . $contagem, + 'valor' => $valorInput + ]; - $contagem++; + $contagem++; } - $objCabecalho->propriedadeAdicional= $arrDadosAssunto; + return $arrDadosAssunto; }catch(Exception $e){ - + $mensagem = "Falha ao atribuir informações de assunto"; throw new InfraException($mensagem, $e); } @@ -1083,9 +1062,53 @@ private function atribuirInformacoesAssunto($objCabecalho, $dblIdProcedimento) public function enviarComponenteDigital($parametros) { try { - return $this->tentarNovamenteSobErroHTTP(function($objPenWs) use (&$parametros) { - return $objPenWs->enviarComponenteDigital($parametros); - }); + + $objParametros = $parametros->dadosDoComponenteDigital; + $idTicketDeEnvio = $objParametros->ticketParaEnvioDeComponentesDigitais; + + $protocolo = $objParametros->protocolo; + $hashDoComponenteDigital = $objParametros->hashDoComponenteDigital; + $conteudo = $objParametros->conteudoDoComponenteDigital; + + $queryParams = [ + 'hashDoComponenteDigital' => $hashDoComponenteDigital, + 'protocolo' => $protocolo + ]; + + $endpoint = "tickets-de-envio-de-componente/{$idTicketDeEnvio}/protocolos/componentes-a-enviar"; + + $objConfiguracaoModPEN = ConfiguracaoModPEN::getInstance(); + $strLocalizacaoCertificadoDigital = $objConfiguracaoModPEN->getValor("PEN", "LocalizacaoCertificado"); + $strSenhaCertificadoDigital = $objConfiguracaoModPEN->getValor("PEN", "SenhaCertificado"); + + $strBaseUri = $this->strEnderecoWebService; + + $arrheaders = [ + 'Accept' => '*/*', + ]; + + $strClientGuzzle = new GuzzleHttp\Client([ + 'base_uri' => $strBaseUri, + 'headers' => $arrheaders, + 'timeout' => self::WS_TIMEOUT_CONEXAO, + 'cert' => [$strLocalizacaoCertificadoDigital, $strSenhaCertificadoDigital], + ]); + + + $arrOptions = [ + 'query' => $queryParams, + 'multipart' => [ + [ + 'name' => 'conteudo', + 'contents' => $conteudo, + 'filename' => 'conteudo.html', + 'headers' => ['Content-Type' => 'text/html'] + ], + ], + ]; + + $strClientGuzzle->request('PUT', $endpoint, $arrOptions); + } catch (\Exception $e) { $mensagem = "Falha no envio de componentes digitais"; $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); @@ -1093,7 +1116,6 @@ public function enviarComponenteDigital($parametros) } } - /** * Método responsável por realizar o envio da parte de um componente digital * @param $parametros @@ -1103,12 +1125,63 @@ public function enviarComponenteDigital($parametros) public function enviarParteDeComponenteDigital($parametros) { try { - return $this->tentarNovamenteSobErroHTTP(function($objPenWs) use (&$parametros) { - return $objPenWs->enviarParteDeComponenteDigital($parametros); - }); + + $objParametros = $parametros->dadosDaParteDeComponenteDigital; + $idTicketDeEnvio = $objParametros->ticketParaEnvioDeComponentesDigitais; + + $protocolo = $objParametros->protocolo; + $hashDoComponenteDigital = $objParametros->hashDoComponenteDigital; + + $indetificacaoDaParte = $objParametros->identificacaoDaParte; + $parte = $indetificacaoDaParte->inicio . '-' . $indetificacaoDaParte->fim; + + $conteudo = $objParametros->conteudoDaParteDeComponenteDigital; + + $queryParams = [ + 'hashDoComponenteDigital' => $hashDoComponenteDigital, + 'protocolo' => $protocolo + ]; + + $endpoint = "tickets-de-envio-de-componente/{$idTicketDeEnvio}/protocolos/componentes-a-enviar/partes/{$parte}"; + + $objConfiguracaoModPEN = ConfiguracaoModPEN::getInstance(); + $strLocalizacaoCertificadoDigital = $objConfiguracaoModPEN->getValor("PEN", "LocalizacaoCertificado"); + $strSenhaCertificadoDigital = $objConfiguracaoModPEN->getValor("PEN", "SenhaCertificado"); + + $strBaseUri = $this->strEnderecoWebService; + + $arrheaders = [ + 'Accept' => '*/*', + 'Content-Type' => 'application/json', + ]; + + $strClientGuzzle = new GuzzleHttp\Client([ + 'base_uri' => $strBaseUri, + 'headers' => $arrheaders, + 'timeout' => self::WS_TIMEOUT_CONEXAO, + 'cert' => [$strLocalizacaoCertificadoDigital, $strSenhaCertificadoDigital], + ]); + + + $arrOptions = [ + 'query' => $queryParams, + 'multipart' => [ + [ + 'name' => 'conteudo', + 'contents' => $conteudo, + 'filename' => 'arquivo_externo.html', + // 'headers' => ['Content-Type' => 'text/html'] + ], + ], + ]; + + $strClientGuzzle->request('PUT', $endpoint, $arrOptions); } catch (\Exception $e) { - $mensagem = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); - throw new InfraException($mensagem, $e); + $erroResposta = json_decode($e->getResponse()->getBody()->getContents()); + $mensagem = "Falha de envio do componente digital. Erro: {$erroResposta->codigoErro} - {$erroResposta->mensagem}"; + $mensagem = mb_convert_encoding($mensagem, 'ISO-8859-1', 'UTF-8'); + $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); + throw new InfraException($mensagem, $e, $detalhes); } } @@ -1119,11 +1192,20 @@ public function enviarParteDeComponenteDigital($parametros) * @throws InfraException */ public function sinalizarTerminoDeEnvioDasPartesDoComponente($parametros) - { + { try { - return $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->sinalizarTerminoDeEnvioDasPartesDoComponente($parametros); - }); + $objParametros = $parametros->dadosDoTerminoDeEnvioDePartes; + $idTicketDeEnvio = $objParametros->ticketParaEnvioDeComponentesDigitais; + + $arrIdentificacaoDoComponenteDigital = [ + 'hashDoComponenteDigital' => $objParametros->hashDoComponenteDigital, + 'protocolo' => $objParametros->protocolo, + ]; + + $endpoint = "tickets-de-envio-de-componente/{$idTicketDeEnvio}/protocolos/componentes-a-enviar/partes/sinalizacao-termino-envio"; + + return $this->post($endpoint, $arrIdentificacaoDoComponenteDigital); + } catch (\Exception $e) { $mensagem = "Falha em sinalizar o término de envio das partes do componente digital"; $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); @@ -1131,16 +1213,39 @@ public function sinalizarTerminoDeEnvioDasPartesDoComponente($parametros) } } + public function solicitarMetadados($parNumIdentificacaoTramite) { + $endpoint = "tramites/{$parNumIdentificacaoTramite}"; try { - $parametros = new stdClass(); - $parametros->IDT = $parNumIdentificacaoTramite; - return $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - $objMetadadosProtocolo = $objPenWs->solicitarMetadados($parametros); - $objMetadadosProtocolo->IDT = $parametros->IDT; - return $objMetadadosProtocolo; - }); + $parametros = [ + 'IDT' => $parNumIdentificacaoTramite + ]; + + $arrResultado = $this->get($endpoint, $parametros); + + $arrResultado['IDT'] = $parNumIdentificacaoTramite; + $arrResultado['NRE'] = $arrResultado['nre']; + + $objResultado = new stdClass(); + $objResultado->IDT = $parNumIdentificacaoTramite; + $objResultado->NRE = $arrResultado['nre']; + + $multivalorado = false; + if (count($arrResultado['processo']['documentos']) <= 1) { + $arrResultado['processo']['documentos'] = (object) $arrResultado['processo']['documentos'][0]; + } else { + $multivalorado = true; + } + + $objResultado->metadados = $this->converterArrayParaObjeto($arrResultado); + + if ($multivalorado) { + $objResultado->metadados->processo->documentos = (array) $objResultado->metadados->processo->documentos; + } + + return $objResultado; + } catch (\Exception $e) { $mensagem = "Falha na solicitação de metadados do processo"; $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); @@ -1189,7 +1294,7 @@ public static function obterIdTarefaModulo($strIdTarefaModulo) public function cadastrarTramiteDeProcesso($parDblIdProcedimento, $parStrNumeroRegistro, $parNumIdentificacaoTramite, $parStrStaTipoTramite, $parDthRegistroTramite, $parNumIdRepositorioOrigem, $parNumIdEstruturaOrigem, $parNumIdRepositorioDestino, $parNumIdEstruturaDestino, $parObjProtocolo, $parNumTicketComponentesDigitais = null, $parObjComponentesDigitaisSolicitados = null, $bolSinProcessamentoEmBloco = false, $numIdUnidade = null) { - + // $parObjProtocolo if(!isset($parDblIdProcedimento) || $parDblIdProcedimento == 0) { throw new InfraException('Parâmetro $parDblIdProcedimento não informado.'); } @@ -1226,6 +1331,10 @@ public function cadastrarTramiteDeProcesso($parDblIdProcedimento, $parStrNumeroR throw new InfraException('Parâmetro $objProcesso não informado.'); } + if (is_array($parObjProtocolo)) { + $parObjProtocolo = (object) $parObjProtocolo; + } + //Monta dados do processo eletrônico $objProcessoEletronicoDTO = new ProcessoEletronicoDTO(); $objProcessoEletronicoDTO->setStrNumeroRegistro($parStrNumeroRegistro); @@ -1233,8 +1342,8 @@ public function cadastrarTramiteDeProcesso($parDblIdProcedimento, $parStrNumeroR $objProcessoEletronicoDTO->setStrStaTipoProtocolo($parObjProtocolo->staTipoProtocolo); //Montar dados dos procedimentos apensados - if(isset($parObjProtocolo->processoApensado)){ - if(!is_array($parObjProtocolo->processoApensado)){ + if (isset($parObjProtocolo->processoApensado)) { + if (!is_array($parObjProtocolo->processoApensado)) { $parObjProtocolo->processoApensado = array($parObjProtocolo->processoApensado); } @@ -1243,8 +1352,8 @@ public function cadastrarTramiteDeProcesso($parDblIdProcedimento, $parStrNumeroR foreach ($parObjProtocolo->processoApensado as $objProcessoApensado) { $objRelProcessoEletronicoApensadoDTO = new RelProcessoEletronicoApensadoDTO(); $objRelProcessoEletronicoApensadoDTO->setStrNumeroRegistro($parStrNumeroRegistro); - $objRelProcessoEletronicoApensadoDTO->setDblIdProcedimentoApensado($objProcessoApensado->idProcedimentoSEI); - $objRelProcessoEletronicoApensadoDTO->setStrProtocolo($objProcessoApensado->protocolo); + $objRelProcessoEletronicoApensadoDTO->setDblIdProcedimentoApensado($objProcessoApensado['idProcedimentoSEI']); + $objRelProcessoEletronicoApensadoDTO->setStrProtocolo($objProcessoApensado['protocolo']); $arrObjRelProcessoEletronicoApensadoDTO[] = $objRelProcessoEletronicoApensadoDTO; } @@ -1378,6 +1487,10 @@ protected function cadastrarTramiteDeProcessoInternoControlado(ProcessoEletronic */ public static function getHashFromMetaDados($objMeta) { + if (is_array($objMeta)) { + $objMeta = (object) $objMeta; + } + $strHashConteudo = ''; if (isset($objMeta)) { @@ -1385,7 +1498,7 @@ public static function getHashFromMetaDados($objMeta) $strHashConteudo = $objMeta; } else { $matches = array(); - $strHashConteudo = (isset($objMeta->enc_value)) ? $objMeta->enc_value : $objMeta->_; + $strHashConteudo = (isset($objMeta->enc_value)) ? $objMeta->enc_value : $objMeta->conteudo; if (preg_match('/^(.*)<\/hash>$/', $strHashConteudo, $matches, PREG_OFFSET_CAPTURE)) { $strHashConteudo = $matches[1][0]; @@ -1396,6 +1509,19 @@ public static function getHashFromMetaDados($objMeta) return $strHashConteudo; } + public static function getHashFromMetaDadosREST($objMeta) + { + $strHashConteudo = ''; + if (isset($objMeta)) { + if(is_string($objMeta)){ + $strHashConteudo = $objMeta; + } else { + $strHashConteudo = (isset($objMeta['conteudo'])) ? $objMeta['conteudo'] : $objMetaconteudo; + } + } + return $strHashConteudo; + } + private function montarDadosMaisDeUmComponenteDigital($objDocumento, $parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProtocolo, $parObjComponentesDigitaisSolicitados) { $arrayComponentesDigitais = $objDocumento->componenteDigital; @@ -1465,7 +1591,7 @@ private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIden $arrObjComponenteDigitalDTOAux = array(); foreach ($arrObjDocumento as $objDocumento) { - $quantidadeDeComponentesDigitais = count($objDocumento->componenteDigital); + $quantidadeDeComponentesDigitais = count($objDocumento->componentesDigitais); if($quantidadeDeComponentesDigitais > 1){ $arrObjComponenteDigitalDTOAux = self::montarDadosMaisDeUmComponenteDigital($objDocumento, $parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProtocolo, $parObjComponentesDigitaisSolicitados); }else{ @@ -1490,16 +1616,17 @@ private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIden } //Por enquanto, considera que o documento possui apenas um componente digital - if(is_array($objDocumento->componenteDigital) && count($objDocumento->componenteDigital) != 1) { + 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."); } - $objComponenteDigital = is_array($objDocumento->componenteDigital) ? $objDocumento->componenteDigital[0] : $objDocumento->componenteDigital; - $objComponenteDigitalDTO->setStrNome(mb_convert_encoding($objComponenteDigital->nome, 'ISO-8859-1', 'UTF-8')); + $arrComponenteDigital = is_array($objDocumento->componentesDigitais) ? $objDocumento->componentesDigitais[0] : $objDocumento->componentesDigitais; + $objComponenteDigital = (object) $arrComponenteDigital; + $objComponenteDigitalDTO->setStrNome(utf8_decode($objComponenteDigital->nome)); if(isset($objDocumento->especie)){ $objComponenteDigitalDTO->setNumCodigoEspecie(intval($objDocumento->especie->codigo)); - $objComponenteDigitalDTO->setStrNomeEspecieProdutor(mb_convert_encoding($objDocumento->especie->nomeNoProdutor, 'ISO-8859-1', 'UTF-8')); + $objComponenteDigitalDTO->setStrNomeEspecieProdutor(utf8_decode($objDocumento->especie->nomeNoProdutor)); } $strHashConteudo = static::getHashFromMetaDados($objComponenteDigital->hash); @@ -1507,16 +1634,16 @@ private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIden $objComponenteDigitalDTO->setStrAlgoritmoHash(self::ALGORITMO_HASH_DOCUMENTO); $objComponenteDigitalDTO->setStrTipoConteudo($objComponenteDigital->tipoDeConteudo); $objComponenteDigitalDTO->setStrMimeType($objComponenteDigital->mimeType); - $objComponenteDigitalDTO->setStrDadosComplementares($objComponenteDigital->dadosComplementaresDoTipoDeArquivo); + $objComponenteDigitalDTO->setStrDadosComplementares($objComponenteDigital->dadosComplementaresDoTipoDeArquivo); //Registrar componente digital necessita ser enviado pelo trâmite específico //TODO: Teste $parObjComponentesDigitaisSolicitados aqui if(isset($parObjComponentesDigitaisSolicitados)){ - $arrObjItensSolicitados = is_array($parObjComponentesDigitaisSolicitados->processo) ? $parObjComponentesDigitaisSolicitados->processo : array($parObjComponentesDigitaisSolicitados->processo); + $arrObjItensSolicitados = is_array($parObjComponentesDigitaisSolicitados) ? $parObjComponentesDigitaisSolicitados : array($parObjComponentesDigitaisSolicitados); foreach ($arrObjItensSolicitados as $objItemSolicitado) { if(!is_null($objItemSolicitado)){ - $objItemSolicitado->hash = is_array($objItemSolicitado->hash) ? $objItemSolicitado->hash : array($objItemSolicitado->hash); + $objItemSolicitado['hashes'] = is_array($objItemSolicitado['hashes']) ? $objItemSolicitado['hashes'] : array($objItemSolicitado['hashes']); - if($objItemSolicitado->protocolo == $objComponenteDigitalDTO->getStrProtocolo() && in_array($strHashConteudo, $objItemSolicitado->hash) && !$objDocumento->retirado) { + if($objItemSolicitado['protocolo'] == $objComponenteDigitalDTO->getStrProtocolo() && in_array($strHashConteudo, $objItemSolicitado['hashes']) && !$objDocumento->retirado) { $objComponenteDigitalDTO->setStrSinEnviar("S"); } } @@ -1526,7 +1653,10 @@ private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIden //TODO: Avaliar dados do tamanho do documento em bytes salvo na base de dados $objComponenteDigitalDTO->setNumTamanho($objComponenteDigital->tamanhoEmBytes); + if (isset($objComponenteDigital->idAnexo)) { $objComponenteDigitalDTO->setNumIdAnexo($objComponenteDigital->idAnexo); + } + $arrObjComponenteDigitalDTO[] = $objComponenteDigitalDTO; } $arrObjComponenteDigitalDTO = array_merge($arrObjComponenteDigitalDTOAux, $arrObjComponenteDigitalDTO); @@ -1542,72 +1672,83 @@ private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIden return $arrObjComponenteDigitalDTO; } + + public function receberComponenteDigital($parNumIdentificacaoTramite, $parStrHashComponenteDigital, $parStrProtocolo, $parObjParteComponente = null) { - try - { - $parametros = new stdClass(); - $parametros->parametrosParaRecebimentoDeComponenteDigital = new stdClass(); - $parametros->parametrosParaRecebimentoDeComponenteDigital->identificacaoDoComponenteDigital = new stdClass(); - $parametros->parametrosParaRecebimentoDeComponenteDigital->identificacaoDoComponenteDigital->IDT = $parNumIdentificacaoTramite; - $parametros->parametrosParaRecebimentoDeComponenteDigital->identificacaoDoComponenteDigital->protocolo = $parStrProtocolo; - $parametros->parametrosParaRecebimentoDeComponenteDigital->identificacaoDoComponenteDigital->hashDoComponenteDigital = $parStrHashComponenteDigital; - - //Se for passado o parametro $parObjParteComponente retorna apenas parte especifica do componente digital - if(!is_null($parObjParteComponente)){ - $parametros->parametrosParaRecebimentoDeComponenteDigital->parte = $parObjParteComponente; - } + $endpoint = "tramites/{$parNumIdentificacaoTramite}/protocolos/componentes-digitais"; + try { + $identificacaoDoComponenteDigital = [ + 'hashDoComponenteDigital' => $parStrHashComponenteDigital, + 'protocolo' => $parStrProtocolo, + ]; + + // Se for passado o parametro $parObjParteComponente retorna apenas parte especifica do componente digital + if (!is_null($parObjParteComponente)) { + $parte = $parObjParteComponente->inicio . '-' . $parObjParteComponente->fim; + $endpoint = "tramites/{$parNumIdentificacaoTramite}/protocolos/componentes-digitais/partes/{$parte}"; + } + + $strComponenteDigitalBase64 = $this->post($endpoint, $identificacaoDoComponenteDigital); + + $objResultado = new stdClass(); + $objResultado->conteudoDoComponenteDigital = new stdClass(); + $objResultado->conteudoDoComponenteDigital = base64_decode($strComponenteDigitalBase64); + + return $objResultado; - return $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->receberComponenteDigital($parametros); - }); - } catch (\SoapFault $fault) { - $mensagem = $this->tratarFalhaWebService($fault); - throw new InfraException(InfraString::formatarJavaScript($mensagem), $fault); } catch (\Exception $e) { - throw new InfraException("Error Processing Request", $e); + $mensagem = "Falha no recebimento do componente digital"; + $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); + throw new InfraException($mensagem, $e, $detalhes); } } public function consultarTramites($parNumIdTramite = null, $parNumeroRegistro = null, $parNumeroUnidadeRemetente = null, $parNumeroUnidadeDestino = null, $parProtocolo = null, $parNumeroRepositorioEstruturas = null) { + $endpoint = 'tramites'; try { $arrObjTramite = array(); - $parametros = new stdClass(); - $parametros->filtroDeConsultaDeTramites = new stdClass(); - $parametros->filtroDeConsultaDeTramites->IDT = $parNumIdTramite; + $parametros = [ + 'IDT' => $parNumIdTramite + ]; - if(!is_null($parNumeroRegistro)){ - $parametros->filtroDeConsultaDeTramites->NRE = $parNumeroRegistro; - } + if(!is_null($parNumeroRegistro)){ + $parametros['NRE'] = $parNumeroRegistro; + } - if(!is_null($parNumeroUnidadeRemetente) && !is_null($parNumeroRepositorioEstruturas)){ - $parametros->filtroDeConsultaDeTramites->remetente = new stdClass(); - $parametros->filtroDeConsultaDeTramites->remetente->identificacaoDoRepositorioDeEstruturas = $parNumeroRepositorioEstruturas; - $parametros->filtroDeConsultaDeTramites->remetente->numeroDeIdentificacaoDaEstrutura = $parNumeroUnidadeRemetente; - } + if(!is_null($parNumeroUnidadeRemetente) && !is_null($parNumeroRepositorioEstruturas)){ + $parametros['remetente']['identificacaoDoRepositorioDeEstruturas'] = $parNumeroRepositorioEstruturas; + $parametros['remetente']['numeroDeIdentificacaoDaEstrutura'] = $parNumeroUnidadeRemetente; + } - if(!is_null($parNumeroUnidadeDestino) && !is_null($parNumeroRepositorioEstruturas)){ - $parametros->filtroDeConsultaDeTramites->destinatario = new stdClass(); - $parametros->filtroDeConsultaDeTramites->destinatario->identificacaoDoRepositorioDeEstruturas = $parNumeroRepositorioEstruturas; - $parametros->filtroDeConsultaDeTramites->destinatario->numeroDeIdentificacaoDaEstrutura = $parNumeroUnidadeDestino; - } + if(!is_null($parNumeroUnidadeDestino) && !is_null($parNumeroRepositorioEstruturas)){ + $parametros['destinatario']['identificacaoDoRepositorioDeEstruturas'] = $parNumeroRepositorioEstruturas; + $parametros['destinatario']['numeroDeIdentificacaoDaEstrutura'] = $parNumeroUnidadeDestino; + } - if(!is_null($parProtocolo)){ - $parametros->filtroDeConsultaDeTramites->protocolo = $parProtocolo; - } + if (!is_null($parProtocolo)) { + $parametros['protocolo'] = $parProtocolo; + } - $objTramitesEncontrados = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->consultarTramites($parametros); - }); + $arrResultado = $this->get($endpoint, $parametros); + + if (isset($arrResultado['tramites']) && !empty($arrResultado['tramites'][0])) { + + $itensHistorico = []; + foreach ($arrResultado['tramites'][0]['mudancasDeSituacao'] as $mudancaDeSituacao) { + $itensHistorico['operacao'][] = $mudancaDeSituacao; + } + + $arrResultado['tramites'][0] = array_filter($arrResultado['tramites'][0], function($value) { + return !is_null($value); + }); + + $arrObjTramite[] = $this->converterArrayParaObjeto($arrResultado['tramites'][0]); + $arrObjTramite[0]->itensHistorico = (object) $itensHistorico; - if(isset($objTramitesEncontrados->tramitesEncontrados) && isset($objTramitesEncontrados->tramitesEncontrados->tramite)) { - $arrObjTramite = $objTramitesEncontrados->tramitesEncontrados->tramite; - if(!is_array($arrObjTramite)) { - $arrObjTramite = array($objTramitesEncontrados->tramitesEncontrados->tramite); } - } return $arrObjTramite; @@ -1620,24 +1761,18 @@ public function consultarTramites($parNumIdTramite = null, $parNumeroRegistro = public function consultarTramitesProtocolo($parProtocoloFormatado) { + $arrObjTramite = array(); try { - $arrObjTramite = array(); - $parametros = new stdClass(); - $parametros->filtroDeConsultaDeTramites = new stdClass(); - $parametros->filtroDeConsultaDeTramites->protocolo = $parProtocoloFormatado; - - $objTramitesEncontrados = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->consultarTramites($parametros); - }); + $parametros = [ + 'protocolo' => $parProtocoloFormatado + ]; - if(isset($objTramitesEncontrados->tramitesEncontrados)) { + $arrResultado = $this->consultarTramites(null, null, null, null, $parametros['protocolo']); - $arrObjTramite = $objTramitesEncontrados->tramitesEncontrados->tramite; - if(!is_array($arrObjTramite)) { - $arrObjTramite = array($objTramitesEncontrados->tramitesEncontrados->tramite); + if (isset($arrResultado)) { + $arrObjTramite = $arrResultado; } - } return $arrObjTramite; } catch (\Exception $e) { @@ -1649,14 +1784,16 @@ public function consultarTramitesProtocolo($parProtocoloFormatado) public function cienciaRecusa($parNumIdTramite) { + $endpoint = "tramites/{$parNumIdTramite}/ciencia"; try { - $parametros = new stdClass(); - $parametros->IDT = $parNumIdTramite; - //return $this->getObjPenWs()->cienciaRecusa($parametro); - return $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->cienciaRecusa($parametros); - }); + $parametros = [ + 'IDT' => $parNumIdTramite + ]; + + $arrResultado = $this->get($endpoint, $parametros); + return $arrResultado; + } catch (\Exception $e) { $mensagem = "Falha no registro de ciência da recusa de trâmite"; $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); @@ -1664,7 +1801,7 @@ public function cienciaRecusa($parNumIdTramite) } } - /** + /** * Retorna o estado atual do procedimento no api-pen * * @param integer $dblIdProcedimento @@ -1674,61 +1811,50 @@ public function cienciaRecusa($parNumIdTramite) */ public function consultarEstadoProcedimento($strProtocoloFormatado = '', $numIdRepositorio = null, $numIdEstrutura = null) { - $objBD = new GenericoBD($this->inicializarObjInfraIBanco()); + $objBD = new GenericoBD($this->inicializarObjInfraIBanco()); - $objProtocoloDTO = new ProtocoloDTO(); - $objProtocoloDTO->setStrProtocoloFormatado($strProtocoloFormatado); - $objProtocoloDTO->setNumMaxRegistrosRetorno(1); - $objProtocoloDTO->retDblIdProtocolo(); - $objProtocoloDTO->retStrProtocoloFormatado(); - $objProtocoloDTO->retStrStaEstado(); + $objProtocoloDTO = new ProtocoloDTO(); + $objProtocoloDTO->setStrProtocoloFormatado($strProtocoloFormatado); + $objProtocoloDTO->setNumMaxRegistrosRetorno(1); + $objProtocoloDTO->retDblIdProtocolo(); + $objProtocoloDTO->retStrProtocoloFormatado(); + $objProtocoloDTO->retStrStaEstado(); - $objProtocoloDTO = $objBD->consultar($objProtocoloDTO); + $objProtocoloDTO = $objBD->consultar($objProtocoloDTO); if (empty($objProtocoloDTO)) { throw new InfraException(mb_convert_encoding(sprintf('Nenhum procedimento foi encontrado com o id %s', $strProtocoloFormatado), 'UTF-8', 'ISO-8859-1')); } if ($objProtocoloDTO->getStrStaEstado() != ProtocoloRn::$TE_PROCEDIMENTO_BLOQUEADO) { - throw new InfraException(mb_convert_encoding('O processo não esta com o estado com "Em Processamento" ou "Bloqueado"', 'UTF-8', 'ISO-8859-1')); + throw new InfraException(mb_convert_encoding('O processo não esta com o estado com "Em Processamento" ou "Bloqueado"', 'UTF-8', 'ISO-8859-1')); } - $objTramiteDTO = new TramiteDTO(); - $objTramiteDTO->setNumIdProcedimento($objProtocoloDTO->retDblIdProtocolo()); - $objTramiteDTO->setOrd('Registro', InfraDTO::$TIPO_ORDENACAO_DESC); - $objTramiteDTO->setNumMaxRegistrosRetorno(1); - $objTramiteDTO->retNumIdTramite(); + $objTramiteDTO = new TramiteDTO(); + $objTramiteDTO->setNumIdProcedimento($objProtocoloDTO->getDblIdProtocolo()); + $objTramiteDTO->setOrd('Registro', InfraDTO::$TIPO_ORDENACAO_DESC); + $objTramiteDTO->setNumMaxRegistrosRetorno(1); + $objTramiteDTO->retNumIdTramite(); - $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); - $arrObjTramiteDTO = $objTramiteBD->listar($objTramiteDTO); + $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); + $arrObjTramiteDTO = $objTramiteBD->listar($objTramiteDTO); if(!$arrObjTramiteDTO){ throw new InfraException('Trâmite não encontrado'); } - $objTramiteDTO = $arrObjTramiteDTO[0]; + $objTramiteDTO = $arrObjTramiteDTO[0]; - $objFiltro = new stdClass(); - $objFiltro->filtroDeConsultaDeTramites = new stdClass(); - $objFiltro->filtroDeConsultaDeTramites->IDT = $objTramiteDTO->getNumIdTramite(); + $arrResultado = $this->consultarTramites($objTramiteDTO->getNumIdTramite()); - $objResultado = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($objFiltro) { - return $objPenWs->consultarTramites($objFiltro); - }); - - $objTramitesEncontrados = $objResultado->tramitesEncontrados; - - if (empty($objTramitesEncontrados) || !isset($objTramitesEncontrados->tramite)) { - throw new InfraException(mb_convert_encoding(sprintf('Nenhum tramite foi encontrado para o procedimento %s', $strProtocoloFormatado), 'UTF-8', 'ISO-8859-1')); + if (empty($arrResultado) || !isset($arrResultado)) { + throw new InfraException(mb_convert_encoding(sprintf('Nenhum tramite foi encontrado para o procedimento %s', $strProtocoloFormatado), 'UTF-8', 'ISO-8859-1')); } - if(!is_array($objTramitesEncontrados->tramite)){ - $objTramitesEncontrados->tramite = array($objTramitesEncontrados->tramite); - } - $arrObjTramite = (array) $objTramitesEncontrados->tramite; + $arrObjTramite = (array) $arrResultado; + $objTramite = array_pop($arrObjTramite); - $objTramite = array_pop($arrObjTramite); if (empty($numIdRepositorio)) { $objPenParametroRN = new PenParametroRN(); @@ -1787,6 +1913,7 @@ public function consultarEstadoProcedimento($strProtocoloFormatado = '', $numIdR public function enviarReciboDeTramite($parNumIdTramite, $parDthRecebimento, $parStrReciboTramite) { + $endpoint = "tramites/{$parNumIdTramite}/recibo"; try { $strHashAssinatura = null; @@ -1799,15 +1926,12 @@ public function enviarReciboDeTramite($parNumIdTramite, $parDthRecebimento, $par openssl_sign($parStrReciboTramite, $strHashAssinatura, $objPrivatekey, 'sha256'); $strHashDaAssinaturaBase64 = base64_encode($strHashAssinatura); - $parametros = new stdClass(); - $parametros->dadosDoReciboDeTramite = new stdClass(); - $parametros->dadosDoReciboDeTramite->IDT = $parNumIdTramite; - $parametros->dadosDoReciboDeTramite->dataDeRecebimento = $parDthRecebimento; - $parametros->dadosDoReciboDeTramite->hashDaAssinatura = $strHashDaAssinaturaBase64; + $envioDeReciboDeTramite = [ + 'dataDeRecebimento' => $parDthRecebimento, + 'hashDaAssinatura' => $strHashDaAssinaturaBase64, + ]; - $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->enviarReciboDeTramite($parametros); - }); + $this->post($endpoint, $envioDeReciboDeTramite); return $strHashDaAssinaturaBase64; @@ -1824,12 +1948,16 @@ public function enviarReciboDeTramite($parNumIdTramite, $parDthRecebimento, $par public function receberReciboDeTramite($parNumIdTramite) { - try { - $parametros = new stdClass(); - $parametros->IDT = $parNumIdTramite; - return $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->receberReciboDeTramite($parametros); - }); + $endpoint = "tramites/{$parNumIdTramite}/recibo"; + try{ + $parametros = [ + 'IDT' => $parNumIdTramite + ]; + + $arrResultado = $this->get($endpoint, $parametros); + $arrResultado['recibo']['hashDoComponenteDigital'] = $arrResultado['recibo']['hashesDosComponentesDigitais'][0]; + + return $this->converterArrayParaObjeto($arrResultado); } catch (\Exception $e) { $mensagem = "Falha no recebimento de recibo de trâmite. ". $this->tratarFalhaWebService($e); @@ -1846,14 +1974,16 @@ public function receberReciboDeTramite($parNumIdTramite) */ public function receberReciboDeEnvio($parNumIdTramite) { - try { - $parametros = new stdClass(); - $parametros->IDT = $parNumIdTramite; - $resultado = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->receberReciboDeEnvio($parametros); - }); + $endpoint = "tramites/{$parNumIdTramite}/recibo-de-envio"; + try{ + $parametros = [ + 'IDT' => $parNumIdTramite + ]; - return $resultado->conteudoDoReciboDeEnvio; + $arrResultado = $this->get($endpoint, $parametros); + $arrResultado['reciboDeEnvio']['hashDoComponenteDigital'] = $arrResultado['reciboDeEnvio']['hashesDosComponentesDigitais'][0]; + + return $this->converterArrayParaObjeto($arrResultado); } catch (\Exception $e) { $mensagem = "Falha no recebimento de recibo de trâmite de envio. " . $this->tratarFalhaWebService($e); @@ -1977,17 +2107,18 @@ public function obterIdTarefaSEIMapeado($strCodigoOperacao) * @throws Exception|InfraException * @return null */ + public function cancelarTramite($idTramite) { - $parametros = new stdClass(); - $parametros->IDT = $idTramite; - + $endpoint = "tramites/{$idTramite}"; try{ - $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->cancelarEnvioDeTramite($parametros); - }); - } - catch(\Exception $e) { + $parametros = [ + 'IDT' => $idTramite + ]; + + $this->delete($endpoint, $parametros); + + } catch(\Exception $e) { $mensagem = "Falha no cancelamento de trâmite de processo"; $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); throw new InfraException($mensagem, $e, $detalhes); @@ -2006,16 +2137,15 @@ public function cancelarTramite($idTramite) public function recusarTramite($idTramite, $justificativa, $motivo) { try { + $endpoint = "tramites/{$idTramite}/recusa"; $objProcessoEletronicoRN = new ProcessoEletronicoRN(); - $parametros = new stdClass(); - $parametros->recusaDeTramite = new stdClass(); - $parametros->recusaDeTramite->IDT = $idTramite; - $parametros->recusaDeTramite->justificativa = mb_convert_encoding($objProcessoEletronicoRN->reduzirCampoTexto($justificativa, 1000), 'UTF-8', 'ISO-8859-1'); - $parametros->recusaDeTramite->motivo = $motivo; + + $parametros = [ + 'justificativa' => utf8_encode($objProcessoEletronicoRN->reduzirCampoTexto($justificativa, 1000)), + 'motivo' => $motivo + ]; - $resultado = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->recusarTramite($parametros); - }); + $this->post($endpoint, $parametros); } catch (Exception $e) { $mensagem = "Falha na recusa de trâmite de processo"; @@ -2040,53 +2170,53 @@ public function cadastrarTramitePendente($numIdentificacaoTramite, $idAtividadeE } public function isDisponivelCancelarTramite($strProtocolo = '') - { - //Obtem o id_rh que representa a unidade no barramento - $objPenParametroRN = new PenParametroRN(); - $numIdRespositorio = $objPenParametroRN->getParametro('PEN_ID_REPOSITORIO_ORIGEM'); + { + //Obtem o id_rh que representa a unidade no barramento + $objPenParametroRN = new PenParametroRN(); + $numIdRespositorio = $objPenParametroRN->getParametro('PEN_ID_REPOSITORIO_ORIGEM'); - //Obtem os dados da unidade - $objPenUnidadeDTO = new PenUnidadeDTO(); - $objPenUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); - $objPenUnidadeDTO->retNumIdUnidadeRH(); + //Obtem os dados da unidade + $objPenUnidadeDTO = new PenUnidadeDTO(); + $objPenUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objPenUnidadeDTO->retNumIdUnidadeRH(); - $objGenericoBD = new GenericoBD($this->inicializarObjInfraIBanco()); - $objPenUnidadeDTO = $objGenericoBD->consultar($objPenUnidadeDTO); + $objGenericoBD = new GenericoBD($this->inicializarObjInfraIBanco()); + $objPenUnidadeDTO = $objGenericoBD->consultar($objPenUnidadeDTO); - //Obtem os dados do último trâmite desse processo no barramento - $objProtocoloDTO = new ProtocoloDTO(); - $objProtocoloDTO->setStrProtocoloFormatado($strProtocolo); - $objProtocoloDTO->retDblIdProtocolo(); + //Obtem os dados do último trâmite desse processo no barramento + $objProtocoloDTO = new ProtocoloDTO(); + $objProtocoloDTO->setStrProtocoloFormatado($strProtocolo); + $objProtocoloDTO->retDblIdProtocolo(); - $objProtocoloRN = new ProtocoloRN(); - $objProtocoloDTO = $objProtocoloRN->consultarRN0186($objProtocoloDTO); + $objProtocoloRN = new ProtocoloRN(); + $objProtocoloDTO = $objProtocoloRN->consultarRN0186($objProtocoloDTO); - $objTramiteDTO = new TramiteDTO(); - $objTramiteDTO->setNumIdProcedimento($objProtocoloDTO->retDblIdProtocolo()); - $objTramiteDTO->setOrd('Registro', InfraDTO::$TIPO_ORDENACAO_DESC); - $objTramiteDTO->setNumMaxRegistrosRetorno(1); - $objTramiteDTO->retNumIdTramite(); + $objTramiteDTO = new TramiteDTO(); + $objTramiteDTO->setNumIdProcedimento($objProtocoloDTO->retDblIdProtocolo()); + $objTramiteDTO->setOrd('Registro', InfraDTO::$TIPO_ORDENACAO_DESC); + $objTramiteDTO->setNumMaxRegistrosRetorno(1); + $objTramiteDTO->retNumIdTramite(); - $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); - $arrObjTramiteDTO = $objTramiteBD->listar($objTramiteDTO); + $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); + $arrObjTramiteDTO = $objTramiteBD->listar($objTramiteDTO); if(!$arrObjTramiteDTO){ - return false; + return false; } - $objTramiteDTO = $arrObjTramiteDTO[0]; + $objTramiteDTO = $arrObjTramiteDTO[0]; try { - $parametros = new stdClass(); - $parametros->filtroDeConsultaDeTramites = new stdClass(); - $parametros->filtroDeConsultaDeTramites->IDT = $objTramiteDTO->getNumIdTramite(); - $parametros->filtroDeConsultaDeTramites->remetente = new stdClass(); - $parametros->filtroDeConsultaDeTramites->remetente->identificacaoDoRepositorioDeEstruturas = $numIdRespositorio; - $parametros->filtroDeConsultaDeTramites->remetente->numeroDeIdentificacaoDaEstrutura = $objPenUnidadeDTO->getNumIdUnidadeRH(); - - $objMeta = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->consultarTramites($parametros); - }); + $parametros = new stdClass(); + $parametros->filtroDeConsultaDeTramites = new stdClass(); + $parametros->filtroDeConsultaDeTramites->IDT = $objTramiteDTO->getNumIdTramite(); + $parametros->filtroDeConsultaDeTramites->remetente = new stdClass(); + $parametros->filtroDeConsultaDeTramites->remetente->identificacaoDoRepositorioDeEstruturas = $numIdRespositorio; + $parametros->filtroDeConsultaDeTramites->remetente->numeroDeIdentificacaoDaEstrutura = $objPenUnidadeDTO->getNumIdUnidadeRH(); + + $objMeta = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { + return $objPenWs->consultarTramites($parametros); + }); if($objMeta->tramitesEncontrados) { $arrObjMetaTramite = !is_array($objMeta->tramitesEncontrados->tramite) ? array($objMeta->tramitesEncontrados->tramite) : $objMeta->tramitesEncontrados->tramite; @@ -2098,40 +2228,43 @@ public function isDisponivelCancelarTramite($strProtocolo = '') ); if(in_array($objMetaTramite->situacaoAtual, $strSituacoesDisponíveisCancelamento)){ - return true; + return true; } } - return false; + return false; } catch(SoapFault $e) { - return false; + return false; } catch(Exception $e) { - return false; + return false; } } - public function consultarHipotesesLegais($ativos = true) { - try{ - $parametros = new stdClass(); - $parametros->filtroDeHipotesesLegais = new stdClass(); - $parametros->filtroDeHipotesesLegais->ativos = $ativos; + public function consultarHipotesesLegais($ativos = true) + { + $endpoint = "hipoteses"; - $hipoteses = $this->tentarNovamenteSobErroHTTP(function($objPenWs) use ($parametros) { - return $objPenWs->consultarHipotesesLegais($parametros); - }); + $parametros = [ + 'ativos' => $ativos + ]; - if (empty($hipoteses)) { - return []; - } - return $hipoteses; + try { + $arrResultado = $this->get($endpoint, $parametros); + return $arrResultado; - } catch(Exception $e){ - $mensagem = "Falha na obtenção de hipóteses legais"; - $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); - throw new InfraException($mensagem, $e, $detalhes); - } + if (empty($hipoteses)) { + return []; + } + + return $hipoteses; + + } catch(Exception $e){ + $mensagem = "Falha na obtenção de hipóteses legais"; + $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); + throw new InfraException($mensagem, $e, $detalhes); + } } protected function contarConectado(ProcessoEletronicoDTO $objProcessoEletronicoDTO) @@ -2197,17 +2330,21 @@ public static function comparacaoOrdemComponenteDigitais($parComponenteDigital1, public static function obterDocumentosProtocolo($parObjProtocolo, $parBolExtrairAnexados = false) { $arrObjDocumento = array(); - if(isset($parObjProtocolo->documento)){ - $arrObjProtocolo = is_array($parObjProtocolo->documento) ? $parObjProtocolo->documento : array($parObjProtocolo->documento); + if(isset($parObjProtocolo->documentos)){ + $arrObjProtocolo = is_array($parObjProtocolo->documentos) ? $parObjProtocolo->documentos : array($parObjProtocolo->documentos); usort($arrObjProtocolo, array("ProcessoEletronicoRN", "comparacaoOrdemAjustadaDocumentos")); //Tratamento recursivo para processos anexados foreach ($arrObjProtocolo as $objProtocolo) { + if (is_array(($objProtocolo))) { + $objProtocolo = (object) $objProtocolo; + } $bolEhProcessoAnexado = $objProtocolo->staTipoProtocolo == ProcessoEletronicoRN::$STA_TIPO_PROTOCOLO_PROCESSO; if($parBolExtrairAnexados && $bolEhProcessoAnexado){ $arrProtocolosAnexados = ProcessoEletronicoRN::obterDocumentosProtocolo($objProtocolo, $parBolExtrairAnexados); $arrObjDocumento = array_merge($arrObjDocumento, $arrProtocolosAnexados); } else { + if(!$bolEhProcessoAnexado){ $objProtocolo->idProcedimentoSEI = $parObjProtocolo->idProcedimentoSEI; } @@ -2220,7 +2357,7 @@ public static function obterDocumentosProtocolo($parObjProtocolo, $parBolExtrair //Quando se tratar de um Documento Avulso, a ordem será sempre 1 $parObjProtocolo->ordem = 1; $parObjProtocolo->ordemAjustada = 1; - $parObjProtocolo->componenteDigital = self::obterComponentesDocumentos($parObjProtocolo); + $parObjProtocolo->componentesDigitais = self::obterComponentesDocumentos($parObjProtocolo); return array($parObjProtocolo); } @@ -2230,9 +2367,12 @@ public static function obterDocumentosProtocolo($parObjProtocolo, $parBolExtrair $arrObjDocumentoPadronizados = ($parBolExtrairAnexados) ? $arrObjDocumento : $arrObjProtocolo; - foreach ($arrObjDocumentoPadronizados as $objDocumento) { - $objDocumento->componenteDigital = self::obterComponentesDocumentos($objDocumento); - } + foreach ($arrObjDocumentoPadronizados as $documento) { + if (is_array($documento) && $documento['componentesDigitais']) { + $documento = (object) $documento; + } + $documento->componentesDigitais = self::obterComponentesDocumentos($documento); + } return $arrObjDocumentoPadronizados; } @@ -2240,17 +2380,15 @@ public static function obterDocumentosProtocolo($parObjProtocolo, $parBolExtrair public static function obterComponentesDocumentos($parObjDocumento) { - $arrObjComponenteDigital=array(); - if(isset($parObjDocumento->componenteDigital)){ - - $arrObjComponenteDigital = is_array($parObjDocumento->componenteDigital) ? $parObjDocumento->componenteDigital : array($parObjDocumento->componenteDigital); - usort($arrObjComponenteDigital, array("ProcessoEletronicoRN", "comparacaoOrdemComponenteDigitais")); - } - - - return $arrObjComponenteDigital; - - } + + $arrObjComponenteDigital = array(); + if (isset($parObjDocumento->componentesDigitais)) { + $arrObjComponenteDigital = is_array($parObjDocumento->componentesDigitais) ? $parObjDocumento->componentesDigitais : array($parObjDocumento->componentesDigitais); + usort($arrObjComponenteDigital, array("ProcessoEletronicoRN", "comparacaoOrdemComponenteDigitais")); + } + + return $arrObjComponenteDigital; + } /** * Retorna a referência para o processo ou documento avulso @@ -2302,11 +2440,11 @@ public static function obterUnidadeParaRegistroDocumento($parDblIdProcedimento) * @param $parObjDocumento * @return array */ - public static function obterComponentesDigitaisDocumento($parObjDocumento) + public static function obterComponentesDigitaisDocumento($parObjDocumento) { $arrObjComponenteDigital = array(); - if(isset($parObjDocumento->componenteDigital)){ - $arrObjComponenteDigital = is_array($parObjDocumento->componenteDigital) ? $parObjDocumento->componenteDigital : array($parObjDocumento->componenteDigital); + if(isset($parObjDocumento->componentesDigitais)){ + $arrObjComponenteDigital = is_array($parObjDocumento->componentesDigitais) ? $parObjDocumento->componentesDigitais : array($parObjDocumento->componentesDigitais); } return $arrObjComponenteDigital; @@ -2326,17 +2464,18 @@ public static function obterComponentesDigitaisDocumento($parObjDocumento) */ public static function desmembrarProcessosAnexados($parObjProtocolo) { + if(!ProcessoEletronicoRN::existeProcessoAnexado($parObjProtocolo)){ - return $parObjProtocolo; + return $parObjProtocolo; } - $arrObjRefProcessosAnexados = array(); - $objProcessoPrincipal = clone $parObjProtocolo; - $objProcessoPrincipal->documento = array(); - $arrObjDocumentosOrdenados = ProcessoEletronicoRN::obterDocumentosProtocolo($parObjProtocolo, true); - usort($arrObjDocumentosOrdenados, array("ProcessoEletronicoRN", "comparacaoOrdemDocumentos")); + $arrObjRefProcessosAnexados = array(); + $objProcessoPrincipal = clone $parObjProtocolo; + $objProcessoPrincipal->documentos = array(); + $arrObjDocumentosOrdenados = ProcessoEletronicoRN::obterDocumentosProtocolo($parObjProtocolo, true); + usort($arrObjDocumentosOrdenados, array("ProcessoEletronicoRN", "comparacaoOrdemDocumentos")); - // Agrupamento dos documentos por processo + // Agrupamento dos documentos por processo foreach ($arrObjDocumentosOrdenados as $objDocumento) { $bolDocumentoAnexado = ProcessoEletronicoRN::documentoFoiAnexado($parObjProtocolo, $objDocumento); $strProtocoloProcAnexado = ($bolDocumentoAnexado) ? $objDocumento->protocoloDoProcessoAnexado : $objProcessoPrincipal->protocolo; @@ -2346,20 +2485,20 @@ public static function desmembrarProcessosAnexados($parObjProtocolo) // existe apenas o número do protocolo de referência if($bolDocumentoAnexado && !array_key_exists($strProtocoloProcAnexado, $arrObjRefProcessosAnexados)){ $objProcessoAnexado = clone $objProcessoPrincipal; - $objProcessoAnexado->documento = array(); + $objProcessoAnexado->documentos = array(); $objProcessoAnexado->protocolo = $strProtocoloProcAnexado; - $objProcessoAnexado->ordemAjustada = count($objProcessoPrincipal->documento) + 1; - $objProcessoPrincipal->documento[] = $objProcessoAnexado; + $objProcessoAnexado->ordemAjustada = count($objProcessoPrincipal->documentos) + 1; + $objProcessoPrincipal->documentos[] = $objProcessoAnexado; $arrObjRefProcessosAnexados[$strProtocoloProcAnexado] = $objProcessoAnexado; } $objProcessoDoDocumento = ($bolDocumentoAnexado) ? $arrObjRefProcessosAnexados[$strProtocoloProcAnexado] : $objProcessoPrincipal; $objDocumentoReposicionado = clone $objDocumento; - $objDocumentoReposicionado->ordemAjustada = count($objProcessoDoDocumento->documento) + 1; - $objProcessoDoDocumento->documento[] = $objDocumentoReposicionado; + $objDocumentoReposicionado->ordemAjustada = count($objProcessoDoDocumento->documentos) + 1; + $objProcessoDoDocumento->documentos[] = $objDocumentoReposicionado; } - return $objProcessoPrincipal; + return $objProcessoPrincipal; } /** @@ -2417,10 +2556,10 @@ public static function obterTamanhoBlocoTransferencia(){ private static function documentoFoiAnexado($parObjProtocolo, $parObjDocumento) { return ( - isset($parObjDocumento->protocoloDoProcessoAnexado) && - !empty($parObjDocumento->protocoloDoProcessoAnexado) && - $parObjProtocolo->protocolo != $parObjDocumento->protocoloDoProcessoAnexado - ); + isset($parObjDocumento->protocoloDoProcessoAnexado) && + !empty($parObjDocumento->protocoloDoProcessoAnexado) && + $parObjProtocolo->protocolo != $parObjDocumento->protocoloDoProcessoAnexado + ); } /** @@ -2590,4 +2729,121 @@ public function listarAssociacoesDocumentos($idProcedimento) } return $arrIdDocumentos; } -} + + /** + * Converter arrays associativo para objetos + */ + public static function converterArrayParaObjeto($array) + { + if (is_array($array)) { + // Verificar se o array é associativo + if (self::verificarSeArrayAssociativo($array)) { + $object = new stdClass(); + foreach ($array as $key => $value) { + $object->$key = self::converterArrayParaObjeto($value); + } + return $object; + } else { + // Para arrays indexados, manter como está + return array_map([self::class, 'converterArrayParaObjeto'], $array); + } + } + + return $array; + } + + private static function verificarSeArrayAssociativo(array $array): bool + { + return array_keys($array) !== range(0, count($array) - 1); + } + + + /** + * Consulta as estruturas de um repositório de estruturas. + * + * @param int $idRepositorioEstrutura O ID do repositório de estruturas. + * @param array $parametros Parâmetros adicionais para a consulta. + * @throws InfraException Falha na obtenção de unidades externas. + * @return array + */ + public function consultarEstruturas($idRepositorioEstrutura, $parametros = []) + { + $endpoint = "repositorios-de-estruturas/{$idRepositorioEstrutura}/estruturas-organizacionais"; + try { + $arrResultado = $this->get($endpoint, $parametros); + return $arrResultado; + } catch (Exception $e) { + $mensagem = "Falha na obtenção de unidades externas"; + $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); + throw new InfraException($mensagem, $e, $detalhes); + } + } + + /** + * Consulta as estruturas de um repositório de estruturas. + * + * @param int $idRepositorioEstrutura O ID do repositório de estruturas. + * @param array $parametros Parâmetros adicionais para a consulta. + * @throws InfraException Falha na obtenção de unidades externas. + * @return array + */ + public function buscarEstruturaRest($idRepositorioEstrutura, $idUnidadeRH) + { + $endpoint = "repositorios-de-estruturas/{$idRepositorioEstrutura}/estruturas-organizacionais/{$idUnidadeRH}"; + try { + $arrResultado = $this->get($endpoint); + return $arrResultado; + } catch (Exception $e) { + $mensagem = "Falha na obtenção de unidades externas"; + $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); + LogSEI::getInstance()->gravar($detalhes, InfraLog::$ERRO); + throw new InfraException($mensagem, $e, $mensagem); + } + } + + /** + * Iniciar requisição HTTP utilizado para comunicação Webservice REST + * + */ + private function getArrPenWsRest($method, $endpoint, $options = []) + { + try { + $arrResultado = $this->strClientGuzzle->request($method, $endpoint, $options); + $base64 = $arrResultado->getBody()->getContents(); + + $foo = json_decode($arrResultado->getBody(), true); + if ($foo != null) { + return $foo; + } + + return $base64; + } catch (RequestException $e) { + $erroResposta = json_decode($e->getResponse()->getBody()->getContents()); + + // Lança uma nova exceção com os detalhes do RequestException + throw new Exception(json_encode([ + 'error' => true, + 'codigoErro' => $erroResposta->codigoErro, + 'message' => $erroResposta->mensagem, + 'exception' => $e->getMessage(), + 'details' => $e->hasResponse() ? (string) $e->getResponse()->getBody() : 'No response body' + ])); + } + } + + public function get($endpoint, $params = []) { + return $this->getArrPenWsRest('GET', $endpoint, ['query' => $params]); + } + + public function post($endpoint, $data = []) { + return $this->getArrPenWsRest('POST', $endpoint, ['json' => $data]); + } + + public function put($endpoint, $data = []) { + return $this->getArrPenWsRest('PUT', $endpoint, ['json' => $data]); + } + + public function delete($endpoint, $params = []) { + return $this->getArrPenWsRest('DELETE', $endpoint, ['query' => $params]); + } +} \ No newline at end of file diff --git a/src/rn/ReceberComponenteDigitalRN.php b/src/rn/ReceberComponenteDigitalRN.php index def90b2c0..82077f3e2 100755 --- a/src/rn/ReceberComponenteDigitalRN.php +++ b/src/rn/ReceberComponenteDigitalRN.php @@ -150,7 +150,7 @@ protected function compactarAnexosDoDocumento($parNumIdDocumento, $parArrAnexoDT $contDocumentosDto = 0; $arrayRetornoObjAnexoDTO = array(); - foreach ($arrObjDocumentoDTO as $objDocumentoDTO){ + foreach ($arrObjDocumentoDTO as $objDocumentoDTO) { $contDocumentosDto++; $objAnexoRN = new AnexoRN(); @@ -173,7 +173,7 @@ protected function compactarAnexosDoDocumento($parNumIdDocumento, $parArrAnexoDT $numSequencial++; if ($objAnexoDTO==null){ - $objInfraException->adicionarValidacao('Documento '.$objDocumentoDTO->getStrProtocoloDocumentoFormatado() .' não encontrado.'); + $objInfraException->adicionarValidacao('Documento '.$objDocumentoDTO->getStrProtocoloDocumentoFormatado() .' não encontrado.'); }else{ /** * Aqui será atribuído um nome aos anexos @@ -191,14 +191,14 @@ protected function compactarAnexosDoDocumento($parNumIdDocumento, $parArrAnexoDT $strLocalizacaoArquivo = DIR_SEI_TEMP.'/'. $objAnexoDTO->getNumIdAnexo() ; //if ($zipFile->addFile($strLocalizacaoArquivo,'['.$numComponenteDigital.']-'.InfraUtil::formatarNomeArquivo($strNomeArquivo)) === false){ if ($zipFile->addFile($strLocalizacaoArquivo, '['.$numSequencial.']-'.InfraUtil::formatarNomeArquivo($strNomeArquivo)) === false){ - throw new InfraException('Erro adicionando arquivo externo ao zip.'); + throw new InfraException('Erro adicionando arquivo externo ao zip.'); } else{ - /** - * Aqui quer dizer que o arquivo já foi colocado dentro do zip. - * Vamos colocá-lo em um array e depois utilizarmos este array para fazer as exclusões. - */ - array_push($arrayAnexosExcluirFisicamente, $strLocalizacaoArquivo); + /** + * Aqui quer dizer que o arquivo já foi colocado dentro do zip. + * Vamos colocá-lo em um array e depois utilizarmos este array para fazer as exclusões. + */ + array_push($arrayAnexosExcluirFisicamente, $strLocalizacaoArquivo); } } } @@ -208,7 +208,7 @@ protected function compactarAnexosDoDocumento($parNumIdDocumento, $parArrAnexoDT } $objInfraException->lancarValidacoes(); if ($zipFile->close() === false) { - throw new InfraException('Não foi possível fechar arquivo zip.'); + throw new InfraException('Não foi possível fechar arquivo zip.'); } $objAnexoDTO = new AnexoDTO(); $arrNomeArquivo = explode('/', $strCaminhoCompletoArquivoZip); @@ -222,7 +222,7 @@ protected function compactarAnexosDoDocumento($parNumIdDocumento, $parArrAnexoDT * Vamos varrer os arquivos que devem ser excluídos fisicamente da pasta temporária e excluí-los */ foreach ($arrayAnexosExcluirFisicamente as $caminhoArquivoExcluirFisicamente){ - unlink($caminhoArquivoExcluirFisicamente); + unlink($caminhoArquivoExcluirFisicamente); } } return $objAnexoDTO; @@ -243,6 +243,7 @@ private function atualizarAnexoDoComponenteDigital($parObjComponenteDigitalDTO, $objComponenteDigitalDTO->setStrNumeroRegistro($parObjComponenteDigitalDTO->getStrNumeroRegistro()); $objComponenteDigitalDTO->setDblIdDocumento($parObjComponenteDigitalDTO->getDblIdDocumento()); $objComponenteDigitalDTO->setDblIdProcedimento($parObjComponenteDigitalDTO->getDblIdProcedimento()); + //$objComponenteDigitalDTO->setNumOrdem($parObjComponenteDigitalDTO->getNumOrdem()); $objComponenteDigitalDTO->setNumIdAnexo($parObjAnexoDTO->getNumIdAnexo()); $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); $objComponenteDigitalDTO = $objComponenteDigitalBD->alterar($objComponenteDigitalDTO); @@ -254,10 +255,14 @@ private function atualizarAnexoDoComponenteDigital($parObjComponenteDigitalDTO, * */ public function copiarComponenteDigitalPastaTemporaria($parObjComponenteDigital, $parObjConteudo) - { - if(!isset($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; @@ -277,7 +282,7 @@ public function copiarComponenteDigitalPastaTemporaria($parObjComponenteDigital, } public function validarIntegridadeDoComponenteDigital(AnexoDTO $objAnexoDTO, $strHashConteudo, $parNumIdentificacaoTramite, $parNumOrdemComponente) - { + { $strHashInformado = $strHashConteudo; $strHashInformado = base64_decode($strHashInformado); @@ -373,4 +378,4 @@ public function cadastrarAnexoDoDocumento(AnexoDTO $parObjAnexoDTO) $objDocumentoRN->alterarRN0004($objDocumentoDTO); } -} +} \ No newline at end of file diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index effb562f4..74a3d57ad 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -21,6 +21,7 @@ class ReceberProcedimentoRN extends InfraRN private $objSeiRN; private $objEnviarReciboTramiteRN; private $objExpedirProcedimentoRN; + private $objReceberComponenteDigitalRN; public function __construct() { @@ -245,7 +246,7 @@ private function baixarComponentesDigitais($parObjTramite, $parObjMetadadosProce // pendentes de recebimento informado pelo Tramita.gov.br não está de acordo com a lista atual de arquivos // mantida pela aplicação. $arrHashComponentesProtocolo = $this->listarHashDosComponentesMetadado($objProtocolo); - $arrHashPendentesRecebimento = $parObjTramite->componenteDigitalPendenteDeRecebimento; + $arrHashPendentesRecebimento = $parObjTramite->hashDosComponentesPendentesDeRecebimento; $numQtdComponentes = count($arrHashComponentesProtocolo); $this->gravarLogDebug("$numQtdComponentes componentes digitais identificados no protocolo {$objProtocolo->protocolo}", 2); @@ -334,8 +335,10 @@ private function consultarTramite($parNumIdTramite) $objTramite = $arrObjTramite[0]; - if(!is_array($objTramite->componenteDigitalPendenteDeRecebimento)){ - $objTramite->componenteDigitalPendenteDeRecebimento = array($objTramite->componenteDigitalPendenteDeRecebimento); + if(!is_array($objTramite->hashDosComponentesPendentesDeRecebimento)){ + $objTramite->componenteDigitalPendenteDeRecebimento = (array) $objTramite->hashDosComponentesPendentesDeRecebimento; + + $objTramite->hashDosComponentesPendentesDeRecebimento = (array) $objTramite->hashDosComponentesPendentesDeRecebimento; } } @@ -646,12 +649,17 @@ private function listarHashDosComponentesMetadado($parObjProtocolo) foreach($arrObjDocumento as $objDocumento){ //Desconsidera os componendes digitais de documentos cancelados if(!isset($objDocumento->retirado) || $objDocumento->retirado == false) { - if(!isset($objDocumento->componenteDigital)){ + if(!isset($objDocumento->componentesDigitais)){ throw new InfraException("Metadados do componente digital do documento de ordem {$objDocumento->ordem} não informado."); } - $arrObjComponentesDigitais = is_array($objDocumento->componenteDigital) ? $objDocumento->componenteDigital : array($objDocumento->componenteDigital); + $arrObjComponentesDigitais = is_array($objDocumento->componentesDigitais) ? $objDocumento->componentesDigitais : array($objDocumento->componentesDigitais); foreach ($arrObjComponentesDigitais as $objComponenteDigital) { + + if (is_array($objComponenteDigital)) { + $objComponenteDigital = (object) $objComponenteDigital; + } + $arrHashsComponentesDigitais[] = ProcessoEletronicoRN::getHashFromMetaDados($objComponenteDigital->hash); } } @@ -672,8 +680,11 @@ private function listarMetaDadosComponentesDigitais($parObjProtocolo) $objMapBD = new GenericoBD($this->getObjInfraIBanco()); $arrObjDocumento = ProcessoEletronicoRN::obterDocumentosProtocolo($parObjProtocolo, true); - foreach($arrObjDocumento as $objDocumento){ - $strHash = ProcessoEletronicoRN::getHashFromMetaDados($objDocumento->componenteDigital->hash); + foreach($arrObjDocumento as $key => $objDocumento){ + if (is_array($objDocumento->componentesDigitais[$key])) { + $objDocumento->componentesDigitais[$key] = (object) $objDocumento->componentesDigitais[$key]; + } + $strHash = ProcessoEletronicoRN::getHashFromMetaDados($objDocumento->componentesDigitais[$key]->hash); $objMapDTO = new PenRelTipoDocMapRecebidoDTO(true); $objMapDTO->setNumMaxRegistrosRetorno(1); $objMapDTO->setNumCodigoEspecie($objDocumento->especie->codigo); @@ -718,16 +729,21 @@ private function validarComponentesDigitais($parObjProtocolo, $parNumIdentificac if(!isset($numIdTipoDocumentoPadrao)){ foreach($arrObjDocumentos as $objDocument){ + $especie = $objDocument->especie; + if (is_array($especie)) { + $objDocument->especie = (object) $objDocument->especie; + } + $objPenRelTipoDocMapEnviadoDTO = new PenRelTipoDocMapRecebidoDTO(); $objPenRelTipoDocMapEnviadoDTO->retTodos(); $objPenRelTipoDocMapEnviadoDTO->setNumCodigoEspecie($objDocument->especie->codigo); - $objProcessoEletronicoDB = new PenRelTipoDocMapRecebidoBD($this->getObjInfraIBanco()); + $objProcessoEletronicoDB = new PenRelTipoDocMapRecebidoBD(BancoSEI::getInstance()); $numContador = (int)$objProcessoEletronicoDB->contar($objPenRelTipoDocMapEnviadoDTO); // Não achou, ou seja, não esta cadastrado na tabela, então não é aceito nesta unidade como válido if($numContador <= 0) { - $this->objProcessoEletronicoRN->recusarTramite($parNumIdentificacaoTramite, sprintf('O Documento do tipo %s não está mapeado para recebimento no sistema de destino. OBS: A recusa é uma das três formas de conclusão de trâmite. Portanto, não é um erro.', mb_convert_encoding($objDocument->especie->nomeNoProdutor, 'ISO-8859-1', 'UTF-8')), ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_ESPECIE_NAO_MAPEADA); + $this->objProcessoEletronicoRN->recusarTramite($parNumIdentificacaoTramite, sprintf('O Documento do tipo %s não está mapeado para recebimento no sistema de destino. OBS: A recusa é uma das três formas de conclusão de trâmite. Portanto, não é um erro.', utf8_decode($objDocument->especie->nomeNoProdutor)), ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_ESPECIE_NAO_MAPEADA); throw new InfraException(sprintf('Documento do tipo %s não está mapeado. Motivo da Recusa no Barramento: %s', $objDocument->especie->nomeNoProdutor, ProcessoEletronicoRN::$MOTIVOS_RECUSA[ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_ESPECIE_NAO_MAPEADA])); } } @@ -736,7 +752,7 @@ private function validarComponentesDigitais($parObjProtocolo, $parNumIdentificac //Não valida informações do componente digital caso o documento esteja cancelado foreach ($arrObjDocumentos as $objDocumento) { if (!isset($objDocumento->retirado) || $objDocumento->retirado === false) { - foreach ($objDocumento->componenteDigital as $objComponenteDigital) { + foreach ($objDocumento->componentesDigitais as $objComponenteDigital) { $this->validaTamanhoComponenteDigital($objComponenteDigital); } } @@ -745,6 +761,10 @@ 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); } @@ -945,11 +965,11 @@ private function atualizarProcedimento($parDblIdProcedimento, $objMetadadosProce } catch (Exception $e){ $this->gravarLogDebug("Processo $parDblIdProcedimento não pode ser desbloqueado", 2); } - + $numUnidadeReceptora = ModPenUtilsRN::obterUnidadeRecebimento(); $this->enviarProcedimentoUnidade($objProcedimentoDTO, $numUnidadeReceptora); - } finally { + } finally { $numUnidadeReceptora = ModPenUtilsRN::obterUnidadeRecebimento(); SessaoSEI::getInstance()->setNumIdUnidadeAtual($numUnidadeReceptora); } @@ -1054,7 +1074,7 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) $objProtocoloDTO->setArrObjAnexoDTO(array()); $objProtocoloDTO->setArrObjRelProtocoloAssuntoDTO(array()); $objProtocoloDTO->setArrObjRelProtocoloProtocoloDTO(array()); - $this->atribuirParticipantes($objProtocoloDTO, $parObjProtocolo->interessado); + $this->atribuirParticipantes($objProtocoloDTO, $parObjProtocolo->interessados); $strDescricao = ""; if(isset($parObjProtocolo->processoDeNegocio)){ @@ -1381,7 +1401,7 @@ private function atribuirParticipantes(ProtocoloDTO $objProtocoloDTO, $arrObjInt } if (!is_array($arrObjInteressados)) { - $arrObjInteressados = array($arrObjInteressados); + $arrObjInteressados = (array) $arrObjInteressados; } for($i=0; $i < count($arrObjInteressados); $i++){ @@ -1665,7 +1685,12 @@ private function atribuirDocumentos($parObjProcedimentoDTO, $parObjProtocolo, $o $count = count($arrObjDocumentos); $this->gravarLogDebug("Quantidade de documentos para recebimento: $count", 2); - foreach($arrObjDocumentos as $objDocumento){ + 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 @@ -1840,7 +1865,7 @@ private function atribuirDocumentos($parObjProcedimentoDTO, $parObjProtocolo, $o //TODO: Fazer a atribuição dos componentes digitais do processo a partir desse ponto $this->atribuirComponentesDigitais( $objDocumentoDTO, - $objDocumento->componenteDigital, + $objDocumento->componentesDigitais, $arrDocumentosExistentesPorHash, $parObjMetadadosProcedimento->arrHashComponenteBaixados); @@ -1916,6 +1941,10 @@ private function atribuirComponentesJaExistentesNoProcesso($objDocumentoDTO, $ob $arrObjAnexosDTO = array(); $arrObjAnexoDTO = array(); foreach ($objComponentesDigitais as $objComponenteDigital) { + if (is_array($objComponenteDigital)) { + $objComponenteDigital = (object) $objComponenteDigital; + } + $strHashComponenteDigital = ProcessoEletronicoRN::getHashFromMetaDados($objComponenteDigital->hash); $bolComponenteDigitalBaixado = in_array($strHashComponenteDigital, $arrHashComponenteBaixados); $bolComponenteDigitalExistente = array_key_exists($strHashComponenteDigital, $arrDocumentosExistentesPorHash); @@ -2518,13 +2547,14 @@ public function validarExtensaoComponentesDigitais($parIdTramite, $parObjProtoco $arquivoExtensaoBD = new ArquivoExtensaoBD($this->getObjInfraIBanco()); foreach($arrDocumentos as $objDocumento){ - if(!isset($objDocumento->retirado) || $objDocumento->retirado == false){ - $arrComponentesDigitais = $objDocumento->componenteDigital; - if(isset($arrComponentesDigitais) && !is_array($arrComponentesDigitais)){ - $arrComponentesDigitais = array($arrComponentesDigitais); - } + if (!isset($objDocumento->retirado) || $objDocumento->retirado == false) { + $arrComponentesDigitais = $objDocumento->componentesDigitais; foreach ($arrComponentesDigitais as $componenteDigital) { + + if (is_array($componenteDigital)) { + $componenteDigital = (object) $componenteDigital; + } //Busca o nome do documento $nomeDocumento = $componenteDigital->nome; @@ -2639,12 +2669,17 @@ private function obterTamanhoComponenteDigitalPendente($parObjProtocolo, $parCom $arrObjDocumentos = ProcessoEletronicoRN::obterDocumentosProtocolo($parObjProtocolo); //Percorre os documentos e compoenntes para pegar o tamanho em bytes do componente - foreach ($arrObjDocumentos as $objDocumento){ + foreach ($arrObjDocumentos as $objDocumento) { $arrObjComponentesDigitais = ProcessoEletronicoRN::obterComponentesDigitaisDocumento($objDocumento); - foreach ($arrObjComponentesDigitais as $objComponentesDigital){ - if(ProcessoEletronicoRN::getHashFromMetaDados($objComponentesDigital->hash) == $parComponentePendente){ + foreach ($arrObjComponentesDigitais as $objComponentesDigital) { + + if (is_array($objComponentesDigital)) { + $objComponentesDigital = (object) $objComponentesDigital; + } + + if (ProcessoEletronicoRN::getHashFromMetaDados($objComponentesDigital->hash) == $parComponentePendente) { $tamanhoComponentePendende = $objComponentesDigital->tamanhoEmBytes; - break; + break; } } } @@ -2716,11 +2751,16 @@ private function indexarComponenteDigitaisDoProtocolo($parObjProtocolo) { $resultado = array(); $arrObjDocumentos = ProcessoEletronicoRN::obterDocumentosProtocolo($parObjProtocolo); - foreach($arrObjDocumentos as $objDocumento){ - if(isset($objDocumento->componenteDigital) && !is_array($objDocumento->componenteDigital)){ - $objDocumento->componenteDigital = array($objDocumento->componenteDigital); + foreach ($arrObjDocumentos as $arrDocumento) { + if(isset($arrDocumento->componentesDigitais) && !is_array($arrDocumento->componentesDigitais)){ + $arrDocumento->componentesDigitais = array($arrDocumento->componentesDigitais); } - foreach($objDocumento->componenteDigital as $objComponente){ + foreach ($arrDocumento->componentesDigitais as $objComponente) { + + if (is_array($objComponente)) { + $objComponente = (object) $objComponente; + } + $strHash = ProcessoEletronicoRN::getHashFromMetaDados($objComponente->hash); $resultado[$strHash] = $objComponente; } @@ -2950,4 +2990,4 @@ private function atribuirTipoProcedimentoRelacinado($numIdTipoProcedimento, $num $objAtividadeRN = new AtividadeRN(); $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); } -} +} \ No newline at end of file diff --git a/src/rn/ReceberReciboTramiteRN.php b/src/rn/ReceberReciboTramiteRN.php index 2d12b8d9d..a1faae3c5 100755 --- a/src/rn/ReceberReciboTramiteRN.php +++ b/src/rn/ReceberReciboTramiteRN.php @@ -37,7 +37,6 @@ public function receberReciboDeTramite($parNumIdTramite) throw new InfraException("Não foi possível obter recibo de conclusão do trâmite '$parNumIdTramite'"); } - $objReciboTramite = $objReciboTramite->conteudoDoReciboDeTramite; // Inicialização do recebimento do processo, abrindo nova transação e controle de concorrência, // evitando processamento simultâneo de cadastramento do mesmo processo @@ -227,7 +226,7 @@ private function registrarRecebimentoRecibo($numIdProcedimento, $strProtocoloFor if (isset($objEstrutura->hierarquia)) { - $arrObjNivel = $objEstrutura->hierarquia->nivel; + $arrObjNivel = $objEstrutura->hierarquia; $nome = ""; $siglasUnidades = array(); diff --git a/src/rn/VerificadorInstalacaoRN.php b/src/rn/VerificadorInstalacaoRN.php index 494d115ba..80965376d 100755 --- a/src/rn/VerificadorInstalacaoRN.php +++ b/src/rn/VerificadorInstalacaoRN.php @@ -233,12 +233,14 @@ public function verificarConexaoBarramentoPEN() $strLocalizacaoCertificadoDigital = $objConfiguracaoModPEN->getValor("PEN", "LocalizacaoCertificado"); $strSenhaCertificadoDigital = $objConfiguracaoModPEN->getValor("PEN", "SenhaCertificado"); - $strEnderecoWSDL = $strEnderecoWebService . '?wsdl'; - $curl = curl_init($strEnderecoWSDL); + $healthcheck = 'healthcheck'; + + $strEnderecoBarramento = $strEnderecoWebService . '/' . $healthcheck; + $curl = curl_init($strEnderecoBarramento); try{ $bolEmProducao = boolval(ConfiguracaoSEI::getInstance()->getValor('SEI', 'Producao')); - curl_setopt($curl, CURLOPT_URL, $strEnderecoWSDL); + curl_setopt($curl, CURLOPT_URL, $strEnderecoBarramento); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); @@ -254,12 +256,7 @@ public function verificarConexaoBarramentoPEN() $strErrorMsg = curl_error($curl); } if (isset($strErrorMsg)) { - throw new Exception("Erro no CURL ao obter o WSDL em $strEnderecoWSDL. Erro detalhado: $strErrorMsg."); - } - $objXML = simplexml_load_string($strOutput); - - if(empty($strOutput) || $strOutput === false || empty($objXML) || $objXML === false){ - throw new Exception("Falha na validação do WSDL do webservice de integração com o Tramita GOV.BR localizado em $strEnderecoWSDL"); + throw new Exception("Erro no CURL para $strEnderecoBarramento. Erro detalhado: $strErrorMsg."); } } finally{ @@ -282,6 +279,7 @@ public function verificarAcessoPendenciasTramitePEN() try{ $objProcessoEletronicoRN = new ProcessoEletronicoRN(); $objProcessoEletronicoRN->listarPendencias(false); + return true; } catch(Exception $e){ throw new InfraException("Falha no acesso aos serviços de integração do Tramita GOV.BR: $e"); diff --git a/tests_sei4/funcional/assets/config/ConfiguracaoModPEN.exemplo.php b/tests_sei4/funcional/assets/config/ConfiguracaoModPEN.exemplo.php deleted file mode 100644 index 8934a1108..000000000 --- a/tests_sei4/funcional/assets/config/ConfiguracaoModPEN.exemplo.php +++ /dev/null @@ -1,99 +0,0 @@ - array( - // Endereço do Web Service principal de integração com o Barramento de Serviços do PEN - // Os endereços disponíveis são os seguintes (verifique se houve atualizações durante o procedimento de instalação): - // - Homologação: https://homolog.api.processoeletronico.gov.br/interoperabilidade/soap/v3/ - // - Produção: https://api.conectagov.processoeletronico.gov.br/interoperabilidade/soap/v3/ - "WebService" => "https://homolog.api.processoeletronico.gov.br/interoperabilidade/soap/v3/", - - // Endereço do Web Service de monitoramente de pendências de trâmite no Barramento de Serviços do PEN - // Configuração necessária para que o envio e recebimento de processos sejam feitas de forma dinâmica pelo sistema - // Os endereços disponíveis são os seguintes (verifique se houve atualizações durante o procedimento de instalação): - // - Homologação: https://homolog.pendencias.processoeletronico.gov.br/ - // - Produção: https://pendencias.conectagov.processoeletronico.gov.br/ - "WebServicePendencias" => "", - - // Localização completa do certificado digital utilizado para autenticação nos serviços do Barramento de Serviços do PEN - // e assinar os recibos de envio/conclusão dos trâmites de processo - // Necessário que o arquivo de certificado esteja localizado dentro da pasta de configurações do módulo: - // Ex: /sei/config/mod-pen/certificado.pem - "LocalizacaoCertificado" => getenv('CERTIFICADO'), - - // Senha do certificado digital necessário para a aplicação descriptografar a chave privada - "SenhaCertificado" => getenv('CERTIFICADO_SENHA'), - - // Quantidade de tentativas de requisção dos serviços do Barramento PEN antes que um erro possa ser lançado pela aplicação - // Necessário para aumentar a resiliência da integração em contextos de instabilidade de rede. - // Valor padrão: 3 - "NumeroTentativasErro" => 3, - - // Localização do servidor Gearman de gerenciamento de fila de processamento de tarefas do Barramento PEN - // As mensagem recebidas são organizadas em filas de tarefas e distribuídas entre os nós da aplicação para - // processamento paralelo. Caso este parâmetro não seja configurado ou o servidor este indisponível, o processamento será - // feito diretamente pelo sistema na periodicidade definida pelo agendamento da tarefa PENAgendamento::receberProcessos - // "Gearman" => array( - // "Servidor" => "", - // "Porta" => "", //Padrão: 4730 - // ) - - "ControleURL" => array( - "atual"=>"servidor.gov.br", - "antigos"=>array( - "[servidor_php]", - "[servidor_php2]", - ) - ), - - // Configuração padrão do Envio Parcial - "EnviarApenasComponentesDigitaisPendentes" => false - // "EnviarApenasComponentesDigitaisPendentes" => array( - // "1" => array( // 1 = Poder Executivo Federal - // "123456", // Id de estrutura de unidade X do Poder Executivo Federal - // "234567", // Id de estrutura de unidade Y do Poder Executivo Federal - // "345678" // Id de estrutura de unidade Z do Poder Executivo Federal - // ), - // "21" => array( // 2 = Poder Legislativo Federal - // "123456", // Id de estrutura de unidade X do Poder Executivo Federal - // "234567", // Id de estrutura de unidade Y do Poder Executivo Federal - // "345678" // Id de estrutura de unidade Z do Poder Executivo Federal - // ) - // ) - - ) - ); - } -} \ No newline at end of file diff --git a/tests_sei4/funcional/assets/config/ConfiguracaoModPEN.php b/tests_sei4/funcional/assets/config/ConfiguracaoModPEN.php index 2d86f9cc6..fc4c5768f 100755 --- a/tests_sei4/funcional/assets/config/ConfiguracaoModPEN.php +++ b/tests_sei4/funcional/assets/config/ConfiguracaoModPEN.php @@ -36,9 +36,9 @@ public function getArrConfiguracoes() "PEN" => array( // Endereço do Web Service principal de integração com o Barramento de Serviços do PEN // Os endereços disponíveis são os seguintes (verifique se houve atualizações durante o procedimento de instalação): - // - Homologação: https://homolog.api.processoeletronico.gov.br/interoperabilidade/soap/v3/ - // - Produção: https://api.conectagov.processoeletronico.gov.br/interoperabilidade/soap/v3/ - "WebService" => "https://homolog.api.processoeletronico.gov.br/interoperabilidade/soap/v3/", + // - Homologação: https://homolog.api.processoeletronico.gov.br/interoperabilidade/rest/v3/ + // - Produção: https://api.conectagov.processoeletronico.gov.br/interoperabilidade/rest/v3/ + "WebService" => "https://homolog.api.processoeletronico.gov.br/interoperabilidade/rest/v3/", // Endereço do Web Service de monitoramente de pendências de trâmite no Barramento de Serviços do PEN // Configuração necessária para que o envio e recebimento de processos sejam feitas de forma dinâmica pelo sistema diff --git a/tests_sei4/funcional/assets/config/composer.json b/tests_sei4/funcional/assets/config/composer.json new file mode 100644 index 000000000..b1507ec37 --- /dev/null +++ b/tests_sei4/funcional/assets/config/composer.json @@ -0,0 +1,18 @@ +{ + "config": { + "platform": { + "php": "7.3.12" + } + }, + + + "require-dev": { + "phpunit/phpunit": "8.*", + "phpunit/php-code-coverage": "*", + "phpunit/phpunit-selenium": "*", + "besimple/soap": "*", + "brandonwamboldt/utilphp": "1.1.*", + "brianium/paratest": "4.*", + "guzzlehttp/guzzle": "^7.0" + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/bootstrap.php b/tests_sei4/funcional/bootstrap.php index 2d202ecd5..9cb5fdddb 100755 --- a/tests_sei4/funcional/bootstrap.php +++ b/tests_sei4/funcional/bootstrap.php @@ -1,6 +1,8 @@ setStrNomeUnidadeRestricao($dados['NomeUnidadeRestricao']); - $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao($dados['NomeUnidadeRHRestricao']); + $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao($dados['NomeUnidadeRHRestricao']."%", InfraDTO::$OPER_LIKE); $objPenUnidadeRestricaoDTO->retTodos(); $objPenUnidadeRestricaoBD = new \PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); diff --git a/tests_sei4/funcional/tests/CenarioBaseTestCase.php b/tests_sei4/funcional/tests/CenarioBaseTestCase.php index c9d4026fc..a9f22ee13 100755 --- a/tests_sei4/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei4/funcional/tests/CenarioBaseTestCase.php @@ -501,7 +501,6 @@ protected function validarDadosDocumento($nomeDocArvore, $dadosDocumento, $desti // Verifica se documento possui marcação de documento anexado $bolPossuiDocumentoReferenciado = !is_null($dadosDocumento['ORDEM_DOCUMENTO_REFERENCIADO']); - $this->assertTrue($this->paginaProcesso->deveSerDocumentoAnexo($bolPossuiDocumentoReferenciado, $nomeDocArvore)); if (($this->paginaProcesso->ehDocumentoCancelado($nomeDocArvore) == false) and ($this->paginaProcesso->ehDocumentoMovido($nomeDocArvore) == false)) { diff --git a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php b/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php deleted file mode 100755 index 214e32b16..000000000 --- a/tests_sei4/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php +++ /dev/null @@ -1,132 +0,0 @@ -setSeleniumServerRequestsTimeout(6000); - - // Configuração do dados para teste do cenário - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_corrompimento_besimplesoap.pdf'); - - // Cadastrar novo processo de teste - $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); - $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); - self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); - - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - $this->abrirProcesso(self::$protocoloTeste); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, null, PEN_WAIT_TIMEOUT_ARQUIVOS_GRANDES); - } - - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * @large - * - * @depends test_tramitar_processo_contendo_documento_besimple - * - * @return void - */ - public function test_verificar_origem_processo_contendo_documento_besimple() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - $this->abrirProcesso(self::$protocoloTeste); - - // 6 - Verificar se situação atual do processo está como bloqueado - $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) - $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - - // 8 - Validar histórico de trâmite do processo - $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - - // 9 - Verificar se processo está na lista de Processos Tramitados Externamente - $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); - } - - - /** - * Teste de verificação do correto recebimento do processo contendo apenas um documento interno (gerado) - * - * @group verificacao_recebimento - * @large - * - * @depends test_verificar_origem_processo_contendo_documento_besimple - * - * @return void - */ - public function test_verificar_destino_processo_contendo_documento_besimple() - { - $strProtocoloTeste = self::$protocoloTeste; - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); - - // 11 - Abrir protocolo na tela de controle de processos - $this->abrirProcesso(self::$protocoloTeste); - $listaDocumentos = $this->paginaProcesso->listarDocumentos(); - - // 12 - Validar dados do processo - $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); - $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; - self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; - $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); - - // 13 - Verificar recibos de trâmite - $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); - - // 14 - Validar dados do documento - $this->assertTrue(count($listaDocumentos) == 1); - $this->validarDadosDocumento($listaDocumentos[0], self::$documentoTeste, self::$destinatario); - } -} diff --git a/tests_sei41/funcional/assets/config/ConfiguracaoModPEN.exemplo.php b/tests_sei41/funcional/assets/config/ConfiguracaoModPEN.exemplo.php deleted file mode 100644 index 8934a1108..000000000 --- a/tests_sei41/funcional/assets/config/ConfiguracaoModPEN.exemplo.php +++ /dev/null @@ -1,99 +0,0 @@ - array( - // Endereço do Web Service principal de integração com o Barramento de Serviços do PEN - // Os endereços disponíveis são os seguintes (verifique se houve atualizações durante o procedimento de instalação): - // - Homologação: https://homolog.api.processoeletronico.gov.br/interoperabilidade/soap/v3/ - // - Produção: https://api.conectagov.processoeletronico.gov.br/interoperabilidade/soap/v3/ - "WebService" => "https://homolog.api.processoeletronico.gov.br/interoperabilidade/soap/v3/", - - // Endereço do Web Service de monitoramente de pendências de trâmite no Barramento de Serviços do PEN - // Configuração necessária para que o envio e recebimento de processos sejam feitas de forma dinâmica pelo sistema - // Os endereços disponíveis são os seguintes (verifique se houve atualizações durante o procedimento de instalação): - // - Homologação: https://homolog.pendencias.processoeletronico.gov.br/ - // - Produção: https://pendencias.conectagov.processoeletronico.gov.br/ - "WebServicePendencias" => "", - - // Localização completa do certificado digital utilizado para autenticação nos serviços do Barramento de Serviços do PEN - // e assinar os recibos de envio/conclusão dos trâmites de processo - // Necessário que o arquivo de certificado esteja localizado dentro da pasta de configurações do módulo: - // Ex: /sei/config/mod-pen/certificado.pem - "LocalizacaoCertificado" => getenv('CERTIFICADO'), - - // Senha do certificado digital necessário para a aplicação descriptografar a chave privada - "SenhaCertificado" => getenv('CERTIFICADO_SENHA'), - - // Quantidade de tentativas de requisção dos serviços do Barramento PEN antes que um erro possa ser lançado pela aplicação - // Necessário para aumentar a resiliência da integração em contextos de instabilidade de rede. - // Valor padrão: 3 - "NumeroTentativasErro" => 3, - - // Localização do servidor Gearman de gerenciamento de fila de processamento de tarefas do Barramento PEN - // As mensagem recebidas são organizadas em filas de tarefas e distribuídas entre os nós da aplicação para - // processamento paralelo. Caso este parâmetro não seja configurado ou o servidor este indisponível, o processamento será - // feito diretamente pelo sistema na periodicidade definida pelo agendamento da tarefa PENAgendamento::receberProcessos - // "Gearman" => array( - // "Servidor" => "", - // "Porta" => "", //Padrão: 4730 - // ) - - "ControleURL" => array( - "atual"=>"servidor.gov.br", - "antigos"=>array( - "[servidor_php]", - "[servidor_php2]", - ) - ), - - // Configuração padrão do Envio Parcial - "EnviarApenasComponentesDigitaisPendentes" => false - // "EnviarApenasComponentesDigitaisPendentes" => array( - // "1" => array( // 1 = Poder Executivo Federal - // "123456", // Id de estrutura de unidade X do Poder Executivo Federal - // "234567", // Id de estrutura de unidade Y do Poder Executivo Federal - // "345678" // Id de estrutura de unidade Z do Poder Executivo Federal - // ), - // "21" => array( // 2 = Poder Legislativo Federal - // "123456", // Id de estrutura de unidade X do Poder Executivo Federal - // "234567", // Id de estrutura de unidade Y do Poder Executivo Federal - // "345678" // Id de estrutura de unidade Z do Poder Executivo Federal - // ) - // ) - - ) - ); - } -} \ No newline at end of file diff --git a/tests_sei41/funcional/assets/config/ConfiguracaoModPEN.php b/tests_sei41/funcional/assets/config/ConfiguracaoModPEN.php index 042c57061..d3ceafb68 100755 --- a/tests_sei41/funcional/assets/config/ConfiguracaoModPEN.php +++ b/tests_sei41/funcional/assets/config/ConfiguracaoModPEN.php @@ -36,9 +36,9 @@ public function getArrConfiguracoes() "PEN" => array( // Endereço do Web Service principal de integração com o Barramento de Serviços do PEN // Os endereços disponíveis são os seguintes (verifique se houve atualizações durante o procedimento de instalação): - // - Homologação: https://homolog.api.processoeletronico.gov.br/interoperabilidade/soap/v3/ - // - Produção: https://api.conectagov.processoeletronico.gov.br/interoperabilidade/soap/v3/ - "WebService" => "https://homolog.api.processoeletronico.gov.br/interoperabilidade/soap/v3/", + // - Homologação: https://homolog.api.processoeletronico.gov.br/interoperabilidade/rest/v3/ + // - Produção: https://api.conectagov.processoeletronico.gov.br/interoperabilidade/rest/v3/ + "WebService" => "https://homolog.api.processoeletronico.gov.br/interoperabilidade/rest/v3/", // Endereço do Web Service de monitoramente de pendências de trâmite no Barramento de Serviços do PEN // Configuração necessária para que o envio e recebimento de processos sejam feitas de forma dinâmica pelo sistema diff --git a/tests_sei41/funcional/assets/config/composer.json b/tests_sei41/funcional/assets/config/composer.json new file mode 100644 index 000000000..b1507ec37 --- /dev/null +++ b/tests_sei41/funcional/assets/config/composer.json @@ -0,0 +1,18 @@ +{ + "config": { + "platform": { + "php": "7.3.12" + } + }, + + + "require-dev": { + "phpunit/phpunit": "8.*", + "phpunit/php-code-coverage": "*", + "phpunit/phpunit-selenium": "*", + "besimple/soap": "*", + "brandonwamboldt/utilphp": "1.1.*", + "brianium/paratest": "4.*", + "guzzlehttp/guzzle": "^7.0" + } +} \ No newline at end of file diff --git a/tests_sei41/funcional/bootstrap.php b/tests_sei41/funcional/bootstrap.php index 159d03b50..df4d2e17e 100755 --- a/tests_sei41/funcional/bootstrap.php +++ b/tests_sei41/funcional/bootstrap.php @@ -1,6 +1,8 @@ setStrNomeUnidadeRestricao($dados['NomeUnidadeRestricao']); - $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao($dados['NomeUnidadeRHRestricao']); + $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao($dados['NomeUnidadeRHRestricao']."%", InfraDTO::$OPER_LIKE); $objPenUnidadeRestricaoDTO->retTodos(); $objPenUnidadeRestricaoBD = new \PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); diff --git a/tests_sei41/funcional/tests/CenarioBaseTestCase.php b/tests_sei41/funcional/tests/CenarioBaseTestCase.php index 241afa5d0..81f23c539 100755 --- a/tests_sei41/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei41/funcional/tests/CenarioBaseTestCase.php @@ -503,7 +503,6 @@ protected function validarDadosDocumento($nomeDocArvore, $dadosDocumento, $desti // Verifica se documento possui marcação de documento anexado $bolPossuiDocumentoReferenciado = !is_null($dadosDocumento['ORDEM_DOCUMENTO_REFERENCIADO']); - $this->assertTrue($this->paginaProcesso->deveSerDocumentoAnexo($bolPossuiDocumentoReferenciado, $nomeDocArvore)); if (($this->paginaProcesso->ehDocumentoCancelado($nomeDocArvore) == false) and ($this->paginaProcesso->ehDocumentoMovido($nomeDocArvore) == false)) { diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php deleted file mode 100755 index 214e32b16..000000000 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php +++ /dev/null @@ -1,132 +0,0 @@ -setSeleniumServerRequestsTimeout(6000); - - // Configuração do dados para teste do cenário - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_corrompimento_besimplesoap.pdf'); - - // Cadastrar novo processo de teste - $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); - $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); - self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); - - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - $this->abrirProcesso(self::$protocoloTeste); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, null, PEN_WAIT_TIMEOUT_ARQUIVOS_GRANDES); - } - - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * @large - * - * @depends test_tramitar_processo_contendo_documento_besimple - * - * @return void - */ - public function test_verificar_origem_processo_contendo_documento_besimple() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - $this->abrirProcesso(self::$protocoloTeste); - - // 6 - Verificar se situação atual do processo está como bloqueado - $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) - $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - - // 8 - Validar histórico de trâmite do processo - $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - - // 9 - Verificar se processo está na lista de Processos Tramitados Externamente - $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); - } - - - /** - * Teste de verificação do correto recebimento do processo contendo apenas um documento interno (gerado) - * - * @group verificacao_recebimento - * @large - * - * @depends test_verificar_origem_processo_contendo_documento_besimple - * - * @return void - */ - public function test_verificar_destino_processo_contendo_documento_besimple() - { - $strProtocoloTeste = self::$protocoloTeste; - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); - - // 11 - Abrir protocolo na tela de controle de processos - $this->abrirProcesso(self::$protocoloTeste); - $listaDocumentos = $this->paginaProcesso->listarDocumentos(); - - // 12 - Validar dados do processo - $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); - $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; - self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; - $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); - - // 13 - Verificar recibos de trâmite - $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); - - // 14 - Validar dados do documento - $this->assertTrue(count($listaDocumentos) == 1); - $this->validarDadosDocumento($listaDocumentos[0], self::$documentoTeste, self::$destinatario); - } -} diff --git a/tests_super/funcional/assets/config/ConfiguracaoModPEN.exemplo.php b/tests_super/funcional/assets/config/ConfiguracaoModPEN.exemplo.php deleted file mode 100644 index 8934a1108..000000000 --- a/tests_super/funcional/assets/config/ConfiguracaoModPEN.exemplo.php +++ /dev/null @@ -1,99 +0,0 @@ - array( - // Endereço do Web Service principal de integração com o Barramento de Serviços do PEN - // Os endereços disponíveis são os seguintes (verifique se houve atualizações durante o procedimento de instalação): - // - Homologação: https://homolog.api.processoeletronico.gov.br/interoperabilidade/soap/v3/ - // - Produção: https://api.conectagov.processoeletronico.gov.br/interoperabilidade/soap/v3/ - "WebService" => "https://homolog.api.processoeletronico.gov.br/interoperabilidade/soap/v3/", - - // Endereço do Web Service de monitoramente de pendências de trâmite no Barramento de Serviços do PEN - // Configuração necessária para que o envio e recebimento de processos sejam feitas de forma dinâmica pelo sistema - // Os endereços disponíveis são os seguintes (verifique se houve atualizações durante o procedimento de instalação): - // - Homologação: https://homolog.pendencias.processoeletronico.gov.br/ - // - Produção: https://pendencias.conectagov.processoeletronico.gov.br/ - "WebServicePendencias" => "", - - // Localização completa do certificado digital utilizado para autenticação nos serviços do Barramento de Serviços do PEN - // e assinar os recibos de envio/conclusão dos trâmites de processo - // Necessário que o arquivo de certificado esteja localizado dentro da pasta de configurações do módulo: - // Ex: /sei/config/mod-pen/certificado.pem - "LocalizacaoCertificado" => getenv('CERTIFICADO'), - - // Senha do certificado digital necessário para a aplicação descriptografar a chave privada - "SenhaCertificado" => getenv('CERTIFICADO_SENHA'), - - // Quantidade de tentativas de requisção dos serviços do Barramento PEN antes que um erro possa ser lançado pela aplicação - // Necessário para aumentar a resiliência da integração em contextos de instabilidade de rede. - // Valor padrão: 3 - "NumeroTentativasErro" => 3, - - // Localização do servidor Gearman de gerenciamento de fila de processamento de tarefas do Barramento PEN - // As mensagem recebidas são organizadas em filas de tarefas e distribuídas entre os nós da aplicação para - // processamento paralelo. Caso este parâmetro não seja configurado ou o servidor este indisponível, o processamento será - // feito diretamente pelo sistema na periodicidade definida pelo agendamento da tarefa PENAgendamento::receberProcessos - // "Gearman" => array( - // "Servidor" => "", - // "Porta" => "", //Padrão: 4730 - // ) - - "ControleURL" => array( - "atual"=>"servidor.gov.br", - "antigos"=>array( - "[servidor_php]", - "[servidor_php2]", - ) - ), - - // Configuração padrão do Envio Parcial - "EnviarApenasComponentesDigitaisPendentes" => false - // "EnviarApenasComponentesDigitaisPendentes" => array( - // "1" => array( // 1 = Poder Executivo Federal - // "123456", // Id de estrutura de unidade X do Poder Executivo Federal - // "234567", // Id de estrutura de unidade Y do Poder Executivo Federal - // "345678" // Id de estrutura de unidade Z do Poder Executivo Federal - // ), - // "21" => array( // 2 = Poder Legislativo Federal - // "123456", // Id de estrutura de unidade X do Poder Executivo Federal - // "234567", // Id de estrutura de unidade Y do Poder Executivo Federal - // "345678" // Id de estrutura de unidade Z do Poder Executivo Federal - // ) - // ) - - ) - ); - } -} \ No newline at end of file diff --git a/tests_super/funcional/assets/config/ConfiguracaoModPEN.php b/tests_super/funcional/assets/config/ConfiguracaoModPEN.php old mode 100755 new mode 100644 index 2d86f9cc6..5898b5adf --- a/tests_super/funcional/assets/config/ConfiguracaoModPEN.php +++ b/tests_super/funcional/assets/config/ConfiguracaoModPEN.php @@ -36,9 +36,9 @@ public function getArrConfiguracoes() "PEN" => array( // Endereço do Web Service principal de integração com o Barramento de Serviços do PEN // Os endereços disponíveis são os seguintes (verifique se houve atualizações durante o procedimento de instalação): - // - Homologação: https://homolog.api.processoeletronico.gov.br/interoperabilidade/soap/v3/ - // - Produção: https://api.conectagov.processoeletronico.gov.br/interoperabilidade/soap/v3/ - "WebService" => "https://homolog.api.processoeletronico.gov.br/interoperabilidade/soap/v3/", + // - Homologação: https://homolog.api.processoeletronico.gov.br/interoperabilidade/rest/v3/ + // - Produção: https://api.conectagov.processoeletronico.gov.br/interoperabilidade/rest/v3/ + "WebService" => "https://homolog.api.processoeletronico.gov.br/interoperabilidade/rest/v3/", // Endereço do Web Service de monitoramente de pendências de trâmite no Barramento de Serviços do PEN // Configuração necessária para que o envio e recebimento de processos sejam feitas de forma dinâmica pelo sistema @@ -80,7 +80,20 @@ public function getArrConfiguracoes() // Configuração padrão do Envio Parcial "EnviarApenasComponentesDigitaisPendentes" => false + // "EnviarApenasComponentesDigitaisPendentes" => array( + // "1" => array( // 1 = Poder Executivo Federal + // "123456", // Id de estrutura de unidade X do Poder Executivo Federal + // "234567", // Id de estrutura de unidade Y do Poder Executivo Federal + // "345678" // Id de estrutura de unidade Z do Poder Executivo Federal + // ), + // "21" => array( // 2 = Poder Legislativo Federal + // "123456", // Id de estrutura de unidade X do Poder Executivo Federal + // "234567", // Id de estrutura de unidade Y do Poder Executivo Federal + // "345678" // Id de estrutura de unidade Z do Poder Executivo Federal + // ) + // ) + ) ); } -} +} \ No newline at end of file diff --git a/tests_super/funcional/assets/config/composer.json b/tests_super/funcional/assets/config/composer.json new file mode 100644 index 000000000..b1507ec37 --- /dev/null +++ b/tests_super/funcional/assets/config/composer.json @@ -0,0 +1,18 @@ +{ + "config": { + "platform": { + "php": "7.3.12" + } + }, + + + "require-dev": { + "phpunit/phpunit": "8.*", + "phpunit/php-code-coverage": "*", + "phpunit/phpunit-selenium": "*", + "besimple/soap": "*", + "brandonwamboldt/utilphp": "1.1.*", + "brianium/paratest": "4.*", + "guzzlehttp/guzzle": "^7.0" + } +} \ No newline at end of file diff --git a/tests_super/funcional/bootstrap.php b/tests_super/funcional/bootstrap.php index 9bb6edcd3..68d9b9bd4 100755 --- a/tests_super/funcional/bootstrap.php +++ b/tests_super/funcional/bootstrap.php @@ -1,6 +1,8 @@ setStrNomeUnidadeRestricao($dados['NomeUnidadeRestricao']); - $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao($dados['NomeUnidadeRHRestricao']); + $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao($dados['NomeUnidadeRHRestricao']."%", InfraDTO::$OPER_LIKE); $objPenUnidadeRestricaoDTO->retTodos(); $objPenUnidadeRestricaoBD = new \PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); diff --git a/tests_super/funcional/tests/CenarioBaseTestCase.php b/tests_super/funcional/tests/CenarioBaseTestCase.php index 6da11d142..4370fe59c 100755 --- a/tests_super/funcional/tests/CenarioBaseTestCase.php +++ b/tests_super/funcional/tests/CenarioBaseTestCase.php @@ -549,7 +549,6 @@ protected function validarDadosDocumento($nomeDocArvore, $dadosDocumento, $desti // Verifica se documento possui marcação de documento anexado $bolPossuiDocumentoReferenciado = !is_null($dadosDocumento['ORDEM_DOCUMENTO_REFERENCIADO']); - $this->assertTrue($this->paginaProcesso->deveSerDocumentoAnexo($bolPossuiDocumentoReferenciado, $nomeDocArvore)); if (($this->paginaProcesso->ehDocumentoCancelado($nomeDocArvore) == false) and ($this->paginaProcesso->ehDocumentoMovido($nomeDocArvore) == false)) { diff --git a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php b/tests_super/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php deleted file mode 100755 index 214e32b16..000000000 --- a/tests_super/funcional/tests/TramiteProcessoContendoDocumentoBeSimpleCorrompidoTest.php +++ /dev/null @@ -1,132 +0,0 @@ -setSeleniumServerRequestsTimeout(6000); - - // Configuração do dados para teste do cenário - self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_corrompimento_besimplesoap.pdf'); - - // Cadastrar novo processo de teste - $objProtocoloDTO = $this->cadastrarProcessoFixture(self::$processoTeste); - $this->cadastrarDocumentoExternoFixture(self::$documentoTeste, $objProtocoloDTO->getDblIdProtocolo()); - self::$protocoloTeste = $objProtocoloDTO->getStrProtocoloFormatado(); - - - // Acessar sistema do this->REMETENTE do processo - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - $this->abrirProcesso(self::$protocoloTeste); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false, null, PEN_WAIT_TIMEOUT_ARQUIVOS_GRANDES); - } - - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * @large - * - * @depends test_tramitar_processo_contendo_documento_besimple - * - * @return void - */ - public function test_verificar_origem_processo_contendo_documento_besimple() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - - $this->abrirProcesso(self::$protocoloTeste); - - // 6 - Verificar se situação atual do processo está como bloqueado - $this->waitUntil(function($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $paginaProcesso = new PaginaProcesso($testCase); - $testCase->assertStringNotContainsString(mb_convert_encoding("Processo em trâmite externo para ", 'UTF-8', 'ISO-8859-1'), $paginaProcesso->informacao()); - $testCase->assertFalse($paginaProcesso->processoAberto()); - $testCase->assertEquals($orgaosDiferentes, $paginaProcesso->processoBloqueado()); - return true; - }, PEN_WAIT_TIMEOUT); - - // 7 - Validar se recibo de trâmite foi armazenado para o processo (envio e conclusão) - $unidade = mb_convert_encoding(self::$destinatario['NOME_UNIDADE'], "ISO-8859-1"); - $mensagemRecibo = sprintf("Trâmite externo do Processo %s para %s", self::$protocoloTeste, $unidade); - $this->validarRecibosTramite($mensagemRecibo, true, true); - - // 8 - Validar histórico de trâmite do processo - $this->validarHistoricoTramite(self::$destinatario['NOME_UNIDADE'], true, true); - - // 9 - Verificar se processo está na lista de Processos Tramitados Externamente - $this->validarProcessosTramitados(self::$protocoloTeste, $orgaosDiferentes); - } - - - /** - * Teste de verificação do correto recebimento do processo contendo apenas um documento interno (gerado) - * - * @group verificacao_recebimento - * @large - * - * @depends test_verificar_origem_processo_contendo_documento_besimple - * - * @return void - */ - public function test_verificar_destino_processo_contendo_documento_besimple() - { - $strProtocoloTeste = self::$protocoloTeste; - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$destinatario['URL'], self::$destinatario['SIGLA_UNIDADE'], self::$destinatario['LOGIN'], self::$destinatario['SENHA']); - - // 11 - Abrir protocolo na tela de controle de processos - $this->abrirProcesso(self::$protocoloTeste); - $listaDocumentos = $this->paginaProcesso->listarDocumentos(); - - // 12 - Validar dados do processo - $strTipoProcesso = mb_convert_encoding("Tipo de processo no órgão de origem: ", 'UTF-8', 'ISO-8859-1'); - $strTipoProcesso .= self::$processoTeste['TIPO_PROCESSO']; - self::$processoTeste['OBSERVACOES'] = $orgaosDiferentes ? $strTipoProcesso : null; - $this->validarDadosProcesso(self::$processoTeste['DESCRICAO'], self::$processoTeste['RESTRICAO'], self::$processoTeste['OBSERVACOES'], array(self::$processoTeste['INTERESSADOS'])); - - // 13 - Verificar recibos de trâmite - $this->validarRecibosTramite("Recebimento do Processo $strProtocoloTeste", false, true); - - // 14 - Validar dados do documento - $this->assertTrue(count($listaDocumentos) == 1); - $this->validarDadosDocumento($listaDocumentos[0], self::$documentoTeste, self::$destinatario); - } -} From 2df37af75a892d8832fe576221bc0c8ad79af3e9 Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Mon, 6 Jan 2025 14:45:06 -0300 Subject: [PATCH 02/26] =?UTF-8?q?feat:=20adicionar=20estrutura=20e=20teste?= =?UTF-8?q?s=20unit=C3=A1rios=20iniciais=20(#762)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: modificar a estrutura atual para funcionamento de bibliotecas externas do PHP no projeto * feat: alterar url_base API para versões sei4, sei41, sei_super e Remover arquivo de ConfiguracaoModPEN.exemplo * feat: alterar o métodos da classe expedirProcedimento para funcionamento correto com REST * feat: alterar o métodos da classe PENAgendamento para funcionamento correto com REST * feat: alterar estrutura da classe ProcessoEletronicoINT para funcionamento correto com REST * refactor: substituir todas as rotas SOAP para REST * refactor: métodos de integração para recebimento de arquivos e geração de recibos * fix: mudar estrutura para se adaptar a mudança na API * chore: correções phpcs * fix: alterar estutura removendo parametro em obsoleto --dev * fix: alterar WSDL para REST no verificador de instalação e corrigir erro de merge * fix:: corrigir atualização no banco para proceessos recebidos * chore: adicionar camiinho absoluto para chamada do vendor dentro da class * feat: alterar tipagem de variável em todos os métodos que consome a API * fix: alterar nome historico no recebimento para teste funcional * fix: correções testes automatizados * fix: Adicionar correção documento cancelado, versões SEI: 4.1.1 e 4.1.2 * chore: aumentar timeout e remover número mágico * fix: correção para campo de unidade em restrição de envio (#704) Campo de id da unidade do Tramita deve receber null quando o mapeamento for apenas para estruturas * inclusão do schema - tbls (#520) Co-authored-by: PauloNehme * chore: usa versão 10.0 das imagens * fix: script instalacao 3.7.0 para postgresql (#706) * chore: versão compatível com 4.1.3 e 4.1.4 * feat: adicionar estrutrura para testes unitários e testes iniciais * feat: merge com testes automatizados e correção phpcs --------- Co-authored-by: Glaydson Rodrigues Co-authored-by: Mauro Costa <83025710+Mauro1706@users.noreply.github.com> Co-authored-by: PauloNehme <88497964+PauloNehme@users.noreply.github.com> Co-authored-by: PauloNehme Co-authored-by: Carlos Vieira <3831408+caduvieira@users.noreply.github.com> Co-authored-by: Marcus Dias <31357298+marvdias@users.noreply.github.com> --- .github/workflows/coveralls.yml | 42 +++ .gitignore | 1 + Makefile | 4 +- src/pen_map_unidade_cadastrar.php | 6 +- src/rn/ProcessoEletronicoRN.php | 107 ++++---- src/rn/ReceberComponenteDigitalRN.php | 6 +- src/rn/ReceberProcedimentoRN.php | 24 +- tests_sei4/funcional/phpunit.xml | 2 +- ...cebimentoRecusaJustificativaGrandeTest.php | 69 +++-- .../TramiteRecebimentoDocumentoAvulsoTest.php | 250 ++++++++++++------ ...eRecebimentoInteressadosDuplicadosTest.php | 232 ++++++++++------ tests_sei4/unitario/bootstrap.php | 8 +- tests_sei4/unitario/composer.json | 5 +- tests_sei4/unitario/phpunit.xml | 9 + .../unitario/rn/CompararVersoesTest.php | 17 ++ .../BuscarEstruturaTest.php | 140 ++++++++++ .../BuscarEstruturasPorEstruturaPaiTest.php | 136 ++++++++++ .../CancelarTramiteTest.php | 87 ++++++ .../CienciaRecusaTest.php | 96 +++++++ .../ConsultarEspeciesDocumentaisTest.php | 131 +++++++++ .../ConsultarEstruturaTest.php | 108 ++++++++ ...ConsultarEstruturasPorEstruturaPaiTest.php | 122 +++++++++ .../ConsultarEstruturasTest.php | 82 ++++++ .../ConsultarHipotesesLegaisTest.php | 111 ++++++++ .../ConsultarMotivosUrgenciaTest.php | 126 +++++++++ .../ConsultarRepositoriosDeEstruturasTest.php | 125 +++++++++ .../ListarEstruturasAutoCompletarTest.php | 130 +++++++++ .../ListarEstruturasBuscaTextualTest.php | 124 +++++++++ .../ListarPendenciasTest.php | 67 +++++ .../ListarRepositorioTest.php | 97 +++++++ .../LitarEstruturasTest.php | 120 +++++++++ .../ReceberReciboDeTramiteTest.php | 103 ++++++++ .../SolicitarMetadadosTest.php | 117 ++++++++ .../unitario/rn/ProcessoEletronicoRNTest.php | 96 ------- tests_sei41/funcional/phpunit.xml | 2 +- ...cebimentoRecusaJustificativaGrandeTest.php | 67 +++-- .../TramiteRecebimentoDocumentoAvulsoTest.php | 250 ++++++++++++------ ...eRecebimentoInteressadosDuplicadosTest.php | 234 ++++++++++------ tests_sei41/unitario/bootstrap.php | 8 +- tests_sei41/unitario/composer.json | 5 +- tests_sei41/unitario/phpunit.xml | 9 + .../unitario/rn/CompararVersoesTest.php | 17 ++ .../BuscarEstruturaTest.php | 140 ++++++++++ .../BuscarEstruturasPorEstruturaPaiTest.php | 136 ++++++++++ .../CancelarTramiteTest.php | 87 ++++++ .../CienciaRecusaTest.php | 96 +++++++ .../ConsultarEspeciesDocumentaisTest.php | 131 +++++++++ .../ConsultarEstruturaTest.php | 108 ++++++++ ...ConsultarEstruturasPorEstruturaPaiTest.php | 122 +++++++++ .../ConsultarEstruturasTest.php | 82 ++++++ .../ConsultarHipotesesLegaisTest.php | 111 ++++++++ .../ConsultarMotivosUrgenciaTest.php | 126 +++++++++ .../ConsultarRepositoriosDeEstruturasTest.php | 125 +++++++++ .../ListarEstruturasAutoCompletarTest.php | 130 +++++++++ .../ListarEstruturasBuscaTextualTest.php | 124 +++++++++ .../ListarPendenciasTest.php | 67 +++++ .../ListarRepositorioTest.php | 97 +++++++ .../LitarEstruturasTest.php | 120 +++++++++ .../ReceberReciboDeTramiteTest.php | 103 ++++++++ .../SolicitarMetadadosTest.php | 117 ++++++++ .../unitario/rn/ProcessoEletronicoRNTest.php | 96 ------- tests_super/funcional/phpunit.xml | 32 +-- ...cebimentoRecusaJustificativaGrandeTest.php | 67 +++-- .../TramiteRecebimentoDocumentoAvulsoTest.php | 250 ++++++++++++------ ...eRecebimentoInteressadosDuplicadosTest.php | 232 ++++++++++------ tests_super/unitario/bootstrap.php | 8 +- tests_super/unitario/composer.json | 5 +- tests_super/unitario/phpunit.xml | 9 + .../unitario/rn/CompararVersoesTest.php | 17 ++ .../BuscarEstruturaTest.php | 140 ++++++++++ .../BuscarEstruturasPorEstruturaPaiTest.php | 136 ++++++++++ .../CancelarTramiteTest.php | 87 ++++++ .../CienciaRecusaTest.php | 96 +++++++ .../ConsultarEspeciesDocumentaisTest.php | 131 +++++++++ .../ConsultarEstruturaTest.php | 108 ++++++++ ...ConsultarEstruturasPorEstruturaPaiTest.php | 122 +++++++++ .../ConsultarEstruturasTest.php | 82 ++++++ .../ConsultarHipotesesLegaisTest.php | 111 ++++++++ .../ConsultarMotivosUrgenciaTest.php | 126 +++++++++ .../ConsultarRepositoriosDeEstruturasTest.php | 125 +++++++++ .../ListarEstruturasAutoCompletarTest.php | 130 +++++++++ .../ListarEstruturasBuscaTextualTest.php | 124 +++++++++ .../ListarPendenciasTest.php | 67 +++++ .../ListarRepositorioTest.php | 97 +++++++ .../LitarEstruturasTest.php | 120 +++++++++ .../ReceberReciboDeTramiteTest.php | 103 ++++++++ .../SolicitarMetadadosTest.php | 117 ++++++++ .../unitario/rn/ProcessoEletronicoRNTest.php | 114 -------- 88 files changed, 7384 insertions(+), 982 deletions(-) create mode 100644 .github/workflows/coveralls.yml create mode 100644 tests_sei4/unitario/rn/CompararVersoesTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/BuscarEstruturaTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/BuscarEstruturasPorEstruturaPaiTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/CancelarTramiteTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/CienciaRecusaTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEspeciesDocumentaisTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturaTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarHipotesesLegaisTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarMotivosUrgenciaTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarRepositoriosDeEstruturasTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarEstruturasAutoCompletarTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarEstruturasBuscaTextualTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarPendenciasTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarRepositorioTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/LitarEstruturasTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/ReceberReciboDeTramiteTest.php create mode 100644 tests_sei4/unitario/rn/ProcessoEletronicoRN/SolicitarMetadadosTest.php delete mode 100755 tests_sei4/unitario/rn/ProcessoEletronicoRNTest.php create mode 100644 tests_sei41/unitario/rn/CompararVersoesTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/BuscarEstruturaTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/BuscarEstruturasPorEstruturaPaiTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/CancelarTramiteTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/CienciaRecusaTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEspeciesDocumentaisTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturaTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarHipotesesLegaisTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarMotivosUrgenciaTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarRepositoriosDeEstruturasTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarEstruturasAutoCompletarTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarEstruturasBuscaTextualTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarPendenciasTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarRepositorioTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/LitarEstruturasTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/ReceberReciboDeTramiteTest.php create mode 100644 tests_sei41/unitario/rn/ProcessoEletronicoRN/SolicitarMetadadosTest.php delete mode 100755 tests_sei41/unitario/rn/ProcessoEletronicoRNTest.php create mode 100644 tests_super/unitario/rn/CompararVersoesTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/BuscarEstruturaTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/BuscarEstruturasPorEstruturaPaiTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/CancelarTramiteTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/CienciaRecusaTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEspeciesDocumentaisTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturaTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarHipotesesLegaisTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarMotivosUrgenciaTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarRepositoriosDeEstruturasTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/ListarEstruturasAutoCompletarTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/ListarEstruturasBuscaTextualTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/ListarPendenciasTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/ListarRepositorioTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/LitarEstruturasTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/ReceberReciboDeTramiteTest.php create mode 100644 tests_super/unitario/rn/ProcessoEletronicoRN/SolicitarMetadadosTest.php delete mode 100755 tests_super/unitario/rn/ProcessoEletronicoRNTest.php diff --git a/.github/workflows/coveralls.yml b/.github/workflows/coveralls.yml new file mode 100644 index 000000000..4d2654c84 --- /dev/null +++ b/.github/workflows/coveralls.yml @@ -0,0 +1,42 @@ +on: + push: + paths: + - "**.php" + - "phpunit.xml" + - ".github/workflows/coveralls.yml" + pull_request: + paths: + - "**.php" + - "phpunit.xml" + - ".github/workflows/coveralls.yml" + +name: Test Coveralls +env: + github-token: ${{ secrets.GITHUB_TOKEN }} + +jobs: + + build: + name: Build + runs-on: ubuntu-latest + steps: + + - name: Fetch Pull Request branch + uses: actions/checkout@v4 + with: + repository: pengovbr/sei + token: ${{ secrets.GH_PAT }} # `GH_PAT` is a secret that contains your PAT + path: sei + - name: Checkout + uses: actions/checkout@v4 + with: + path: sei/src/sei/web/modulos/mod-sei-pen + + - name: make test-unit + run: | + cd sei/src/sei/web/modulos/mod-sei-pen + make test-unit + - name: Coveralls + uses: coverallsapp/github-action@v2 + with: + file: sei/src/sei/web/modulos/mod-sei-pen/tests_super/unitario/cobertura.xml \ No newline at end of file diff --git a/.gitignore b/.gitignore index 64a8a8b8f..bddcffd98 100755 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ src/config/supervisor.ini .vscode +cobertura.xml .env *.pem *.cache diff --git a/Makefile b/Makefile index 50032fe69..dd967eb88 100755 --- a/Makefile +++ b/Makefile @@ -203,8 +203,8 @@ test-parallel-otimizado: .env $(FILE_VENDOR_FUNCIONAL) up make -j2 test-functional-parallel tramitar-pendencias-silent -test-unit: $(FILE_VENDOR_UNITARIO) - $(CMD_DOCKER_COMPOSE) -f $(PEN_TEST_FUNC)/docker-compose.yml run --rm -w /tests php-test-unit bash -c 'vendor/bin/phpunit rn/$(addsuffix .php,$(teste))' +test-unit: .env $(FILE_VENDOR_UNITARIO) + $(CMD_DOCKER_COMPOSE) -f $(PEN_TEST_FUNC)/docker-compose.yml run --rm -w /tests php-test-unit bash -c 'XDEBUG_MODE=coverage vendor/bin/phpunit --testdox --coverage-html html rn/$(addsuffix .php,$(teste))' test: test-unit test-functional diff --git a/src/pen_map_unidade_cadastrar.php b/src/pen_map_unidade_cadastrar.php index ce03d4f84..fab222867 100755 --- a/src/pen_map_unidade_cadastrar.php +++ b/src/pen_map_unidade_cadastrar.php @@ -183,9 +183,9 @@ $objUnidadeDTO->retStrDescricao(); $arrMapIdUnidade = array(); $objPenUnidadeRN = new PenUnidadeRN(); - foreach ($objPenUnidadeRN->listar($objUnidadeDTO) as $dados) { - $arrMapIdUnidade[$dados->getNumIdUnidade()] = $dados->getStrSigla() . ' - ' . $dados->getStrDescricao(); - } + foreach ($objPenUnidadeRN->listar($objUnidadeDTO) as $dados) { + $arrMapIdUnidade[$dados->getNumIdUnidade()] = $dados->getStrSigla() . ' - ' . $dados->getStrDescricao(); + } //Verifica se o numero da unidade esta vazio, senão estiver busca o nome da unidade para exibição $strNomeUnidadeSelecionada = ''; diff --git a/src/rn/ProcessoEletronicoRN.php b/src/rn/ProcessoEletronicoRN.php index b709b3397..6952731ac 100755 --- a/src/rn/ProcessoEletronicoRN.php +++ b/src/rn/ProcessoEletronicoRN.php @@ -271,7 +271,7 @@ public function consultarEstrutura($idRepositorioEstrutura, $numeroDeIdentificac } } - return self::converterArrayParaObjeto($arrResultado); + return $this->converterArrayParaObjeto($arrResultado); } $objEstruturaDTO = new EstruturaDTO(); @@ -476,7 +476,7 @@ public function buscarEstrutura( * @param $idRepositorioEstrutura * @return array|null */ - private function validarRestricaoUnidadesCadastradas($idRepositorioEstrutura) + protected function validarRestricaoUnidadesCadastradas($idRepositorioEstrutura) { //Verificar limitação de repositórios/unidades mapeadas $arrEstruturasCadastradas = null; @@ -542,7 +542,7 @@ private function validarRestricaoUnidadesCadastradas($idRepositorioEstrutura) * @param null|string $numeroDeIdentificacaoDaEstrutura * @return array */ - private function buscarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura = null) + protected function buscarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura = null) { $parametros = new stdClass(); $parametros->filtroDeEstruturasPorEstruturaPai = new stdClass(); @@ -754,10 +754,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++) { - $arrMotivosUrgencia[] = mb_convert_encoding($arrResultado['motivosUrgencia'][$i]['descricao'], 'ISO-8859-1', 'UTF-8'); + $codigo = $i + 1; + $arrMotivosUrgencia[$codigo] = mb_convert_encoding($arrResultado['motivosUrgencia'][$i]['descricao'], 'ISO-8859-1', 'UTF-8'); } } @@ -787,9 +787,9 @@ public function consultarEspeciesDocumentais() $arrEspecies = []; if (isset($arrResultado)) { $count = count($arrResultado['especies']); - for ($i = 0; $i < $count; $i++) { - $arrEspecies[] = mb_convert_encoding($arrResultado['especies'][$i]['nomeNoProdutor'], 'ISO-8859-1', 'UTF-8'); + $codigo = $i + 1; + $arrEspecies[$codigo] = mb_convert_encoding($arrResultado['especies'][$i]['nomeNoProdutor'], 'ISO-8859-1', 'UTF-8'); } } @@ -1231,6 +1231,13 @@ public function solicitarMetadados($parNumIdentificacaoTramite) $objResultado->IDT = $parNumIdentificacaoTramite; $objResultado->NRE = $arrResultado['nre']; + // verificar se é um documento avulso + if (!array_key_exists('processo', $arrResultado) || $arrResultado['processo'] == null) { + $objResultado->metadados = $this->converterArrayParaObjeto($arrResultado); + + return $objResultado; + } + $multivalorado = false; if (count($arrResultado['processo']['documentos']) <= 1) { $arrResultado['processo']['documentos'] = (object) $arrResultado['processo']['documentos'][0]; @@ -1487,9 +1494,9 @@ protected function cadastrarTramiteDeProcessoInternoControlado(ProcessoEletronic */ public static function getHashFromMetaDados($objMeta) { - if (is_array($objMeta)) { - $objMeta = (object) $objMeta; - } + if (is_array($objMeta)) { + $objMeta = (object) $objMeta; + } $strHashConteudo = ''; @@ -2242,24 +2249,23 @@ public function isDisponivelCancelarTramite($strProtocolo = '') } } - public function consultarHipotesesLegais($ativos = true) + public function consultarHipotesesLegais($ativos = true) { $endpoint = "hipoteses"; - + $parametros = [ 'ativos' => $ativos ]; - + try { $arrResultado = $this->get($endpoint, $parametros); - return $arrResultado; - - if (empty($hipoteses)) { + + if (empty($arrResultado)) { return []; } - - return $hipoteses; - + + return $arrResultado; + } catch(Exception $e){ $mensagem = "Falha na obtenção de hipóteses legais"; $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); @@ -2279,7 +2285,8 @@ protected function contarConectado(ProcessoEletronicoDTO $objProcessoEletronicoD } } - private function tentarNovamenteSobErroHTTP($callback, $numTentativa = 1) + + protected function tentarNovamenteSobErroHTTP($callback, $numTentativa = 1) { try { return $callback($this->getObjPenWs()); @@ -2367,12 +2374,12 @@ public static function obterDocumentosProtocolo($parObjProtocolo, $parBolExtrair $arrObjDocumentoPadronizados = ($parBolExtrairAnexados) ? $arrObjDocumento : $arrObjProtocolo; - foreach ($arrObjDocumentoPadronizados as $documento) { - if (is_array($documento) && $documento['componentesDigitais']) { - $documento = (object) $documento; - } - $documento->componentesDigitais = self::obterComponentesDocumentos($documento); + foreach ($arrObjDocumentoPadronizados as $documento) { + if (is_array($documento) && $documento['componentesDigitais']) { + $documento = (object) $documento; } + $documento->componentesDigitais = self::obterComponentesDocumentos($documento); + } return $arrObjDocumentoPadronizados; } @@ -2385,10 +2392,10 @@ public static function obterComponentesDocumentos($parObjDocumento) if (isset($parObjDocumento->componentesDigitais)) { $arrObjComponenteDigital = is_array($parObjDocumento->componentesDigitais) ? $parObjDocumento->componentesDigitais : array($parObjDocumento->componentesDigitais); usort($arrObjComponenteDigital, array("ProcessoEletronicoRN", "comparacaoOrdemComponenteDigitais")); - } + } return $arrObjComponenteDigital; - } + } /** * Retorna a referência para o processo ou documento avulso @@ -2440,14 +2447,14 @@ public static function obterUnidadeParaRegistroDocumento($parDblIdProcedimento) * @param $parObjDocumento * @return array */ - public static function obterComponentesDigitaisDocumento($parObjDocumento) + public static function obterComponentesDigitaisDocumento($parObjDocumento) { - $arrObjComponenteDigital = array(); + $arrObjComponenteDigital = array(); if(isset($parObjDocumento->componentesDigitais)){ $arrObjComponenteDigital = is_array($parObjDocumento->componentesDigitais) ? $parObjDocumento->componentesDigitais : array($parObjDocumento->componentesDigitais); } - return $arrObjComponenteDigital; + return $arrObjComponenteDigital; } @@ -2733,29 +2740,29 @@ public function listarAssociacoesDocumentos($idProcedimento) /** * Converter arrays associativo para objetos */ - public static function converterArrayParaObjeto($array) - { - if (is_array($array)) { - // Verificar se o array é associativo - if (self::verificarSeArrayAssociativo($array)) { - $object = new stdClass(); - foreach ($array as $key => $value) { - $object->$key = self::converterArrayParaObjeto($value); - } - return $object; - } else { - // Para arrays indexados, manter como está - return array_map([self::class, 'converterArrayParaObjeto'], $array); - } + public function converterArrayParaObjeto($array) + { + if (is_array($array)) { + // Verificar se o array é associativo + if (self::verificarSeArrayAssociativo($array)) { + $object = new stdClass(); + foreach ($array as $key => $value) { + $object->$key = $this->converterArrayParaObjeto($value); } - - return $array; + return $object; + } else { + // Para arrays indexados, manter como está + return array_map([self::class, 'converterArrayParaObjeto'], $array); + } } - private static function verificarSeArrayAssociativo(array $array): bool + return $array; + } + + private static function verificarSeArrayAssociativo(array $array) { - return array_keys($array) !== range(0, count($array) - 1); - } + return array_keys($array) !== range(0, count($array) - 1); + } /** diff --git a/src/rn/ReceberComponenteDigitalRN.php b/src/rn/ReceberComponenteDigitalRN.php index 82077f3e2..b7695f636 100755 --- a/src/rn/ReceberComponenteDigitalRN.php +++ b/src/rn/ReceberComponenteDigitalRN.php @@ -260,9 +260,9 @@ public function copiarComponenteDigitalPastaTemporaria($parObjComponenteDigital, throw new InfraException("Componente Digital não informado"); } - if (is_array($parObjComponenteDigital)) { - $parObjComponenteDigital = (object) $parObjComponenteDigital; - } + 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 74a3d57ad..6412d3b1d 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -681,9 +681,9 @@ private function listarMetaDadosComponentesDigitais($parObjProtocolo) $arrObjDocumento = ProcessoEletronicoRN::obterDocumentosProtocolo($parObjProtocolo, true); foreach($arrObjDocumento as $key => $objDocumento){ - if (is_array($objDocumento->componentesDigitais[$key])) { - $objDocumento->componentesDigitais[$key] = (object) $objDocumento->componentesDigitais[$key]; - } + if (is_array($objDocumento->componentesDigitais[$key])) { + $objDocumento->componentesDigitais[$key] = (object) $objDocumento->componentesDigitais[$key]; + } $strHash = ProcessoEletronicoRN::getHashFromMetaDados($objDocumento->componentesDigitais[$key]->hash); $objMapDTO = new PenRelTipoDocMapRecebidoDTO(true); $objMapDTO->setNumMaxRegistrosRetorno(1); @@ -761,9 +761,9 @@ private function validarComponentesDigitais($parObjProtocolo, $parNumIdentificac private function validaTamanhoComponenteDigital($objComponenteDigital) { - if (is_array($objComponenteDigital)) { - $objComponenteDigital = (object) $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); @@ -1941,9 +1941,9 @@ private function atribuirComponentesJaExistentesNoProcesso($objDocumentoDTO, $ob $arrObjAnexosDTO = array(); $arrObjAnexoDTO = array(); foreach ($objComponentesDigitais as $objComponenteDigital) { - if (is_array($objComponenteDigital)) { - $objComponenteDigital = (object) $objComponenteDigital; - } + if (is_array($objComponenteDigital)) { + $objComponenteDigital = (object) $objComponenteDigital; + } $strHashComponenteDigital = ProcessoEletronicoRN::getHashFromMetaDados($objComponenteDigital->hash); $bolComponenteDigitalBaixado = in_array($strHashComponenteDigital, $arrHashComponenteBaixados); @@ -2757,9 +2757,9 @@ private function indexarComponenteDigitaisDoProtocolo($parObjProtocolo) } foreach ($arrDocumento->componentesDigitais as $objComponente) { - if (is_array($objComponente)) { - $objComponente = (object) $objComponente; - } + if (is_array($objComponente)) { + $objComponente = (object) $objComponente; + } $strHash = ProcessoEletronicoRN::getHashFromMetaDados($objComponente->hash); $resultado[$strHash] = $objComponente; diff --git a/tests_sei4/funcional/phpunit.xml b/tests_sei4/funcional/phpunit.xml index 20f52b05f..2dd86c6fc 100755 --- a/tests_sei4/funcional/phpunit.xml +++ b/tests_sei4/funcional/phpunit.xml @@ -15,7 +15,7 @@ + value="https://homolog.api.processoeletronico.gov.br/interoperabilidade/rest/v3/" /> diff --git a/tests_sei4/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php b/tests_sei4/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php index 84424de88..b9138d7cc 100755 --- a/tests_sei4/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php +++ b/tests_sei4/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php @@ -12,7 +12,7 @@ class RecebimentoRecusaJustificativaGrandeTest extends FixtureCenarioBaseTestCas protected $destinatarioWs; protected $servicoPEN; public static $remetente; - public static $destinatario; + public static $destinatario; public static $processoTeste; public static $documentoTeste; public static $protocoloTeste; @@ -58,7 +58,9 @@ public function test_tramitar_processo_da_origem() }else{ $id_tramite=$id_tramite[0]["ID_TRAMITE"]; } - $this->recusarTramite($this->servicoPEN, $id_tramite); + + sleep(5); + $this->recusarTramite($id_tramite); } /** @@ -90,39 +92,58 @@ public function test_verificar_destino_processo_para_devolucao() } - private function recusarTramite($servicoPEN, $id_tramite) + private function recusarTramite($id_tramite) { $justificativa = "An exception occurred while executing 'INSERT INTO juntadas (numeracao_sequencial, movimento, ativo, vinculada, criado_em, atualizado_em, id, uuid, documentos_juntado_id, volumes_id, atividades_id, tarefas_id, comunicacoes_id, origem_dados_id, criado_por, atualizado_por) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [1, 'DOCUMENTO RECEBIDO VIA INTEGRA\u00c7\u00c3O COM O BARRAMENTO', 1, 0, '2021-12-02 14:21:48', '2021-12-02 14:21:48', 1317074776, '06ba31e8-75ad-4111-82dc-6f451f51825e', 1333864526, null, null, null, null, 3534979787, null, null]: ORA-00001: restrição exclusiva (SAPIENS.UNIQ_867686DHDKJ97876) violada"; $parametros = new stdClass(); $parametros->recusaDeTramite = new stdClass(); $parametros->recusaDeTramite->IDT = $id_tramite; - $parametros->recusaDeTramite->justificativa = mb_convert_encoding($justificativa, 'UTF-8', 'ISO-8859-1'); + $parametros->recusaDeTramite->justificativa = utf8_encode($justificativa); $parametros->recusaDeTramite->motivo = "99"; - return $servicoPEN->recusarTramite($parametros); + + return $this->recusarTramiteAPI($parametros); + } + + + private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + { + // TODO: lembrar de pegar url dinamicamente quando SOAP for removido + $strBaseUri = PEN_ENDERECO_WEBSERVICE; + $arrheaders = [ + 'Accept' => '*/*', + 'Content-Type' => 'application/json', + ]; + + $strClientGuzzle = new GuzzleHttp\Client([ + 'base_uri' => $strBaseUri, + 'timeout' => 5.0, + 'headers' => $arrheaders, + 'cert' => [$localCertificado, $senhaCertificado], + ]); + + return $strClientGuzzle; } - private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + public function recusarTramiteAPI($parametros) { - $connectionTimeout = 600; - $options = array( - 'soap_version' => SOAP_1_1 - , 'local_cert' => $localCertificado - , 'passphrase' => $senhaCertificado - , 'resolve_wsdl_remote_includes' => true - , 'cache_wsdl'=> BeSimple\SoapCommon\Cache::TYPE_NONE - , 'connection_timeout' => $connectionTimeout - , CURLOPT_TIMEOUT => $connectionTimeout - , CURLOPT_CONNECTTIMEOUT => $connectionTimeout - , 'encoding' => 'UTF-8' - , 'attachment_type' => BeSimple\SoapCommon\Helper::ATTACHMENTS_TYPE_MTOM - , 'ssl' => array( - 'allow_self_signed' => true, - ), - ); - - return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); + $idt = $parametros->recusaDeTramite->IDT; + $justificativa = $parametros->recusaDeTramite->justificativa; + $motivo = $parametros->recusaDeTramite->motivo; + + $endpoint = "tramites/{$idt}/recusa"; + + $objProcessoEletronicoRN = new ProcessoEletronicoRN(); + $parametros = [ + 'justificativa' => mb_convert_encoding($objProcessoEletronicoRN->reduzirCampoTexto($justificativa, 1000), 'UTF-8', 'ISO-8859-1'), + 'motivo' => $motivo + ]; + + $response = $this->servicoPEN->request('POST', $endpoint, [ + 'json' => $parametros + ]); + return $response; } } diff --git a/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php b/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php index 99d2c2473..37b1ee11b 100755 --- a/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php +++ b/tests_sei4/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php @@ -16,6 +16,7 @@ class TramiteRecebimentoDocumentoAvulsoTest extends FixtureCenarioBaseTestCase const CONTEUDO_DOCUMENTO_C = "arquivo_pequeno_C.pdf"; protected $servicoPEN; + protected $servicoPEN2; public static $remetente; public static $destinatario; public static $processoTeste; @@ -39,12 +40,7 @@ public function setUp(): void // Carregar contexto de testes e dados sobre certificado digital self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - putenv("DATABASE_HOST=org2-database"); - - // Instanciar objeto de teste utilizando o BeSimpleSoap - $localCertificado = self::$remetente['LOCALIZACAO_CERTIFICADO_DIGITAL']; - $senhaCertificado = self::$remetente['SENHA_CERTIFICADO_DIGITAL']; - $this->servicoPEN = $this->instanciarApiDeIntegracao($localCertificado, $senhaCertificado); + } /** @@ -52,16 +48,21 @@ public function setUp(): void * * @return void */ - public function test_recebimento_documento_avulso() + public function test_recebimento_metadados_documento_avulso() { + + $localCertificado = self::$remetente['LOCALIZACAO_CERTIFICADO_DIGITAL']; + $senhaCertificado = self::$remetente['SENHA_CERTIFICADO_DIGITAL']; + + $this->servicoPEN = $this->instanciarApiDeIntegracao($localCertificado, $senhaCertificado); + // Simular um trâmite chamando a API do Barramento diretamente self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente, array(self::CONTEUDO_DOCUMENTO_A)); $metadadosDocumentoTeste = $this->construirMetadadosDocumentoTeste(self::$documentoTeste1); - $novoTramite = $this->enviarMetadadosDocumento($this->servicoPEN, self::$remetente, self::$destinatario, $metadadosDocumentoTeste); - $this->enviarComponentesDigitaisDoTramite($this->servicoPEN, $novoTramite, $metadadosDocumentoTeste); - $reciboTramite = $this->receberReciboEnvio($this->servicoPEN, $novoTramite); - + $novoTramite = $this->enviarMetadadosDocumento(self::$remetente, self::$destinatario, $metadadosDocumentoTeste); + $this->enviarComponentesDigitaisDoTramite($novoTramite, $metadadosDocumentoTeste); + $reciboTramite = $this->receberReciboEnvio($novoTramite); //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -75,7 +76,6 @@ public function test_recebimento_documento_avulso() * @group envio * @large * - * @depends test_recebimento_documento_avulso * * @return void */ @@ -149,76 +149,51 @@ public function test_verificar_recebimento_processo_destino_documento_avulso() $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, $documentos, self::$destinatario); } - private function receberReciboEnvio($servicoPEN, $novoTramite) - { - $dadosTramite = $novoTramite->dadosTramiteDeDocumentoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->tramite->IDT; - return $servicoPEN->receberReciboDeEnvio($parametros); - } - private function enviarMetadadosDocumento($servicoPEN, $remetente, $destinatario, $documentoTeste) + private function receberReciboEnvio($novoTramite) { - $parametros = new stdClass(); - $parametros->novoTramiteDeDocumento = new stdClass(); - $parametros->novoTramiteDeDocumento->cabecalho = $this->construirCabecalhoTeste($remetente, $destinatario); - $parametros->novoTramiteDeDocumento->documento = $documentoTeste; - return $servicoPEN->enviarDocumento($parametros); + $dadosTramite = $novoTramite['tramites']; + $idt = $dadosTramite[0]['IDT']; + return $this->receberReciboDeEnvioAPI($idt); } - private function enviarComponentesDigitaisDoTramite($servicoPEN, $novoTramite, $documentoTeste) + private function enviarMetadadosDocumento($remetente, $destinatario, $documentoTeste) { - $dadosTramite = $novoTramite->dadosTramiteDeDocumentoCriado; - foreach ($documentoTeste['componenteDigital'] as $item) { - $dadosDoComponenteDigital = new stdClass(); - $dadosDoComponenteDigital->protocolo = $documentoTeste['protocolo']; - $dadosDoComponenteDigital->hashDoComponenteDigital = $item['valorHash']; - $dadosDoComponenteDigital->conteudoDoComponenteDigital = new SoapVar($item['conteudo'], XSD_BASE64BINARY); - $dadosDoComponenteDigital->ticketParaEnvioDeComponentesDigitais = $dadosTramite->ticketParaEnvioDeComponentesDigitais; - - $parametros = new stdClass(); - $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; - $servicoPEN->enviarComponenteDigital($parametros); - } + $parametros = []; + $parametros['cabecalho'] = $this->construirCabecalhoTeste($remetente, $destinatario); + $parametros['documento'] = $documentoTeste['documentoEnvio']; + + return $this->enviarDocumentoAPI($parametros); } - private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + private function enviarComponentesDigitaisDoTramite($novoTramite, $documentoTeste) { - $connectionTimeout = 600; - $options = array( - 'soap_version' => SOAP_1_1 - , 'local_cert' => $localCertificado - , 'passphrase' => $senhaCertificado - , 'resolve_wsdl_remote_includes' => true - , 'cache_wsdl'=> BeSimple\SoapCommon\Cache::TYPE_NONE - , 'connection_timeout' => $connectionTimeout - , CURLOPT_TIMEOUT => $connectionTimeout - , CURLOPT_CONNECTTIMEOUT => $connectionTimeout - , 'encoding' => 'UTF-8' - , 'attachment_type' => BeSimple\SoapCommon\Helper::ATTACHMENTS_TYPE_MTOM - , 'ssl' => array( - 'allow_self_signed' => true, - ), - ); - - return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); - + $parametros = []; + $dadosDoComponenteDigital['protocolo'] = $documentoTeste['documentoEnvio']['protocolo']; + $dadosDoComponenteDigital['hashDoComponenteDigital'] = $documentoTeste['componenteEnvio']['hashDocumento']; + $dadosDoComponenteDigital['conteudoDoComponenteDigital'] = $documentoTeste['componenteEnvio']['conteudo']; + $dadosDoComponenteDigital['ticketParaEnvioDeComponentesDigitais'] = $novoTramite['ticketParaEnvioDeComponentesDigitais']; + + $parametros['dadosDoComponenteDigital'] = $dadosDoComponenteDigital; + + $this->enviarComponenteDigitalAPI($parametros); } private function construirCabecalhoTeste($remetente, $destinatario) { - $cabecalho = new stdClass(); - $cabecalho->remetente = new stdClass(); - $cabecalho->remetente->identificacaoDoRepositorioDeEstruturas = $remetente['ID_REP_ESTRUTURAS']; - $cabecalho->remetente->numeroDeIdentificacaoDaEstrutura = $remetente['ID_ESTRUTURA']; - - $cabecalho->destinatario = new stdClass(); - $cabecalho->destinatario->identificacaoDoRepositorioDeEstruturas = $destinatario['ID_REP_ESTRUTURAS']; - $cabecalho->destinatario->numeroDeIdentificacaoDaEstrutura =$destinatario['ID_ESTRUTURA']; - - $cabecalho->urgente = false; - $cabecalho->motivoDaUrgencia = null; - $cabecalho->obrigarEnvioDeTodosOsComponentesDigitais = false; + $cabecalho = [ + 'remetente' => [ + 'identificacaoDoRepositorioDeEstruturas' => $remetente['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $remetente['ID_ESTRUTURA'], + ], + 'destinatarios' => [ + [ + 'identificacaoDoRepositorioDeEstruturas' => $destinatario['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $destinatario['ID_ESTRUTURA'], + ], + ] + ]; + return $cabecalho; } @@ -247,42 +222,145 @@ private function construirMetadadosDocumentoTeste($documentoTeste) $nomeArquivo = basename($caminhoArquivo); $componentes[] = array( 'nome' => $nomeArquivo, - 'hash' => new SoapVar("$hashDocumento", XSD_ANYXML), + 'hash' => [ + 'algoritmo' => 'SHA256', + 'conteudo' => $hashDocumento + ], 'tipoDeConteudo' => 'txt', - 'mimeType' => 'text/plain', + "mimeType" => "application/pdf", 'tamanhoEmBytes' => $tamanhoDocumento, 'ordem' => $ordem + 1, - - // Chaves abaixo adicionadas apenas para simplificação dos testes - 'valorHash' => $hashDocumento, - 'conteudo' => $conteudo, ); } finally { fclose($fp); } } - return array( - 'protocolo' => '13990.000181/2020-00', + $documentoEnvio = array( + 'protocolo' => '13990.000185/2024-00', 'nivelDeSigilo' => 1, 'descricao' => $documentoTeste['DESCRICAO'], 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', - 'produtor' => array( - 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), + "nome" => "Nome ABC", + "tipo" => "orgaopublico" ), - 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') + 'nomeNoProdutor' => 'Despacho', ), - - 'interessado' => array( - 'nome' => $documentoTeste['INTERESSADOS'], + 'interessados' => array( + [ + "nome" => $documentoTeste['INTERESSADOS'], + "tipo" => "fisica" + ] ), - 'componenteDigital' => $componentes, + 'componentesDigitais' => $componentes, + ); + + $componenteEnvio = array( + 'hashDocumento' => $hashDocumento, + 'conteudo' => $conteudo + ); + + return array( + 'documentoEnvio' => $documentoEnvio, + 'componenteEnvio' => $componenteEnvio ); } + + public function enviarDocumentoAPI($parametros) + { + try { + $endpoint = "tramites/documento"; + + $response = $this->servicoPEN->request('POST', $endpoint, [ + 'json' => $parametros + ]); + + return json_decode($response->getBody(), true); + + } catch (\Exception $e) { + $mensagem = "Falha no envio de documento avulso"; + } + } + + + public function enviarComponenteDigitalAPI($parametros) + { + try { + + $arrParametros = $parametros['dadosDoComponenteDigital']; + $idTicketDeEnvio = $arrParametros['ticketParaEnvioDeComponentesDigitais']; + + $protocolo = $arrParametros['protocolo']; + $hashDoComponenteDigital = $arrParametros['hashDoComponenteDigital']; + $conteudo = $arrParametros['conteudoDoComponenteDigital']; + + $queryParams = [ + 'hashDoComponenteDigital' => $hashDoComponenteDigital, + 'protocolo' => $protocolo + ]; + + $endpoint = "tickets-de-envio-de-componente/{$idTicketDeEnvio}/protocolos/componentes-a-enviar"; + + $arrOptions = [ + 'query' => $queryParams, + 'multipart' => [ + [ + 'name' => 'conteudo', + 'contents' => $conteudo, + 'filename' => 'conteudo.html', + 'headers' => ['Content-Type' => 'text/html'] + ], + ], + ]; + + $response = $this->servicoPEN->request('PUT', $endpoint, $arrOptions); + + return $response; + + } catch (\Exception $e) { + $mensagem = "Falha no envio de de componentes no documento"; + } + } + + + public function receberReciboDeEnvioAPI($parNumIdTramite) + { + $endpoint = "tramites/{$parNumIdTramite}/recibo-de-envio"; + try{ + $parametros = [ + 'IDT' => $parNumIdTramite + ]; + + $response = $this->servicoPEN->request('GET', $endpoint, [ + 'query' => $parametros + ]); + + return json_decode($response->getBody(), true); + } catch (\Exception $e) { + $mensagem = "Falha no recebimento de recibo de trâmite de envio."; + } + } + + private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + { + $arrheaders = [ + 'Accept' => '*/*', + 'Content-Type' => 'application/json', + ]; + + $strClientGuzzle = new GuzzleHttp\Client([ + 'base_uri' => PEN_ENDERECO_WEBSERVICE, + 'handler' => GuzzleHttp\HandlerStack::create(), + 'timeout' => 5.0, + 'headers' => $arrheaders, + 'cert' => [$localCertificado, $senhaCertificado], + ]); + + return $strClientGuzzle; + } } diff --git a/tests_sei4/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php b/tests_sei4/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php index 768308bb9..b612f426f 100755 --- a/tests_sei4/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php +++ b/tests_sei4/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php @@ -19,6 +19,8 @@ class TramiteRecebimentoInteressadosDuplicadosTest extends FixtureCenarioBaseTes public static $servicoPEN; public static $documentoTeste1; + public static $conteudoCompoonenteDigital; + /** * Teste de envio de metadados do processo contendo interessados duplicados * @@ -50,9 +52,9 @@ public function test_envio_processo_com_documento_anexado() // Inicia o envio do processo $arrDocumentosPrimeiroEnvio = array(self::$documentoTeste1); $processoTeste = $this->construirMetadadosProcessoTeste(self::$processoTeste, $arrDocumentosPrimeiroEnvio); - $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, self::$remetente, self::$destinatario, $processoTeste); - $this->enviarComponentesDigitaisDoTramite(self::$servicoPEN, $novoTramite, $processoTeste); - $reciboTramite = $this->receberReciboEnvio(self::$servicoPEN, $novoTramite); + $novoTramite = $this->enviarMetadadosProcesso(self::$remetente, self::$destinatario, $processoTeste); + $this->enviarComponentesDigitaisDoTramite($novoTramite, $processoTeste); + $reciboTramite = $this->receberReciboEnvio($novoTramite); //Verifica recebimento de novo processo administrativo contendo documento avulso enviado @@ -65,86 +67,71 @@ public function test_envio_processo_com_documento_anexado() } - private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) { - $connectionTimeout = 600; - $options = array( - 'soap_version' => SOAP_1_1 - , 'local_cert' => $localCertificado - , 'passphrase' => $senhaCertificado - , 'resolve_wsdl_remote_includes' => true - , 'connection_timeout' => $connectionTimeout - , CURLOPT_TIMEOUT => $connectionTimeout - , CURLOPT_CONNECTTIMEOUT => $connectionTimeout - , 'encoding' => 'UTF-8' - , 'attachment_type' => BeSimple\SoapCommon\Helper::ATTACHMENTS_TYPE_MTOM - , 'ssl' => array( - 'allow_self_signed' => true, - ), - ); - - return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); + $arrheaders = [ + 'Accept' => '*/*', + 'Content-Type' => 'application/json', + ]; + + $strClientGuzzle = new GuzzleHttp\Client([ + 'base_uri' => PEN_ENDERECO_WEBSERVICE, + 'handler' => GuzzleHttp\HandlerStack::create(), + 'timeout' => 5.0, + 'headers' => $arrheaders, + 'cert' => [$localCertificado, $senhaCertificado], + ]); + + return $strClientGuzzle; } - private function enviarMetadadosProcesso($servicoPEN, $remetente, $destinatario, $processoTeste) + private function enviarMetadadosProcesso($remetente, $destinatario, $processoTeste) { - $parametros = new stdClass(); - $parametros->novoTramiteDeProcesso = new stdClass(); - $parametros->novoTramiteDeProcesso->cabecalho = $this->construirCabecalhoTeste($remetente, $destinatario); - $parametros->novoTramiteDeProcesso->processo = $processoTeste; - return $servicoPEN->enviarProcesso($parametros); + $parametros = []; + $parametros['cabecalho'] = $this->construirCabecalhoTeste($remetente, $destinatario); + $parametros['processo'] = $processoTeste; + + return $this->enviarProcessoAPI($parametros); } - private function enviarComponentesDigitaisDoTramite($servicoPEN, $novoTramite, $processoTeste) + private function enviarComponentesDigitaisDoTramite($novoTramite, $processoTeste) { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - foreach ($processoTeste['documento'] as $documentoTeste) { - foreach ($documentoTeste['componenteDigital'] as $item) { - $dadosDoComponenteDigital = new stdClass(); - $dadosDoComponenteDigital->protocolo = $processoTeste['protocolo']; - $dadosDoComponenteDigital->hashDoComponenteDigital = $item['valorHash']; - $dadosDoComponenteDigital->conteudoDoComponenteDigital = new SoapVar($item['conteudo'], XSD_BASE64BINARY); - $dadosDoComponenteDigital->ticketParaEnvioDeComponentesDigitais = $dadosTramite->ticketParaEnvioDeComponentesDigitais; - - $parametros = new stdClass(); - $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; - $servicoPEN->enviarComponenteDigital($parametros); + foreach ($processoTeste['documentos'] as $documentoTeste) { + foreach ($documentoTeste['componentesDigitais'] as $item) { + $dadosDoComponenteDigital = []; + $dadosDoComponenteDigital['protocolo'] = $processoTeste['protocolo']; + $dadosDoComponenteDigital['hashDoComponenteDigital'] = $item['hash']['conteudo']; + $dadosDoComponenteDigital['ticketParaEnvioDeComponentesDigitais'] = $novoTramite['ticketParaEnvioDeComponentesDigitais']; + + $parametros['dadosDoComponenteDigital'] = $dadosDoComponenteDigital; + $this->enviarComponenteDigitalAPI($parametros); } } - } - private function receberReciboEnvio($servicoPEN, $novoTramite) - { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->IDT; - return $servicoPEN->receberReciboDeEnvio($parametros); } - private function receberReciboTramite($servicoPEN, $novoTramite) + private function receberReciboEnvio($novoTramite) { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->IDT; - return $servicoPEN->receberReciboDeTramite($parametros); + $idt = $novoTramite['IDT']; + return $this->receberReciboDeEnvioAPI($idt); } private function construirCabecalhoTeste($remetente, $destinatario) { - $cabecalho = new stdClass(); - $cabecalho->remetente = new stdClass(); - $cabecalho->remetente->identificacaoDoRepositorioDeEstruturas = $remetente['ID_REP_ESTRUTURAS']; - $cabecalho->remetente->numeroDeIdentificacaoDaEstrutura = $remetente['ID_ESTRUTURA']; - - $cabecalho->destinatario = new stdClass(); - $cabecalho->destinatario->identificacaoDoRepositorioDeEstruturas = $destinatario['ID_REP_ESTRUTURAS']; - $cabecalho->destinatario->numeroDeIdentificacaoDaEstrutura =$destinatario['ID_ESTRUTURA']; - - $cabecalho->urgente = false; - $cabecalho->motivoDaUrgencia = null; - $cabecalho->obrigarEnvioDeTodosOsComponentesDigitais = false; + $cabecalho = [ + 'remetente' => [ + 'identificacaoDoRepositorioDeEstruturas' => $remetente['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $remetente['ID_ESTRUTURA'], + ], + 'destinatario' => [ + 'identificacaoDoRepositorioDeEstruturas' => $destinatario['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $destinatario['ID_ESTRUTURA'], + ], + 'enviarApenasComponentesDigitaisPendentes' => false + ]; + return $cabecalho; } @@ -169,7 +156,8 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest { $metadadosDocumentos = array(); foreach ($documentosTeste as $indice => $documentoTeste) { - $metadadosDocumentos[] = $this->construirMetadadosDocumentoTeste($documentoTeste, $indice + 1); + $documentos = $this->construirMetadadosDocumentoTeste($documentoTeste, $indice + 1); + $metadadosDocumentos[] = $documentos['documentoDoProcesso']; } $arrInteressados = array_map(function($item) { @@ -186,9 +174,10 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), + 'tipo' => "orgaopublico", ), - 'interessado' => $arrInteressados, - 'documento' => $metadadosDocumentos, + 'interessados' => $arrInteressados, + 'documentos' => $metadadosDocumentos, ); } @@ -207,16 +196,17 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen $nomeArquivo = basename($caminhoArquivo); $componentes[] = array( 'nome' => $nomeArquivo, - 'hash' => new SoapVar("$hashDocumento", XSD_ANYXML), + 'hash' => [ + 'algoritmo' => 'SHA256', + 'conteudo' => $hashDocumento + ], 'tipoDeConteudo' => 'txt', - 'mimeType' => 'text/plain', + 'mimeType' => 'application/pdf', 'tamanhoEmBytes' => $tamanhoDocumento, 'ordem' => $ordemComponente, - - // Chaves abaixo adicionadas apenas para simplificação dos testes - 'valorHash' => $hashDocumento, - 'conteudo' => $conteudo, ); + + self::$conteudoCompoonenteDigital = [$hashDocumento => $conteudo]; } finally { fclose($fp); } @@ -229,10 +219,9 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'ordem' => $ordemDocumento, - 'produtor' => array( 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), - 'numeroDeIdentificacao' => '999999', + "tipo" => "orgaopublico" ), 'especie' => array( @@ -240,17 +229,102 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), - 'interessado' => array( - 'nome' => $documentoTeste['INTERESSADOS'], + 'interessados' => array( + [ + "nome" => $documentoTeste['INTERESSADOS'], + "tipo" => "fisica" + ] ), - 'componenteDigital' => $componentes, + 'componentesDigitais' => $componentes, + ); + + $componenteEnvio = array( + 'hashDocumento' => $hashDocumento, + 'conteudo' => $conteudo ); if(!is_null($documentoTeste['ORDEM_DOCUMENTO_REFERENCIADO'])){ $documentoDoProcesso['ordemDoDocumentoReferenciado'] = intval($documentoTeste['ORDEM_DOCUMENTO_REFERENCIADO']); } - return $documentoDoProcesso; + return array( + 'documentoDoProcesso' => $documentoDoProcesso, + 'componenteEnvio' => $componenteEnvio + ); + } + + public function enviarProcessoAPI($parametros) + { + try { + $endpoint = "tramites/processo"; + + $response = self::$servicoPEN->request('POST', $endpoint, [ + 'json' => $parametros + ]); + + return json_decode($response->getBody(), true); + + } catch (\Exception $e) { + $mensagem = "Falha no envio de processo"; + } + } + + public function enviarComponenteDigitalAPI($parametros) + { + try { + + $arrParametros = $parametros['dadosDoComponenteDigital']; + $idTicketDeEnvio = $arrParametros['ticketParaEnvioDeComponentesDigitais']; + + $protocolo = $arrParametros['protocolo']; + $hashDoComponenteDigital = $arrParametros['hashDoComponenteDigital']; + + $conteudoComponenteDigital = self::$conteudoCompoonenteDigital[$hashDoComponenteDigital]; + + $queryParams = [ + 'hashDoComponenteDigital' => $hashDoComponenteDigital, + 'protocolo' => $protocolo + ]; + + $endpoint = "tickets-de-envio-de-componente/{$idTicketDeEnvio}/protocolos/componentes-a-enviar"; + + $arrOptions = [ + 'query' => $queryParams, + 'multipart' => [ + [ + 'name' => 'conteudo', + 'contents' => $conteudoComponenteDigital, + 'filename' => 'conteudo.html', + 'headers' => ['Content-Type' => 'text/html'] + ], + ], + ]; + + $response = self::$servicoPEN->request('PUT', $endpoint, $arrOptions); + + return $response; + + } catch (\Exception $e) { + $mensagem = "Falha no envio de de componentes no documento"; + } + } + + public function receberReciboDeEnvioAPI($parNumIdTramite) + { + $endpoint = "tramites/{$parNumIdTramite}/recibo-de-envio"; + try{ + $parametros = [ + 'IDT' => $parNumIdTramite + ]; + + $response = self::$servicoPEN->request('GET', $endpoint, [ + 'query' => $parametros + ]); + + return json_decode($response->getBody(), true); + } catch (\Exception $e) { + $mensagem = "Falha no recebimento de recibo de trâmite de envio."; + } } } diff --git a/tests_sei4/unitario/bootstrap.php b/tests_sei4/unitario/bootstrap.php index 69fdb7ba6..383369434 100755 --- a/tests_sei4/unitario/bootstrap.php +++ b/tests_sei4/unitario/bootstrap.php @@ -1,9 +1,5 @@ + + + /opt/sei/web/modulos/pen/vendor + /opt/sei/web/modulos/pen/config + + + /opt/sei/web/modulos/pen + + diff --git a/tests_sei4/unitario/rn/CompararVersoesTest.php b/tests_sei4/unitario/rn/CompararVersoesTest.php new file mode 100644 index 000000000..949f944c3 --- /dev/null +++ b/tests_sei4/unitario/rn/CompararVersoesTest.php @@ -0,0 +1,17 @@ +assertTrue(InfraUtil::compararVersoes("0.0.1", "<", "0.0.2")); + $this->assertTrue(InfraUtil::compararVersoes("0.1.0", "<", "0.2.0")); + $this->assertTrue(InfraUtil::compararVersoes("1.0.0", "<", "2.0.0")); + $this->assertTrue(InfraUtil::compararVersoes("4.0.3", "==", "4.0.3.0")); + $this->assertTrue(InfraUtil::compararVersoes("4.0.3", "<", "4.0.3.1")); + $this->assertTrue(InfraUtil::compararVersoes("4.0.4", ">", "4.0.3.0")); + $this->assertTrue(InfraUtil::compararVersoes("4.0.3.0", "==", "4.0.3.5", 3, true)); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/BuscarEstruturaTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/BuscarEstruturaTest.php new file mode 100644 index 000000000..715e414cb --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/BuscarEstruturaTest.php @@ -0,0 +1,140 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get', 'buscarEstruturaRest']) + ->getMock(); + } + + /** + * Testa o comportamento do método buscarEstrutura em caso de sucesso. + * + * Simula uma resposta válida para o método `buscarEstruturaRest` e verifica + * se o retorno do método testado é uma instância válida da classe EstruturaDTO. + * + * @return void + */ + public function testBuscarEstruturaSucesso() + { + // Mock do retorno esperado da API + $estruturaMock = [ + 'numeroDeIdentificacaoDaEstrutura' => '12345', + 'nome' => 'Estrutura Teste', + 'sigla' => 'ET', + 'ativo' => true, + 'aptoParaReceber' => true, + 'codigoNoOrgaoEntidade' => 'CNOE123', + 'hierarquia' => [ + ['sigla' => 'Nivel1'], + ['sigla' => 'Nivel2'] + ] + ]; + + // Mock do método buscarEstruturaRest + $this->mockService->expects($this->once()) + ->method('buscarEstruturaRest') + ->with(1, 'Estrutura Raiz') + ->willReturn($estruturaMock); + + // Chamada do método + $resultado = $this->mockService->buscarEstrutura( + 1, // idRepositorioEstrutura + 'Estrutura Raiz' // Nome ou identificador raiz + ); + + $this->assertInstanceOf(EstruturaDTO::class, $resultado, 'O retorno deve ser uma instância da classe EstruturaDTO.'); + } + + /** + * Testa o comportamento do método buscarEstrutura com um repositório inválido. + * + * Verifica se o método lança a exceção correta ao receber um ID de repositório inválido. + * + * @return void + */ + public function testBuscarEstruturaComRepositorioInvalido() + { + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->buscarEstrutura(0); // Passando um ID inválido + } + + /** + * Testa o comportamento do método buscarEstrutura quando a estrutura não é encontrada. + * + * Simula o retorno `null` do método `buscarEstruturaRest` e verifica se o + * método principal retorna `null` como esperado. + * + * @return void + */ + public function testBuscarEstruturaNaoEncontrada() + { + // Mock para retorno nulo da API + $this->mockService->expects($this->once()) + ->method('buscarEstruturaRest') + ->with(1, 'Estrutura Raiz') + ->willReturn(null); + + // Chamada do método + $resultado = $this->mockService->buscarEstrutura( + 1, // idRepositorioEstrutura + 'Estrutura Raiz' // Nome ou identificador raiz + ); + + // Asserção de retorno nulo + $this->assertNull($resultado); + } + + /** + * Testa o comportamento do método buscarEstrutura quando ocorre uma exceção. + * + * Simula uma exceção no método `get` e verifica se a exceção correta é lançada + * pelo método testado. + * + * @return void + */ + public function testBuscarEstruturaLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception()); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstrutura(159098, 152254, false); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/BuscarEstruturasPorEstruturaPaiTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/BuscarEstruturasPorEstruturaPaiTest.php new file mode 100644 index 000000000..6d72134e3 --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/BuscarEstruturasPorEstruturaPaiTest.php @@ -0,0 +1,136 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas', 'tentarNovamenteSobErroHTTP']) + ->getMock(); + } + + /** + * Testa o método `buscarEstruturasPorEstruturaPai` com parâmetros de identificação. + * + * Verifica se o método: + * - Retorna um array. + * - Retorna o número correto de estruturas. + * - As estruturas têm os valores esperados. + */ + public function testBuscarEstruturasPorEstruturaPaiComIdentificacao() + { + // Configuração do mock + $resultadoMock = new stdClass(); + $resultadoMock->estruturasEncontradasNoFiltroPorEstruturaPai = new stdClass(); + $resultadoMock->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura = [ + (object) ['id' => 1, 'nome' => 'Estrutura 1'], + (object) ['id' => 2, 'nome' => 'Estrutura 2'] + ]; + + $this->mockService->expects($this->once()) + ->method('tentarNovamenteSobErroHTTP') + ->willReturnCallback(function ($callback) use ($resultadoMock) { + $mockObjPenWs = $this->getMockBuilder(stdClass::class) + ->addMethods(['consultarEstruturasPorEstruturaPai']) + ->getMock(); + $mockObjPenWs->method('consultarEstruturasPorEstruturaPai') + ->willReturn($resultadoMock); + + return $callback($mockObjPenWs); + }); + + // Reflexão para acessar o método privado + $reflexao = new ReflectionClass($this->mockService); + $metodoPrivado = $reflexao->getMethod('buscarEstruturasPorEstruturaPai'); + $metodoPrivado->setAccessible(true); + + // Teste + $idRepositorioEstrutura = 123; + $numeroDeIdentificacaoDaEstrutura = 'ABC123'; + + $resultado = $metodoPrivado->invokeArgs( + $this->mockService, + [$idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura] + ); + + // Validações + $this->assertIsArray($resultado, 'Deve retornar um array'); + $this->assertCount(2, $resultado, 'Deve retornar duas estruturas'); + $this->assertEquals('Estrutura 1', $resultado[0]->nome, 'Deve retornar a estrutura 1'); + $this->assertEquals('Estrutura 2', $resultado[1]->nome, 'Deve retornar a estrutura 2'); + } + + /** + * Testa o método `buscarEstruturasPorEstruturaPai` sem parâmetros de identificação. + * + * Verifica se o método: + * - Retorna um array. + * - Retorna uma estrutura única com os valores esperados. + */ + public function testBuscarEstruturasPorEstruturaPaiSemIdentificacao() + { + // Configuração do mock + $resultadoMock = new stdClass(); + $resultadoMock->estruturasEncontradasNoFiltroPorEstruturaPai = new stdClass(); + $resultadoMock->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura = (object) ['id' => 1, 'nome' => 'Estrutura Única']; + + $this->mockService->expects($this->once()) + ->method('tentarNovamenteSobErroHTTP') + ->willReturnCallback(function ($callback) use ($resultadoMock) { + $mockObjPenWs = $this->getMockBuilder(stdClass::class) + ->addMethods(['consultarEstruturasPorEstruturaPai']) + ->getMock(); + $mockObjPenWs->method('consultarEstruturasPorEstruturaPai') + ->willReturn($resultadoMock); + + return $callback($mockObjPenWs); + }); + + // Reflexão para acessar o método privado + $reflexao = new ReflectionClass($this->mockService); + $metodoPrivado = $reflexao->getMethod('buscarEstruturasPorEstruturaPai'); + $metodoPrivado->setAccessible(true); + + // Teste + $idRepositorioEstrutura = 123; + + $resultado = $metodoPrivado->invokeArgs($this->mockService, [$idRepositorioEstrutura]); + + // Validações + $this->assertIsArray($resultado); + $this->assertCount(1, $resultado); + $this->assertEquals('Estrutura Única', $resultado[0]->nome); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/CancelarTramiteTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/CancelarTramiteTest.php new file mode 100644 index 000000000..4c85d7dfd --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/CancelarTramiteTest.php @@ -0,0 +1,87 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['delete']) + ->getMock(); + } + + /** + * Teste do método cancelarTramite em caso de sucesso. + * + * Este teste simula a execução do método cancelarTramite quando o método 'delete' do mock + * retorna uma resposta bem-sucedida (null). O teste verifica se o retorno do método é + * o esperado (null), indicando que o trâmite foi cancelado com sucesso. + * + * @return void + */ + public function testCancelarTramiteSucesso() + { + $mockResponse = null; + + // Configura o mock para retornar a resposta esperada (null) + $this->mockService->expects($this->once()) + ->method('delete') + ->willReturn($mockResponse); + + // Executa o método cancelarTramite + $resultado = $this->mockService->cancelarTramite(999); + + // Verifica se o retorno é nulo (indicando sucesso no cancelamento) + $this->assertNull($mockResponse, "O objeto é nulo"); + } + + /** + * Teste do método cancelarTramite quando ocorre uma exceção. + * + * Este teste simula a falha no método cancelarTramite, quando o método 'delete' do mock + * lança uma exceção. O teste verifica se a exceção esperada (InfraException) é lançada e + * se a mensagem associada à exceção está correta. + * + * @return void + * @throws \InfraException Quando ocorre uma falha no cancelamento do trâmite + */ + public function testCancelarTramiteLancaExcecao() + { + // Configura o mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('delete') + ->willThrowException(new Exception('Erro na requisição')); + + // Espera que a exceção InfraException seja lançada com a mensagem esperada + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha no cancelamento de trâmite de processo'); + + // Executa o método cancelarTramite e verifica se a exceção é lançada + $this->mockService->cancelarTramite(999); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/CienciaRecusaTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/CienciaRecusaTest.php new file mode 100644 index 000000000..f436fbd3f --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/CienciaRecusaTest.php @@ -0,0 +1,96 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o método `cienciaRecusa` com retorno bem-sucedido. + * + * Verifica se o método: + * - Retorna um array com as chaves `status` e `mensagem`. + * - Contém os valores esperados no retorno. + */ + public function testCienciaRecusaComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'status' => 'sucesso', + 'mensagem' => 'Ciência registrada com sucesso.' + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('tramites/123/ciencia', ['IDT' => 123]) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->cienciaRecusa(123); + + // Validações + $this->assertIsArray($resultado); + $this->assertArrayHasKey('status', $resultado); + $this->assertEquals('sucesso', $resultado['status']); + $this->assertEquals('Ciência registrada com sucesso.', $resultado['mensagem']); + } + + /** + * Testa o método `cienciaRecusa` quando ocorre um erro. + * + * Verifica se o método: + * - Lança a exceção esperada (`InfraException`). + * - Contém a mensagem correta de erro. + */ + public function testCienciaRecusaComErro() + { + // Configuração do mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Expectativa de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha no registro de ciência da recusa de trâmite'); + + // Chamada do método (deve lançar exceção) + $this->mockService->cienciaRecusa(123); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEspeciesDocumentaisTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEspeciesDocumentaisTest.php new file mode 100644 index 000000000..2b22a1acc --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEspeciesDocumentaisTest.php @@ -0,0 +1,131 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o método `consultarEspeciesDocumentais` com retorno bem-sucedido. + * + * Verifica se o método: + * - Retorna um array com as espécies documentais. + * - Converte corretamente as strings para o formato esperado (`ISO-8859-1`). + */ + public function testConsultarEspeciesDocumentaisComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'especies' => [ + ['nomeNoProdutor' => 'Espécie 1'], + ['nomeNoProdutor' => 'Espécie 2'], + ] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('especies', []) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarEspeciesDocumentais(); + + // Validações + $this->assertIsArray($resultado); + $this->assertCount(2, $resultado); + $this->assertEquals( + mb_convert_encoding('Espécie 1', 'ISO-8859-1', 'UTF-8'), + $resultado[0] + ); + $this->assertEquals( + mb_convert_encoding('Espécie 2', 'ISO-8859-1', 'UTF-8'), + $resultado[1] + ); + } + + /** + * Testa o método `consultarEspeciesDocumentais` quando não há resultados. + * + * Verifica se o método: + * - Retorna um array vazio. + */ + public function testConsultarEspeciesDocumentaisSemResultados() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'especies' => [] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('especies', []) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarEspeciesDocumentais(); + + // Validações + $this->assertIsArray($resultado); + $this->assertEmpty($resultado); + } + + /** + * Testa o método `consultarEspeciesDocumentais` quando ocorre um erro. + * + * Verifica se o método: + * - Lança a exceção esperada (`InfraException`). + * - Contém a mensagem correta de erro. + */ + public function testConsultarEspeciesDocumentaisComErro() + { + // Configuração do mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Expectativa de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Não foi encontrado nenhuma espécie documental.'); + + // Chamada do método (deve lançar exceção) + $this->mockService->consultarEspeciesDocumentais(); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturaTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturaTest.php new file mode 100644 index 000000000..2152b5bb9 --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturaTest.php @@ -0,0 +1,108 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + public function testConsultarEstruturaListaSucesso() + { + $mockResponse = [ + "numeroDeIdentificacaoDaEstrutura" => "159098", + "nome" => "Mauro ORG1 Filha", + "sigla" => "Mauro ORG1 Filha", + "ativo" => true, + "unidadeReceptora" => false, + "aptoParaReceberTramites" => true, + "codigoNoOrgaoEntidade" => "", + "codigoUnidadeReceptora" => "", + "tipoDeTramitacao" => 0, + "hierarquia" => [ + [ + "numeroDeIdentificacaoDaEstrutura" => "152254", + "nome" => "Órgão de Desenvolvimento ABC (FIRST) - ORGABC", + "sigla" => "ORGABC" + ] + ] + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->consultarEstrutura(159098, 152254, false); + + $this->assertInstanceOf(EstruturaDTO::class, $resultado, 'O retorno deve ser uma instância da classe EstruturaDTO.'); + } + + public function testConsultarEstruturaListaBolRetornoRawTrueSucesso() + { + $mockResponse = [ + "numeroDeIdentificacaoDaEstrutura" => "159098", + "nome" => "Mauro ORG1 Filha", + "sigla" => "Mauro ORG1 Filha", + "ativo" => true, + "unidadeReceptora" => false, + "aptoParaReceberTramites" => true, + "codigoNoOrgaoEntidade" => "", + "codigoUnidadeReceptora" => "", + "tipoDeTramitacao" => 0, + "hierarquia" => [ + [ + "numeroDeIdentificacaoDaEstrutura" => "152254", + "nome" => "Órgão de Desenvolvimento ABC (FIRST) - ORGABC", + "sigla" => "ORGABC" + ] + ] + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->consultarEstrutura(159098, 152254, true); + + $this->assertInstanceOf(stdClass::class, $resultado, 'O retorno deve ser uma instância da classe EstruturaDTO.'); + } + + public function testConsultarEstruturaListaLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstrutura(159098, 152254, false); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php new file mode 100644 index 000000000..519b47b0f --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php @@ -0,0 +1,122 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas', 'validarRestricaoUnidadesCadastradas', 'buscarEstruturasPorEstruturaPai']) + ->getMock(); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai para um caso de sucesso. + * + * Verifica se a lista de estruturas é retornada e ordenada corretamente com base nos nomes. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiRetornaEstruturasOrdenadas() + { + $idRepositorioEstrutura = 1; + $mockEstruturas = [ + (object)['nome' => 'Unidade B', 'codigo' => '002'], + (object)['nome' => 'Unidade A', 'codigo' => '001'], + (object)['nome' => 'Unidade C', 'codigo' => '003'], + ]; + + $this->mockService->expects($this->once()) + ->method('validarRestricaoUnidadesCadastradas') + ->with($idRepositorioEstrutura) + ->willReturn(null); + + $this->mockService->expects($this->once()) + ->method('buscarEstruturasPorEstruturaPai') + ->with($idRepositorioEstrutura, null) + ->willReturn($mockEstruturas); + + $resultado = $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura); + + $this->assertCount(3, $resultado); + $this->assertEquals('Unidade A', $resultado[0]->nome); + $this->assertEquals('Unidade B', $resultado[1]->nome); + $this->assertEquals('Unidade C', $resultado[2]->nome); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai para uma unidade pai específica. + * + * Verifica se a busca por estrutura pai é realizada corretamente ao fornecer + * um número de identificação específico. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiComUnidadePaiEspecifica() + { + $idRepositorioEstrutura = 1; + $numeroDeIdentificacaoDaEstrutura = '001'; + $mockEstruturas = [ + (object)['nome' => 'Unidade D', 'codigo' => '004'], + ]; + + $this->mockService->expects($this->never()) + ->method('validarRestricaoUnidadesCadastradas'); + + $this->mockService->expects($this->once()) + ->method('buscarEstruturasPorEstruturaPai') + ->with($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura) + ->willReturn($mockEstruturas); + + $resultado = $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura); + + $this->assertCount(1, $resultado); + $this->assertEquals('Unidade D', $resultado[0]->nome); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai quando ocorre um erro. + * + * Verifica se uma exceção InfraException é lançada corretamente ao ocorrer + * um erro no método validarRestricaoUnidadesCadastradas. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiLancaExcecaoParaErro() + { + $idRepositorioEstrutura = 1; + + $this->mockService->expects($this->once()) + ->method('validarRestricaoUnidadesCadastradas') + ->willThrowException(new Exception('Erro no serviço')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasTest.php new file mode 100644 index 000000000..7acd9b36d --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasTest.php @@ -0,0 +1,82 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + public function testConsultarEstruturaListaSucesso() + { + $mockResponse = [ + "estruturas" => [ + [ + "numeroDeIdentificacaoDaEstrutura" => "159098", + "nome" => "Mauro ORG1 Filha", + "sigla" => "Mauro ORG1 Filha", + "ativo" => true, + "unidadeReceptora" => false, + "aptoParaReceberTramites" => true, + "codigoNoOrgaoEntidade" => "", + "codigoUnidadeReceptora" => "", + "tipoDeTramitacao" => 0, + "hierarquia" => [ + [ + "numeroDeIdentificacaoDaEstrutura" => "152254", + "nome" => "Órgão de Desenvolvimento ABC (FIRST) - ORGABC", + "sigla" => "ORGABC" + ] + ] + ] + ], + "totalDeRegistros" => 1 + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->consultarEstruturas(159098, []); + + $this->assertIsArray($resultado, 'O retorno deve ser um array.'); + } + + public function testConsultarEstruturaListaLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstruturas(159098, []); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarHipotesesLegaisTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarHipotesesLegaisTest.php new file mode 100644 index 000000000..9c13025b7 --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarHipotesesLegaisTest.php @@ -0,0 +1,111 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o sucesso da consulta de hipóteses legais. + * + * Este teste verifica se o método `consultarHipotesesLegais` retorna um array de hipoteses + * quando o método 'get' é chamado. + * + * @return void + */ + public function testConsultarHipotesesLegaisSucesso() + { + // Define o valor retornado pelo método 'get' mockado + $mockResponse = [ + 'hipoteseslegais' => [ + ] + ]; + + // Configura o mock para esperar que o método 'get' seja chamado uma vez e retorne $mockResponse + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + // Chama o método que está sendo testado + $resultado = $this->mockService->consultarHipotesesLegais(true); + + // Verifica se o resultado é nulo, conforme esperado + $this->assertIsArray($resultado); + $this->assertArrayHasKey('hipoteseslegais', $resultado); + } + + /** + * Testa o sucesso da consulta de hipóteses legais com retorno vazio. + * + * Este teste verifica se o método `consultarHipotesesLegais` retorna um array vazio + * quando o método 'get' é chamado. + * + * @return void + */ + public function testConsultarHipotesesLegaisRetornoVazioSucesso() + { + // Define o valor retornado pelo método 'get' mockado + $mockResponse = []; + + // Configura o mock para esperar que o método 'get' seja chamado uma vez e retorne $mockResponse + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + // Chama o método que está sendo testado + $resultado = $this->mockService->consultarHipotesesLegais(true); + + // Verifica se o resultado é nulo, conforme esperado + $this->assertIsArray($resultado); + $this->assertEquals(0, count($resultado)); + } + + /** + * Testa o lançamento de exceção ao tentar consultar as hipóteses legais. + * + * Este teste verifica se uma exceção é lançada corretamente quando ocorre um erro + * ao tentar realizar a consulta (simulando a exceção gerada pelo método 'get'). + * + * @return void + * @throws InfraException Se a exceção de infra-estrutura for gerada. + */ + public function testConsultarHipotesesLegaisLancaExcecao() + { + // Configura o mock para lançar uma exceção quando o método 'get' for chamado + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + // Define a expectativa de que a exceção InfraException será lançada + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de hipóteses legais'); + + // Chama o método que deve lançar a exceção + $this->mockService->consultarHipotesesLegais(true); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarMotivosUrgenciaTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarMotivosUrgenciaTest.php new file mode 100644 index 000000000..ed8532f0b --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarMotivosUrgenciaTest.php @@ -0,0 +1,126 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas', 'get']) + ->getMock(); + } + + /** + * Testa o método `consultarMotivosUrgencia` com retorno bem-sucedido. + * + * Verifica se o método: + * - Retorna um array. + * - Contém os motivos de urgência esperados. + */ + public function testConsultarMotivosUrgenciaComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'motivosUrgencia' => [ + ['descricao' => 'Motivo 1'], + ['descricao' => 'Motivo 2'], + ] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('motivosUrgencia', []) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarMotivosUrgencia(); + + // Validações + $this->assertIsArray($resultado); + $this->assertCount(2, $resultado); + $this->assertEquals('Motivo 1', $resultado[0]); + $this->assertEquals('Motivo 2', $resultado[1]); + } + + /** + * Testa o método `consultarMotivosUrgencia` quando não há resultados. + * + * Verifica se o método: + * - Retorna um array vazio. + */ + public function testConsultarMotivosUrgenciaSemResultados() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'motivosUrgencia' => [] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('motivosUrgencia', []) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarMotivosUrgencia(); + + // Validações + $this->assertIsArray($resultado); + $this->assertEmpty($resultado); + } + + /** + * Testa o método `consultarMotivosUrgencia` quando ocorre um erro. + * + * Verifica se o método: + * - Lança a exceção esperada (`InfraException`). + * - Contém a mensagem correta de erro. + */ + public function testConsultarMotivosUrgenciaComErro() + { + // Configuração do mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Expectativa de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + // Chamada do método (deve lançar exceção) + $this->mockService->consultarMotivosUrgencia(); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarRepositoriosDeEstruturasTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarRepositoriosDeEstruturasTest.php new file mode 100644 index 000000000..34788d48b --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ConsultarRepositoriosDeEstruturasTest.php @@ -0,0 +1,125 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o método `consultarRepositoriosDeEstruturas` com retorno bem-sucedido. + * + * Verifica se o método: + * - Retorna uma instância de `RepositorioDTO`. + * - Preenche os atributos da instância com os valores corretos. + */ + public function testConsultarRepositoriosDeEstruturasComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + [ + 'id' => 5, + 'nome' => 'Repositório 1', + 'ativo' => true + ] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('repositorios-de-estruturas', ['ativo' => true]) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarRepositoriosDeEstruturas(5); + + // Validações + $this->assertInstanceOf(RepositorioDTO::class, $resultado); + $this->assertEquals(5, $resultado->getNumId()); + $this->assertEquals( + mb_convert_encoding('Repositório 1', 'ISO-8859-1', 'UTF-8'), + $resultado->getStrNome() + ); + $this->assertTrue($resultado->getBolAtivo()); + } + + /** + * Testa o método `consultarRepositoriosDeEstruturas` quando não há resultados. + * + * Verifica se o método: + * - Retorna `null` quando não há repositórios disponíveis. + */ + public function testConsultarRepositoriosDeEstruturasSemResultados() + { + // Mock do retorno esperado do método get + $resultadoMock = []; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('repositorios-de-estruturas', ['ativo' => true]) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarRepositoriosDeEstruturas(123); + + // Validações + $this->assertNull($resultado); + } + + /** + * Testa o método `consultarRepositoriosDeEstruturas` quando ocorre um erro. + * + * Verifica se o método: + * - Lança a exceção esperada (`InfraException`). + * - Contém a mensagem correta de erro. + */ + public function testConsultarRepositoriosDeEstruturasComErro() + { + // Configuração do mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Expectativa de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção dos Repositórios de Estruturas Organizacionais'); + + // Chamada do método (deve lançar exceção) + $this->mockService->consultarRepositoriosDeEstruturas(123); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarEstruturasAutoCompletarTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarEstruturasAutoCompletarTest.php new file mode 100644 index 000000000..be505824f --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarEstruturasAutoCompletarTest.php @@ -0,0 +1,130 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas']) + ->getMock(); + } + + /** + * Testa o método listarEstruturasAutoCompletar com parâmetros válidos. + * + * Verifica se o retorno do método é formatado corretamente, incluindo: + * - Propriedades convertidas para UTF-8. + * - Hierarquia de siglas mapeada. + * - Quantidade correta de itens no resultado. + */ + public function testListarEstruturasAutoCompletarRetornaEstruturasFormatadas() + { + // Simulação de parâmetros e retorno esperado + $idRepositorioEstrutura = 1; + $nome = 'Teste Unidade'; + $mockResultado = [ + 'totalDeRegistros' => 2, + 'estruturas' => [ + [ + 'numeroDeIdentificacaoDaEstrutura' => 101, + 'nome' => 'Unidade A', + 'sigla' => 'UA', + 'ativo' => true, + 'aptoParaReceberTramites' => true, + 'codigoNoOrgaoEntidade' => '123', + 'hierarquia' => [ + ['sigla' => 'ORG'] + ] + ], + [ + 'numeroDeIdentificacaoDaEstrutura' => 102, + 'nome' => 'Unidade B', + 'sigla' => 'UB', + 'ativo' => true, + 'aptoParaReceberTramites' => false, + 'codigoNoOrgaoEntidade' => '456', + 'hierarquia' => [] + ] + ] + ]; + + $this->mockService->expects($this->once()) + ->method('consultarEstruturas') + ->with($idRepositorioEstrutura, $this->callback(function ($parametros) use ($nome) { + return $parametros['nome'] === $nome && $parametros['apenasAtivas'] === true; + })) + ->willReturn($mockResultado); + + $resultado = $this->mockService->listarEstruturasAutoCompletar($idRepositorioEstrutura, $nome); + + // Asserções sobre o retorno + $this->assertIsArray($resultado); + $this->assertArrayHasKey('diferencaDeRegistros', $resultado); + $this->assertArrayHasKey('itens', $resultado); + $this->assertCount(2, $resultado['itens']); + } + + /** + * Testa o método listarEstruturasAutoCompletar quando ocorre um erro. + * + * Simula um erro no método consultarEstruturas e verifica se uma exceção + * InfraException é lançada corretamente com a mensagem esperada. + */ + public function testListarEstruturasAutoCompletarLancaExcecaoParaErro() + { + $idRepositorioEstrutura = 1; + + $this->mockService->expects($this->once()) + ->method('consultarEstruturas') + ->willThrowException(new Exception('Erro interno')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->listarEstruturasAutoCompletar($idRepositorioEstrutura); + } + + /** + * Testa o método listarEstruturasAutoCompletar com repositório inválido. + * + * Verifica se uma exceção InfraException é lançada quando o ID do + * repositório de estruturas fornecido é inválido. + */ + public function testListarEstruturasAutoCompletarLancaExcecaoParaRepositorioInvalido() + { + $idRepositorioEstrutura = null; + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Repositório de Estruturas inválido'); + + $this->mockService->listarEstruturasAutoCompletar($idRepositorioEstrutura); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarEstruturasBuscaTextualTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarEstruturasBuscaTextualTest.php new file mode 100644 index 000000000..a23711182 --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarEstruturasBuscaTextualTest.php @@ -0,0 +1,124 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get', 'consultarEstruturas']) + ->getMock(); + } + + /** + * Testa o método listarEstruturasBuscaTextual para um caso de sucesso. + * + * Simula uma resposta válida do método 'consultarEstruturas' e verifica + * se o retorno é uma lista de objetos EstruturaDTO com os dados corretos. + * + * @return void + */ + public function testListarEstruturasBuscaTextualRetornaEstruturas() + { + $idRepositorioEstrutura = 1; + $nome = 'Estrutura Raiz'; + $mockResponse = [ + 'totalDeRegistros' => 2, + 'estruturas' => [ + [ + 'numeroDeIdentificacaoDaEstrutura' => '123', + 'nome' => 'Estrutura 1', + 'sigla' => 'E1', + 'ativo' => true, + 'aptoParaReceberTramites' => true, + 'codigoNoOrgaoEntidade' => '001', + 'hierarquia' => [['sigla' => 'H1'], ['sigla' => 'H2']], + ], + [ + 'numeroDeIdentificacaoDaEstrutura' => '456', + 'nome' => 'Estrutura 2', + 'sigla' => 'E2', + 'ativo' => false, + 'aptoParaReceberTramites' => false, + 'codigoNoOrgaoEntidade' => '002', + 'hierarquia' => [['sigla' => 'H3']], + ] + ] + ]; + + $this->mockService->expects($this->once()) + ->method('consultarEstruturas') + ->with($idRepositorioEstrutura, $this->arrayHasKey('identificacaoDoRepositorioDeEstruturas')) + ->willReturn($mockResponse); + + $resultado = $this->mockService->listarEstruturasBuscaTextual($idRepositorioEstrutura, $nome); + + $this->assertCount(2, $resultado); + $this->assertInstanceOf(EstruturaDTO::class, $resultado[0]); + $this->assertEquals('123', $resultado[0]->getNumNumeroDeIdentificacaoDaEstrutura()); + $this->assertEquals('Estrutura 1', $resultado[0]->getStrNome()); + $this->assertEquals(['H1', 'H2'], $resultado[0]->getArrHierarquia()); + } + + /** + * Testa o método listarEstruturasBuscaTextual para um repositório inválido. + * + * Verifica se uma exceção InfraException é lançada ao fornecer um ID de repositório inválido. + * + * @return void + */ + public function testListarEstruturasBuscaTextualLancaExcecaoParaRepositorioInvalido() + { + $idRepositorioEstrutura = null; + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Repositório de Estruturas inválido'); + + $this->mockService->listarEstruturasBuscaTextual($idRepositorioEstrutura); + } + + /** + * Testa o método listarEstruturasBuscaTextual para falhas no web service. + * + * Simula um erro no método 'consultarEstruturas' e verifica se a exceção + * InfraException é lançada com a mensagem correta. + * + * @return void + */ + public function testListarEstruturasBuscaTextualLancaExcecaoParaErroWebService() + { + $idRepositorioEstrutura = 1; + + $this->mockService->expects($this->once()) + ->method('consultarEstruturas') + ->willThrowException(new Exception('Erro no web service')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->listarEstruturasBuscaTextual($idRepositorioEstrutura); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarPendenciasTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarPendenciasTest.php new file mode 100644 index 000000000..f8d69ea83 --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarPendenciasTest.php @@ -0,0 +1,67 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + public function testListarPendenciasSucesso() + { + $mockResponse = [ + [ + 'status' => 2, + 'IDT' => 999 + ] + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->listarPendencias(true); + + $this->assertIsArray($resultado, 'O retorno deve ser um array.'); + $this->assertCount(count($mockResponse), $resultado, 'A quantidade de objetos no retorno está incorreta.'); + $this->assertInstanceOf(PendenciaDTO::class, $resultado[0], 'O primeiro objeto na lista deve ser uma instância da classe RepositorioDTO.'); + } + + public function testListarPendenciasLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na listagem de pendências de trâmite de processos'); + + $this->mockService->listarPendencias(true); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarRepositorioTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarRepositorioTest.php new file mode 100644 index 000000000..dbd027c18 --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ListarRepositorioTest.php @@ -0,0 +1,97 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o método listarRepositoriosDeEstruturas para garantir que ele + * retorna uma lista de repositórios de estruturas com sucesso. + * + * Cenário testado: + * - O método 'get' retorna uma lista simulada de repositórios. + * - O retorno do método deve ser um array contendo objetos do tipo RepositorioDTO. + * + * Asserções: + * - O retorno deve ser um array. + * - A quantidade de itens no retorno deve ser igual à quantidade simulada. + * - O primeiro item do retorno deve ser uma instância de RepositorioDTO. + * + * @return void + */ + public function testListarRepositoriosDeEstruturasRetornaListaSucesso() + { + $mockResponse = [ + ["id" => 49, "nome" => "Acre - AC", "ativo" => true], + ["id" => 2, "nome" => "Advocacia-Geral da União", "ativo" => true], + ["id" => 7, "nome" => "Alagoas( Estado)", "ativo" => true], + ["id" => 20, "nome" => "Banco Central do Brasil 2", "ativo" => true], + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->listarRepositoriosDeEstruturas(); + + $this->assertIsArray($resultado, 'O retorno deve ser um array.'); + $this->assertCount(count($mockResponse), $resultado, 'A quantidade de objetos no retorno está incorreta.'); + $this->assertInstanceOf(RepositorioDTO::class, $resultado[0], 'O primeiro objeto na lista deve ser uma instância da classe RepositorioDTO.'); + } + + /** + * Testa o método listarRepositoriosDeEstruturas para garantir que ele lança + * uma exceção quando a requisição falha. + * + * Cenário testado: + * - O método 'get' lança uma exceção simulada. + * - O método listarRepositoriosDeEstruturas deve capturar a exceção e + * relançar uma InfraException com a mensagem apropriada. + * + * Asserções: + * - Uma exceção do tipo InfraException deve ser lançada. + * - A mensagem da exceção deve ser "Falha na obtenção dos Repositórios de Estruturas Organizacionais". + * + * @return void + */ + public function testListarRepositoriosDeEstruturasLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção dos Repositórios de Estruturas Organizacionais'); + + $this->mockService->listarRepositoriosDeEstruturas(); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/LitarEstruturasTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/LitarEstruturasTest.php new file mode 100644 index 000000000..45a8d2edb --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/LitarEstruturasTest.php @@ -0,0 +1,120 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas']) + ->getMock(); + } + + /** + * Testa a listagem de estruturas com sucesso. + * + * Este teste verifica se o método listarEstruturas retorna corretamente + * as estruturas esperadas quando os dados são fornecidos corretamente. + */ + public function testListarEstruturasComSucesso() + { + $idRepositorioEstrutura = 1; + $nome = 'Estrutura Teste'; + $mockRetornoConsulta = [ + 'totalDeRegistros' => 1, + 'estruturas' => [ + [ + 'numeroDeIdentificacaoDaEstrutura' => 123, + 'nome' => 'Estrutura 1', + 'sigla' => 'E1', + 'ativo' => true, + 'aptoParaReceberTramites' => false, + 'codigoNoOrgaoEntidade' => '001', + 'hierarquia' => [ + ['sigla' => 'H1'], + ['sigla' => 'H2'], + ], + ], + ], + ]; + + // Define a expectativa para o mock do método consultarEstruturas + $this->mockService + ->expects($this->once()) + ->method('consultarEstruturas') + ->willReturn($mockRetornoConsulta); + + // Executa o método sob teste + $result = $this->mockService->listarEstruturas($idRepositorioEstrutura, $nome); + + // Validações dos resultados + $this->assertCount(1, $result); + $this->assertInstanceOf(EstruturaDTO::class, $result[0]); + $this->assertEquals(123, $result[0]->getNumNumeroDeIdentificacaoDaEstrutura()); + $this->assertEquals('Estrutura 1', $result[0]->getStrNome()); + $this->assertEquals('E1', $result[0]->getStrSigla()); + $this->assertEquals(['H1', 'H2'], $result[0]->getArrHierarquia()); + } + + /** + * Testa a listagem de estruturas com repositório inválido. + * + * Este teste verifica se uma exceção é lançada quando o ID do repositório + * de estruturas é inválido (null). + */ + public function testListarEstruturasComRepositorioInvalido() + { + $idRepositorioEstrutura = null; + + // Configura as expectativas de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Repositório de Estruturas inválido'); + + // Executa o método sob teste + $this->mockService->listarEstruturas($idRepositorioEstrutura); + } + + /** + * Testa a listagem de estruturas com erro na consulta. + * + * Este teste verifica se uma exceção é lançada corretamente quando ocorre + * um erro durante a consulta de estruturas. + */ + public function testListarEstruturasComErroNaConsulta() + { + $idRepositorioEstrutura = 1; + + // Configura o mock para lançar uma exceção no método consultarEstruturas + $this->mockService + ->expects($this->once()) + ->method('consultarEstruturas') + ->willThrowException(new Exception('Erro na consulta')); + + // Configura as expectativas de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + // Executa o método sob teste + $this->mockService->listarEstruturas($idRepositorioEstrutura); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/ReceberReciboDeTramiteTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ReceberReciboDeTramiteTest.php new file mode 100644 index 000000000..1fb0da91f --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/ReceberReciboDeTramiteTest.php @@ -0,0 +1,103 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get', 'converterArrayParaObjeto']) + ->getMock(); + } + + /** + * Testa o recebimento de recibo de trâmite com sucesso. + * + * Simula a execução do método `get` e o retorno de um objeto + * convertido a partir de um array, verificando se o resultado + * final corresponde ao esperado. + * + * @return void + */ + public function testReceberReciboDeTramiteComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'recibo' => [ + 'hashesDosComponentesDigitais' => ['hash123'], + 'outroDado' => 'valor' + ] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($resultadoMock); + + // Substituir o método estático converterArrayParaObjeto + $resultadoObjetoMock = (object)[ + 'recibo' => (object)[ + 'hashDoComponenteDigital' => 'hash123', + 'outroDado' => 'valor' + ] + ]; + + $this->mockService->expects($this->once()) + ->method('converterArrayParaObjeto') + ->willReturn($resultadoObjetoMock); + + // Chamada do método + $resultado = $this->mockService->receberReciboDeTramite(123); + + // Asserções + $this->assertIsObject($resultado); + $this->assertEquals('hash123', $resultado->recibo->hashDoComponenteDigital); + $this->assertEquals('valor', $resultado->recibo->outroDado); + } + + /** + * Testa o cenário em que ocorre um erro ao receber o recibo de trâmite. + * + * Simula uma exceção no método `get` e verifica se a exceção correta é + * lançada pelo método testado. + * + * @return void + */ + public function testReceberReciboDeTramiteComErro() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Verifica se a exceção esperada é lançada + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha no recebimento de recibo de trâmite.'); + + $this->mockService->receberReciboDeTramite(123); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRN/SolicitarMetadadosTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRN/SolicitarMetadadosTest.php new file mode 100644 index 000000000..6c915341b --- /dev/null +++ b/tests_sei4/unitario/rn/ProcessoEletronicoRN/SolicitarMetadadosTest.php @@ -0,0 +1,117 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get', 'converterArrayParaObjeto']) + ->getMock(); + } + + /** + * Testa o método solicitarMetadados para um caso de sucesso. + * + * Este teste verifica se o método retorna um objeto stdClass corretamente + * configurado quando os dados retornados pelo método get são válidos. + * + * @return void + */ + public function testSolicitarMetadadosRetornaObjetoCorreto() + { + $parNumIdentificacaoTramite = 123; + + // Simular a resposta do método get + $mockResponse = [ + 'propriedadesAdicionais' => ['algum_valor'], + 'processo' => [ + 'documentos' => [ + [ + 'componentesDigitais' => [ + [ + 'assinaturasDigitais' => [ + ['alguma_assinatura'] + ] + ] + ] + ] + ] + ] + ]; + + $mockConvertedObject = (object) [ + 'NRE' => '123456', + 'processo' => (object) [ + 'documentos' => [(object) ['algum_valor']], + 'interessados' => [(object) ['algum_interessado']] + ] + ]; + + // Configura o mock para o método get + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + // Configura o mock para o método converterArrayParaObjeto + $this->mockService->expects($this->once()) + ->method('converterArrayParaObjeto') + ->willReturn($mockConvertedObject); + + // Chama o método a ser testado + $resultado = $this->mockService->solicitarMetadados($parNumIdentificacaoTramite); + + // Verifica o retorno + $this->assertInstanceOf(stdClass::class, $resultado); + $this->assertEquals($parNumIdentificacaoTramite, $resultado->IDT); + $this->assertEquals('123456', $resultado->metadados->NRE); + } + + /** + * Testa o método solicitarMetadados para um caso de falha. + * + * Este teste verifica se uma exceção InfraException é lançada corretamente + * quando o método get falha ao buscar os dados necessários. + * + * @return void + */ + public function testSolicitarMetadadosLancaExcecao() + { + $parNumIdentificacaoTramite = 123; + + // Configura o mock para o método get para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro no web service')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na solicitação de metadados do processo'); + + // Chama o método e espera uma exceção + $this->mockService->solicitarMetadados($parNumIdentificacaoTramite); + } +} \ No newline at end of file diff --git a/tests_sei4/unitario/rn/ProcessoEletronicoRNTest.php b/tests_sei4/unitario/rn/ProcessoEletronicoRNTest.php deleted file mode 100755 index dedc8dbe7..000000000 --- a/tests_sei4/unitario/rn/ProcessoEletronicoRNTest.php +++ /dev/null @@ -1,96 +0,0 @@ -objProcessoEletronicoRN = new ProcessoEletronicoRN(); - } - - /** - * Testes do método privado reduzirCampoTexto - * - * @return void - */ - public function testReduzirCampoTexto() - { - $numTamanhoMaximo = 53; - // Teste considerando uma palavra pequena ao final do texto - $strTexto = "aaaaaaaaa bbbbbbbbb ccccccccc ddddddddd eeeeeeeee fffffffff ggggggggg hhhhhhhhh iiiiiiiii"; - $strResultadoEsperado = "aaaaaaaaa bbbbbbbbb ccccccccc ddddddddd eeeeeeeee ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com apenas uma palavra - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com uma palavra grande ao final - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando texto longo e palavro curta ao finals - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto curto abaixo do limite - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com apenas um caracter fora do limite - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com apenas um caracter fora do limite - $strTexto = "aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa a"; - $strResultadoEsperado = "aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 150); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= 150); - - // Teste considerando um texto nulo - $strTexto = null; - $strResultadoEsperado = null; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com ultima palavra menor que a reticencias - $strTexto = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut lbore et dolore magna aliqua. Ut enim ad minim veniamr quis"; - $strResultadoEsperado = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut lbore et dolore magna aliqua. Ut enim ad minim veniam ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 150); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= 150); - - } - - public function testCompararVersoes(){ - $this->assertTrue(InfraUtil::compararVersoes("0.0.1", "<", "0.0.2")); - $this->assertTrue(InfraUtil::compararVersoes("0.1.0", "<", "0.2.0")); - $this->assertTrue(InfraUtil::compararVersoes("1.0.0", "<", "2.0.0")); - $this->assertTrue(InfraUtil::compararVersoes("4.0.3", "==", "4.0.3.0")); - $this->assertTrue(InfraUtil::compararVersoes("4.0.3", "<", "4.0.3.1")); - $this->assertTrue(InfraUtil::compararVersoes("4.0.4", ">", "4.0.3.0")); - $this->assertTrue(InfraUtil::compararVersoes("4.0.3.0", "==", "4.0.3.5", 3, true)); - } -} diff --git a/tests_sei41/funcional/phpunit.xml b/tests_sei41/funcional/phpunit.xml index 20f52b05f..2dd86c6fc 100755 --- a/tests_sei41/funcional/phpunit.xml +++ b/tests_sei41/funcional/phpunit.xml @@ -15,7 +15,7 @@ + value="https://homolog.api.processoeletronico.gov.br/interoperabilidade/rest/v3/" /> diff --git a/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php b/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php index ba6aafd51..b9138d7cc 100755 --- a/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php +++ b/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php @@ -58,7 +58,9 @@ public function test_tramitar_processo_da_origem() }else{ $id_tramite=$id_tramite[0]["ID_TRAMITE"]; } - $this->recusarTramite($this->servicoPEN, $id_tramite); + + sleep(5); + $this->recusarTramite($id_tramite); } /** @@ -90,39 +92,58 @@ public function test_verificar_destino_processo_para_devolucao() } - private function recusarTramite($servicoPEN, $id_tramite) + private function recusarTramite($id_tramite) { $justificativa = "An exception occurred while executing 'INSERT INTO juntadas (numeracao_sequencial, movimento, ativo, vinculada, criado_em, atualizado_em, id, uuid, documentos_juntado_id, volumes_id, atividades_id, tarefas_id, comunicacoes_id, origem_dados_id, criado_por, atualizado_por) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [1, 'DOCUMENTO RECEBIDO VIA INTEGRA\u00c7\u00c3O COM O BARRAMENTO', 1, 0, '2021-12-02 14:21:48', '2021-12-02 14:21:48', 1317074776, '06ba31e8-75ad-4111-82dc-6f451f51825e', 1333864526, null, null, null, null, 3534979787, null, null]: ORA-00001: restrição exclusiva (SAPIENS.UNIQ_867686DHDKJ97876) violada"; $parametros = new stdClass(); $parametros->recusaDeTramite = new stdClass(); $parametros->recusaDeTramite->IDT = $id_tramite; - $parametros->recusaDeTramite->justificativa = mb_convert_encoding($justificativa, 'UTF-8', 'ISO-8859-1'); + $parametros->recusaDeTramite->justificativa = utf8_encode($justificativa); $parametros->recusaDeTramite->motivo = "99"; - return $servicoPEN->recusarTramite($parametros); + + return $this->recusarTramiteAPI($parametros); + } + + + private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + { + // TODO: lembrar de pegar url dinamicamente quando SOAP for removido + $strBaseUri = PEN_ENDERECO_WEBSERVICE; + $arrheaders = [ + 'Accept' => '*/*', + 'Content-Type' => 'application/json', + ]; + + $strClientGuzzle = new GuzzleHttp\Client([ + 'base_uri' => $strBaseUri, + 'timeout' => 5.0, + 'headers' => $arrheaders, + 'cert' => [$localCertificado, $senhaCertificado], + ]); + + return $strClientGuzzle; } - private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + public function recusarTramiteAPI($parametros) { - $connectionTimeout = 600; - $options = array( - 'soap_version' => SOAP_1_1 - , 'local_cert' => $localCertificado - , 'passphrase' => $senhaCertificado - , 'resolve_wsdl_remote_includes' => true - , 'cache_wsdl'=> BeSimple\SoapCommon\Cache::TYPE_NONE - , 'connection_timeout' => $connectionTimeout - , CURLOPT_TIMEOUT => $connectionTimeout - , CURLOPT_CONNECTTIMEOUT => $connectionTimeout - , 'encoding' => 'UTF-8' - , 'attachment_type' => BeSimple\SoapCommon\Helper::ATTACHMENTS_TYPE_MTOM - , 'ssl' => array( - 'allow_self_signed' => true, - ), - ); - - return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); + $idt = $parametros->recusaDeTramite->IDT; + $justificativa = $parametros->recusaDeTramite->justificativa; + $motivo = $parametros->recusaDeTramite->motivo; + + $endpoint = "tramites/{$idt}/recusa"; + + $objProcessoEletronicoRN = new ProcessoEletronicoRN(); + $parametros = [ + 'justificativa' => mb_convert_encoding($objProcessoEletronicoRN->reduzirCampoTexto($justificativa, 1000), 'UTF-8', 'ISO-8859-1'), + 'motivo' => $motivo + ]; + + $response = $this->servicoPEN->request('POST', $endpoint, [ + 'json' => $parametros + ]); + return $response; } } diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php b/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php index 99d2c2473..37b1ee11b 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php @@ -16,6 +16,7 @@ class TramiteRecebimentoDocumentoAvulsoTest extends FixtureCenarioBaseTestCase const CONTEUDO_DOCUMENTO_C = "arquivo_pequeno_C.pdf"; protected $servicoPEN; + protected $servicoPEN2; public static $remetente; public static $destinatario; public static $processoTeste; @@ -39,12 +40,7 @@ public function setUp(): void // Carregar contexto de testes e dados sobre certificado digital self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - putenv("DATABASE_HOST=org2-database"); - - // Instanciar objeto de teste utilizando o BeSimpleSoap - $localCertificado = self::$remetente['LOCALIZACAO_CERTIFICADO_DIGITAL']; - $senhaCertificado = self::$remetente['SENHA_CERTIFICADO_DIGITAL']; - $this->servicoPEN = $this->instanciarApiDeIntegracao($localCertificado, $senhaCertificado); + } /** @@ -52,16 +48,21 @@ public function setUp(): void * * @return void */ - public function test_recebimento_documento_avulso() + public function test_recebimento_metadados_documento_avulso() { + + $localCertificado = self::$remetente['LOCALIZACAO_CERTIFICADO_DIGITAL']; + $senhaCertificado = self::$remetente['SENHA_CERTIFICADO_DIGITAL']; + + $this->servicoPEN = $this->instanciarApiDeIntegracao($localCertificado, $senhaCertificado); + // Simular um trâmite chamando a API do Barramento diretamente self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente, array(self::CONTEUDO_DOCUMENTO_A)); $metadadosDocumentoTeste = $this->construirMetadadosDocumentoTeste(self::$documentoTeste1); - $novoTramite = $this->enviarMetadadosDocumento($this->servicoPEN, self::$remetente, self::$destinatario, $metadadosDocumentoTeste); - $this->enviarComponentesDigitaisDoTramite($this->servicoPEN, $novoTramite, $metadadosDocumentoTeste); - $reciboTramite = $this->receberReciboEnvio($this->servicoPEN, $novoTramite); - + $novoTramite = $this->enviarMetadadosDocumento(self::$remetente, self::$destinatario, $metadadosDocumentoTeste); + $this->enviarComponentesDigitaisDoTramite($novoTramite, $metadadosDocumentoTeste); + $reciboTramite = $this->receberReciboEnvio($novoTramite); //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -75,7 +76,6 @@ public function test_recebimento_documento_avulso() * @group envio * @large * - * @depends test_recebimento_documento_avulso * * @return void */ @@ -149,76 +149,51 @@ public function test_verificar_recebimento_processo_destino_documento_avulso() $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, $documentos, self::$destinatario); } - private function receberReciboEnvio($servicoPEN, $novoTramite) - { - $dadosTramite = $novoTramite->dadosTramiteDeDocumentoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->tramite->IDT; - return $servicoPEN->receberReciboDeEnvio($parametros); - } - private function enviarMetadadosDocumento($servicoPEN, $remetente, $destinatario, $documentoTeste) + private function receberReciboEnvio($novoTramite) { - $parametros = new stdClass(); - $parametros->novoTramiteDeDocumento = new stdClass(); - $parametros->novoTramiteDeDocumento->cabecalho = $this->construirCabecalhoTeste($remetente, $destinatario); - $parametros->novoTramiteDeDocumento->documento = $documentoTeste; - return $servicoPEN->enviarDocumento($parametros); + $dadosTramite = $novoTramite['tramites']; + $idt = $dadosTramite[0]['IDT']; + return $this->receberReciboDeEnvioAPI($idt); } - private function enviarComponentesDigitaisDoTramite($servicoPEN, $novoTramite, $documentoTeste) + private function enviarMetadadosDocumento($remetente, $destinatario, $documentoTeste) { - $dadosTramite = $novoTramite->dadosTramiteDeDocumentoCriado; - foreach ($documentoTeste['componenteDigital'] as $item) { - $dadosDoComponenteDigital = new stdClass(); - $dadosDoComponenteDigital->protocolo = $documentoTeste['protocolo']; - $dadosDoComponenteDigital->hashDoComponenteDigital = $item['valorHash']; - $dadosDoComponenteDigital->conteudoDoComponenteDigital = new SoapVar($item['conteudo'], XSD_BASE64BINARY); - $dadosDoComponenteDigital->ticketParaEnvioDeComponentesDigitais = $dadosTramite->ticketParaEnvioDeComponentesDigitais; - - $parametros = new stdClass(); - $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; - $servicoPEN->enviarComponenteDigital($parametros); - } + $parametros = []; + $parametros['cabecalho'] = $this->construirCabecalhoTeste($remetente, $destinatario); + $parametros['documento'] = $documentoTeste['documentoEnvio']; + + return $this->enviarDocumentoAPI($parametros); } - private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + private function enviarComponentesDigitaisDoTramite($novoTramite, $documentoTeste) { - $connectionTimeout = 600; - $options = array( - 'soap_version' => SOAP_1_1 - , 'local_cert' => $localCertificado - , 'passphrase' => $senhaCertificado - , 'resolve_wsdl_remote_includes' => true - , 'cache_wsdl'=> BeSimple\SoapCommon\Cache::TYPE_NONE - , 'connection_timeout' => $connectionTimeout - , CURLOPT_TIMEOUT => $connectionTimeout - , CURLOPT_CONNECTTIMEOUT => $connectionTimeout - , 'encoding' => 'UTF-8' - , 'attachment_type' => BeSimple\SoapCommon\Helper::ATTACHMENTS_TYPE_MTOM - , 'ssl' => array( - 'allow_self_signed' => true, - ), - ); - - return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); - + $parametros = []; + $dadosDoComponenteDigital['protocolo'] = $documentoTeste['documentoEnvio']['protocolo']; + $dadosDoComponenteDigital['hashDoComponenteDigital'] = $documentoTeste['componenteEnvio']['hashDocumento']; + $dadosDoComponenteDigital['conteudoDoComponenteDigital'] = $documentoTeste['componenteEnvio']['conteudo']; + $dadosDoComponenteDigital['ticketParaEnvioDeComponentesDigitais'] = $novoTramite['ticketParaEnvioDeComponentesDigitais']; + + $parametros['dadosDoComponenteDigital'] = $dadosDoComponenteDigital; + + $this->enviarComponenteDigitalAPI($parametros); } private function construirCabecalhoTeste($remetente, $destinatario) { - $cabecalho = new stdClass(); - $cabecalho->remetente = new stdClass(); - $cabecalho->remetente->identificacaoDoRepositorioDeEstruturas = $remetente['ID_REP_ESTRUTURAS']; - $cabecalho->remetente->numeroDeIdentificacaoDaEstrutura = $remetente['ID_ESTRUTURA']; - - $cabecalho->destinatario = new stdClass(); - $cabecalho->destinatario->identificacaoDoRepositorioDeEstruturas = $destinatario['ID_REP_ESTRUTURAS']; - $cabecalho->destinatario->numeroDeIdentificacaoDaEstrutura =$destinatario['ID_ESTRUTURA']; - - $cabecalho->urgente = false; - $cabecalho->motivoDaUrgencia = null; - $cabecalho->obrigarEnvioDeTodosOsComponentesDigitais = false; + $cabecalho = [ + 'remetente' => [ + 'identificacaoDoRepositorioDeEstruturas' => $remetente['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $remetente['ID_ESTRUTURA'], + ], + 'destinatarios' => [ + [ + 'identificacaoDoRepositorioDeEstruturas' => $destinatario['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $destinatario['ID_ESTRUTURA'], + ], + ] + ]; + return $cabecalho; } @@ -247,42 +222,145 @@ private function construirMetadadosDocumentoTeste($documentoTeste) $nomeArquivo = basename($caminhoArquivo); $componentes[] = array( 'nome' => $nomeArquivo, - 'hash' => new SoapVar("$hashDocumento", XSD_ANYXML), + 'hash' => [ + 'algoritmo' => 'SHA256', + 'conteudo' => $hashDocumento + ], 'tipoDeConteudo' => 'txt', - 'mimeType' => 'text/plain', + "mimeType" => "application/pdf", 'tamanhoEmBytes' => $tamanhoDocumento, 'ordem' => $ordem + 1, - - // Chaves abaixo adicionadas apenas para simplificação dos testes - 'valorHash' => $hashDocumento, - 'conteudo' => $conteudo, ); } finally { fclose($fp); } } - return array( - 'protocolo' => '13990.000181/2020-00', + $documentoEnvio = array( + 'protocolo' => '13990.000185/2024-00', 'nivelDeSigilo' => 1, 'descricao' => $documentoTeste['DESCRICAO'], 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', - 'produtor' => array( - 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), + "nome" => "Nome ABC", + "tipo" => "orgaopublico" ), - 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') + 'nomeNoProdutor' => 'Despacho', ), - - 'interessado' => array( - 'nome' => $documentoTeste['INTERESSADOS'], + 'interessados' => array( + [ + "nome" => $documentoTeste['INTERESSADOS'], + "tipo" => "fisica" + ] ), - 'componenteDigital' => $componentes, + 'componentesDigitais' => $componentes, + ); + + $componenteEnvio = array( + 'hashDocumento' => $hashDocumento, + 'conteudo' => $conteudo + ); + + return array( + 'documentoEnvio' => $documentoEnvio, + 'componenteEnvio' => $componenteEnvio ); } + + public function enviarDocumentoAPI($parametros) + { + try { + $endpoint = "tramites/documento"; + + $response = $this->servicoPEN->request('POST', $endpoint, [ + 'json' => $parametros + ]); + + return json_decode($response->getBody(), true); + + } catch (\Exception $e) { + $mensagem = "Falha no envio de documento avulso"; + } + } + + + public function enviarComponenteDigitalAPI($parametros) + { + try { + + $arrParametros = $parametros['dadosDoComponenteDigital']; + $idTicketDeEnvio = $arrParametros['ticketParaEnvioDeComponentesDigitais']; + + $protocolo = $arrParametros['protocolo']; + $hashDoComponenteDigital = $arrParametros['hashDoComponenteDigital']; + $conteudo = $arrParametros['conteudoDoComponenteDigital']; + + $queryParams = [ + 'hashDoComponenteDigital' => $hashDoComponenteDigital, + 'protocolo' => $protocolo + ]; + + $endpoint = "tickets-de-envio-de-componente/{$idTicketDeEnvio}/protocolos/componentes-a-enviar"; + + $arrOptions = [ + 'query' => $queryParams, + 'multipart' => [ + [ + 'name' => 'conteudo', + 'contents' => $conteudo, + 'filename' => 'conteudo.html', + 'headers' => ['Content-Type' => 'text/html'] + ], + ], + ]; + + $response = $this->servicoPEN->request('PUT', $endpoint, $arrOptions); + + return $response; + + } catch (\Exception $e) { + $mensagem = "Falha no envio de de componentes no documento"; + } + } + + + public function receberReciboDeEnvioAPI($parNumIdTramite) + { + $endpoint = "tramites/{$parNumIdTramite}/recibo-de-envio"; + try{ + $parametros = [ + 'IDT' => $parNumIdTramite + ]; + + $response = $this->servicoPEN->request('GET', $endpoint, [ + 'query' => $parametros + ]); + + return json_decode($response->getBody(), true); + } catch (\Exception $e) { + $mensagem = "Falha no recebimento de recibo de trâmite de envio."; + } + } + + private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + { + $arrheaders = [ + 'Accept' => '*/*', + 'Content-Type' => 'application/json', + ]; + + $strClientGuzzle = new GuzzleHttp\Client([ + 'base_uri' => PEN_ENDERECO_WEBSERVICE, + 'handler' => GuzzleHttp\HandlerStack::create(), + 'timeout' => 5.0, + 'headers' => $arrheaders, + 'cert' => [$localCertificado, $senhaCertificado], + ]); + + return $strClientGuzzle; + } } diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php b/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php index 8a86292cc..b612f426f 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php @@ -19,6 +19,8 @@ class TramiteRecebimentoInteressadosDuplicadosTest extends FixtureCenarioBaseTes public static $servicoPEN; public static $documentoTeste1; + public static $conteudoCompoonenteDigital; + /** * Teste de envio de metadados do processo contendo interessados duplicados * @@ -50,9 +52,9 @@ public function test_envio_processo_com_documento_anexado() // Inicia o envio do processo $arrDocumentosPrimeiroEnvio = array(self::$documentoTeste1); $processoTeste = $this->construirMetadadosProcessoTeste(self::$processoTeste, $arrDocumentosPrimeiroEnvio); - $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, self::$remetente, self::$destinatario, $processoTeste); - $this->enviarComponentesDigitaisDoTramite(self::$servicoPEN, $novoTramite, $processoTeste); - $reciboTramite = $this->receberReciboEnvio(self::$servicoPEN, $novoTramite); + $novoTramite = $this->enviarMetadadosProcesso(self::$remetente, self::$destinatario, $processoTeste); + $this->enviarComponentesDigitaisDoTramite($novoTramite, $processoTeste); + $reciboTramite = $this->receberReciboEnvio($novoTramite); //Verifica recebimento de novo processo administrativo contendo documento avulso enviado @@ -65,88 +67,71 @@ public function test_envio_processo_com_documento_anexado() } - private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) { - $connectionTimeout = 600; - $options = array( - 'soap_version' => SOAP_1_1 - , 'local_cert' => $localCertificado - , 'passphrase' => $senhaCertificado - , 'resolve_wsdl_remote_includes' => true - , 'cache_wsdl'=> BeSimple\SoapCommon\Cache::TYPE_NONE - , 'connection_timeout' => $connectionTimeout - , CURLOPT_TIMEOUT => $connectionTimeout - , CURLOPT_CONNECTTIMEOUT => $connectionTimeout - , 'encoding' => 'UTF-8' - , 'attachment_type' => BeSimple\SoapCommon\Helper::ATTACHMENTS_TYPE_MTOM - , 'ssl' => array( - 'allow_self_signed' => true, - ), - ); - - return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); - + $arrheaders = [ + 'Accept' => '*/*', + 'Content-Type' => 'application/json', + ]; + + $strClientGuzzle = new GuzzleHttp\Client([ + 'base_uri' => PEN_ENDERECO_WEBSERVICE, + 'handler' => GuzzleHttp\HandlerStack::create(), + 'timeout' => 5.0, + 'headers' => $arrheaders, + 'cert' => [$localCertificado, $senhaCertificado], + ]); + + return $strClientGuzzle; } - private function enviarMetadadosProcesso($servicoPEN, $remetente, $destinatario, $processoTeste) + private function enviarMetadadosProcesso($remetente, $destinatario, $processoTeste) { - $parametros = new stdClass(); - $parametros->novoTramiteDeProcesso = new stdClass(); - $parametros->novoTramiteDeProcesso->cabecalho = $this->construirCabecalhoTeste($remetente, $destinatario); - $parametros->novoTramiteDeProcesso->processo = $processoTeste; - return $servicoPEN->enviarProcesso($parametros); + $parametros = []; + $parametros['cabecalho'] = $this->construirCabecalhoTeste($remetente, $destinatario); + $parametros['processo'] = $processoTeste; + + return $this->enviarProcessoAPI($parametros); } - private function enviarComponentesDigitaisDoTramite($servicoPEN, $novoTramite, $processoTeste) + private function enviarComponentesDigitaisDoTramite($novoTramite, $processoTeste) { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - foreach ($processoTeste['documento'] as $documentoTeste) { - foreach ($documentoTeste['componenteDigital'] as $item) { - $dadosDoComponenteDigital = new stdClass(); - $dadosDoComponenteDigital->protocolo = $processoTeste['protocolo']; - $dadosDoComponenteDigital->hashDoComponenteDigital = $item['valorHash']; - $dadosDoComponenteDigital->conteudoDoComponenteDigital = new SoapVar($item['conteudo'], XSD_BASE64BINARY); - $dadosDoComponenteDigital->ticketParaEnvioDeComponentesDigitais = $dadosTramite->ticketParaEnvioDeComponentesDigitais; - - $parametros = new stdClass(); - $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; - $servicoPEN->enviarComponenteDigital($parametros); + foreach ($processoTeste['documentos'] as $documentoTeste) { + foreach ($documentoTeste['componentesDigitais'] as $item) { + $dadosDoComponenteDigital = []; + $dadosDoComponenteDigital['protocolo'] = $processoTeste['protocolo']; + $dadosDoComponenteDigital['hashDoComponenteDigital'] = $item['hash']['conteudo']; + $dadosDoComponenteDigital['ticketParaEnvioDeComponentesDigitais'] = $novoTramite['ticketParaEnvioDeComponentesDigitais']; + + $parametros['dadosDoComponenteDigital'] = $dadosDoComponenteDigital; + $this->enviarComponenteDigitalAPI($parametros); } } - } - private function receberReciboEnvio($servicoPEN, $novoTramite) - { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->IDT; - return $servicoPEN->receberReciboDeEnvio($parametros); } - private function receberReciboTramite($servicoPEN, $novoTramite) + private function receberReciboEnvio($novoTramite) { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->IDT; - return $servicoPEN->receberReciboDeTramite($parametros); + $idt = $novoTramite['IDT']; + return $this->receberReciboDeEnvioAPI($idt); } private function construirCabecalhoTeste($remetente, $destinatario) { - $cabecalho = new stdClass(); - $cabecalho->remetente = new stdClass(); - $cabecalho->remetente->identificacaoDoRepositorioDeEstruturas = $remetente['ID_REP_ESTRUTURAS']; - $cabecalho->remetente->numeroDeIdentificacaoDaEstrutura = $remetente['ID_ESTRUTURA']; - - $cabecalho->destinatario = new stdClass(); - $cabecalho->destinatario->identificacaoDoRepositorioDeEstruturas = $destinatario['ID_REP_ESTRUTURAS']; - $cabecalho->destinatario->numeroDeIdentificacaoDaEstrutura =$destinatario['ID_ESTRUTURA']; - - $cabecalho->urgente = false; - $cabecalho->motivoDaUrgencia = null; - $cabecalho->obrigarEnvioDeTodosOsComponentesDigitais = false; + $cabecalho = [ + 'remetente' => [ + 'identificacaoDoRepositorioDeEstruturas' => $remetente['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $remetente['ID_ESTRUTURA'], + ], + 'destinatario' => [ + 'identificacaoDoRepositorioDeEstruturas' => $destinatario['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $destinatario['ID_ESTRUTURA'], + ], + 'enviarApenasComponentesDigitaisPendentes' => false + ]; + return $cabecalho; } @@ -171,7 +156,8 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest { $metadadosDocumentos = array(); foreach ($documentosTeste as $indice => $documentoTeste) { - $metadadosDocumentos[] = $this->construirMetadadosDocumentoTeste($documentoTeste, $indice + 1); + $documentos = $this->construirMetadadosDocumentoTeste($documentoTeste, $indice + 1); + $metadadosDocumentos[] = $documentos['documentoDoProcesso']; } $arrInteressados = array_map(function($item) { @@ -188,9 +174,10 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), + 'tipo' => "orgaopublico", ), - 'interessado' => $arrInteressados, - 'documento' => $metadadosDocumentos, + 'interessados' => $arrInteressados, + 'documentos' => $metadadosDocumentos, ); } @@ -209,16 +196,17 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen $nomeArquivo = basename($caminhoArquivo); $componentes[] = array( 'nome' => $nomeArquivo, - 'hash' => new SoapVar("$hashDocumento", XSD_ANYXML), + 'hash' => [ + 'algoritmo' => 'SHA256', + 'conteudo' => $hashDocumento + ], 'tipoDeConteudo' => 'txt', - 'mimeType' => 'text/plain', + 'mimeType' => 'application/pdf', 'tamanhoEmBytes' => $tamanhoDocumento, 'ordem' => $ordemComponente, - - // Chaves abaixo adicionadas apenas para simplificação dos testes - 'valorHash' => $hashDocumento, - 'conteudo' => $conteudo, ); + + self::$conteudoCompoonenteDigital = [$hashDocumento => $conteudo]; } finally { fclose($fp); } @@ -231,10 +219,9 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'ordem' => $ordemDocumento, - 'produtor' => array( 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), - 'numeroDeIdentificacao' => '999999', + "tipo" => "orgaopublico" ), 'especie' => array( @@ -242,17 +229,102 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), - 'interessado' => array( - 'nome' => $documentoTeste['INTERESSADOS'], + 'interessados' => array( + [ + "nome" => $documentoTeste['INTERESSADOS'], + "tipo" => "fisica" + ] ), - 'componenteDigital' => $componentes, + 'componentesDigitais' => $componentes, + ); + + $componenteEnvio = array( + 'hashDocumento' => $hashDocumento, + 'conteudo' => $conteudo ); if(!is_null($documentoTeste['ORDEM_DOCUMENTO_REFERENCIADO'])){ $documentoDoProcesso['ordemDoDocumentoReferenciado'] = intval($documentoTeste['ORDEM_DOCUMENTO_REFERENCIADO']); } - return $documentoDoProcesso; + return array( + 'documentoDoProcesso' => $documentoDoProcesso, + 'componenteEnvio' => $componenteEnvio + ); + } + + public function enviarProcessoAPI($parametros) + { + try { + $endpoint = "tramites/processo"; + + $response = self::$servicoPEN->request('POST', $endpoint, [ + 'json' => $parametros + ]); + + return json_decode($response->getBody(), true); + + } catch (\Exception $e) { + $mensagem = "Falha no envio de processo"; + } + } + + public function enviarComponenteDigitalAPI($parametros) + { + try { + + $arrParametros = $parametros['dadosDoComponenteDigital']; + $idTicketDeEnvio = $arrParametros['ticketParaEnvioDeComponentesDigitais']; + + $protocolo = $arrParametros['protocolo']; + $hashDoComponenteDigital = $arrParametros['hashDoComponenteDigital']; + + $conteudoComponenteDigital = self::$conteudoCompoonenteDigital[$hashDoComponenteDigital]; + + $queryParams = [ + 'hashDoComponenteDigital' => $hashDoComponenteDigital, + 'protocolo' => $protocolo + ]; + + $endpoint = "tickets-de-envio-de-componente/{$idTicketDeEnvio}/protocolos/componentes-a-enviar"; + + $arrOptions = [ + 'query' => $queryParams, + 'multipart' => [ + [ + 'name' => 'conteudo', + 'contents' => $conteudoComponenteDigital, + 'filename' => 'conteudo.html', + 'headers' => ['Content-Type' => 'text/html'] + ], + ], + ]; + + $response = self::$servicoPEN->request('PUT', $endpoint, $arrOptions); + + return $response; + + } catch (\Exception $e) { + $mensagem = "Falha no envio de de componentes no documento"; + } + } + + public function receberReciboDeEnvioAPI($parNumIdTramite) + { + $endpoint = "tramites/{$parNumIdTramite}/recibo-de-envio"; + try{ + $parametros = [ + 'IDT' => $parNumIdTramite + ]; + + $response = self::$servicoPEN->request('GET', $endpoint, [ + 'query' => $parametros + ]); + + return json_decode($response->getBody(), true); + } catch (\Exception $e) { + $mensagem = "Falha no recebimento de recibo de trâmite de envio."; + } } } diff --git a/tests_sei41/unitario/bootstrap.php b/tests_sei41/unitario/bootstrap.php index 69fdb7ba6..383369434 100755 --- a/tests_sei41/unitario/bootstrap.php +++ b/tests_sei41/unitario/bootstrap.php @@ -1,9 +1,5 @@ + + + /opt/sei/web/modulos/pen/vendor + /opt/sei/web/modulos/pen/config + + + /opt/sei/web/modulos/pen + + diff --git a/tests_sei41/unitario/rn/CompararVersoesTest.php b/tests_sei41/unitario/rn/CompararVersoesTest.php new file mode 100644 index 000000000..949f944c3 --- /dev/null +++ b/tests_sei41/unitario/rn/CompararVersoesTest.php @@ -0,0 +1,17 @@ +assertTrue(InfraUtil::compararVersoes("0.0.1", "<", "0.0.2")); + $this->assertTrue(InfraUtil::compararVersoes("0.1.0", "<", "0.2.0")); + $this->assertTrue(InfraUtil::compararVersoes("1.0.0", "<", "2.0.0")); + $this->assertTrue(InfraUtil::compararVersoes("4.0.3", "==", "4.0.3.0")); + $this->assertTrue(InfraUtil::compararVersoes("4.0.3", "<", "4.0.3.1")); + $this->assertTrue(InfraUtil::compararVersoes("4.0.4", ">", "4.0.3.0")); + $this->assertTrue(InfraUtil::compararVersoes("4.0.3.0", "==", "4.0.3.5", 3, true)); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/BuscarEstruturaTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/BuscarEstruturaTest.php new file mode 100644 index 000000000..715e414cb --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/BuscarEstruturaTest.php @@ -0,0 +1,140 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get', 'buscarEstruturaRest']) + ->getMock(); + } + + /** + * Testa o comportamento do método buscarEstrutura em caso de sucesso. + * + * Simula uma resposta válida para o método `buscarEstruturaRest` e verifica + * se o retorno do método testado é uma instância válida da classe EstruturaDTO. + * + * @return void + */ + public function testBuscarEstruturaSucesso() + { + // Mock do retorno esperado da API + $estruturaMock = [ + 'numeroDeIdentificacaoDaEstrutura' => '12345', + 'nome' => 'Estrutura Teste', + 'sigla' => 'ET', + 'ativo' => true, + 'aptoParaReceber' => true, + 'codigoNoOrgaoEntidade' => 'CNOE123', + 'hierarquia' => [ + ['sigla' => 'Nivel1'], + ['sigla' => 'Nivel2'] + ] + ]; + + // Mock do método buscarEstruturaRest + $this->mockService->expects($this->once()) + ->method('buscarEstruturaRest') + ->with(1, 'Estrutura Raiz') + ->willReturn($estruturaMock); + + // Chamada do método + $resultado = $this->mockService->buscarEstrutura( + 1, // idRepositorioEstrutura + 'Estrutura Raiz' // Nome ou identificador raiz + ); + + $this->assertInstanceOf(EstruturaDTO::class, $resultado, 'O retorno deve ser uma instância da classe EstruturaDTO.'); + } + + /** + * Testa o comportamento do método buscarEstrutura com um repositório inválido. + * + * Verifica se o método lança a exceção correta ao receber um ID de repositório inválido. + * + * @return void + */ + public function testBuscarEstruturaComRepositorioInvalido() + { + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->buscarEstrutura(0); // Passando um ID inválido + } + + /** + * Testa o comportamento do método buscarEstrutura quando a estrutura não é encontrada. + * + * Simula o retorno `null` do método `buscarEstruturaRest` e verifica se o + * método principal retorna `null` como esperado. + * + * @return void + */ + public function testBuscarEstruturaNaoEncontrada() + { + // Mock para retorno nulo da API + $this->mockService->expects($this->once()) + ->method('buscarEstruturaRest') + ->with(1, 'Estrutura Raiz') + ->willReturn(null); + + // Chamada do método + $resultado = $this->mockService->buscarEstrutura( + 1, // idRepositorioEstrutura + 'Estrutura Raiz' // Nome ou identificador raiz + ); + + // Asserção de retorno nulo + $this->assertNull($resultado); + } + + /** + * Testa o comportamento do método buscarEstrutura quando ocorre uma exceção. + * + * Simula uma exceção no método `get` e verifica se a exceção correta é lançada + * pelo método testado. + * + * @return void + */ + public function testBuscarEstruturaLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception()); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstrutura(159098, 152254, false); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/BuscarEstruturasPorEstruturaPaiTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/BuscarEstruturasPorEstruturaPaiTest.php new file mode 100644 index 000000000..6d72134e3 --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/BuscarEstruturasPorEstruturaPaiTest.php @@ -0,0 +1,136 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas', 'tentarNovamenteSobErroHTTP']) + ->getMock(); + } + + /** + * Testa o método `buscarEstruturasPorEstruturaPai` com parâmetros de identificação. + * + * Verifica se o método: + * - Retorna um array. + * - Retorna o número correto de estruturas. + * - As estruturas têm os valores esperados. + */ + public function testBuscarEstruturasPorEstruturaPaiComIdentificacao() + { + // Configuração do mock + $resultadoMock = new stdClass(); + $resultadoMock->estruturasEncontradasNoFiltroPorEstruturaPai = new stdClass(); + $resultadoMock->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura = [ + (object) ['id' => 1, 'nome' => 'Estrutura 1'], + (object) ['id' => 2, 'nome' => 'Estrutura 2'] + ]; + + $this->mockService->expects($this->once()) + ->method('tentarNovamenteSobErroHTTP') + ->willReturnCallback(function ($callback) use ($resultadoMock) { + $mockObjPenWs = $this->getMockBuilder(stdClass::class) + ->addMethods(['consultarEstruturasPorEstruturaPai']) + ->getMock(); + $mockObjPenWs->method('consultarEstruturasPorEstruturaPai') + ->willReturn($resultadoMock); + + return $callback($mockObjPenWs); + }); + + // Reflexão para acessar o método privado + $reflexao = new ReflectionClass($this->mockService); + $metodoPrivado = $reflexao->getMethod('buscarEstruturasPorEstruturaPai'); + $metodoPrivado->setAccessible(true); + + // Teste + $idRepositorioEstrutura = 123; + $numeroDeIdentificacaoDaEstrutura = 'ABC123'; + + $resultado = $metodoPrivado->invokeArgs( + $this->mockService, + [$idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura] + ); + + // Validações + $this->assertIsArray($resultado, 'Deve retornar um array'); + $this->assertCount(2, $resultado, 'Deve retornar duas estruturas'); + $this->assertEquals('Estrutura 1', $resultado[0]->nome, 'Deve retornar a estrutura 1'); + $this->assertEquals('Estrutura 2', $resultado[1]->nome, 'Deve retornar a estrutura 2'); + } + + /** + * Testa o método `buscarEstruturasPorEstruturaPai` sem parâmetros de identificação. + * + * Verifica se o método: + * - Retorna um array. + * - Retorna uma estrutura única com os valores esperados. + */ + public function testBuscarEstruturasPorEstruturaPaiSemIdentificacao() + { + // Configuração do mock + $resultadoMock = new stdClass(); + $resultadoMock->estruturasEncontradasNoFiltroPorEstruturaPai = new stdClass(); + $resultadoMock->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura = (object) ['id' => 1, 'nome' => 'Estrutura Única']; + + $this->mockService->expects($this->once()) + ->method('tentarNovamenteSobErroHTTP') + ->willReturnCallback(function ($callback) use ($resultadoMock) { + $mockObjPenWs = $this->getMockBuilder(stdClass::class) + ->addMethods(['consultarEstruturasPorEstruturaPai']) + ->getMock(); + $mockObjPenWs->method('consultarEstruturasPorEstruturaPai') + ->willReturn($resultadoMock); + + return $callback($mockObjPenWs); + }); + + // Reflexão para acessar o método privado + $reflexao = new ReflectionClass($this->mockService); + $metodoPrivado = $reflexao->getMethod('buscarEstruturasPorEstruturaPai'); + $metodoPrivado->setAccessible(true); + + // Teste + $idRepositorioEstrutura = 123; + + $resultado = $metodoPrivado->invokeArgs($this->mockService, [$idRepositorioEstrutura]); + + // Validações + $this->assertIsArray($resultado); + $this->assertCount(1, $resultado); + $this->assertEquals('Estrutura Única', $resultado[0]->nome); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/CancelarTramiteTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/CancelarTramiteTest.php new file mode 100644 index 000000000..4c85d7dfd --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/CancelarTramiteTest.php @@ -0,0 +1,87 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['delete']) + ->getMock(); + } + + /** + * Teste do método cancelarTramite em caso de sucesso. + * + * Este teste simula a execução do método cancelarTramite quando o método 'delete' do mock + * retorna uma resposta bem-sucedida (null). O teste verifica se o retorno do método é + * o esperado (null), indicando que o trâmite foi cancelado com sucesso. + * + * @return void + */ + public function testCancelarTramiteSucesso() + { + $mockResponse = null; + + // Configura o mock para retornar a resposta esperada (null) + $this->mockService->expects($this->once()) + ->method('delete') + ->willReturn($mockResponse); + + // Executa o método cancelarTramite + $resultado = $this->mockService->cancelarTramite(999); + + // Verifica se o retorno é nulo (indicando sucesso no cancelamento) + $this->assertNull($mockResponse, "O objeto é nulo"); + } + + /** + * Teste do método cancelarTramite quando ocorre uma exceção. + * + * Este teste simula a falha no método cancelarTramite, quando o método 'delete' do mock + * lança uma exceção. O teste verifica se a exceção esperada (InfraException) é lançada e + * se a mensagem associada à exceção está correta. + * + * @return void + * @throws \InfraException Quando ocorre uma falha no cancelamento do trâmite + */ + public function testCancelarTramiteLancaExcecao() + { + // Configura o mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('delete') + ->willThrowException(new Exception('Erro na requisição')); + + // Espera que a exceção InfraException seja lançada com a mensagem esperada + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha no cancelamento de trâmite de processo'); + + // Executa o método cancelarTramite e verifica se a exceção é lançada + $this->mockService->cancelarTramite(999); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/CienciaRecusaTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/CienciaRecusaTest.php new file mode 100644 index 000000000..f436fbd3f --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/CienciaRecusaTest.php @@ -0,0 +1,96 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o método `cienciaRecusa` com retorno bem-sucedido. + * + * Verifica se o método: + * - Retorna um array com as chaves `status` e `mensagem`. + * - Contém os valores esperados no retorno. + */ + public function testCienciaRecusaComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'status' => 'sucesso', + 'mensagem' => 'Ciência registrada com sucesso.' + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('tramites/123/ciencia', ['IDT' => 123]) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->cienciaRecusa(123); + + // Validações + $this->assertIsArray($resultado); + $this->assertArrayHasKey('status', $resultado); + $this->assertEquals('sucesso', $resultado['status']); + $this->assertEquals('Ciência registrada com sucesso.', $resultado['mensagem']); + } + + /** + * Testa o método `cienciaRecusa` quando ocorre um erro. + * + * Verifica se o método: + * - Lança a exceção esperada (`InfraException`). + * - Contém a mensagem correta de erro. + */ + public function testCienciaRecusaComErro() + { + // Configuração do mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Expectativa de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha no registro de ciência da recusa de trâmite'); + + // Chamada do método (deve lançar exceção) + $this->mockService->cienciaRecusa(123); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEspeciesDocumentaisTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEspeciesDocumentaisTest.php new file mode 100644 index 000000000..2b22a1acc --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEspeciesDocumentaisTest.php @@ -0,0 +1,131 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o método `consultarEspeciesDocumentais` com retorno bem-sucedido. + * + * Verifica se o método: + * - Retorna um array com as espécies documentais. + * - Converte corretamente as strings para o formato esperado (`ISO-8859-1`). + */ + public function testConsultarEspeciesDocumentaisComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'especies' => [ + ['nomeNoProdutor' => 'Espécie 1'], + ['nomeNoProdutor' => 'Espécie 2'], + ] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('especies', []) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarEspeciesDocumentais(); + + // Validações + $this->assertIsArray($resultado); + $this->assertCount(2, $resultado); + $this->assertEquals( + mb_convert_encoding('Espécie 1', 'ISO-8859-1', 'UTF-8'), + $resultado[0] + ); + $this->assertEquals( + mb_convert_encoding('Espécie 2', 'ISO-8859-1', 'UTF-8'), + $resultado[1] + ); + } + + /** + * Testa o método `consultarEspeciesDocumentais` quando não há resultados. + * + * Verifica se o método: + * - Retorna um array vazio. + */ + public function testConsultarEspeciesDocumentaisSemResultados() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'especies' => [] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('especies', []) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarEspeciesDocumentais(); + + // Validações + $this->assertIsArray($resultado); + $this->assertEmpty($resultado); + } + + /** + * Testa o método `consultarEspeciesDocumentais` quando ocorre um erro. + * + * Verifica se o método: + * - Lança a exceção esperada (`InfraException`). + * - Contém a mensagem correta de erro. + */ + public function testConsultarEspeciesDocumentaisComErro() + { + // Configuração do mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Expectativa de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Não foi encontrado nenhuma espécie documental.'); + + // Chamada do método (deve lançar exceção) + $this->mockService->consultarEspeciesDocumentais(); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturaTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturaTest.php new file mode 100644 index 000000000..2152b5bb9 --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturaTest.php @@ -0,0 +1,108 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + public function testConsultarEstruturaListaSucesso() + { + $mockResponse = [ + "numeroDeIdentificacaoDaEstrutura" => "159098", + "nome" => "Mauro ORG1 Filha", + "sigla" => "Mauro ORG1 Filha", + "ativo" => true, + "unidadeReceptora" => false, + "aptoParaReceberTramites" => true, + "codigoNoOrgaoEntidade" => "", + "codigoUnidadeReceptora" => "", + "tipoDeTramitacao" => 0, + "hierarquia" => [ + [ + "numeroDeIdentificacaoDaEstrutura" => "152254", + "nome" => "Órgão de Desenvolvimento ABC (FIRST) - ORGABC", + "sigla" => "ORGABC" + ] + ] + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->consultarEstrutura(159098, 152254, false); + + $this->assertInstanceOf(EstruturaDTO::class, $resultado, 'O retorno deve ser uma instância da classe EstruturaDTO.'); + } + + public function testConsultarEstruturaListaBolRetornoRawTrueSucesso() + { + $mockResponse = [ + "numeroDeIdentificacaoDaEstrutura" => "159098", + "nome" => "Mauro ORG1 Filha", + "sigla" => "Mauro ORG1 Filha", + "ativo" => true, + "unidadeReceptora" => false, + "aptoParaReceberTramites" => true, + "codigoNoOrgaoEntidade" => "", + "codigoUnidadeReceptora" => "", + "tipoDeTramitacao" => 0, + "hierarquia" => [ + [ + "numeroDeIdentificacaoDaEstrutura" => "152254", + "nome" => "Órgão de Desenvolvimento ABC (FIRST) - ORGABC", + "sigla" => "ORGABC" + ] + ] + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->consultarEstrutura(159098, 152254, true); + + $this->assertInstanceOf(stdClass::class, $resultado, 'O retorno deve ser uma instância da classe EstruturaDTO.'); + } + + public function testConsultarEstruturaListaLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstrutura(159098, 152254, false); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php new file mode 100644 index 000000000..519b47b0f --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php @@ -0,0 +1,122 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas', 'validarRestricaoUnidadesCadastradas', 'buscarEstruturasPorEstruturaPai']) + ->getMock(); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai para um caso de sucesso. + * + * Verifica se a lista de estruturas é retornada e ordenada corretamente com base nos nomes. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiRetornaEstruturasOrdenadas() + { + $idRepositorioEstrutura = 1; + $mockEstruturas = [ + (object)['nome' => 'Unidade B', 'codigo' => '002'], + (object)['nome' => 'Unidade A', 'codigo' => '001'], + (object)['nome' => 'Unidade C', 'codigo' => '003'], + ]; + + $this->mockService->expects($this->once()) + ->method('validarRestricaoUnidadesCadastradas') + ->with($idRepositorioEstrutura) + ->willReturn(null); + + $this->mockService->expects($this->once()) + ->method('buscarEstruturasPorEstruturaPai') + ->with($idRepositorioEstrutura, null) + ->willReturn($mockEstruturas); + + $resultado = $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura); + + $this->assertCount(3, $resultado); + $this->assertEquals('Unidade A', $resultado[0]->nome); + $this->assertEquals('Unidade B', $resultado[1]->nome); + $this->assertEquals('Unidade C', $resultado[2]->nome); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai para uma unidade pai específica. + * + * Verifica se a busca por estrutura pai é realizada corretamente ao fornecer + * um número de identificação específico. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiComUnidadePaiEspecifica() + { + $idRepositorioEstrutura = 1; + $numeroDeIdentificacaoDaEstrutura = '001'; + $mockEstruturas = [ + (object)['nome' => 'Unidade D', 'codigo' => '004'], + ]; + + $this->mockService->expects($this->never()) + ->method('validarRestricaoUnidadesCadastradas'); + + $this->mockService->expects($this->once()) + ->method('buscarEstruturasPorEstruturaPai') + ->with($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura) + ->willReturn($mockEstruturas); + + $resultado = $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura); + + $this->assertCount(1, $resultado); + $this->assertEquals('Unidade D', $resultado[0]->nome); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai quando ocorre um erro. + * + * Verifica se uma exceção InfraException é lançada corretamente ao ocorrer + * um erro no método validarRestricaoUnidadesCadastradas. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiLancaExcecaoParaErro() + { + $idRepositorioEstrutura = 1; + + $this->mockService->expects($this->once()) + ->method('validarRestricaoUnidadesCadastradas') + ->willThrowException(new Exception('Erro no serviço')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasTest.php new file mode 100644 index 000000000..7acd9b36d --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasTest.php @@ -0,0 +1,82 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + public function testConsultarEstruturaListaSucesso() + { + $mockResponse = [ + "estruturas" => [ + [ + "numeroDeIdentificacaoDaEstrutura" => "159098", + "nome" => "Mauro ORG1 Filha", + "sigla" => "Mauro ORG1 Filha", + "ativo" => true, + "unidadeReceptora" => false, + "aptoParaReceberTramites" => true, + "codigoNoOrgaoEntidade" => "", + "codigoUnidadeReceptora" => "", + "tipoDeTramitacao" => 0, + "hierarquia" => [ + [ + "numeroDeIdentificacaoDaEstrutura" => "152254", + "nome" => "Órgão de Desenvolvimento ABC (FIRST) - ORGABC", + "sigla" => "ORGABC" + ] + ] + ] + ], + "totalDeRegistros" => 1 + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->consultarEstruturas(159098, []); + + $this->assertIsArray($resultado, 'O retorno deve ser um array.'); + } + + public function testConsultarEstruturaListaLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstruturas(159098, []); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarHipotesesLegaisTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarHipotesesLegaisTest.php new file mode 100644 index 000000000..9c13025b7 --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarHipotesesLegaisTest.php @@ -0,0 +1,111 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o sucesso da consulta de hipóteses legais. + * + * Este teste verifica se o método `consultarHipotesesLegais` retorna um array de hipoteses + * quando o método 'get' é chamado. + * + * @return void + */ + public function testConsultarHipotesesLegaisSucesso() + { + // Define o valor retornado pelo método 'get' mockado + $mockResponse = [ + 'hipoteseslegais' => [ + ] + ]; + + // Configura o mock para esperar que o método 'get' seja chamado uma vez e retorne $mockResponse + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + // Chama o método que está sendo testado + $resultado = $this->mockService->consultarHipotesesLegais(true); + + // Verifica se o resultado é nulo, conforme esperado + $this->assertIsArray($resultado); + $this->assertArrayHasKey('hipoteseslegais', $resultado); + } + + /** + * Testa o sucesso da consulta de hipóteses legais com retorno vazio. + * + * Este teste verifica se o método `consultarHipotesesLegais` retorna um array vazio + * quando o método 'get' é chamado. + * + * @return void + */ + public function testConsultarHipotesesLegaisRetornoVazioSucesso() + { + // Define o valor retornado pelo método 'get' mockado + $mockResponse = []; + + // Configura o mock para esperar que o método 'get' seja chamado uma vez e retorne $mockResponse + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + // Chama o método que está sendo testado + $resultado = $this->mockService->consultarHipotesesLegais(true); + + // Verifica se o resultado é nulo, conforme esperado + $this->assertIsArray($resultado); + $this->assertEquals(0, count($resultado)); + } + + /** + * Testa o lançamento de exceção ao tentar consultar as hipóteses legais. + * + * Este teste verifica se uma exceção é lançada corretamente quando ocorre um erro + * ao tentar realizar a consulta (simulando a exceção gerada pelo método 'get'). + * + * @return void + * @throws InfraException Se a exceção de infra-estrutura for gerada. + */ + public function testConsultarHipotesesLegaisLancaExcecao() + { + // Configura o mock para lançar uma exceção quando o método 'get' for chamado + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + // Define a expectativa de que a exceção InfraException será lançada + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de hipóteses legais'); + + // Chama o método que deve lançar a exceção + $this->mockService->consultarHipotesesLegais(true); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarMotivosUrgenciaTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarMotivosUrgenciaTest.php new file mode 100644 index 000000000..ed8532f0b --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarMotivosUrgenciaTest.php @@ -0,0 +1,126 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas', 'get']) + ->getMock(); + } + + /** + * Testa o método `consultarMotivosUrgencia` com retorno bem-sucedido. + * + * Verifica se o método: + * - Retorna um array. + * - Contém os motivos de urgência esperados. + */ + public function testConsultarMotivosUrgenciaComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'motivosUrgencia' => [ + ['descricao' => 'Motivo 1'], + ['descricao' => 'Motivo 2'], + ] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('motivosUrgencia', []) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarMotivosUrgencia(); + + // Validações + $this->assertIsArray($resultado); + $this->assertCount(2, $resultado); + $this->assertEquals('Motivo 1', $resultado[0]); + $this->assertEquals('Motivo 2', $resultado[1]); + } + + /** + * Testa o método `consultarMotivosUrgencia` quando não há resultados. + * + * Verifica se o método: + * - Retorna um array vazio. + */ + public function testConsultarMotivosUrgenciaSemResultados() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'motivosUrgencia' => [] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('motivosUrgencia', []) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarMotivosUrgencia(); + + // Validações + $this->assertIsArray($resultado); + $this->assertEmpty($resultado); + } + + /** + * Testa o método `consultarMotivosUrgencia` quando ocorre um erro. + * + * Verifica se o método: + * - Lança a exceção esperada (`InfraException`). + * - Contém a mensagem correta de erro. + */ + public function testConsultarMotivosUrgenciaComErro() + { + // Configuração do mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Expectativa de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + // Chamada do método (deve lançar exceção) + $this->mockService->consultarMotivosUrgencia(); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarRepositoriosDeEstruturasTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarRepositoriosDeEstruturasTest.php new file mode 100644 index 000000000..34788d48b --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ConsultarRepositoriosDeEstruturasTest.php @@ -0,0 +1,125 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o método `consultarRepositoriosDeEstruturas` com retorno bem-sucedido. + * + * Verifica se o método: + * - Retorna uma instância de `RepositorioDTO`. + * - Preenche os atributos da instância com os valores corretos. + */ + public function testConsultarRepositoriosDeEstruturasComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + [ + 'id' => 5, + 'nome' => 'Repositório 1', + 'ativo' => true + ] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('repositorios-de-estruturas', ['ativo' => true]) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarRepositoriosDeEstruturas(5); + + // Validações + $this->assertInstanceOf(RepositorioDTO::class, $resultado); + $this->assertEquals(5, $resultado->getNumId()); + $this->assertEquals( + mb_convert_encoding('Repositório 1', 'ISO-8859-1', 'UTF-8'), + $resultado->getStrNome() + ); + $this->assertTrue($resultado->getBolAtivo()); + } + + /** + * Testa o método `consultarRepositoriosDeEstruturas` quando não há resultados. + * + * Verifica se o método: + * - Retorna `null` quando não há repositórios disponíveis. + */ + public function testConsultarRepositoriosDeEstruturasSemResultados() + { + // Mock do retorno esperado do método get + $resultadoMock = []; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('repositorios-de-estruturas', ['ativo' => true]) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarRepositoriosDeEstruturas(123); + + // Validações + $this->assertNull($resultado); + } + + /** + * Testa o método `consultarRepositoriosDeEstruturas` quando ocorre um erro. + * + * Verifica se o método: + * - Lança a exceção esperada (`InfraException`). + * - Contém a mensagem correta de erro. + */ + public function testConsultarRepositoriosDeEstruturasComErro() + { + // Configuração do mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Expectativa de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção dos Repositórios de Estruturas Organizacionais'); + + // Chamada do método (deve lançar exceção) + $this->mockService->consultarRepositoriosDeEstruturas(123); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarEstruturasAutoCompletarTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarEstruturasAutoCompletarTest.php new file mode 100644 index 000000000..be505824f --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarEstruturasAutoCompletarTest.php @@ -0,0 +1,130 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas']) + ->getMock(); + } + + /** + * Testa o método listarEstruturasAutoCompletar com parâmetros válidos. + * + * Verifica se o retorno do método é formatado corretamente, incluindo: + * - Propriedades convertidas para UTF-8. + * - Hierarquia de siglas mapeada. + * - Quantidade correta de itens no resultado. + */ + public function testListarEstruturasAutoCompletarRetornaEstruturasFormatadas() + { + // Simulação de parâmetros e retorno esperado + $idRepositorioEstrutura = 1; + $nome = 'Teste Unidade'; + $mockResultado = [ + 'totalDeRegistros' => 2, + 'estruturas' => [ + [ + 'numeroDeIdentificacaoDaEstrutura' => 101, + 'nome' => 'Unidade A', + 'sigla' => 'UA', + 'ativo' => true, + 'aptoParaReceberTramites' => true, + 'codigoNoOrgaoEntidade' => '123', + 'hierarquia' => [ + ['sigla' => 'ORG'] + ] + ], + [ + 'numeroDeIdentificacaoDaEstrutura' => 102, + 'nome' => 'Unidade B', + 'sigla' => 'UB', + 'ativo' => true, + 'aptoParaReceberTramites' => false, + 'codigoNoOrgaoEntidade' => '456', + 'hierarquia' => [] + ] + ] + ]; + + $this->mockService->expects($this->once()) + ->method('consultarEstruturas') + ->with($idRepositorioEstrutura, $this->callback(function ($parametros) use ($nome) { + return $parametros['nome'] === $nome && $parametros['apenasAtivas'] === true; + })) + ->willReturn($mockResultado); + + $resultado = $this->mockService->listarEstruturasAutoCompletar($idRepositorioEstrutura, $nome); + + // Asserções sobre o retorno + $this->assertIsArray($resultado); + $this->assertArrayHasKey('diferencaDeRegistros', $resultado); + $this->assertArrayHasKey('itens', $resultado); + $this->assertCount(2, $resultado['itens']); + } + + /** + * Testa o método listarEstruturasAutoCompletar quando ocorre um erro. + * + * Simula um erro no método consultarEstruturas e verifica se uma exceção + * InfraException é lançada corretamente com a mensagem esperada. + */ + public function testListarEstruturasAutoCompletarLancaExcecaoParaErro() + { + $idRepositorioEstrutura = 1; + + $this->mockService->expects($this->once()) + ->method('consultarEstruturas') + ->willThrowException(new Exception('Erro interno')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->listarEstruturasAutoCompletar($idRepositorioEstrutura); + } + + /** + * Testa o método listarEstruturasAutoCompletar com repositório inválido. + * + * Verifica se uma exceção InfraException é lançada quando o ID do + * repositório de estruturas fornecido é inválido. + */ + public function testListarEstruturasAutoCompletarLancaExcecaoParaRepositorioInvalido() + { + $idRepositorioEstrutura = null; + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Repositório de Estruturas inválido'); + + $this->mockService->listarEstruturasAutoCompletar($idRepositorioEstrutura); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarEstruturasBuscaTextualTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarEstruturasBuscaTextualTest.php new file mode 100644 index 000000000..a23711182 --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarEstruturasBuscaTextualTest.php @@ -0,0 +1,124 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get', 'consultarEstruturas']) + ->getMock(); + } + + /** + * Testa o método listarEstruturasBuscaTextual para um caso de sucesso. + * + * Simula uma resposta válida do método 'consultarEstruturas' e verifica + * se o retorno é uma lista de objetos EstruturaDTO com os dados corretos. + * + * @return void + */ + public function testListarEstruturasBuscaTextualRetornaEstruturas() + { + $idRepositorioEstrutura = 1; + $nome = 'Estrutura Raiz'; + $mockResponse = [ + 'totalDeRegistros' => 2, + 'estruturas' => [ + [ + 'numeroDeIdentificacaoDaEstrutura' => '123', + 'nome' => 'Estrutura 1', + 'sigla' => 'E1', + 'ativo' => true, + 'aptoParaReceberTramites' => true, + 'codigoNoOrgaoEntidade' => '001', + 'hierarquia' => [['sigla' => 'H1'], ['sigla' => 'H2']], + ], + [ + 'numeroDeIdentificacaoDaEstrutura' => '456', + 'nome' => 'Estrutura 2', + 'sigla' => 'E2', + 'ativo' => false, + 'aptoParaReceberTramites' => false, + 'codigoNoOrgaoEntidade' => '002', + 'hierarquia' => [['sigla' => 'H3']], + ] + ] + ]; + + $this->mockService->expects($this->once()) + ->method('consultarEstruturas') + ->with($idRepositorioEstrutura, $this->arrayHasKey('identificacaoDoRepositorioDeEstruturas')) + ->willReturn($mockResponse); + + $resultado = $this->mockService->listarEstruturasBuscaTextual($idRepositorioEstrutura, $nome); + + $this->assertCount(2, $resultado); + $this->assertInstanceOf(EstruturaDTO::class, $resultado[0]); + $this->assertEquals('123', $resultado[0]->getNumNumeroDeIdentificacaoDaEstrutura()); + $this->assertEquals('Estrutura 1', $resultado[0]->getStrNome()); + $this->assertEquals(['H1', 'H2'], $resultado[0]->getArrHierarquia()); + } + + /** + * Testa o método listarEstruturasBuscaTextual para um repositório inválido. + * + * Verifica se uma exceção InfraException é lançada ao fornecer um ID de repositório inválido. + * + * @return void + */ + public function testListarEstruturasBuscaTextualLancaExcecaoParaRepositorioInvalido() + { + $idRepositorioEstrutura = null; + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Repositório de Estruturas inválido'); + + $this->mockService->listarEstruturasBuscaTextual($idRepositorioEstrutura); + } + + /** + * Testa o método listarEstruturasBuscaTextual para falhas no web service. + * + * Simula um erro no método 'consultarEstruturas' e verifica se a exceção + * InfraException é lançada com a mensagem correta. + * + * @return void + */ + public function testListarEstruturasBuscaTextualLancaExcecaoParaErroWebService() + { + $idRepositorioEstrutura = 1; + + $this->mockService->expects($this->once()) + ->method('consultarEstruturas') + ->willThrowException(new Exception('Erro no web service')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->listarEstruturasBuscaTextual($idRepositorioEstrutura); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarPendenciasTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarPendenciasTest.php new file mode 100644 index 000000000..f8d69ea83 --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarPendenciasTest.php @@ -0,0 +1,67 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + public function testListarPendenciasSucesso() + { + $mockResponse = [ + [ + 'status' => 2, + 'IDT' => 999 + ] + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->listarPendencias(true); + + $this->assertIsArray($resultado, 'O retorno deve ser um array.'); + $this->assertCount(count($mockResponse), $resultado, 'A quantidade de objetos no retorno está incorreta.'); + $this->assertInstanceOf(PendenciaDTO::class, $resultado[0], 'O primeiro objeto na lista deve ser uma instância da classe RepositorioDTO.'); + } + + public function testListarPendenciasLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na listagem de pendências de trâmite de processos'); + + $this->mockService->listarPendencias(true); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarRepositorioTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarRepositorioTest.php new file mode 100644 index 000000000..dbd027c18 --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ListarRepositorioTest.php @@ -0,0 +1,97 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o método listarRepositoriosDeEstruturas para garantir que ele + * retorna uma lista de repositórios de estruturas com sucesso. + * + * Cenário testado: + * - O método 'get' retorna uma lista simulada de repositórios. + * - O retorno do método deve ser um array contendo objetos do tipo RepositorioDTO. + * + * Asserções: + * - O retorno deve ser um array. + * - A quantidade de itens no retorno deve ser igual à quantidade simulada. + * - O primeiro item do retorno deve ser uma instância de RepositorioDTO. + * + * @return void + */ + public function testListarRepositoriosDeEstruturasRetornaListaSucesso() + { + $mockResponse = [ + ["id" => 49, "nome" => "Acre - AC", "ativo" => true], + ["id" => 2, "nome" => "Advocacia-Geral da União", "ativo" => true], + ["id" => 7, "nome" => "Alagoas( Estado)", "ativo" => true], + ["id" => 20, "nome" => "Banco Central do Brasil 2", "ativo" => true], + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->listarRepositoriosDeEstruturas(); + + $this->assertIsArray($resultado, 'O retorno deve ser um array.'); + $this->assertCount(count($mockResponse), $resultado, 'A quantidade de objetos no retorno está incorreta.'); + $this->assertInstanceOf(RepositorioDTO::class, $resultado[0], 'O primeiro objeto na lista deve ser uma instância da classe RepositorioDTO.'); + } + + /** + * Testa o método listarRepositoriosDeEstruturas para garantir que ele lança + * uma exceção quando a requisição falha. + * + * Cenário testado: + * - O método 'get' lança uma exceção simulada. + * - O método listarRepositoriosDeEstruturas deve capturar a exceção e + * relançar uma InfraException com a mensagem apropriada. + * + * Asserções: + * - Uma exceção do tipo InfraException deve ser lançada. + * - A mensagem da exceção deve ser "Falha na obtenção dos Repositórios de Estruturas Organizacionais". + * + * @return void + */ + public function testListarRepositoriosDeEstruturasLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção dos Repositórios de Estruturas Organizacionais'); + + $this->mockService->listarRepositoriosDeEstruturas(); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/LitarEstruturasTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/LitarEstruturasTest.php new file mode 100644 index 000000000..45a8d2edb --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/LitarEstruturasTest.php @@ -0,0 +1,120 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas']) + ->getMock(); + } + + /** + * Testa a listagem de estruturas com sucesso. + * + * Este teste verifica se o método listarEstruturas retorna corretamente + * as estruturas esperadas quando os dados são fornecidos corretamente. + */ + public function testListarEstruturasComSucesso() + { + $idRepositorioEstrutura = 1; + $nome = 'Estrutura Teste'; + $mockRetornoConsulta = [ + 'totalDeRegistros' => 1, + 'estruturas' => [ + [ + 'numeroDeIdentificacaoDaEstrutura' => 123, + 'nome' => 'Estrutura 1', + 'sigla' => 'E1', + 'ativo' => true, + 'aptoParaReceberTramites' => false, + 'codigoNoOrgaoEntidade' => '001', + 'hierarquia' => [ + ['sigla' => 'H1'], + ['sigla' => 'H2'], + ], + ], + ], + ]; + + // Define a expectativa para o mock do método consultarEstruturas + $this->mockService + ->expects($this->once()) + ->method('consultarEstruturas') + ->willReturn($mockRetornoConsulta); + + // Executa o método sob teste + $result = $this->mockService->listarEstruturas($idRepositorioEstrutura, $nome); + + // Validações dos resultados + $this->assertCount(1, $result); + $this->assertInstanceOf(EstruturaDTO::class, $result[0]); + $this->assertEquals(123, $result[0]->getNumNumeroDeIdentificacaoDaEstrutura()); + $this->assertEquals('Estrutura 1', $result[0]->getStrNome()); + $this->assertEquals('E1', $result[0]->getStrSigla()); + $this->assertEquals(['H1', 'H2'], $result[0]->getArrHierarquia()); + } + + /** + * Testa a listagem de estruturas com repositório inválido. + * + * Este teste verifica se uma exceção é lançada quando o ID do repositório + * de estruturas é inválido (null). + */ + public function testListarEstruturasComRepositorioInvalido() + { + $idRepositorioEstrutura = null; + + // Configura as expectativas de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Repositório de Estruturas inválido'); + + // Executa o método sob teste + $this->mockService->listarEstruturas($idRepositorioEstrutura); + } + + /** + * Testa a listagem de estruturas com erro na consulta. + * + * Este teste verifica se uma exceção é lançada corretamente quando ocorre + * um erro durante a consulta de estruturas. + */ + public function testListarEstruturasComErroNaConsulta() + { + $idRepositorioEstrutura = 1; + + // Configura o mock para lançar uma exceção no método consultarEstruturas + $this->mockService + ->expects($this->once()) + ->method('consultarEstruturas') + ->willThrowException(new Exception('Erro na consulta')); + + // Configura as expectativas de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + // Executa o método sob teste + $this->mockService->listarEstruturas($idRepositorioEstrutura); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/ReceberReciboDeTramiteTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ReceberReciboDeTramiteTest.php new file mode 100644 index 000000000..1fb0da91f --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/ReceberReciboDeTramiteTest.php @@ -0,0 +1,103 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get', 'converterArrayParaObjeto']) + ->getMock(); + } + + /** + * Testa o recebimento de recibo de trâmite com sucesso. + * + * Simula a execução do método `get` e o retorno de um objeto + * convertido a partir de um array, verificando se o resultado + * final corresponde ao esperado. + * + * @return void + */ + public function testReceberReciboDeTramiteComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'recibo' => [ + 'hashesDosComponentesDigitais' => ['hash123'], + 'outroDado' => 'valor' + ] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($resultadoMock); + + // Substituir o método estático converterArrayParaObjeto + $resultadoObjetoMock = (object)[ + 'recibo' => (object)[ + 'hashDoComponenteDigital' => 'hash123', + 'outroDado' => 'valor' + ] + ]; + + $this->mockService->expects($this->once()) + ->method('converterArrayParaObjeto') + ->willReturn($resultadoObjetoMock); + + // Chamada do método + $resultado = $this->mockService->receberReciboDeTramite(123); + + // Asserções + $this->assertIsObject($resultado); + $this->assertEquals('hash123', $resultado->recibo->hashDoComponenteDigital); + $this->assertEquals('valor', $resultado->recibo->outroDado); + } + + /** + * Testa o cenário em que ocorre um erro ao receber o recibo de trâmite. + * + * Simula uma exceção no método `get` e verifica se a exceção correta é + * lançada pelo método testado. + * + * @return void + */ + public function testReceberReciboDeTramiteComErro() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Verifica se a exceção esperada é lançada + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha no recebimento de recibo de trâmite.'); + + $this->mockService->receberReciboDeTramite(123); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRN/SolicitarMetadadosTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRN/SolicitarMetadadosTest.php new file mode 100644 index 000000000..6c915341b --- /dev/null +++ b/tests_sei41/unitario/rn/ProcessoEletronicoRN/SolicitarMetadadosTest.php @@ -0,0 +1,117 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get', 'converterArrayParaObjeto']) + ->getMock(); + } + + /** + * Testa o método solicitarMetadados para um caso de sucesso. + * + * Este teste verifica se o método retorna um objeto stdClass corretamente + * configurado quando os dados retornados pelo método get são válidos. + * + * @return void + */ + public function testSolicitarMetadadosRetornaObjetoCorreto() + { + $parNumIdentificacaoTramite = 123; + + // Simular a resposta do método get + $mockResponse = [ + 'propriedadesAdicionais' => ['algum_valor'], + 'processo' => [ + 'documentos' => [ + [ + 'componentesDigitais' => [ + [ + 'assinaturasDigitais' => [ + ['alguma_assinatura'] + ] + ] + ] + ] + ] + ] + ]; + + $mockConvertedObject = (object) [ + 'NRE' => '123456', + 'processo' => (object) [ + 'documentos' => [(object) ['algum_valor']], + 'interessados' => [(object) ['algum_interessado']] + ] + ]; + + // Configura o mock para o método get + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + // Configura o mock para o método converterArrayParaObjeto + $this->mockService->expects($this->once()) + ->method('converterArrayParaObjeto') + ->willReturn($mockConvertedObject); + + // Chama o método a ser testado + $resultado = $this->mockService->solicitarMetadados($parNumIdentificacaoTramite); + + // Verifica o retorno + $this->assertInstanceOf(stdClass::class, $resultado); + $this->assertEquals($parNumIdentificacaoTramite, $resultado->IDT); + $this->assertEquals('123456', $resultado->metadados->NRE); + } + + /** + * Testa o método solicitarMetadados para um caso de falha. + * + * Este teste verifica se uma exceção InfraException é lançada corretamente + * quando o método get falha ao buscar os dados necessários. + * + * @return void + */ + public function testSolicitarMetadadosLancaExcecao() + { + $parNumIdentificacaoTramite = 123; + + // Configura o mock para o método get para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro no web service')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na solicitação de metadados do processo'); + + // Chama o método e espera uma exceção + $this->mockService->solicitarMetadados($parNumIdentificacaoTramite); + } +} \ No newline at end of file diff --git a/tests_sei41/unitario/rn/ProcessoEletronicoRNTest.php b/tests_sei41/unitario/rn/ProcessoEletronicoRNTest.php deleted file mode 100755 index dedc8dbe7..000000000 --- a/tests_sei41/unitario/rn/ProcessoEletronicoRNTest.php +++ /dev/null @@ -1,96 +0,0 @@ -objProcessoEletronicoRN = new ProcessoEletronicoRN(); - } - - /** - * Testes do método privado reduzirCampoTexto - * - * @return void - */ - public function testReduzirCampoTexto() - { - $numTamanhoMaximo = 53; - // Teste considerando uma palavra pequena ao final do texto - $strTexto = "aaaaaaaaa bbbbbbbbb ccccccccc ddddddddd eeeeeeeee fffffffff ggggggggg hhhhhhhhh iiiiiiiii"; - $strResultadoEsperado = "aaaaaaaaa bbbbbbbbb ccccccccc ddddddddd eeeeeeeee ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com apenas uma palavra - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com uma palavra grande ao final - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando texto longo e palavro curta ao finals - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto curto abaixo do limite - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com apenas um caracter fora do limite - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com apenas um caracter fora do limite - $strTexto = "aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa a"; - $strResultadoEsperado = "aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 150); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= 150); - - // Teste considerando um texto nulo - $strTexto = null; - $strResultadoEsperado = null; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com ultima palavra menor que a reticencias - $strTexto = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut lbore et dolore magna aliqua. Ut enim ad minim veniamr quis"; - $strResultadoEsperado = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut lbore et dolore magna aliqua. Ut enim ad minim veniam ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 150); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= 150); - - } - - public function testCompararVersoes(){ - $this->assertTrue(InfraUtil::compararVersoes("0.0.1", "<", "0.0.2")); - $this->assertTrue(InfraUtil::compararVersoes("0.1.0", "<", "0.2.0")); - $this->assertTrue(InfraUtil::compararVersoes("1.0.0", "<", "2.0.0")); - $this->assertTrue(InfraUtil::compararVersoes("4.0.3", "==", "4.0.3.0")); - $this->assertTrue(InfraUtil::compararVersoes("4.0.3", "<", "4.0.3.1")); - $this->assertTrue(InfraUtil::compararVersoes("4.0.4", ">", "4.0.3.0")); - $this->assertTrue(InfraUtil::compararVersoes("4.0.3.0", "==", "4.0.3.5", 3, true)); - } -} diff --git a/tests_super/funcional/phpunit.xml b/tests_super/funcional/phpunit.xml index 051816555..e97be2af7 100644 --- a/tests_super/funcional/phpunit.xml +++ b/tests_super/funcional/phpunit.xml @@ -1,5 +1,5 @@ - + - + value="https://homolog.api.processoeletronico.gov.br/interoperabilidade/rest/v3/" /> + - + @@ -35,17 +35,17 @@ + value="152259" /> + value="ORG1" /> + value="Unidade de Teste Glaydson ORG1" /> + value="153846" /> + value="Glaydson ORG1 Filha" /> @@ -67,7 +67,7 @@ value="Situação Econômico-Financeira de Sujeito Passivo (Art. 198, caput, da Lei nº 5.172/1966 - CTN)" /> - + @@ -77,12 +77,12 @@ + value="152260" /> + value="ORG2" /> + value="Unidade de Teste Glaydson ORG2" /> @@ -107,8 +107,8 @@ - - + + @@ -136,7 +136,7 @@ - + tests diff --git a/tests_super/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php b/tests_super/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php index ba6aafd51..b9138d7cc 100755 --- a/tests_super/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php +++ b/tests_super/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php @@ -58,7 +58,9 @@ public function test_tramitar_processo_da_origem() }else{ $id_tramite=$id_tramite[0]["ID_TRAMITE"]; } - $this->recusarTramite($this->servicoPEN, $id_tramite); + + sleep(5); + $this->recusarTramite($id_tramite); } /** @@ -90,39 +92,58 @@ public function test_verificar_destino_processo_para_devolucao() } - private function recusarTramite($servicoPEN, $id_tramite) + private function recusarTramite($id_tramite) { $justificativa = "An exception occurred while executing 'INSERT INTO juntadas (numeracao_sequencial, movimento, ativo, vinculada, criado_em, atualizado_em, id, uuid, documentos_juntado_id, volumes_id, atividades_id, tarefas_id, comunicacoes_id, origem_dados_id, criado_por, atualizado_por) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [1, 'DOCUMENTO RECEBIDO VIA INTEGRA\u00c7\u00c3O COM O BARRAMENTO', 1, 0, '2021-12-02 14:21:48', '2021-12-02 14:21:48', 1317074776, '06ba31e8-75ad-4111-82dc-6f451f51825e', 1333864526, null, null, null, null, 3534979787, null, null]: ORA-00001: restrição exclusiva (SAPIENS.UNIQ_867686DHDKJ97876) violada"; $parametros = new stdClass(); $parametros->recusaDeTramite = new stdClass(); $parametros->recusaDeTramite->IDT = $id_tramite; - $parametros->recusaDeTramite->justificativa = mb_convert_encoding($justificativa, 'UTF-8', 'ISO-8859-1'); + $parametros->recusaDeTramite->justificativa = utf8_encode($justificativa); $parametros->recusaDeTramite->motivo = "99"; - return $servicoPEN->recusarTramite($parametros); + + return $this->recusarTramiteAPI($parametros); + } + + + private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + { + // TODO: lembrar de pegar url dinamicamente quando SOAP for removido + $strBaseUri = PEN_ENDERECO_WEBSERVICE; + $arrheaders = [ + 'Accept' => '*/*', + 'Content-Type' => 'application/json', + ]; + + $strClientGuzzle = new GuzzleHttp\Client([ + 'base_uri' => $strBaseUri, + 'timeout' => 5.0, + 'headers' => $arrheaders, + 'cert' => [$localCertificado, $senhaCertificado], + ]); + + return $strClientGuzzle; } - private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + public function recusarTramiteAPI($parametros) { - $connectionTimeout = 600; - $options = array( - 'soap_version' => SOAP_1_1 - , 'local_cert' => $localCertificado - , 'passphrase' => $senhaCertificado - , 'resolve_wsdl_remote_includes' => true - , 'cache_wsdl'=> BeSimple\SoapCommon\Cache::TYPE_NONE - , 'connection_timeout' => $connectionTimeout - , CURLOPT_TIMEOUT => $connectionTimeout - , CURLOPT_CONNECTTIMEOUT => $connectionTimeout - , 'encoding' => 'UTF-8' - , 'attachment_type' => BeSimple\SoapCommon\Helper::ATTACHMENTS_TYPE_MTOM - , 'ssl' => array( - 'allow_self_signed' => true, - ), - ); - - return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); + $idt = $parametros->recusaDeTramite->IDT; + $justificativa = $parametros->recusaDeTramite->justificativa; + $motivo = $parametros->recusaDeTramite->motivo; + + $endpoint = "tramites/{$idt}/recusa"; + + $objProcessoEletronicoRN = new ProcessoEletronicoRN(); + $parametros = [ + 'justificativa' => mb_convert_encoding($objProcessoEletronicoRN->reduzirCampoTexto($justificativa, 1000), 'UTF-8', 'ISO-8859-1'), + 'motivo' => $motivo + ]; + + $response = $this->servicoPEN->request('POST', $endpoint, [ + 'json' => $parametros + ]); + return $response; } } diff --git a/tests_super/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php b/tests_super/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php index 99d2c2473..37b1ee11b 100755 --- a/tests_super/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php +++ b/tests_super/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php @@ -16,6 +16,7 @@ class TramiteRecebimentoDocumentoAvulsoTest extends FixtureCenarioBaseTestCase const CONTEUDO_DOCUMENTO_C = "arquivo_pequeno_C.pdf"; protected $servicoPEN; + protected $servicoPEN2; public static $remetente; public static $destinatario; public static $processoTeste; @@ -39,12 +40,7 @@ public function setUp(): void // Carregar contexto de testes e dados sobre certificado digital self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_B); self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - putenv("DATABASE_HOST=org2-database"); - - // Instanciar objeto de teste utilizando o BeSimpleSoap - $localCertificado = self::$remetente['LOCALIZACAO_CERTIFICADO_DIGITAL']; - $senhaCertificado = self::$remetente['SENHA_CERTIFICADO_DIGITAL']; - $this->servicoPEN = $this->instanciarApiDeIntegracao($localCertificado, $senhaCertificado); + } /** @@ -52,16 +48,21 @@ public function setUp(): void * * @return void */ - public function test_recebimento_documento_avulso() + public function test_recebimento_metadados_documento_avulso() { + + $localCertificado = self::$remetente['LOCALIZACAO_CERTIFICADO_DIGITAL']; + $senhaCertificado = self::$remetente['SENHA_CERTIFICADO_DIGITAL']; + + $this->servicoPEN = $this->instanciarApiDeIntegracao($localCertificado, $senhaCertificado); + // Simular um trâmite chamando a API do Barramento diretamente self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente, array(self::CONTEUDO_DOCUMENTO_A)); $metadadosDocumentoTeste = $this->construirMetadadosDocumentoTeste(self::$documentoTeste1); - $novoTramite = $this->enviarMetadadosDocumento($this->servicoPEN, self::$remetente, self::$destinatario, $metadadosDocumentoTeste); - $this->enviarComponentesDigitaisDoTramite($this->servicoPEN, $novoTramite, $metadadosDocumentoTeste); - $reciboTramite = $this->receberReciboEnvio($this->servicoPEN, $novoTramite); - + $novoTramite = $this->enviarMetadadosDocumento(self::$remetente, self::$destinatario, $metadadosDocumentoTeste); + $this->enviarComponentesDigitaisDoTramite($novoTramite, $metadadosDocumentoTeste); + $reciboTramite = $this->receberReciboEnvio($novoTramite); //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); @@ -75,7 +76,6 @@ public function test_recebimento_documento_avulso() * @group envio * @large * - * @depends test_recebimento_documento_avulso * * @return void */ @@ -149,76 +149,51 @@ public function test_verificar_recebimento_processo_destino_documento_avulso() $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, $documentos, self::$destinatario); } - private function receberReciboEnvio($servicoPEN, $novoTramite) - { - $dadosTramite = $novoTramite->dadosTramiteDeDocumentoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->tramite->IDT; - return $servicoPEN->receberReciboDeEnvio($parametros); - } - private function enviarMetadadosDocumento($servicoPEN, $remetente, $destinatario, $documentoTeste) + private function receberReciboEnvio($novoTramite) { - $parametros = new stdClass(); - $parametros->novoTramiteDeDocumento = new stdClass(); - $parametros->novoTramiteDeDocumento->cabecalho = $this->construirCabecalhoTeste($remetente, $destinatario); - $parametros->novoTramiteDeDocumento->documento = $documentoTeste; - return $servicoPEN->enviarDocumento($parametros); + $dadosTramite = $novoTramite['tramites']; + $idt = $dadosTramite[0]['IDT']; + return $this->receberReciboDeEnvioAPI($idt); } - private function enviarComponentesDigitaisDoTramite($servicoPEN, $novoTramite, $documentoTeste) + private function enviarMetadadosDocumento($remetente, $destinatario, $documentoTeste) { - $dadosTramite = $novoTramite->dadosTramiteDeDocumentoCriado; - foreach ($documentoTeste['componenteDigital'] as $item) { - $dadosDoComponenteDigital = new stdClass(); - $dadosDoComponenteDigital->protocolo = $documentoTeste['protocolo']; - $dadosDoComponenteDigital->hashDoComponenteDigital = $item['valorHash']; - $dadosDoComponenteDigital->conteudoDoComponenteDigital = new SoapVar($item['conteudo'], XSD_BASE64BINARY); - $dadosDoComponenteDigital->ticketParaEnvioDeComponentesDigitais = $dadosTramite->ticketParaEnvioDeComponentesDigitais; - - $parametros = new stdClass(); - $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; - $servicoPEN->enviarComponenteDigital($parametros); - } + $parametros = []; + $parametros['cabecalho'] = $this->construirCabecalhoTeste($remetente, $destinatario); + $parametros['documento'] = $documentoTeste['documentoEnvio']; + + return $this->enviarDocumentoAPI($parametros); } - private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + private function enviarComponentesDigitaisDoTramite($novoTramite, $documentoTeste) { - $connectionTimeout = 600; - $options = array( - 'soap_version' => SOAP_1_1 - , 'local_cert' => $localCertificado - , 'passphrase' => $senhaCertificado - , 'resolve_wsdl_remote_includes' => true - , 'cache_wsdl'=> BeSimple\SoapCommon\Cache::TYPE_NONE - , 'connection_timeout' => $connectionTimeout - , CURLOPT_TIMEOUT => $connectionTimeout - , CURLOPT_CONNECTTIMEOUT => $connectionTimeout - , 'encoding' => 'UTF-8' - , 'attachment_type' => BeSimple\SoapCommon\Helper::ATTACHMENTS_TYPE_MTOM - , 'ssl' => array( - 'allow_self_signed' => true, - ), - ); - - return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); - + $parametros = []; + $dadosDoComponenteDigital['protocolo'] = $documentoTeste['documentoEnvio']['protocolo']; + $dadosDoComponenteDigital['hashDoComponenteDigital'] = $documentoTeste['componenteEnvio']['hashDocumento']; + $dadosDoComponenteDigital['conteudoDoComponenteDigital'] = $documentoTeste['componenteEnvio']['conteudo']; + $dadosDoComponenteDigital['ticketParaEnvioDeComponentesDigitais'] = $novoTramite['ticketParaEnvioDeComponentesDigitais']; + + $parametros['dadosDoComponenteDigital'] = $dadosDoComponenteDigital; + + $this->enviarComponenteDigitalAPI($parametros); } private function construirCabecalhoTeste($remetente, $destinatario) { - $cabecalho = new stdClass(); - $cabecalho->remetente = new stdClass(); - $cabecalho->remetente->identificacaoDoRepositorioDeEstruturas = $remetente['ID_REP_ESTRUTURAS']; - $cabecalho->remetente->numeroDeIdentificacaoDaEstrutura = $remetente['ID_ESTRUTURA']; - - $cabecalho->destinatario = new stdClass(); - $cabecalho->destinatario->identificacaoDoRepositorioDeEstruturas = $destinatario['ID_REP_ESTRUTURAS']; - $cabecalho->destinatario->numeroDeIdentificacaoDaEstrutura =$destinatario['ID_ESTRUTURA']; - - $cabecalho->urgente = false; - $cabecalho->motivoDaUrgencia = null; - $cabecalho->obrigarEnvioDeTodosOsComponentesDigitais = false; + $cabecalho = [ + 'remetente' => [ + 'identificacaoDoRepositorioDeEstruturas' => $remetente['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $remetente['ID_ESTRUTURA'], + ], + 'destinatarios' => [ + [ + 'identificacaoDoRepositorioDeEstruturas' => $destinatario['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $destinatario['ID_ESTRUTURA'], + ], + ] + ]; + return $cabecalho; } @@ -247,42 +222,145 @@ private function construirMetadadosDocumentoTeste($documentoTeste) $nomeArquivo = basename($caminhoArquivo); $componentes[] = array( 'nome' => $nomeArquivo, - 'hash' => new SoapVar("$hashDocumento", XSD_ANYXML), + 'hash' => [ + 'algoritmo' => 'SHA256', + 'conteudo' => $hashDocumento + ], 'tipoDeConteudo' => 'txt', - 'mimeType' => 'text/plain', + "mimeType" => "application/pdf", 'tamanhoEmBytes' => $tamanhoDocumento, 'ordem' => $ordem + 1, - - // Chaves abaixo adicionadas apenas para simplificação dos testes - 'valorHash' => $hashDocumento, - 'conteudo' => $conteudo, ); } finally { fclose($fp); } } - return array( - 'protocolo' => '13990.000181/2020-00', + $documentoEnvio = array( + 'protocolo' => '13990.000185/2024-00', 'nivelDeSigilo' => 1, 'descricao' => $documentoTeste['DESCRICAO'], 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', - 'produtor' => array( - 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), + "nome" => "Nome ABC", + "tipo" => "orgaopublico" ), - 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') + 'nomeNoProdutor' => 'Despacho', ), - - 'interessado' => array( - 'nome' => $documentoTeste['INTERESSADOS'], + 'interessados' => array( + [ + "nome" => $documentoTeste['INTERESSADOS'], + "tipo" => "fisica" + ] ), - 'componenteDigital' => $componentes, + 'componentesDigitais' => $componentes, + ); + + $componenteEnvio = array( + 'hashDocumento' => $hashDocumento, + 'conteudo' => $conteudo + ); + + return array( + 'documentoEnvio' => $documentoEnvio, + 'componenteEnvio' => $componenteEnvio ); } + + public function enviarDocumentoAPI($parametros) + { + try { + $endpoint = "tramites/documento"; + + $response = $this->servicoPEN->request('POST', $endpoint, [ + 'json' => $parametros + ]); + + return json_decode($response->getBody(), true); + + } catch (\Exception $e) { + $mensagem = "Falha no envio de documento avulso"; + } + } + + + public function enviarComponenteDigitalAPI($parametros) + { + try { + + $arrParametros = $parametros['dadosDoComponenteDigital']; + $idTicketDeEnvio = $arrParametros['ticketParaEnvioDeComponentesDigitais']; + + $protocolo = $arrParametros['protocolo']; + $hashDoComponenteDigital = $arrParametros['hashDoComponenteDigital']; + $conteudo = $arrParametros['conteudoDoComponenteDigital']; + + $queryParams = [ + 'hashDoComponenteDigital' => $hashDoComponenteDigital, + 'protocolo' => $protocolo + ]; + + $endpoint = "tickets-de-envio-de-componente/{$idTicketDeEnvio}/protocolos/componentes-a-enviar"; + + $arrOptions = [ + 'query' => $queryParams, + 'multipart' => [ + [ + 'name' => 'conteudo', + 'contents' => $conteudo, + 'filename' => 'conteudo.html', + 'headers' => ['Content-Type' => 'text/html'] + ], + ], + ]; + + $response = $this->servicoPEN->request('PUT', $endpoint, $arrOptions); + + return $response; + + } catch (\Exception $e) { + $mensagem = "Falha no envio de de componentes no documento"; + } + } + + + public function receberReciboDeEnvioAPI($parNumIdTramite) + { + $endpoint = "tramites/{$parNumIdTramite}/recibo-de-envio"; + try{ + $parametros = [ + 'IDT' => $parNumIdTramite + ]; + + $response = $this->servicoPEN->request('GET', $endpoint, [ + 'query' => $parametros + ]); + + return json_decode($response->getBody(), true); + } catch (\Exception $e) { + $mensagem = "Falha no recebimento de recibo de trâmite de envio."; + } + } + + private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + { + $arrheaders = [ + 'Accept' => '*/*', + 'Content-Type' => 'application/json', + ]; + + $strClientGuzzle = new GuzzleHttp\Client([ + 'base_uri' => PEN_ENDERECO_WEBSERVICE, + 'handler' => GuzzleHttp\HandlerStack::create(), + 'timeout' => 5.0, + 'headers' => $arrheaders, + 'cert' => [$localCertificado, $senhaCertificado], + ]); + + return $strClientGuzzle; + } } diff --git a/tests_super/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php b/tests_super/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php index 768308bb9..b612f426f 100755 --- a/tests_super/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php +++ b/tests_super/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php @@ -19,6 +19,8 @@ class TramiteRecebimentoInteressadosDuplicadosTest extends FixtureCenarioBaseTes public static $servicoPEN; public static $documentoTeste1; + public static $conteudoCompoonenteDigital; + /** * Teste de envio de metadados do processo contendo interessados duplicados * @@ -50,9 +52,9 @@ public function test_envio_processo_com_documento_anexado() // Inicia o envio do processo $arrDocumentosPrimeiroEnvio = array(self::$documentoTeste1); $processoTeste = $this->construirMetadadosProcessoTeste(self::$processoTeste, $arrDocumentosPrimeiroEnvio); - $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, self::$remetente, self::$destinatario, $processoTeste); - $this->enviarComponentesDigitaisDoTramite(self::$servicoPEN, $novoTramite, $processoTeste); - $reciboTramite = $this->receberReciboEnvio(self::$servicoPEN, $novoTramite); + $novoTramite = $this->enviarMetadadosProcesso(self::$remetente, self::$destinatario, $processoTeste); + $this->enviarComponentesDigitaisDoTramite($novoTramite, $processoTeste); + $reciboTramite = $this->receberReciboEnvio($novoTramite); //Verifica recebimento de novo processo administrativo contendo documento avulso enviado @@ -65,86 +67,71 @@ public function test_envio_processo_com_documento_anexado() } - private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) { - $connectionTimeout = 600; - $options = array( - 'soap_version' => SOAP_1_1 - , 'local_cert' => $localCertificado - , 'passphrase' => $senhaCertificado - , 'resolve_wsdl_remote_includes' => true - , 'connection_timeout' => $connectionTimeout - , CURLOPT_TIMEOUT => $connectionTimeout - , CURLOPT_CONNECTTIMEOUT => $connectionTimeout - , 'encoding' => 'UTF-8' - , 'attachment_type' => BeSimple\SoapCommon\Helper::ATTACHMENTS_TYPE_MTOM - , 'ssl' => array( - 'allow_self_signed' => true, - ), - ); - - return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); + $arrheaders = [ + 'Accept' => '*/*', + 'Content-Type' => 'application/json', + ]; + + $strClientGuzzle = new GuzzleHttp\Client([ + 'base_uri' => PEN_ENDERECO_WEBSERVICE, + 'handler' => GuzzleHttp\HandlerStack::create(), + 'timeout' => 5.0, + 'headers' => $arrheaders, + 'cert' => [$localCertificado, $senhaCertificado], + ]); + + return $strClientGuzzle; } - private function enviarMetadadosProcesso($servicoPEN, $remetente, $destinatario, $processoTeste) + private function enviarMetadadosProcesso($remetente, $destinatario, $processoTeste) { - $parametros = new stdClass(); - $parametros->novoTramiteDeProcesso = new stdClass(); - $parametros->novoTramiteDeProcesso->cabecalho = $this->construirCabecalhoTeste($remetente, $destinatario); - $parametros->novoTramiteDeProcesso->processo = $processoTeste; - return $servicoPEN->enviarProcesso($parametros); + $parametros = []; + $parametros['cabecalho'] = $this->construirCabecalhoTeste($remetente, $destinatario); + $parametros['processo'] = $processoTeste; + + return $this->enviarProcessoAPI($parametros); } - private function enviarComponentesDigitaisDoTramite($servicoPEN, $novoTramite, $processoTeste) + private function enviarComponentesDigitaisDoTramite($novoTramite, $processoTeste) { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - foreach ($processoTeste['documento'] as $documentoTeste) { - foreach ($documentoTeste['componenteDigital'] as $item) { - $dadosDoComponenteDigital = new stdClass(); - $dadosDoComponenteDigital->protocolo = $processoTeste['protocolo']; - $dadosDoComponenteDigital->hashDoComponenteDigital = $item['valorHash']; - $dadosDoComponenteDigital->conteudoDoComponenteDigital = new SoapVar($item['conteudo'], XSD_BASE64BINARY); - $dadosDoComponenteDigital->ticketParaEnvioDeComponentesDigitais = $dadosTramite->ticketParaEnvioDeComponentesDigitais; - - $parametros = new stdClass(); - $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; - $servicoPEN->enviarComponenteDigital($parametros); + foreach ($processoTeste['documentos'] as $documentoTeste) { + foreach ($documentoTeste['componentesDigitais'] as $item) { + $dadosDoComponenteDigital = []; + $dadosDoComponenteDigital['protocolo'] = $processoTeste['protocolo']; + $dadosDoComponenteDigital['hashDoComponenteDigital'] = $item['hash']['conteudo']; + $dadosDoComponenteDigital['ticketParaEnvioDeComponentesDigitais'] = $novoTramite['ticketParaEnvioDeComponentesDigitais']; + + $parametros['dadosDoComponenteDigital'] = $dadosDoComponenteDigital; + $this->enviarComponenteDigitalAPI($parametros); } } - } - private function receberReciboEnvio($servicoPEN, $novoTramite) - { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->IDT; - return $servicoPEN->receberReciboDeEnvio($parametros); } - private function receberReciboTramite($servicoPEN, $novoTramite) + private function receberReciboEnvio($novoTramite) { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->IDT; - return $servicoPEN->receberReciboDeTramite($parametros); + $idt = $novoTramite['IDT']; + return $this->receberReciboDeEnvioAPI($idt); } private function construirCabecalhoTeste($remetente, $destinatario) { - $cabecalho = new stdClass(); - $cabecalho->remetente = new stdClass(); - $cabecalho->remetente->identificacaoDoRepositorioDeEstruturas = $remetente['ID_REP_ESTRUTURAS']; - $cabecalho->remetente->numeroDeIdentificacaoDaEstrutura = $remetente['ID_ESTRUTURA']; - - $cabecalho->destinatario = new stdClass(); - $cabecalho->destinatario->identificacaoDoRepositorioDeEstruturas = $destinatario['ID_REP_ESTRUTURAS']; - $cabecalho->destinatario->numeroDeIdentificacaoDaEstrutura =$destinatario['ID_ESTRUTURA']; - - $cabecalho->urgente = false; - $cabecalho->motivoDaUrgencia = null; - $cabecalho->obrigarEnvioDeTodosOsComponentesDigitais = false; + $cabecalho = [ + 'remetente' => [ + 'identificacaoDoRepositorioDeEstruturas' => $remetente['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $remetente['ID_ESTRUTURA'], + ], + 'destinatario' => [ + 'identificacaoDoRepositorioDeEstruturas' => $destinatario['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $destinatario['ID_ESTRUTURA'], + ], + 'enviarApenasComponentesDigitaisPendentes' => false + ]; + return $cabecalho; } @@ -169,7 +156,8 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest { $metadadosDocumentos = array(); foreach ($documentosTeste as $indice => $documentoTeste) { - $metadadosDocumentos[] = $this->construirMetadadosDocumentoTeste($documentoTeste, $indice + 1); + $documentos = $this->construirMetadadosDocumentoTeste($documentoTeste, $indice + 1); + $metadadosDocumentos[] = $documentos['documentoDoProcesso']; } $arrInteressados = array_map(function($item) { @@ -186,9 +174,10 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), + 'tipo' => "orgaopublico", ), - 'interessado' => $arrInteressados, - 'documento' => $metadadosDocumentos, + 'interessados' => $arrInteressados, + 'documentos' => $metadadosDocumentos, ); } @@ -207,16 +196,17 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen $nomeArquivo = basename($caminhoArquivo); $componentes[] = array( 'nome' => $nomeArquivo, - 'hash' => new SoapVar("$hashDocumento", XSD_ANYXML), + 'hash' => [ + 'algoritmo' => 'SHA256', + 'conteudo' => $hashDocumento + ], 'tipoDeConteudo' => 'txt', - 'mimeType' => 'text/plain', + 'mimeType' => 'application/pdf', 'tamanhoEmBytes' => $tamanhoDocumento, 'ordem' => $ordemComponente, - - // Chaves abaixo adicionadas apenas para simplificação dos testes - 'valorHash' => $hashDocumento, - 'conteudo' => $conteudo, ); + + self::$conteudoCompoonenteDigital = [$hashDocumento => $conteudo]; } finally { fclose($fp); } @@ -229,10 +219,9 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'ordem' => $ordemDocumento, - 'produtor' => array( 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), - 'numeroDeIdentificacao' => '999999', + "tipo" => "orgaopublico" ), 'especie' => array( @@ -240,17 +229,102 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), - 'interessado' => array( - 'nome' => $documentoTeste['INTERESSADOS'], + 'interessados' => array( + [ + "nome" => $documentoTeste['INTERESSADOS'], + "tipo" => "fisica" + ] ), - 'componenteDigital' => $componentes, + 'componentesDigitais' => $componentes, + ); + + $componenteEnvio = array( + 'hashDocumento' => $hashDocumento, + 'conteudo' => $conteudo ); if(!is_null($documentoTeste['ORDEM_DOCUMENTO_REFERENCIADO'])){ $documentoDoProcesso['ordemDoDocumentoReferenciado'] = intval($documentoTeste['ORDEM_DOCUMENTO_REFERENCIADO']); } - return $documentoDoProcesso; + return array( + 'documentoDoProcesso' => $documentoDoProcesso, + 'componenteEnvio' => $componenteEnvio + ); + } + + public function enviarProcessoAPI($parametros) + { + try { + $endpoint = "tramites/processo"; + + $response = self::$servicoPEN->request('POST', $endpoint, [ + 'json' => $parametros + ]); + + return json_decode($response->getBody(), true); + + } catch (\Exception $e) { + $mensagem = "Falha no envio de processo"; + } + } + + public function enviarComponenteDigitalAPI($parametros) + { + try { + + $arrParametros = $parametros['dadosDoComponenteDigital']; + $idTicketDeEnvio = $arrParametros['ticketParaEnvioDeComponentesDigitais']; + + $protocolo = $arrParametros['protocolo']; + $hashDoComponenteDigital = $arrParametros['hashDoComponenteDigital']; + + $conteudoComponenteDigital = self::$conteudoCompoonenteDigital[$hashDoComponenteDigital]; + + $queryParams = [ + 'hashDoComponenteDigital' => $hashDoComponenteDigital, + 'protocolo' => $protocolo + ]; + + $endpoint = "tickets-de-envio-de-componente/{$idTicketDeEnvio}/protocolos/componentes-a-enviar"; + + $arrOptions = [ + 'query' => $queryParams, + 'multipart' => [ + [ + 'name' => 'conteudo', + 'contents' => $conteudoComponenteDigital, + 'filename' => 'conteudo.html', + 'headers' => ['Content-Type' => 'text/html'] + ], + ], + ]; + + $response = self::$servicoPEN->request('PUT', $endpoint, $arrOptions); + + return $response; + + } catch (\Exception $e) { + $mensagem = "Falha no envio de de componentes no documento"; + } + } + + public function receberReciboDeEnvioAPI($parNumIdTramite) + { + $endpoint = "tramites/{$parNumIdTramite}/recibo-de-envio"; + try{ + $parametros = [ + 'IDT' => $parNumIdTramite + ]; + + $response = self::$servicoPEN->request('GET', $endpoint, [ + 'query' => $parametros + ]); + + return json_decode($response->getBody(), true); + } catch (\Exception $e) { + $mensagem = "Falha no recebimento de recibo de trâmite de envio."; + } } } diff --git a/tests_super/unitario/bootstrap.php b/tests_super/unitario/bootstrap.php index 69fdb7ba6..383369434 100755 --- a/tests_super/unitario/bootstrap.php +++ b/tests_super/unitario/bootstrap.php @@ -1,9 +1,5 @@ + + + /opt/sei/web/modulos/pen/vendor + /opt/sei/web/modulos/pen/config + + + /opt/sei/web/modulos/pen + + diff --git a/tests_super/unitario/rn/CompararVersoesTest.php b/tests_super/unitario/rn/CompararVersoesTest.php new file mode 100644 index 000000000..949f944c3 --- /dev/null +++ b/tests_super/unitario/rn/CompararVersoesTest.php @@ -0,0 +1,17 @@ +assertTrue(InfraUtil::compararVersoes("0.0.1", "<", "0.0.2")); + $this->assertTrue(InfraUtil::compararVersoes("0.1.0", "<", "0.2.0")); + $this->assertTrue(InfraUtil::compararVersoes("1.0.0", "<", "2.0.0")); + $this->assertTrue(InfraUtil::compararVersoes("4.0.3", "==", "4.0.3.0")); + $this->assertTrue(InfraUtil::compararVersoes("4.0.3", "<", "4.0.3.1")); + $this->assertTrue(InfraUtil::compararVersoes("4.0.4", ">", "4.0.3.0")); + $this->assertTrue(InfraUtil::compararVersoes("4.0.3.0", "==", "4.0.3.5", 3, true)); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/BuscarEstruturaTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/BuscarEstruturaTest.php new file mode 100644 index 000000000..715e414cb --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/BuscarEstruturaTest.php @@ -0,0 +1,140 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get', 'buscarEstruturaRest']) + ->getMock(); + } + + /** + * Testa o comportamento do método buscarEstrutura em caso de sucesso. + * + * Simula uma resposta válida para o método `buscarEstruturaRest` e verifica + * se o retorno do método testado é uma instância válida da classe EstruturaDTO. + * + * @return void + */ + public function testBuscarEstruturaSucesso() + { + // Mock do retorno esperado da API + $estruturaMock = [ + 'numeroDeIdentificacaoDaEstrutura' => '12345', + 'nome' => 'Estrutura Teste', + 'sigla' => 'ET', + 'ativo' => true, + 'aptoParaReceber' => true, + 'codigoNoOrgaoEntidade' => 'CNOE123', + 'hierarquia' => [ + ['sigla' => 'Nivel1'], + ['sigla' => 'Nivel2'] + ] + ]; + + // Mock do método buscarEstruturaRest + $this->mockService->expects($this->once()) + ->method('buscarEstruturaRest') + ->with(1, 'Estrutura Raiz') + ->willReturn($estruturaMock); + + // Chamada do método + $resultado = $this->mockService->buscarEstrutura( + 1, // idRepositorioEstrutura + 'Estrutura Raiz' // Nome ou identificador raiz + ); + + $this->assertInstanceOf(EstruturaDTO::class, $resultado, 'O retorno deve ser uma instância da classe EstruturaDTO.'); + } + + /** + * Testa o comportamento do método buscarEstrutura com um repositório inválido. + * + * Verifica se o método lança a exceção correta ao receber um ID de repositório inválido. + * + * @return void + */ + public function testBuscarEstruturaComRepositorioInvalido() + { + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->buscarEstrutura(0); // Passando um ID inválido + } + + /** + * Testa o comportamento do método buscarEstrutura quando a estrutura não é encontrada. + * + * Simula o retorno `null` do método `buscarEstruturaRest` e verifica se o + * método principal retorna `null` como esperado. + * + * @return void + */ + public function testBuscarEstruturaNaoEncontrada() + { + // Mock para retorno nulo da API + $this->mockService->expects($this->once()) + ->method('buscarEstruturaRest') + ->with(1, 'Estrutura Raiz') + ->willReturn(null); + + // Chamada do método + $resultado = $this->mockService->buscarEstrutura( + 1, // idRepositorioEstrutura + 'Estrutura Raiz' // Nome ou identificador raiz + ); + + // Asserção de retorno nulo + $this->assertNull($resultado); + } + + /** + * Testa o comportamento do método buscarEstrutura quando ocorre uma exceção. + * + * Simula uma exceção no método `get` e verifica se a exceção correta é lançada + * pelo método testado. + * + * @return void + */ + public function testBuscarEstruturaLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception()); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstrutura(159098, 152254, false); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/BuscarEstruturasPorEstruturaPaiTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/BuscarEstruturasPorEstruturaPaiTest.php new file mode 100644 index 000000000..6d72134e3 --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/BuscarEstruturasPorEstruturaPaiTest.php @@ -0,0 +1,136 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas', 'tentarNovamenteSobErroHTTP']) + ->getMock(); + } + + /** + * Testa o método `buscarEstruturasPorEstruturaPai` com parâmetros de identificação. + * + * Verifica se o método: + * - Retorna um array. + * - Retorna o número correto de estruturas. + * - As estruturas têm os valores esperados. + */ + public function testBuscarEstruturasPorEstruturaPaiComIdentificacao() + { + // Configuração do mock + $resultadoMock = new stdClass(); + $resultadoMock->estruturasEncontradasNoFiltroPorEstruturaPai = new stdClass(); + $resultadoMock->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura = [ + (object) ['id' => 1, 'nome' => 'Estrutura 1'], + (object) ['id' => 2, 'nome' => 'Estrutura 2'] + ]; + + $this->mockService->expects($this->once()) + ->method('tentarNovamenteSobErroHTTP') + ->willReturnCallback(function ($callback) use ($resultadoMock) { + $mockObjPenWs = $this->getMockBuilder(stdClass::class) + ->addMethods(['consultarEstruturasPorEstruturaPai']) + ->getMock(); + $mockObjPenWs->method('consultarEstruturasPorEstruturaPai') + ->willReturn($resultadoMock); + + return $callback($mockObjPenWs); + }); + + // Reflexão para acessar o método privado + $reflexao = new ReflectionClass($this->mockService); + $metodoPrivado = $reflexao->getMethod('buscarEstruturasPorEstruturaPai'); + $metodoPrivado->setAccessible(true); + + // Teste + $idRepositorioEstrutura = 123; + $numeroDeIdentificacaoDaEstrutura = 'ABC123'; + + $resultado = $metodoPrivado->invokeArgs( + $this->mockService, + [$idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura] + ); + + // Validações + $this->assertIsArray($resultado, 'Deve retornar um array'); + $this->assertCount(2, $resultado, 'Deve retornar duas estruturas'); + $this->assertEquals('Estrutura 1', $resultado[0]->nome, 'Deve retornar a estrutura 1'); + $this->assertEquals('Estrutura 2', $resultado[1]->nome, 'Deve retornar a estrutura 2'); + } + + /** + * Testa o método `buscarEstruturasPorEstruturaPai` sem parâmetros de identificação. + * + * Verifica se o método: + * - Retorna um array. + * - Retorna uma estrutura única com os valores esperados. + */ + public function testBuscarEstruturasPorEstruturaPaiSemIdentificacao() + { + // Configuração do mock + $resultadoMock = new stdClass(); + $resultadoMock->estruturasEncontradasNoFiltroPorEstruturaPai = new stdClass(); + $resultadoMock->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura = (object) ['id' => 1, 'nome' => 'Estrutura Única']; + + $this->mockService->expects($this->once()) + ->method('tentarNovamenteSobErroHTTP') + ->willReturnCallback(function ($callback) use ($resultadoMock) { + $mockObjPenWs = $this->getMockBuilder(stdClass::class) + ->addMethods(['consultarEstruturasPorEstruturaPai']) + ->getMock(); + $mockObjPenWs->method('consultarEstruturasPorEstruturaPai') + ->willReturn($resultadoMock); + + return $callback($mockObjPenWs); + }); + + // Reflexão para acessar o método privado + $reflexao = new ReflectionClass($this->mockService); + $metodoPrivado = $reflexao->getMethod('buscarEstruturasPorEstruturaPai'); + $metodoPrivado->setAccessible(true); + + // Teste + $idRepositorioEstrutura = 123; + + $resultado = $metodoPrivado->invokeArgs($this->mockService, [$idRepositorioEstrutura]); + + // Validações + $this->assertIsArray($resultado); + $this->assertCount(1, $resultado); + $this->assertEquals('Estrutura Única', $resultado[0]->nome); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/CancelarTramiteTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/CancelarTramiteTest.php new file mode 100644 index 000000000..4c85d7dfd --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/CancelarTramiteTest.php @@ -0,0 +1,87 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['delete']) + ->getMock(); + } + + /** + * Teste do método cancelarTramite em caso de sucesso. + * + * Este teste simula a execução do método cancelarTramite quando o método 'delete' do mock + * retorna uma resposta bem-sucedida (null). O teste verifica se o retorno do método é + * o esperado (null), indicando que o trâmite foi cancelado com sucesso. + * + * @return void + */ + public function testCancelarTramiteSucesso() + { + $mockResponse = null; + + // Configura o mock para retornar a resposta esperada (null) + $this->mockService->expects($this->once()) + ->method('delete') + ->willReturn($mockResponse); + + // Executa o método cancelarTramite + $resultado = $this->mockService->cancelarTramite(999); + + // Verifica se o retorno é nulo (indicando sucesso no cancelamento) + $this->assertNull($mockResponse, "O objeto é nulo"); + } + + /** + * Teste do método cancelarTramite quando ocorre uma exceção. + * + * Este teste simula a falha no método cancelarTramite, quando o método 'delete' do mock + * lança uma exceção. O teste verifica se a exceção esperada (InfraException) é lançada e + * se a mensagem associada à exceção está correta. + * + * @return void + * @throws \InfraException Quando ocorre uma falha no cancelamento do trâmite + */ + public function testCancelarTramiteLancaExcecao() + { + // Configura o mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('delete') + ->willThrowException(new Exception('Erro na requisição')); + + // Espera que a exceção InfraException seja lançada com a mensagem esperada + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha no cancelamento de trâmite de processo'); + + // Executa o método cancelarTramite e verifica se a exceção é lançada + $this->mockService->cancelarTramite(999); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/CienciaRecusaTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/CienciaRecusaTest.php new file mode 100644 index 000000000..f436fbd3f --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/CienciaRecusaTest.php @@ -0,0 +1,96 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o método `cienciaRecusa` com retorno bem-sucedido. + * + * Verifica se o método: + * - Retorna um array com as chaves `status` e `mensagem`. + * - Contém os valores esperados no retorno. + */ + public function testCienciaRecusaComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'status' => 'sucesso', + 'mensagem' => 'Ciência registrada com sucesso.' + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('tramites/123/ciencia', ['IDT' => 123]) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->cienciaRecusa(123); + + // Validações + $this->assertIsArray($resultado); + $this->assertArrayHasKey('status', $resultado); + $this->assertEquals('sucesso', $resultado['status']); + $this->assertEquals('Ciência registrada com sucesso.', $resultado['mensagem']); + } + + /** + * Testa o método `cienciaRecusa` quando ocorre um erro. + * + * Verifica se o método: + * - Lança a exceção esperada (`InfraException`). + * - Contém a mensagem correta de erro. + */ + public function testCienciaRecusaComErro() + { + // Configuração do mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Expectativa de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha no registro de ciência da recusa de trâmite'); + + // Chamada do método (deve lançar exceção) + $this->mockService->cienciaRecusa(123); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEspeciesDocumentaisTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEspeciesDocumentaisTest.php new file mode 100644 index 000000000..2b22a1acc --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEspeciesDocumentaisTest.php @@ -0,0 +1,131 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o método `consultarEspeciesDocumentais` com retorno bem-sucedido. + * + * Verifica se o método: + * - Retorna um array com as espécies documentais. + * - Converte corretamente as strings para o formato esperado (`ISO-8859-1`). + */ + public function testConsultarEspeciesDocumentaisComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'especies' => [ + ['nomeNoProdutor' => 'Espécie 1'], + ['nomeNoProdutor' => 'Espécie 2'], + ] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('especies', []) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarEspeciesDocumentais(); + + // Validações + $this->assertIsArray($resultado); + $this->assertCount(2, $resultado); + $this->assertEquals( + mb_convert_encoding('Espécie 1', 'ISO-8859-1', 'UTF-8'), + $resultado[0] + ); + $this->assertEquals( + mb_convert_encoding('Espécie 2', 'ISO-8859-1', 'UTF-8'), + $resultado[1] + ); + } + + /** + * Testa o método `consultarEspeciesDocumentais` quando não há resultados. + * + * Verifica se o método: + * - Retorna um array vazio. + */ + public function testConsultarEspeciesDocumentaisSemResultados() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'especies' => [] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('especies', []) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarEspeciesDocumentais(); + + // Validações + $this->assertIsArray($resultado); + $this->assertEmpty($resultado); + } + + /** + * Testa o método `consultarEspeciesDocumentais` quando ocorre um erro. + * + * Verifica se o método: + * - Lança a exceção esperada (`InfraException`). + * - Contém a mensagem correta de erro. + */ + public function testConsultarEspeciesDocumentaisComErro() + { + // Configuração do mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Expectativa de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Não foi encontrado nenhuma espécie documental.'); + + // Chamada do método (deve lançar exceção) + $this->mockService->consultarEspeciesDocumentais(); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturaTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturaTest.php new file mode 100644 index 000000000..2152b5bb9 --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturaTest.php @@ -0,0 +1,108 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + public function testConsultarEstruturaListaSucesso() + { + $mockResponse = [ + "numeroDeIdentificacaoDaEstrutura" => "159098", + "nome" => "Mauro ORG1 Filha", + "sigla" => "Mauro ORG1 Filha", + "ativo" => true, + "unidadeReceptora" => false, + "aptoParaReceberTramites" => true, + "codigoNoOrgaoEntidade" => "", + "codigoUnidadeReceptora" => "", + "tipoDeTramitacao" => 0, + "hierarquia" => [ + [ + "numeroDeIdentificacaoDaEstrutura" => "152254", + "nome" => "Órgão de Desenvolvimento ABC (FIRST) - ORGABC", + "sigla" => "ORGABC" + ] + ] + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->consultarEstrutura(159098, 152254, false); + + $this->assertInstanceOf(EstruturaDTO::class, $resultado, 'O retorno deve ser uma instância da classe EstruturaDTO.'); + } + + public function testConsultarEstruturaListaBolRetornoRawTrueSucesso() + { + $mockResponse = [ + "numeroDeIdentificacaoDaEstrutura" => "159098", + "nome" => "Mauro ORG1 Filha", + "sigla" => "Mauro ORG1 Filha", + "ativo" => true, + "unidadeReceptora" => false, + "aptoParaReceberTramites" => true, + "codigoNoOrgaoEntidade" => "", + "codigoUnidadeReceptora" => "", + "tipoDeTramitacao" => 0, + "hierarquia" => [ + [ + "numeroDeIdentificacaoDaEstrutura" => "152254", + "nome" => "Órgão de Desenvolvimento ABC (FIRST) - ORGABC", + "sigla" => "ORGABC" + ] + ] + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->consultarEstrutura(159098, 152254, true); + + $this->assertInstanceOf(stdClass::class, $resultado, 'O retorno deve ser uma instância da classe EstruturaDTO.'); + } + + public function testConsultarEstruturaListaLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstrutura(159098, 152254, false); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php new file mode 100644 index 000000000..519b47b0f --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasPorEstruturaPaiTest.php @@ -0,0 +1,122 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas', 'validarRestricaoUnidadesCadastradas', 'buscarEstruturasPorEstruturaPai']) + ->getMock(); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai para um caso de sucesso. + * + * Verifica se a lista de estruturas é retornada e ordenada corretamente com base nos nomes. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiRetornaEstruturasOrdenadas() + { + $idRepositorioEstrutura = 1; + $mockEstruturas = [ + (object)['nome' => 'Unidade B', 'codigo' => '002'], + (object)['nome' => 'Unidade A', 'codigo' => '001'], + (object)['nome' => 'Unidade C', 'codigo' => '003'], + ]; + + $this->mockService->expects($this->once()) + ->method('validarRestricaoUnidadesCadastradas') + ->with($idRepositorioEstrutura) + ->willReturn(null); + + $this->mockService->expects($this->once()) + ->method('buscarEstruturasPorEstruturaPai') + ->with($idRepositorioEstrutura, null) + ->willReturn($mockEstruturas); + + $resultado = $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura); + + $this->assertCount(3, $resultado); + $this->assertEquals('Unidade A', $resultado[0]->nome); + $this->assertEquals('Unidade B', $resultado[1]->nome); + $this->assertEquals('Unidade C', $resultado[2]->nome); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai para uma unidade pai específica. + * + * Verifica se a busca por estrutura pai é realizada corretamente ao fornecer + * um número de identificação específico. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiComUnidadePaiEspecifica() + { + $idRepositorioEstrutura = 1; + $numeroDeIdentificacaoDaEstrutura = '001'; + $mockEstruturas = [ + (object)['nome' => 'Unidade D', 'codigo' => '004'], + ]; + + $this->mockService->expects($this->never()) + ->method('validarRestricaoUnidadesCadastradas'); + + $this->mockService->expects($this->once()) + ->method('buscarEstruturasPorEstruturaPai') + ->with($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura) + ->willReturn($mockEstruturas); + + $resultado = $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura); + + $this->assertCount(1, $resultado); + $this->assertEquals('Unidade D', $resultado[0]->nome); + } + + /** + * Testa o método consultarEstruturasPorEstruturaPai quando ocorre um erro. + * + * Verifica se uma exceção InfraException é lançada corretamente ao ocorrer + * um erro no método validarRestricaoUnidadesCadastradas. + * + * @return void + */ + public function testConsultarEstruturasPorEstruturaPaiLancaExcecaoParaErro() + { + $idRepositorioEstrutura = 1; + + $this->mockService->expects($this->once()) + ->method('validarRestricaoUnidadesCadastradas') + ->willThrowException(new Exception('Erro no serviço')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstruturasPorEstruturaPai($idRepositorioEstrutura); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasTest.php new file mode 100644 index 000000000..7acd9b36d --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarEstruturasTest.php @@ -0,0 +1,82 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + public function testConsultarEstruturaListaSucesso() + { + $mockResponse = [ + "estruturas" => [ + [ + "numeroDeIdentificacaoDaEstrutura" => "159098", + "nome" => "Mauro ORG1 Filha", + "sigla" => "Mauro ORG1 Filha", + "ativo" => true, + "unidadeReceptora" => false, + "aptoParaReceberTramites" => true, + "codigoNoOrgaoEntidade" => "", + "codigoUnidadeReceptora" => "", + "tipoDeTramitacao" => 0, + "hierarquia" => [ + [ + "numeroDeIdentificacaoDaEstrutura" => "152254", + "nome" => "Órgão de Desenvolvimento ABC (FIRST) - ORGABC", + "sigla" => "ORGABC" + ] + ] + ] + ], + "totalDeRegistros" => 1 + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->consultarEstruturas(159098, []); + + $this->assertIsArray($resultado, 'O retorno deve ser um array.'); + } + + public function testConsultarEstruturaListaLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->consultarEstruturas(159098, []); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarHipotesesLegaisTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarHipotesesLegaisTest.php new file mode 100644 index 000000000..9c13025b7 --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarHipotesesLegaisTest.php @@ -0,0 +1,111 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o sucesso da consulta de hipóteses legais. + * + * Este teste verifica se o método `consultarHipotesesLegais` retorna um array de hipoteses + * quando o método 'get' é chamado. + * + * @return void + */ + public function testConsultarHipotesesLegaisSucesso() + { + // Define o valor retornado pelo método 'get' mockado + $mockResponse = [ + 'hipoteseslegais' => [ + ] + ]; + + // Configura o mock para esperar que o método 'get' seja chamado uma vez e retorne $mockResponse + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + // Chama o método que está sendo testado + $resultado = $this->mockService->consultarHipotesesLegais(true); + + // Verifica se o resultado é nulo, conforme esperado + $this->assertIsArray($resultado); + $this->assertArrayHasKey('hipoteseslegais', $resultado); + } + + /** + * Testa o sucesso da consulta de hipóteses legais com retorno vazio. + * + * Este teste verifica se o método `consultarHipotesesLegais` retorna um array vazio + * quando o método 'get' é chamado. + * + * @return void + */ + public function testConsultarHipotesesLegaisRetornoVazioSucesso() + { + // Define o valor retornado pelo método 'get' mockado + $mockResponse = []; + + // Configura o mock para esperar que o método 'get' seja chamado uma vez e retorne $mockResponse + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + // Chama o método que está sendo testado + $resultado = $this->mockService->consultarHipotesesLegais(true); + + // Verifica se o resultado é nulo, conforme esperado + $this->assertIsArray($resultado); + $this->assertEquals(0, count($resultado)); + } + + /** + * Testa o lançamento de exceção ao tentar consultar as hipóteses legais. + * + * Este teste verifica se uma exceção é lançada corretamente quando ocorre um erro + * ao tentar realizar a consulta (simulando a exceção gerada pelo método 'get'). + * + * @return void + * @throws InfraException Se a exceção de infra-estrutura for gerada. + */ + public function testConsultarHipotesesLegaisLancaExcecao() + { + // Configura o mock para lançar uma exceção quando o método 'get' for chamado + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + // Define a expectativa de que a exceção InfraException será lançada + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de hipóteses legais'); + + // Chama o método que deve lançar a exceção + $this->mockService->consultarHipotesesLegais(true); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarMotivosUrgenciaTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarMotivosUrgenciaTest.php new file mode 100644 index 000000000..ed8532f0b --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarMotivosUrgenciaTest.php @@ -0,0 +1,126 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas', 'get']) + ->getMock(); + } + + /** + * Testa o método `consultarMotivosUrgencia` com retorno bem-sucedido. + * + * Verifica se o método: + * - Retorna um array. + * - Contém os motivos de urgência esperados. + */ + public function testConsultarMotivosUrgenciaComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'motivosUrgencia' => [ + ['descricao' => 'Motivo 1'], + ['descricao' => 'Motivo 2'], + ] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('motivosUrgencia', []) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarMotivosUrgencia(); + + // Validações + $this->assertIsArray($resultado); + $this->assertCount(2, $resultado); + $this->assertEquals('Motivo 1', $resultado[0]); + $this->assertEquals('Motivo 2', $resultado[1]); + } + + /** + * Testa o método `consultarMotivosUrgencia` quando não há resultados. + * + * Verifica se o método: + * - Retorna um array vazio. + */ + public function testConsultarMotivosUrgenciaSemResultados() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'motivosUrgencia' => [] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('motivosUrgencia', []) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarMotivosUrgencia(); + + // Validações + $this->assertIsArray($resultado); + $this->assertEmpty($resultado); + } + + /** + * Testa o método `consultarMotivosUrgencia` quando ocorre um erro. + * + * Verifica se o método: + * - Lança a exceção esperada (`InfraException`). + * - Contém a mensagem correta de erro. + */ + public function testConsultarMotivosUrgenciaComErro() + { + // Configuração do mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Expectativa de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + // Chamada do método (deve lançar exceção) + $this->mockService->consultarMotivosUrgencia(); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarRepositoriosDeEstruturasTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarRepositoriosDeEstruturasTest.php new file mode 100644 index 000000000..34788d48b --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/ConsultarRepositoriosDeEstruturasTest.php @@ -0,0 +1,125 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o método `consultarRepositoriosDeEstruturas` com retorno bem-sucedido. + * + * Verifica se o método: + * - Retorna uma instância de `RepositorioDTO`. + * - Preenche os atributos da instância com os valores corretos. + */ + public function testConsultarRepositoriosDeEstruturasComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + [ + 'id' => 5, + 'nome' => 'Repositório 1', + 'ativo' => true + ] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('repositorios-de-estruturas', ['ativo' => true]) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarRepositoriosDeEstruturas(5); + + // Validações + $this->assertInstanceOf(RepositorioDTO::class, $resultado); + $this->assertEquals(5, $resultado->getNumId()); + $this->assertEquals( + mb_convert_encoding('Repositório 1', 'ISO-8859-1', 'UTF-8'), + $resultado->getStrNome() + ); + $this->assertTrue($resultado->getBolAtivo()); + } + + /** + * Testa o método `consultarRepositoriosDeEstruturas` quando não há resultados. + * + * Verifica se o método: + * - Retorna `null` quando não há repositórios disponíveis. + */ + public function testConsultarRepositoriosDeEstruturasSemResultados() + { + // Mock do retorno esperado do método get + $resultadoMock = []; + + $this->mockService->expects($this->once()) + ->method('get') + ->with('repositorios-de-estruturas', ['ativo' => true]) + ->willReturn($resultadoMock); + + // Chamada do método + $resultado = $this->mockService->consultarRepositoriosDeEstruturas(123); + + // Validações + $this->assertNull($resultado); + } + + /** + * Testa o método `consultarRepositoriosDeEstruturas` quando ocorre um erro. + * + * Verifica se o método: + * - Lança a exceção esperada (`InfraException`). + * - Contém a mensagem correta de erro. + */ + public function testConsultarRepositoriosDeEstruturasComErro() + { + // Configuração do mock para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Expectativa de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção dos Repositórios de Estruturas Organizacionais'); + + // Chamada do método (deve lançar exceção) + $this->mockService->consultarRepositoriosDeEstruturas(123); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/ListarEstruturasAutoCompletarTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/ListarEstruturasAutoCompletarTest.php new file mode 100644 index 000000000..be505824f --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/ListarEstruturasAutoCompletarTest.php @@ -0,0 +1,130 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas']) + ->getMock(); + } + + /** + * Testa o método listarEstruturasAutoCompletar com parâmetros válidos. + * + * Verifica se o retorno do método é formatado corretamente, incluindo: + * - Propriedades convertidas para UTF-8. + * - Hierarquia de siglas mapeada. + * - Quantidade correta de itens no resultado. + */ + public function testListarEstruturasAutoCompletarRetornaEstruturasFormatadas() + { + // Simulação de parâmetros e retorno esperado + $idRepositorioEstrutura = 1; + $nome = 'Teste Unidade'; + $mockResultado = [ + 'totalDeRegistros' => 2, + 'estruturas' => [ + [ + 'numeroDeIdentificacaoDaEstrutura' => 101, + 'nome' => 'Unidade A', + 'sigla' => 'UA', + 'ativo' => true, + 'aptoParaReceberTramites' => true, + 'codigoNoOrgaoEntidade' => '123', + 'hierarquia' => [ + ['sigla' => 'ORG'] + ] + ], + [ + 'numeroDeIdentificacaoDaEstrutura' => 102, + 'nome' => 'Unidade B', + 'sigla' => 'UB', + 'ativo' => true, + 'aptoParaReceberTramites' => false, + 'codigoNoOrgaoEntidade' => '456', + 'hierarquia' => [] + ] + ] + ]; + + $this->mockService->expects($this->once()) + ->method('consultarEstruturas') + ->with($idRepositorioEstrutura, $this->callback(function ($parametros) use ($nome) { + return $parametros['nome'] === $nome && $parametros['apenasAtivas'] === true; + })) + ->willReturn($mockResultado); + + $resultado = $this->mockService->listarEstruturasAutoCompletar($idRepositorioEstrutura, $nome); + + // Asserções sobre o retorno + $this->assertIsArray($resultado); + $this->assertArrayHasKey('diferencaDeRegistros', $resultado); + $this->assertArrayHasKey('itens', $resultado); + $this->assertCount(2, $resultado['itens']); + } + + /** + * Testa o método listarEstruturasAutoCompletar quando ocorre um erro. + * + * Simula um erro no método consultarEstruturas e verifica se uma exceção + * InfraException é lançada corretamente com a mensagem esperada. + */ + public function testListarEstruturasAutoCompletarLancaExcecaoParaErro() + { + $idRepositorioEstrutura = 1; + + $this->mockService->expects($this->once()) + ->method('consultarEstruturas') + ->willThrowException(new Exception('Erro interno')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->listarEstruturasAutoCompletar($idRepositorioEstrutura); + } + + /** + * Testa o método listarEstruturasAutoCompletar com repositório inválido. + * + * Verifica se uma exceção InfraException é lançada quando o ID do + * repositório de estruturas fornecido é inválido. + */ + public function testListarEstruturasAutoCompletarLancaExcecaoParaRepositorioInvalido() + { + $idRepositorioEstrutura = null; + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Repositório de Estruturas inválido'); + + $this->mockService->listarEstruturasAutoCompletar($idRepositorioEstrutura); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/ListarEstruturasBuscaTextualTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/ListarEstruturasBuscaTextualTest.php new file mode 100644 index 000000000..a23711182 --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/ListarEstruturasBuscaTextualTest.php @@ -0,0 +1,124 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get', 'consultarEstruturas']) + ->getMock(); + } + + /** + * Testa o método listarEstruturasBuscaTextual para um caso de sucesso. + * + * Simula uma resposta válida do método 'consultarEstruturas' e verifica + * se o retorno é uma lista de objetos EstruturaDTO com os dados corretos. + * + * @return void + */ + public function testListarEstruturasBuscaTextualRetornaEstruturas() + { + $idRepositorioEstrutura = 1; + $nome = 'Estrutura Raiz'; + $mockResponse = [ + 'totalDeRegistros' => 2, + 'estruturas' => [ + [ + 'numeroDeIdentificacaoDaEstrutura' => '123', + 'nome' => 'Estrutura 1', + 'sigla' => 'E1', + 'ativo' => true, + 'aptoParaReceberTramites' => true, + 'codigoNoOrgaoEntidade' => '001', + 'hierarquia' => [['sigla' => 'H1'], ['sigla' => 'H2']], + ], + [ + 'numeroDeIdentificacaoDaEstrutura' => '456', + 'nome' => 'Estrutura 2', + 'sigla' => 'E2', + 'ativo' => false, + 'aptoParaReceberTramites' => false, + 'codigoNoOrgaoEntidade' => '002', + 'hierarquia' => [['sigla' => 'H3']], + ] + ] + ]; + + $this->mockService->expects($this->once()) + ->method('consultarEstruturas') + ->with($idRepositorioEstrutura, $this->arrayHasKey('identificacaoDoRepositorioDeEstruturas')) + ->willReturn($mockResponse); + + $resultado = $this->mockService->listarEstruturasBuscaTextual($idRepositorioEstrutura, $nome); + + $this->assertCount(2, $resultado); + $this->assertInstanceOf(EstruturaDTO::class, $resultado[0]); + $this->assertEquals('123', $resultado[0]->getNumNumeroDeIdentificacaoDaEstrutura()); + $this->assertEquals('Estrutura 1', $resultado[0]->getStrNome()); + $this->assertEquals(['H1', 'H2'], $resultado[0]->getArrHierarquia()); + } + + /** + * Testa o método listarEstruturasBuscaTextual para um repositório inválido. + * + * Verifica se uma exceção InfraException é lançada ao fornecer um ID de repositório inválido. + * + * @return void + */ + public function testListarEstruturasBuscaTextualLancaExcecaoParaRepositorioInvalido() + { + $idRepositorioEstrutura = null; + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Repositório de Estruturas inválido'); + + $this->mockService->listarEstruturasBuscaTextual($idRepositorioEstrutura); + } + + /** + * Testa o método listarEstruturasBuscaTextual para falhas no web service. + * + * Simula um erro no método 'consultarEstruturas' e verifica se a exceção + * InfraException é lançada com a mensagem correta. + * + * @return void + */ + public function testListarEstruturasBuscaTextualLancaExcecaoParaErroWebService() + { + $idRepositorioEstrutura = 1; + + $this->mockService->expects($this->once()) + ->method('consultarEstruturas') + ->willThrowException(new Exception('Erro no web service')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + $this->mockService->listarEstruturasBuscaTextual($idRepositorioEstrutura); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/ListarPendenciasTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/ListarPendenciasTest.php new file mode 100644 index 000000000..f8d69ea83 --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/ListarPendenciasTest.php @@ -0,0 +1,67 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + public function testListarPendenciasSucesso() + { + $mockResponse = [ + [ + 'status' => 2, + 'IDT' => 999 + ] + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->listarPendencias(true); + + $this->assertIsArray($resultado, 'O retorno deve ser um array.'); + $this->assertCount(count($mockResponse), $resultado, 'A quantidade de objetos no retorno está incorreta.'); + $this->assertInstanceOf(PendenciaDTO::class, $resultado[0], 'O primeiro objeto na lista deve ser uma instância da classe RepositorioDTO.'); + } + + public function testListarPendenciasLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na listagem de pendências de trâmite de processos'); + + $this->mockService->listarPendencias(true); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/ListarRepositorioTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/ListarRepositorioTest.php new file mode 100644 index 000000000..dbd027c18 --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/ListarRepositorioTest.php @@ -0,0 +1,97 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get']) + ->getMock(); + } + + /** + * Testa o método listarRepositoriosDeEstruturas para garantir que ele + * retorna uma lista de repositórios de estruturas com sucesso. + * + * Cenário testado: + * - O método 'get' retorna uma lista simulada de repositórios. + * - O retorno do método deve ser um array contendo objetos do tipo RepositorioDTO. + * + * Asserções: + * - O retorno deve ser um array. + * - A quantidade de itens no retorno deve ser igual à quantidade simulada. + * - O primeiro item do retorno deve ser uma instância de RepositorioDTO. + * + * @return void + */ + public function testListarRepositoriosDeEstruturasRetornaListaSucesso() + { + $mockResponse = [ + ["id" => 49, "nome" => "Acre - AC", "ativo" => true], + ["id" => 2, "nome" => "Advocacia-Geral da União", "ativo" => true], + ["id" => 7, "nome" => "Alagoas( Estado)", "ativo" => true], + ["id" => 20, "nome" => "Banco Central do Brasil 2", "ativo" => true], + ]; + + // Configura o mock para retornar a resposta + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + $resultado = $this->mockService->listarRepositoriosDeEstruturas(); + + $this->assertIsArray($resultado, 'O retorno deve ser um array.'); + $this->assertCount(count($mockResponse), $resultado, 'A quantidade de objetos no retorno está incorreta.'); + $this->assertInstanceOf(RepositorioDTO::class, $resultado[0], 'O primeiro objeto na lista deve ser uma instância da classe RepositorioDTO.'); + } + + /** + * Testa o método listarRepositoriosDeEstruturas para garantir que ele lança + * uma exceção quando a requisição falha. + * + * Cenário testado: + * - O método 'get' lança uma exceção simulada. + * - O método listarRepositoriosDeEstruturas deve capturar a exceção e + * relançar uma InfraException com a mensagem apropriada. + * + * Asserções: + * - Uma exceção do tipo InfraException deve ser lançada. + * - A mensagem da exceção deve ser "Falha na obtenção dos Repositórios de Estruturas Organizacionais". + * + * @return void + */ + public function testListarRepositoriosDeEstruturasLancaExcecao() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro na requisição')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção dos Repositórios de Estruturas Organizacionais'); + + $this->mockService->listarRepositoriosDeEstruturas(); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/LitarEstruturasTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/LitarEstruturasTest.php new file mode 100644 index 000000000..45a8d2edb --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/LitarEstruturasTest.php @@ -0,0 +1,120 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['consultarEstruturas']) + ->getMock(); + } + + /** + * Testa a listagem de estruturas com sucesso. + * + * Este teste verifica se o método listarEstruturas retorna corretamente + * as estruturas esperadas quando os dados são fornecidos corretamente. + */ + public function testListarEstruturasComSucesso() + { + $idRepositorioEstrutura = 1; + $nome = 'Estrutura Teste'; + $mockRetornoConsulta = [ + 'totalDeRegistros' => 1, + 'estruturas' => [ + [ + 'numeroDeIdentificacaoDaEstrutura' => 123, + 'nome' => 'Estrutura 1', + 'sigla' => 'E1', + 'ativo' => true, + 'aptoParaReceberTramites' => false, + 'codigoNoOrgaoEntidade' => '001', + 'hierarquia' => [ + ['sigla' => 'H1'], + ['sigla' => 'H2'], + ], + ], + ], + ]; + + // Define a expectativa para o mock do método consultarEstruturas + $this->mockService + ->expects($this->once()) + ->method('consultarEstruturas') + ->willReturn($mockRetornoConsulta); + + // Executa o método sob teste + $result = $this->mockService->listarEstruturas($idRepositorioEstrutura, $nome); + + // Validações dos resultados + $this->assertCount(1, $result); + $this->assertInstanceOf(EstruturaDTO::class, $result[0]); + $this->assertEquals(123, $result[0]->getNumNumeroDeIdentificacaoDaEstrutura()); + $this->assertEquals('Estrutura 1', $result[0]->getStrNome()); + $this->assertEquals('E1', $result[0]->getStrSigla()); + $this->assertEquals(['H1', 'H2'], $result[0]->getArrHierarquia()); + } + + /** + * Testa a listagem de estruturas com repositório inválido. + * + * Este teste verifica se uma exceção é lançada quando o ID do repositório + * de estruturas é inválido (null). + */ + public function testListarEstruturasComRepositorioInvalido() + { + $idRepositorioEstrutura = null; + + // Configura as expectativas de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Repositório de Estruturas inválido'); + + // Executa o método sob teste + $this->mockService->listarEstruturas($idRepositorioEstrutura); + } + + /** + * Testa a listagem de estruturas com erro na consulta. + * + * Este teste verifica se uma exceção é lançada corretamente quando ocorre + * um erro durante a consulta de estruturas. + */ + public function testListarEstruturasComErroNaConsulta() + { + $idRepositorioEstrutura = 1; + + // Configura o mock para lançar uma exceção no método consultarEstruturas + $this->mockService + ->expects($this->once()) + ->method('consultarEstruturas') + ->willThrowException(new Exception('Erro na consulta')); + + // Configura as expectativas de exceção + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na obtenção de unidades externas'); + + // Executa o método sob teste + $this->mockService->listarEstruturas($idRepositorioEstrutura); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/ReceberReciboDeTramiteTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/ReceberReciboDeTramiteTest.php new file mode 100644 index 000000000..1fb0da91f --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/ReceberReciboDeTramiteTest.php @@ -0,0 +1,103 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get', 'converterArrayParaObjeto']) + ->getMock(); + } + + /** + * Testa o recebimento de recibo de trâmite com sucesso. + * + * Simula a execução do método `get` e o retorno de um objeto + * convertido a partir de um array, verificando se o resultado + * final corresponde ao esperado. + * + * @return void + */ + public function testReceberReciboDeTramiteComSucesso() + { + // Mock do retorno esperado do método get + $resultadoMock = [ + 'recibo' => [ + 'hashesDosComponentesDigitais' => ['hash123'], + 'outroDado' => 'valor' + ] + ]; + + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($resultadoMock); + + // Substituir o método estático converterArrayParaObjeto + $resultadoObjetoMock = (object)[ + 'recibo' => (object)[ + 'hashDoComponenteDigital' => 'hash123', + 'outroDado' => 'valor' + ] + ]; + + $this->mockService->expects($this->once()) + ->method('converterArrayParaObjeto') + ->willReturn($resultadoObjetoMock); + + // Chamada do método + $resultado = $this->mockService->receberReciboDeTramite(123); + + // Asserções + $this->assertIsObject($resultado); + $this->assertEquals('hash123', $resultado->recibo->hashDoComponenteDigital); + $this->assertEquals('valor', $resultado->recibo->outroDado); + } + + /** + * Testa o cenário em que ocorre um erro ao receber o recibo de trâmite. + * + * Simula uma exceção no método `get` e verifica se a exceção correta é + * lançada pelo método testado. + * + * @return void + */ + public function testReceberReciboDeTramiteComErro() + { + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro simulado')); + + // Verifica se a exceção esperada é lançada + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha no recebimento de recibo de trâmite.'); + + $this->mockService->receberReciboDeTramite(123); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRN/SolicitarMetadadosTest.php b/tests_super/unitario/rn/ProcessoEletronicoRN/SolicitarMetadadosTest.php new file mode 100644 index 000000000..6c915341b --- /dev/null +++ b/tests_super/unitario/rn/ProcessoEletronicoRN/SolicitarMetadadosTest.php @@ -0,0 +1,117 @@ +mockService = $this->getMockBuilder(ProcessoEletronicoRN::class) + ->onlyMethods(['get', 'converterArrayParaObjeto']) + ->getMock(); + } + + /** + * Testa o método solicitarMetadados para um caso de sucesso. + * + * Este teste verifica se o método retorna um objeto stdClass corretamente + * configurado quando os dados retornados pelo método get são válidos. + * + * @return void + */ + public function testSolicitarMetadadosRetornaObjetoCorreto() + { + $parNumIdentificacaoTramite = 123; + + // Simular a resposta do método get + $mockResponse = [ + 'propriedadesAdicionais' => ['algum_valor'], + 'processo' => [ + 'documentos' => [ + [ + 'componentesDigitais' => [ + [ + 'assinaturasDigitais' => [ + ['alguma_assinatura'] + ] + ] + ] + ] + ] + ] + ]; + + $mockConvertedObject = (object) [ + 'NRE' => '123456', + 'processo' => (object) [ + 'documentos' => [(object) ['algum_valor']], + 'interessados' => [(object) ['algum_interessado']] + ] + ]; + + // Configura o mock para o método get + $this->mockService->expects($this->once()) + ->method('get') + ->willReturn($mockResponse); + + // Configura o mock para o método converterArrayParaObjeto + $this->mockService->expects($this->once()) + ->method('converterArrayParaObjeto') + ->willReturn($mockConvertedObject); + + // Chama o método a ser testado + $resultado = $this->mockService->solicitarMetadados($parNumIdentificacaoTramite); + + // Verifica o retorno + $this->assertInstanceOf(stdClass::class, $resultado); + $this->assertEquals($parNumIdentificacaoTramite, $resultado->IDT); + $this->assertEquals('123456', $resultado->metadados->NRE); + } + + /** + * Testa o método solicitarMetadados para um caso de falha. + * + * Este teste verifica se uma exceção InfraException é lançada corretamente + * quando o método get falha ao buscar os dados necessários. + * + * @return void + */ + public function testSolicitarMetadadosLancaExcecao() + { + $parNumIdentificacaoTramite = 123; + + // Configura o mock para o método get para lançar uma exceção + $this->mockService->expects($this->once()) + ->method('get') + ->willThrowException(new Exception('Erro no web service')); + + $this->expectException(InfraException::class); + $this->expectExceptionMessage('Falha na solicitação de metadados do processo'); + + // Chama o método e espera uma exceção + $this->mockService->solicitarMetadados($parNumIdentificacaoTramite); + } +} \ No newline at end of file diff --git a/tests_super/unitario/rn/ProcessoEletronicoRNTest.php b/tests_super/unitario/rn/ProcessoEletronicoRNTest.php deleted file mode 100755 index 5123029c6..000000000 --- a/tests_super/unitario/rn/ProcessoEletronicoRNTest.php +++ /dev/null @@ -1,114 +0,0 @@ -objProcessoEletronicoRN = new ProcessoEletronicoRN(); - } - - /** - * Testes do método privado reduzirCampoTexto - * - * @return void - */ - public function testReduzirCampoTexto() - { - $numTamanhoMaximo = 53; - // Teste considerando uma palavra pequena ao final do texto - $strTexto = "aaaaaaaaa bbbbbbbbb ccccccccc ddddddddd eeeeeeeee fffffffff ggggggggg hhhhhhhhh iiiiiiiii"; - $strResultadoEsperado = "aaaaaaaaa bbbbbbbbb ccccccccc ddddddddd eeeeeeeee ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com apenas uma palavra - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com uma palavra grande ao final - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando texto longo e palavro curta ao finals - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaa aaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto curto abaixo do limite - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com apenas um caracter fora do limite - $strTexto = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; - $strResultadoEsperado = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com apenas um caracter fora do limite - $strTexto = "aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa a"; - $strResultadoEsperado = "aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 150); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= 150); - - // Teste considerando um texto nulo - $strTexto = null; - $strResultadoEsperado = null; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, $numTamanhoMaximo); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= $numTamanhoMaximo); - - // Teste considerando um texto longo com ultima palavra menor que a reticencias - $strTexto = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut lbore et dolore magna aliqua. Ut enim ad minim veniamr quis"; - $strResultadoEsperado = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut lbore et dolore magna aliqua. Ut enim ad minim veniam ..."; - $strResultadoAtual = $this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 150); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen($strResultadoAtual) <= 150); - - $strTexto = "ããããã ããããã"; - $strResultadoEsperado = mb_convert_encoding("ããããã ...", 'UTF-8', 'ISO-8859-1'); - $strResultadoAtual = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 9), 'UTF-8', 'ISO-8859-1'); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen(mb_convert_encoding($strResultadoAtual, 'ISO-8859-1', 'UTF-8')) <= 9); - - $strTexto = "ããããã ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut lbore et dolore magna aliqua. Ut enim ad minim veniamr quis"; - $strResultadoEsperado = mb_convert_encoding("ããããã ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut lbore et dolore magna aliqua. Ut enim ad minim veniam ...", 'UTF-8', 'ISO-8859-1'); - $strResultadoAtual = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 150), 'UTF-8', 'ISO-8859-1'); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(mb_strlen($strResultadoAtual) <= 150); - - $strTexto = "Assessoria de Comunicação do Gabinete do Diretor-Presidente da Autoridade Nacional dede Proteção de dados"; - $strResultadoEsperado = mb_convert_encoding("Assessoria de Comunicação do Gabinete do Diretor-Presidente da Autoridade Nacional dede Proteçã ...", 'UTF-8', 'ISO-8859-1'); - $strResultadoAtual = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($strTexto, 100), 'UTF-8', 'ISO-8859-1'); - $this->assertEquals($strResultadoEsperado, $strResultadoAtual); - $this->assertTrue(strlen(mb_convert_encoding($strResultadoAtual, 'ISO-8859-1', 'UTF-8')) <= 100); - - } - - public function testCompararVersoes(){ - $this->assertTrue(InfraUtil::compararVersoes("0.0.1", "<", "0.0.2")); - $this->assertTrue(InfraUtil::compararVersoes("0.1.0", "<", "0.2.0")); - $this->assertTrue(InfraUtil::compararVersoes("1.0.0", "<", "2.0.0")); - $this->assertTrue(InfraUtil::compararVersoes("4.0.3", "==", "4.0.3.0")); - $this->assertTrue(InfraUtil::compararVersoes("4.0.3", "<", "4.0.3.1")); - $this->assertTrue(InfraUtil::compararVersoes("4.0.4", ">", "4.0.3.0")); - $this->assertTrue(InfraUtil::compararVersoes("4.0.3.0", "==", "4.0.3.5", 3, true)); - } -} From 6f5bd617c80420ab618a0c88fbfdd171a14ff4e0 Mon Sep 17 00:00:00 2001 From: Carlos Vieira <3831408+caduvieira@users.noreply.github.com> Date: Wed, 8 Jan 2025 10:52:17 -0300 Subject: [PATCH 03/26] fix: erros ao enviar e receber Tramites Quebra compatibilidade com o php 7.X --- src/dto/PenUnidadeDTO.php | 4 ++-- src/dto/PenUnidadeRestricaoDTO.php | 6 +++--- src/rn/ExpedirProcedimentoRN.php | 10 ++++------ src/rn/PendenciasTramiteRN.php | 3 ++- src/rn/ProcessoEletronicoRN.php | 17 +++++++++++++++-- src/rn/ReceberProcedimentoRN.php | 14 ++++++-------- src/rn/ReceberReciboTramiteRN.php | 2 +- src/rn/VerificadorInstalacaoRN.php | 2 +- tests_sei41/funcional/bootstrap.php | 4 +++- tests_sei41/funcional/composer.json | 3 ++- tests_sei41/funcional/docker-compose.yml | 18 +++++++++--------- .../funcional/tests/CenarioBaseTestCase.php | 14 +++++++------- 12 files changed, 55 insertions(+), 42 deletions(-) diff --git a/src/dto/PenUnidadeDTO.php b/src/dto/PenUnidadeDTO.php index 31d25fee4..9010d55ac 100755 --- a/src/dto/PenUnidadeDTO.php +++ b/src/dto/PenUnidadeDTO.php @@ -16,11 +16,11 @@ */ class PenUnidadeDTO extends UnidadeDTO { - public function getStrNomeTabela() { + public function getStrNomeTabela(): string { return 'md_pen_unidade'; } - public function montar() { + public function montar(): void { $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade'); $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidadeRH', 'id_unidade_rh'); diff --git a/src/dto/PenUnidadeRestricaoDTO.php b/src/dto/PenUnidadeRestricaoDTO.php index 1fc8fe25b..8394606b5 100644 --- a/src/dto/PenUnidadeRestricaoDTO.php +++ b/src/dto/PenUnidadeRestricaoDTO.php @@ -17,17 +17,17 @@ class PenUnidadeRestricaoDTO extends UnidadeDTO { - public function getStrNomeTabela() + public function getStrNomeTabela(): string { return 'md_pen_uni_restr'; } - public function getStrNomeSequenciaNativa() + public function getStrNomeSequenciaNativa(): string { return 'md_pen_seq_uni_restr'; } - public function montar() + public function montar(): void { $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'Id', 'id'); $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade'); diff --git a/src/rn/ExpedirProcedimentoRN.php b/src/rn/ExpedirProcedimentoRN.php index 3c1bb807b..c4c565b91 100755 --- a/src/rn/ExpedirProcedimentoRN.php +++ b/src/rn/ExpedirProcedimentoRN.php @@ -195,7 +195,7 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe if(isset($objMetadadosProcessoTramiteAnterior->documento)){ $strNumeroRegistro = null; }else{ - $strNumeroRegistro = isset($objUltimoTramiteRecebidoDTO) ? $objUltimoTramiteRecebidoDTO->getStrNumeroRegistro() : $objMetadadosProcessoTramiteAnterior->NRE; + $strNumeroRegistro = isset($objUltimoTramiteRecebidoDTO) ? $objUltimoTramiteRecebidoDTO->getStrNumeroRegistro() : $objMetadadosProcessoTramiteAnterior?->NRE; } $objCabecalho = $this->construirCabecalho($objExpedirProcedimentoDTO, $strNumeroRegistro, $dblIdProcedimento); @@ -668,15 +668,13 @@ public function bloquearProcedimentoExpedicao($objExpedirProcedimentoDTO, $numId $objEstrutura = $this->objProcessoEletronicoRN->consultarEstrutura( $objExpedirProcedimentoDTO->getNumIdRepositorioDestino(), $objExpedirProcedimentoDTO->getNumIdUnidadeDestino(), true ); - - $dados=ProcessoEletronicoINT::formatarHierarquia($objEstrutura); - $nome=$dados['nome']; - $objNivel=$dados['objNivel']; + $nome=$objEstrutura->nome; + $numeroDeIdentificacaoDaEstrutura=$objEstrutura->numeroDeIdentificacaoDaEstrutura; $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO_HIRARQUIA'); $objAtributoAndamentoDTO->setStrValor($nome); - $objAtributoAndamentoDTO->setStrIdOrigem($objNivel->numeroDeIdentificacaoDaEstrutura); + $objAtributoAndamentoDTO->setStrIdOrigem($numeroDeIdentificacaoDaEstrutura); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; diff --git a/src/rn/PendenciasTramiteRN.php b/src/rn/PendenciasTramiteRN.php index 033f7e5ee..d7f048c22 100755 --- a/src/rn/PendenciasTramiteRN.php +++ b/src/rn/PendenciasTramiteRN.php @@ -386,8 +386,9 @@ private function receberPendenciaProcessamentoDireto($objPendencia) break; default: + $numIDT = $objPendencia->getNumIdentificacaoTramite(); $strStatus = $objPendencia->getStrStatus(); - $this->gravarLogDebug("Situação do trâmite ($strStatus) não pode ser tratada."); + $this->gravarLogDebug("Situação do trâmite ($numIDT) com status: $strStatus não pode ser tratada."); break; } } diff --git a/src/rn/ProcessoEletronicoRN.php b/src/rn/ProcessoEletronicoRN.php index 6952731ac..010b3f891 100755 --- a/src/rn/ProcessoEletronicoRN.php +++ b/src/rn/ProcessoEletronicoRN.php @@ -1632,8 +1632,14 @@ private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIden $objComponenteDigitalDTO->setStrNome(utf8_decode($objComponenteDigital->nome)); if(isset($objDocumento->especie)){ + if (is_array($objDocumento->especie)){ + $objComponenteDigitalDTO->setNumCodigoEspecie(intval($objDocumento->especie['codigo'])); + $objComponenteDigitalDTO->setStrNomeEspecieProdutor(utf8_decode($objDocumento->especie['nomeNoProdutor'])); + } + else{ $objComponenteDigitalDTO->setNumCodigoEspecie(intval($objDocumento->especie->codigo)); $objComponenteDigitalDTO->setStrNomeEspecieProdutor(utf8_decode($objDocumento->especie->nomeNoProdutor)); + } } $strHashConteudo = static::getHashFromMetaDados($objComponenteDigital->hash); @@ -2315,8 +2321,15 @@ public static function desbloquearProcesso($parDblIdProcedimento) public static function comparacaoOrdemAjustadaDocumentos($parDocumento1, $parDocumento2) { - $numOrdemDocumento1 = isset($parDocumento1->ordemAjustada) ? intval($parDocumento1->ordemAjustada) : intval($parDocumento1->ordem); - $numOrdemDocumento2 = isset($parDocumento2->ordemAjustada) ? intval($parDocumento2->ordemAjustada) : intval($parDocumento2->ordem); + if (is_array($parDocumento1)){ + $numOrdemDocumento1 = isset($parDocumento1['ordemAjustada']) ? intval($parDocumento1['ordemAjustada']) : intval($parDocumento1['ordem']); + $numOrdemDocumento2 = isset($parDocumento2['ordemAjustada']) ? intval($parDocumento2['ordemAjustada']) : intval($parDocumento2['ordem']); + } + else{ + $numOrdemDocumento1 = isset($parDocumento1->ordemAjustada) ? intval($parDocumento1->ordemAjustada) : intval($parDocumento1->ordem); + $numOrdemDocumento2 = isset($parDocumento2->ordemAjustada) ? intval($parDocumento2->ordemAjustada) : intval($parDocumento2->ordem); + } + return $numOrdemDocumento1 - $numOrdemDocumento2; } diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index 6412d3b1d..21be8ab09 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -681,10 +681,10 @@ private function listarMetaDadosComponentesDigitais($parObjProtocolo) $arrObjDocumento = ProcessoEletronicoRN::obterDocumentosProtocolo($parObjProtocolo, true); foreach($arrObjDocumento as $key => $objDocumento){ - if (is_array($objDocumento->componentesDigitais[$key])) { - $objDocumento->componentesDigitais[$key] = (object) $objDocumento->componentesDigitais[$key]; + if (is_array($objDocumento->componentesDigitais[0])) { + $objDocumento->componentesDigitais[0] = (object) $objDocumento->componentesDigitais[0]; } - $strHash = ProcessoEletronicoRN::getHashFromMetaDados($objDocumento->componentesDigitais[$key]->hash); + $strHash = ProcessoEletronicoRN::getHashFromMetaDados($objDocumento->componentesDigitais[0]->hash); $objMapDTO = new PenRelTipoDocMapRecebidoDTO(true); $objMapDTO->setNumMaxRegistrosRetorno(1); $objMapDTO->setNumCodigoEspecie($objDocumento->especie->codigo); @@ -1332,15 +1332,13 @@ private function registrarAndamentoRecebimentoProcesso(ProcedimentoDTO $objProce $objAtributoAndamentoDTO->setStrIdOrigem($objUnidadesDestinoDTO->getNumIdUnidade()); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; } - - $dados=ProcessoEletronicoINT::formatarHierarquia($objEstrutura); - $nome=$dados['nome']; - $objNivel=$dados['objNivel']; + $nome=$objEstrutura->nome; + $numeroDeIdentificacaoDaEstrutura=$objEstrutura->numeroDeIdentificacaoDaEstrutura; $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('ENTIDADE_ORIGEM_HIRARQUIA'); $objAtributoAndamentoDTO->setStrValor($nome); - $objAtributoAndamentoDTO->setStrIdOrigem($objNivel->numeroDeIdentificacaoDaEstrutura); + $objAtributoAndamentoDTO->setStrIdOrigem($numeroDeIdentificacaoDaEstrutura); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; diff --git a/src/rn/ReceberReciboTramiteRN.php b/src/rn/ReceberReciboTramiteRN.php index a1faae3c5..e7cff0d7f 100755 --- a/src/rn/ReceberReciboTramiteRN.php +++ b/src/rn/ReceberReciboTramiteRN.php @@ -255,7 +255,7 @@ private function registrarRecebimentoRecibo($numIdProcedimento, $strProtocoloFor $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO_HIRARQUIA'); $objAtributoAndamentoDTO->setStrValor($nome); - $objAtributoAndamentoDTO->setStrIdOrigem($objNivel->numeroDeIdentificacaoDaEstrutura); + $objAtributoAndamentoDTO->setStrIdOrigem($objEstrutura->numeroDeIdentificacaoDaEstrutura); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; } diff --git a/src/rn/VerificadorInstalacaoRN.php b/src/rn/VerificadorInstalacaoRN.php index 80965376d..eb4f4891a 100755 --- a/src/rn/VerificadorInstalacaoRN.php +++ b/src/rn/VerificadorInstalacaoRN.php @@ -34,7 +34,7 @@ class VerificadorInstalacaoRN extends InfraRN // Versões SEI '3.1.0', '3.1.1', '3.1.2', '3.1.3', '3.1.4', '3.1.5', '3.1.6', '3.1.7', '4.0.0', '4.0.1' , '4.0.2' , '4.0.3', '4.0.4', '4.0.5', '4.0.6', '4.0.7', - '4.0.8', '4.0.9', '4.0.10', '4.0.11', '4.0.12', '4.1.1', '4.1.2', '4.1.3', '4.1.4', + '4.0.8', '4.0.9', '4.0.10', '4.0.11', '4.0.12', '4.1.1', '4.1.2', '4.1.3', '4.1.4', '5.0.0', // Versões SUPER '4.0.3.1', '4.0.3.2', '4.0.3.3', '4.0.3.4', '4.0.3.5', '4.0.4.6', '4.0.5.7', '4.0.6.8', '4.0.7.9', '4.0.8.10', '4.0.9.11', '4.0.9.12', '4.0.9.13', '4.0.9.14', '4.0.12.15' diff --git a/tests_sei41/funcional/bootstrap.php b/tests_sei41/funcional/bootstrap.php index df4d2e17e..5e0d913b7 100755 --- a/tests_sei41/funcional/bootstrap.php +++ b/tests_sei41/funcional/bootstrap.php @@ -6,7 +6,9 @@ require_once __DIR__ . '/sei/src/sei/web/SEI.php'; -define("DIR_SEI_WEB", __DIR__ . '/sei/src/sei/web/'); +if (!defined("DIR_SEI_WEB")){ + define("DIR_SEI_WEB", __DIR__ . '/sei/src/sei/web/'); +} define("DIR_TEST", __DIR__ ); define("DIR_PROJECT", __DIR__ . '/..' ); define("DIR_INFRA", __DIR__ . '/../src/infra/infra_php' ); diff --git a/tests_sei41/funcional/composer.json b/tests_sei41/funcional/composer.json index 311ec3e96..15ccd52a3 100755 --- a/tests_sei41/funcional/composer.json +++ b/tests_sei41/funcional/composer.json @@ -24,6 +24,7 @@ "phpunit/phpunit-selenium": "*", "besimple/soap": "*", "brandonwamboldt/utilphp": "1.1.*", - "brianium/paratest": "4.*" + "brianium/paratest": "4.*", + "guzzlehttp/guzzle": "^7.0" } } diff --git a/tests_sei41/funcional/docker-compose.yml b/tests_sei41/funcional/docker-compose.yml index 7d255f91c..90752dc26 100755 --- a/tests_sei41/funcional/docker-compose.yml +++ b/tests_sei41/funcional/docker-compose.yml @@ -39,10 +39,10 @@ services: volumes: - /dev/shm:/dev/shm - ./assets/arquivos/test_files_index.txt:/test_files_index.txt - - /tmp:/tmp + - .tmp:/tmp php-test-functional: - image: processoeletronico/vagrant_sei4_httpd:${ENVIRONMENT_VERSION} + image: processoeletronico/sei5-alpine:${ENVIRONMENT_VERSION} depends_on: - org1-database - org2-database @@ -58,9 +58,9 @@ services: - ../../src/dto:/tests/sei/modpen/dto - ../../src/bd:/tests/sei/modpen/bd - ./assets/config:/opt/sei/config/mod-pen - - /tmp:/tmp - - /tmp/sei_arquivos_1:/var/sei/arquivos/${ORG1_DATABASE_HOST} - - /tmp/sei_arquivos_2:/var/sei/arquivos/${ORG2_DATABASE_HOST} + - .tmp:/tmp + - .tmp/sei_arquivos_1:/var/sei/arquivos/${ORG1_DATABASE_HOST} + - .tmp/sei_arquivos_2:/var/sei/arquivos/${ORG2_DATABASE_HOST} - ./assets/config/ConfiguracaoSEI.php:/tests/sei/src/sei/config/ConfiguracaoSEI.php:ro - ../../src:/tests/sei/src/sei/web/modulos/pen - ./assets/config:/tests/sei/src/sei/config/mod-pen @@ -95,7 +95,7 @@ services: command: "true" php-test-unit: - image: processoeletronico/vagrant_sei4_httpd:${ENVIRONMENT_VERSION} + image: processoeletronico/sei5-alpine:${ENVIRONMENT_VERSION} volumes: - ${SEI_PATH}/sei:/opt/sei - ${SEI_PATH}/sip:/opt/sip @@ -132,7 +132,7 @@ services: - "${ORG1_DATABASE_HOST_PORT}:${ORG1_DATABASE_GUEST_PORT}" org1-http: - image: processoeletronico/vagrant_sei4_httpd:${ENVIRONMENT_VERSION} + image: processoeletronico/sei5-alpine:${ENVIRONMENT_VERSION} restart: always depends_on: - org1-database @@ -192,7 +192,7 @@ services: - "${ORG2_DATABASE_HOST_PORT}:${ORG2_DATABASE_GUEST_PORT}" org2-http: - image: processoeletronico/vagrant_sei4_httpd:${ENVIRONMENT_VERSION} + image: processoeletronico/sei5-alpine:${ENVIRONMENT_VERSION} restart: always depends_on: - org2-database @@ -239,4 +239,4 @@ services: links: - org2-memcached:memcached - smtp:smtp - - org2-database:${ORG2_DATABASE_HOST} \ No newline at end of file + - org2-database:${ORG2_DATABASE_HOST} diff --git a/tests_sei41/funcional/tests/CenarioBaseTestCase.php b/tests_sei41/funcional/tests/CenarioBaseTestCase.php index 81f23c539..776fe96a6 100755 --- a/tests_sei41/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei41/funcional/tests/CenarioBaseTestCase.php @@ -102,7 +102,7 @@ public static function setUpBeforeClass(): void 'Nome' => CONTEXTO_ORGAO_A_NOME_UNIDADE, ]); - $bancoOrgaoA->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values (?, ?)", array('110000002', CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA)); + //$bancoOrgaoA->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values (?, ?)", array('110000002', CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA)); // Configuração do prefíxo de processos $bancoOrgaoA->execute("update orgao set codigo_sei=? where sigla=?", array(CONTEXTO_ORGAO_A_NUMERO_SEI, CONTEXTO_ORGAO_A_SIGLA_ORGAO)); $bancoOrgaoA->execute("update unidade set sin_protocolo=? where sigla=?", array('S', CONTEXTO_ORGAO_A_SIGLA_UNIDADE)); @@ -115,9 +115,9 @@ public static function setUpBeforeClass(): void $serieNaoMapeadaOrigem[0] = array_change_key_case($serieNaoMapeadaOrigem[0], CASE_UPPER); $bancoOrgaoA->execute("delete from md_pen_rel_doc_map_enviado where id_serie = ?", array($serieNaoMapeadaOrigem[0]["ID_SERIE"])); - $bancoOrgaoA->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?)", array(1, 3, 3, 'E', 'S')); - $bancoOrgaoA->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?)", array(2, 4, 4, 'E', 'S')); - $bancoOrgaoA->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?)", array(3, 3, 3, 'R', 'S')); + // $bancoOrgaoA->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?)", array(1, 3, 3, 'E', 'S')); + // $bancoOrgaoA->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?)", array(2, 4, 4, 'E', 'S')); + // $bancoOrgaoA->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?)", array(3, 3, 3, 'R', 'S')); $bancoOrgaoA->execute("update infra_parametro set valor = ? where nome = ?", array(50, 'SEI_TAM_MB_DOC_EXTERNO')); @@ -143,7 +143,7 @@ public static function setUpBeforeClass(): void ]); putenv("DATABASE_HOST=org1-database"); - $bancoOrgaoB->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values ('110000002', ?)", array(CONTEXTO_ORGAO_B_ID_ESTRUTURA_SECUNDARIA)); + // $bancoOrgaoB->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values ('110000002', ?)", array(CONTEXTO_ORGAO_B_ID_ESTRUTURA_SECUNDARIA)); $bancoOrgaoB->execute("update orgao set codigo_sei=? where sigla=?", array(CONTEXTO_ORGAO_B_NUMERO_SEI, CONTEXTO_ORGAO_B_SIGLA_ORGAO)); $bancoOrgaoB->execute("update unidade set sin_protocolo=? where sigla=?", array('S', CONTEXTO_ORGAO_B_SIGLA_UNIDADE)); @@ -157,8 +157,8 @@ public static function setUpBeforeClass(): void $serieNaoMapeadaOrigem[0] = array_change_key_case($serieNaoMapeadaOrigem[0], CASE_UPPER); $bancoOrgaoB->execute("delete from md_pen_rel_doc_map_recebido where id_serie = ?", array($serieNaoMapeadaOrigem[0]["ID_SERIE"])); - $bancoOrgaoB->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?);", array(4, 3, 3, 'E', 'S')); - $bancoOrgaoB->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?);", array(5, 3, 3, 'R', 'S')); + // $bancoOrgaoB->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?);", array(4, 3, 3, 'E', 'S')); + // $bancoOrgaoB->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?);", array(5, 3, 3, 'R', 'S')); $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(50, 'SEI_TAM_MB_DOC_EXTERNO')); //para corrigir o erro do oracle que retorna stream sem acentuação das palavras no teste de URL From 47b2146d3f1a14a8cf170fa43eacc82fffb02f30 Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Thu, 9 Jan 2025 10:57:59 -0300 Subject: [PATCH 04/26] =?UTF-8?q?fix:=20corre=C3=A7=C3=B5es=20iniciais=20p?= =?UTF-8?q?ara=20tramite=20no=20sei=205.0.0=20(#767)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Glaydson Rodrigues --- Makefile | 3 +-- src/rn/ReceberProcedimentoRN.php | 4 ++-- tests_sei41/funcional/docker-compose.yml | 4 ++-- .../funcional/src/paginas/PaginaPenHipoteseLegalListar.php | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index dd967eb88..933b0204c 100755 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ # Parâmetros de execução do comando MAKE # Opções possíveis para spe (sistema de proc eletronico): sei3, sei4, sei41, super -sistema=super +sistema=sei41 base=mysql teste= @@ -159,7 +159,6 @@ install: check-isalive $(CMD_COMPOSE_FUNC) exec -w /opt/sip/scripts/$(MODULO_PASTAS_CONFIG) org2-http bash -c "$(CMD_INSTALACAO_SIP_MODULO)" wget -nc -i $(PEN_TEST_FUNC)/assets/arquivos/test_files_index.txt -P $(PEN_TEST_FUNC)/.tmp - cp $(PEN_TEST_FUNC)/.tmp/* /tmp .env: diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index 21be8ab09..3c3b3da53 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -977,7 +977,7 @@ private function atualizarProcedimento($parDblIdProcedimento, $objMetadadosProce $this->registrarAndamentoRecebimentoProcesso($objProcedimentoDTO, $objMetadadosProcedimento); //Cadastro das atividades para quando o destinatário é desviado pelo receptor (!3!) - if ($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura) { + if (isset($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura) && !empty($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura)) { $this->gerarAndamentoUnidadeReceptora($parDblIdProcedimento); } @@ -2844,7 +2844,7 @@ private function criarDiretorioAnexo($parObjAnexoDTO) private function adicionarObservacoesSobreNumeroDocumento($parObjDocumento) { $arrObjObservacoes = array(); - $strNumeroDocumentoOrigem = isset($parObjDocumento->protocolo) ? $parObjDocumento->protocolo : $parObjDocumento->produtor->numeroDeIdentificacao; + $strNumeroDocumentoOrigem = isset($parObjDocumento->protocolo) ? $parObjDocumento->protocolo : $parObjDocumento->produtor['numeroDeIdentificacao']; if(!empty($strNumeroDocumentoOrigem)){ $objObservacaoDTO = new ObservacaoDTO(); $objObservacaoDTO->setStrDescricao("Número do Documento na Origem: " . $strNumeroDocumentoOrigem); diff --git a/tests_sei41/funcional/docker-compose.yml b/tests_sei41/funcional/docker-compose.yml index 90752dc26..454c854eb 100755 --- a/tests_sei41/funcional/docker-compose.yml +++ b/tests_sei41/funcional/docker-compose.yml @@ -124,7 +124,7 @@ services: ### CONTAINERS DO AMBIENTE DO ÓRGÃO 1 ### org1-database: - image: ${ORG1_DATABASE_IMAGE}:${ENVIRONMENT_VERSION} + image: ${ORG1_DATABASE_IMAGE} restart: always environment: MYSQL_ROOT_PASSWORD: P@ssword @@ -184,7 +184,7 @@ services: ### CONTAINERS DO AMBIENTE DO ÓRGÃO 2 ### org2-database: - image: ${ORG2_DATABASE_IMAGE}:${ENVIRONMENT_VERSION} + image: ${ORG2_DATABASE_IMAGE} restart: always environment: MYSQL_ROOT_PASSWORD: P@ssword diff --git a/tests_sei41/funcional/src/paginas/PaginaPenHipoteseLegalListar.php b/tests_sei41/funcional/src/paginas/PaginaPenHipoteseLegalListar.php index 2d62e6424..e2fda2cfe 100644 --- a/tests_sei41/funcional/src/paginas/PaginaPenHipoteseLegalListar.php +++ b/tests_sei41/funcional/src/paginas/PaginaPenHipoteseLegalListar.php @@ -37,7 +37,7 @@ public function existeTabela() { try { $trTh = $this->test->byXPath('//*[@id="divInfraAreaTabela"]/table/tbody/tr[1]/th[2]')->text(); - return !empty($trTh) && !is_null($trTh) && count($trTh) >= 1; + return !empty($trTh) && !is_null($trTh); } catch (Exception $ex) { return false; } From ad8ef29284950f7ea71ed6e8e2b9847d2564886d Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Tue, 14 Jan 2025 10:47:04 -0300 Subject: [PATCH 05/26] =?UTF-8?q?fix:=20corre=C3=A7=C3=B5es=20no=20tramite?= =?UTF-8?q?=20e=20remo=C3=A7=C3=A3o=20de=20compatibilidade=20para=20vers?= =?UTF-8?q?=C3=B5es=20inferiores=20ao=20SEI5=20(#771)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/rn/ProcessoEletronicoRN.php | 10 ++++------ src/rn/ReceberProcedimentoRN.php | 16 ++++++++++------ src/rn/VerificadorInstalacaoRN.php | 9 +-------- tests_sei41/funcional/docker-compose.yml | 4 ++-- tests_sei41/funcional/phpunit.xml | 10 +++++++--- 5 files changed, 24 insertions(+), 25 deletions(-) diff --git a/src/rn/ProcessoEletronicoRN.php b/src/rn/ProcessoEletronicoRN.php index 010b3f891..e85107e5f 100755 --- a/src/rn/ProcessoEletronicoRN.php +++ b/src/rn/ProcessoEletronicoRN.php @@ -123,14 +123,12 @@ public function __construct() $this->strLocalCertPassword = $strSenhaCertificadoDigital; $this->numTentativasErro = $numTentativasErro; - - // TODO: lembrar de pegar url dinamicamente quando SOAP for removido $this->strBaseUri = $strEnderecoWebService; $this->arrheaders = [ 'Accept' => '*/*', 'Content-Type' => 'application/json', - ]; - + ]; + $this->strClientGuzzle = new Client([ 'base_uri' => $this->strBaseUri, 'timeout' => self::WS_TIMEOUT_CONEXAO, @@ -222,7 +220,7 @@ public function listarRepositoriosDeEstruturas($ativo = true) try { $parametros = [ - 'ativos' => $ativo + 'ativos' => $ativo ]; $arrResultado = $this->get($endpoint, $parametros); @@ -2578,7 +2576,7 @@ private static function documentoFoiAnexado($parObjProtocolo, $parObjDocumento) return ( isset($parObjDocumento->protocoloDoProcessoAnexado) && !empty($parObjDocumento->protocoloDoProcessoAnexado) && - $parObjProtocolo->protocolo != $parObjDocumento->protocoloDoProcessoAnexado + $parObjProtocolo?->protocolo != $parObjDocumento?->protocoloDoProcessoAnexado ); } diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index 3c3b3da53..71fd597f3 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -2844,12 +2844,16 @@ private function criarDiretorioAnexo($parObjAnexoDTO) private function adicionarObservacoesSobreNumeroDocumento($parObjDocumento) { $arrObjObservacoes = array(); - $strNumeroDocumentoOrigem = isset($parObjDocumento->protocolo) ? $parObjDocumento->protocolo : $parObjDocumento->produtor['numeroDeIdentificacao']; - if(!empty($strNumeroDocumentoOrigem)){ - $objObservacaoDTO = new ObservacaoDTO(); - $objObservacaoDTO->setStrDescricao("Número do Documento na Origem: " . $strNumeroDocumentoOrigem); - $arrObjObservacoes[] = $objObservacaoDTO; - } + if (is_array($parObjDocumento->produtor)) { + $parObjDocumento->produtor = (object) $parObjDocumento->produtor; + } + + $strNumeroDocumentoOrigem = isset($parObjDocumento->protocolo) ? $parObjDocumento->protocolo : $parObjDocumento->produtor->numeroDeIdentificacao; + if(!empty($strNumeroDocumentoOrigem)){ + $objObservacaoDTO = new ObservacaoDTO(); + $objObservacaoDTO->setStrDescricao("Número do Documento na Origem: " . $strNumeroDocumentoOrigem); + $arrObjObservacoes[] = $objObservacaoDTO; + } return $arrObjObservacoes; } diff --git a/src/rn/VerificadorInstalacaoRN.php b/src/rn/VerificadorInstalacaoRN.php index eb4f4891a..50b1a6d2f 100755 --- a/src/rn/VerificadorInstalacaoRN.php +++ b/src/rn/VerificadorInstalacaoRN.php @@ -29,15 +29,8 @@ */ class VerificadorInstalacaoRN extends InfraRN { - // A partir da versão 2.0.0, o módulo de integração do SEI com o PEN não será mais compatível com o SEI 3.0.X const COMPATIBILIDADE_MODULO_SEI = array( - // Versões SEI - '3.1.0', '3.1.1', '3.1.2', '3.1.3', '3.1.4', '3.1.5', '3.1.6', '3.1.7', - '4.0.0', '4.0.1' , '4.0.2' , '4.0.3', '4.0.4', '4.0.5', '4.0.6', '4.0.7', - '4.0.8', '4.0.9', '4.0.10', '4.0.11', '4.0.12', '4.1.1', '4.1.2', '4.1.3', '4.1.4', '5.0.0', - // Versões SUPER - '4.0.3.1', '4.0.3.2', '4.0.3.3', '4.0.3.4', '4.0.3.5', '4.0.4.6', '4.0.5.7', - '4.0.6.8', '4.0.7.9', '4.0.8.10', '4.0.9.11', '4.0.9.12', '4.0.9.13', '4.0.9.14', '4.0.12.15' + '5.0.0' ); public function __construct() { diff --git a/tests_sei41/funcional/docker-compose.yml b/tests_sei41/funcional/docker-compose.yml index 454c854eb..c7a3b2e84 100755 --- a/tests_sei41/funcional/docker-compose.yml +++ b/tests_sei41/funcional/docker-compose.yml @@ -148,7 +148,7 @@ services: - ../../src/scripts:/opt/sip/scripts/mod-pen - ../../src/bin:/opt/sei/bin/mod-pen - ../../src:/opt/sei/web/modulos/pen - - /tmp/sei_arquivos_1:/var/sei/arquivos + - .tmp/sei_arquivos_1:/var/sei/arquivos - ./assets/config/composer.json:/opt/sei/web/modulos/pen/composer.json - ./composer.phar:/opt/sei/web/modulos/pen/composer.phar - ../../vendor:/opt/sei/web/modulos/pen/vendor @@ -208,7 +208,7 @@ services: - ../../src:/opt/sei/web/modulos/pen - ./assets/config/ConfiguracaoSEI.php:/opt/sei/config/ConfiguracaoSEI.php:ro - ./assets/config/ConfiguracaoSip.php:/opt/sip/config/ConfiguracaoSip.php:ro - - /tmp/sei_arquivos_2:/var/sei/arquivos + - .tmp/sei_arquivos_2:/var/sei/arquivos - ./assets/config/composer.json:/opt/sei/web/modulos/pen/composer.json - ./composer.phar:/opt/sei/web/modulos/pen/composer.phar - ../../vendor:/opt/sei/web/modulos/pen/vendor diff --git a/tests_sei41/funcional/phpunit.xml b/tests_sei41/funcional/phpunit.xml index 2dd86c6fc..7a5f3221d 100755 --- a/tests_sei41/funcional/phpunit.xml +++ b/tests_sei41/funcional/phpunit.xml @@ -16,7 +16,7 @@ - + @@ -24,7 +24,7 @@ - + @@ -68,12 +68,14 @@ value="Situação Econômico-Financeira de Sujeito Passivo (Art. 198, caput, da Lei nº 5.172/1966 - CTN)" /> + - + @@ -108,6 +110,7 @@ + @@ -136,6 +139,7 @@ + From 0fa9b776fe76de14d380daa2fd91ad56a31cfca9 Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Thu, 16 Jan 2025 10:43:09 -0300 Subject: [PATCH 06/26] fix: correcoes tests automatizado documento restrito e cancelado (#773) --- ...essoComDocumentoRestritoHipotesePadraoTest.php | 3 +++ .../TramiteProcessoComDocumentoRestritoTest.php | 7 +++++++ ...soContendoDocumentoCanceladoSemTamanhoTest.php | 15 --------------- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php b/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php index 5690f39bd..3c3bebe23 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoHipotesePadraoTest.php @@ -36,6 +36,9 @@ public function test_tramitar_processo_com_documento_restrito_hipotese_nao_mapea $this->realizarTramiteExternoSemValidacaoNoRemetenteFixture(self::$processoTeste, self::$documentoTeste, self::$remetente, self::$destinatario); self::$protocoloTeste = self::$processoTeste["PROTOCOLO"]; + + // A partir da versão SEI 5.0 ao criar um documento restrito o processo torna-se restrito também + self::$processoTeste["RESTRICAO"] = \ProtocoloRN::$NA_RESTRITO; // Configuração de documento restrito } diff --git a/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php b/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php index 02e72901f..175e51ea2 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php @@ -44,6 +44,7 @@ public function test_tramitar_processo_com_documento_restrito() self::$remetente['SENHA'] ); + self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); // Cadastrar novo processo de teste self::$documentoTeste["RESTRICAO"] = \ProtocoloRN::$NA_RESTRITO; // Configuração de documento restrito self::$documentoTeste["HIPOTESE_LEGAL"] = self::$remetente["HIPOTESE_RESTRICAO"]; // Configurar Hipotese legal @@ -60,6 +61,10 @@ public function test_tramitar_processo_com_documento_restrito() self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false ); + + // A partir da versão SEI 5.0 ao criar um documento restrito o processo torna-se restrito também + self::$processoTeste["RESTRICAO"] = \ProtocoloRN::$NA_RESTRITO; // Configuração de documento restrito + } /** @@ -110,6 +115,8 @@ public function test_verificar_origem_processo_com_documento_restrito() /** * Teste de verificação do correto recebimento do processo contendo apenas um documento interno (gerado) + * + * A partir da versão SEI 5.0 ao criar um documento restrito o processo torna-se restrito também * * @group verificacao_recebimento * @large diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php index 4954a0c39..7ffbc7660 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoCanceladoSemTamanhoTest.php @@ -54,21 +54,6 @@ public function test_tramitar_processo_contendo_documento_cancelado() $processo=self::$processoTeste; - $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); - - $idAnexo = $bancoOrgaoA->query("SELECT an.id_anexo FROM rel_protocolo_protocolo pp - inner join protocolo p on pp.id_protocolo_1=p.id_protocolo - inner join anexo an on an.id_protocolo=pp.id_protocolo_2 - where p.descricao=?",array($processo['DESCRICAO'])); - - if (array_key_exists("id_anexo", $idAnexo[0])) { - $id_Anexo=$idAnexo[0]["id_anexo"]; - }else{ - $id_Anexo=$idAnexo[0]["ID_ANEXO"]; - } - - $bancoOrgaoA->execute("delete from anexo where id_anexo=?",array($id_Anexo)); - // Trâmitar Externamento processo para órgão/unidade destinatária $this->tramitarProcessoExternamente( self::$protocoloTeste, From fef0d5b2e2ac5dbab5031cd2c80f34a08d466692 Mon Sep 17 00:00:00 2001 From: mateussbh Date: Thu, 16 Jan 2025 11:15:39 -0300 Subject: [PATCH 07/26] =?UTF-8?q?fix:=20corre=C3=A7=C3=B5es=20que=20impact?= =?UTF-8?q?avam=20testes=20quando=20o=20visualiza=C3=A7=C3=A3o=20detalhada?= =?UTF-8?q?=20estava=20aberta.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/paginas/PaginaTramiteEmBloco.php | 38 ++++++++++++++++++- ...DeProcessoPorVisualizacaoDetalhadaTest.php | 21 ++++++++-- 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/tests_sei41/funcional/src/paginas/PaginaTramiteEmBloco.php b/tests_sei41/funcional/src/paginas/PaginaTramiteEmBloco.php index f3b0eec38..b66156a95 100644 --- a/tests_sei41/funcional/src/paginas/PaginaTramiteEmBloco.php +++ b/tests_sei41/funcional/src/paginas/PaginaTramiteEmBloco.php @@ -44,6 +44,27 @@ public function selecionarTramiteEmBloco() $btnTramiteEmBloco->click(); } + /** + * Seleciona a visualização detalhada do processo. + * + * Este método simula o clique no botão que troca a visualização para + * a opção detalhada. Ele utiliza o XPath para encontrar o botão + * correspondente na interface da aplicação. + * + * @return void + */ + public function visualizacaoDetalhadaAberta() + { + try { + $btnVisualizacaoDetalhada = $this->test->byXPath('//a[@onclick="trocarVisualizacao(\'R\');"]'); + if($btnVisualizacaoDetalhada){ + return true; + } + } catch (Exception $e) { + return false; + } + } + /** * Seleciona a visualização detalhada do processo. * @@ -55,8 +76,21 @@ public function selecionarTramiteEmBloco() */ public function selecionarVisualizacaoDetalhada() { - $btnTramiteEmBloco = $this->test->byXPath('//a[@onclick="trocarVisualizacao(\'D\');"]'); - $btnTramiteEmBloco->click(); + $btnVisualizacaoDetalhada = $this->test->byXPath('//a[@onclick="trocarVisualizacao(\'D\');"]'); + $btnVisualizacaoDetalhada->click(); + } + + /** + * Fecha o visualização detalhada do processo. + * + * Este método simula o clique no botão que troca a visualização para + * a opção resumida. * + * @return void + */ + public function fecharVisualizacaoDetalhada() + { + $btnVisualizacaoResumida = $this->test->byXPath('//a[@onclick="trocarVisualizacao(\'R\');"]'); + $btnVisualizacaoResumida->click(); } /** diff --git a/tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php b/tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php index 5cad66c85..f68f69fba 100644 --- a/tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php +++ b/tests_sei41/funcional/tests/TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest.php @@ -11,7 +11,7 @@ class TramiteBlocoExternoInclusaoDeProcessoPorVisualizacaoDetalhadaTest extends { public static $remetente; public static $destinatario; - + /** * Método que testa a inclusão de um processo por meio da visualização detalhada. * @@ -50,8 +50,15 @@ public function teste_inclusao_de_processo_por_visualizacao_detalhada() // Navegação para controle de processo e seleção de visualização detalhada $this->paginaBase->navegarParaControleProcesso(); - $this->paginaTramiteEmBloco->selecionarVisualizacaoDetalhada(); + $visualizacaoDetalhadaAberta = $this->paginaTramiteEmBloco->visualizacaoDetalhadaAberta(); + if($visualizacaoDetalhadaAberta){ + $this->paginaTramiteEmBloco->fecharVisualizacaoDetalhada(); + $this->paginaTramiteEmBloco->selecionarVisualizacaoDetalhada(); + }else{ + $this->paginaTramiteEmBloco->selecionarVisualizacaoDetalhada(); + } + // Seleção do processo e do bloco de trâmite $protocoloFormatado = $objProtocoloDTO->getStrProtocoloFormatado(); $this->paginaTramiteEmBloco->selecionarProcesso($protocoloFormatado); @@ -74,7 +81,15 @@ public function teste_inclusao_de_processo_por_visualizacao_detalhada() $mensagem ); + $this->paginaBase->navegarParaControleProcesso(); + + $visualizacaoDetalhadaAberta = $this->paginaTramiteEmBloco->visualizacaoDetalhadaAberta(); + if($visualizacaoDetalhadaAberta){ + $this->paginaTramiteEmBloco->fecharVisualizacaoDetalhada(); + } + // Saída do sistema $this->sairSistema(); - } + } + } From 50b7dbfef57d098fee0bb2b10377600b7fa86932 Mon Sep 17 00:00:00 2001 From: mateussbh Date: Thu, 16 Jan 2025 11:16:28 -0300 Subject: [PATCH 08/26] =?UTF-8?q?fix:=20corre=C3=A7=C3=A3o=20erro=20no=20t?= =?UTF-8?q?este=20Tramite=20Processo=20Bloco=20De=20Tramite=20Permissoes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests_sei41/funcional/src/paginas/PaginaProcesso.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests_sei41/funcional/src/paginas/PaginaProcesso.php b/tests_sei41/funcional/src/paginas/PaginaProcesso.php index 76da9beca..1a2ab77e2 100755 --- a/tests_sei41/funcional/src/paginas/PaginaProcesso.php +++ b/tests_sei41/funcional/src/paginas/PaginaProcesso.php @@ -66,7 +66,7 @@ public function trocarOrdenacaoDocumentos() $this->test->frame("ifrVisualizacao"); $this->test->byXPath("//*[@id='selRelProtocoloProtocolo']/option[1]")->click(); sleep(1); - $this->test->byXPath("//*[@id='imgRelProtocoloProtocoloAbaixo']")->click(); + $this->test->byXPath("//a[@onclick='objLupaRelProtocoloProtocolo.moverAbaixo();']")->click(); sleep(1); $this->test->byXPath("//*[@id='divInfraBarraComandosSuperior']/button[@value='Salvar']")->click(); } From 920331d421a230c65dbe23e0af813f1b9c67291d Mon Sep 17 00:00:00 2001 From: mateussbh Date: Thu, 16 Jan 2025 15:54:22 -0300 Subject: [PATCH 09/26] =?UTF-8?q?chore:=20deixando=20o=20par=C3=A2metro=20?= =?UTF-8?q?--testdox=20do=20phpunit=20como=20padr=C3=A3o,=20ao=20rodar=20u?= =?UTF-8?q?m=20teste=20automatizado.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests_sei41/funcional/phpunit.xml | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/tests_sei41/funcional/phpunit.xml b/tests_sei41/funcional/phpunit.xml index 7a5f3221d..50f62ffb9 100755 --- a/tests_sei41/funcional/phpunit.xml +++ b/tests_sei41/funcional/phpunit.xml @@ -36,17 +36,17 @@ + value="154403" /> + value="CGPRO_MATEUS_ORG1" /> + value="CGPRO_MATEUS_ORG1" /> + value="155270" /> + value="MATEUS_ORG1_FILHA" /> @@ -80,12 +80,12 @@ + value="154404" /> + value="CGPRO_MATEUS_ORG2" /> + value="CGPRO_MATEUS_ORG2" /> @@ -121,11 +121,16 @@ + + + + @@ -134,12 +139,12 @@ + - From 11e7e2db612c82fc7ce964d55c3337dc66d913f9 Mon Sep 17 00:00:00 2001 From: mateussbh Date: Thu, 16 Jan 2025 15:57:09 -0300 Subject: [PATCH 10/26] =?UTF-8?q?Revert=20"chore:=20deixando=20o=20par?= =?UTF-8?q?=C3=A2metro=20--testdox=20do=20phpunit=20como=20padr=C3=A3o,=20?= =?UTF-8?q?ao=20rodar=20um=20teste=20automatizado."?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 920331d421a230c65dbe23e0af813f1b9c67291d. --- tests_sei41/funcional/phpunit.xml | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/tests_sei41/funcional/phpunit.xml b/tests_sei41/funcional/phpunit.xml index 50f62ffb9..7a5f3221d 100755 --- a/tests_sei41/funcional/phpunit.xml +++ b/tests_sei41/funcional/phpunit.xml @@ -36,17 +36,17 @@ + value="INFORME_O_ID_DE_ESTRUTURA_UTILIZADO_PARA_TESTE_ORG1" /> + value="INFORME_A_SIGLA_DE_ESTRUTURA_UTILIZADO_PARA_TESTE_ORG1" /> + value="INFORME_O_NOME_DA_ESTRUTURA_UTILIZADO_PARA_TESTE_ORG1" /> + value="INFORME_O_ID_DE_ESTRUTURA_UTILIZADO_PARA_TESTE_ORG_1_1" /> + value="INFORME_O_NOME_DA_ESTRUTURA_UTILIZADO_PARA_TESTE_ORG_1_1" /> @@ -80,12 +80,12 @@ + value="INFORME_O_ID_DE_ESTRUTURA_UTILIZADO_PARA_TESTE_ORG_2" /> + value="INFORME_A_SIGLA_DE_ESTRUTURA_UTILIZADO_PARA_TESTE_ORG2" /> + value="INFORME_O_NOME_DA_ESTRUTURA_UTILIZADO_PARA_TESTE_ORG2" /> @@ -121,16 +121,11 @@ - - - - @@ -139,12 +134,12 @@ - + From a71ab68aeda932a7363d996fdf416aa6eda962b1 Mon Sep 17 00:00:00 2001 From: mateussbh Date: Thu, 16 Jan 2025 16:03:44 -0300 Subject: [PATCH 11/26] =?UTF-8?q?chore:=20subindo=20novo=20par=C3=A2metro?= =?UTF-8?q?=20do=20phpunit,=20mais=20constantes=20do=20org=20C=20para=20o?= =?UTF-8?q?=20phpunit.xml.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 5 ++--- tests_sei41/funcional/phpunit.xml | 7 ++++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 933b0204c..f2e2fd0d7 100755 --- a/Makefile +++ b/Makefile @@ -189,10 +189,9 @@ down: .env $(CMD_COMPOSE_FUNC) stop -# make teste=TramiteProcessoComDevolucaoTest test-functional +# make test-functional teste=TramiteProcessoComDevolucaoTest test-functional: .env $(FILE_VENDOR_FUNCIONAL) up vendor - $(CMD_COMPOSE_FUNC) run --rm php-test-functional /tests/vendor/bin/phpunit -c /tests/phpunit.xml $(textdox) /tests/tests/$(addsuffix .php,$(teste)) ; - + $(CMD_COMPOSE_FUNC) run --rm php-test-functional /tests/vendor/bin/phpunit -c /tests/phpunit.xml --testdox /tests/tests/$(addsuffix .php,$(teste)); test-functional-parallel: .env $(FILE_VENDOR_FUNCIONAL) up $(CMD_COMPOSE_FUNC) run --rm php-test-functional /tests/vendor/bin/paratest -c /tests/phpunit.xml --testsuite $(TEST_SUIT) -p $(PARALLEL_TEST_NODES) $(TEST_GROUP_EXCLUIR) $(TEST_GROUP_INCLUIR) diff --git a/tests_sei41/funcional/phpunit.xml b/tests_sei41/funcional/phpunit.xml index 7a5f3221d..e6f879177 100755 --- a/tests_sei41/funcional/phpunit.xml +++ b/tests_sei41/funcional/phpunit.xml @@ -121,11 +121,16 @@ + + + + @@ -134,12 +139,12 @@ + - From eee96e911165346fcec689e334dec361785b120b Mon Sep 17 00:00:00 2001 From: Marcus Dias <31357298+marvdias@users.noreply.github.com> Date: Thu, 16 Jan 2025 16:20:31 -0300 Subject: [PATCH 12/26] =?UTF-8?q?test:=20corre=C3=A7=C3=A3o=20de=20insert?= =?UTF-8?q?=20de=20unidades=20pen=20no=20cenariobasetest=20(#774)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../funcional/tests/CenarioBaseTestCase.php | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/tests_sei41/funcional/tests/CenarioBaseTestCase.php b/tests_sei41/funcional/tests/CenarioBaseTestCase.php index 776fe96a6..7d8e7fb9b 100755 --- a/tests_sei41/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei41/funcional/tests/CenarioBaseTestCase.php @@ -101,8 +101,14 @@ public static function setUpBeforeClass(): void 'Sigla' => CONTEXTO_ORGAO_A_SIGLA_ESTRUTURA, 'Nome' => CONTEXTO_ORGAO_A_NOME_UNIDADE, ]); - - //$bancoOrgaoA->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values (?, ?)", array('110000002', CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA)); + if (is_numeric(CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA)) { + $penMapUnidadesFixture->carregar([ + 'IdUnidade' => 110000002, + 'Id' => CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA, + 'Sigla' => CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA, + 'Nome' => CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA, + ]); + } // Configuração do prefíxo de processos $bancoOrgaoA->execute("update orgao set codigo_sei=? where sigla=?", array(CONTEXTO_ORGAO_A_NUMERO_SEI, CONTEXTO_ORGAO_A_SIGLA_ORGAO)); $bancoOrgaoA->execute("update unidade set sin_protocolo=? where sigla=?", array('S', CONTEXTO_ORGAO_A_SIGLA_UNIDADE)); @@ -115,10 +121,6 @@ public static function setUpBeforeClass(): void $serieNaoMapeadaOrigem[0] = array_change_key_case($serieNaoMapeadaOrigem[0], CASE_UPPER); $bancoOrgaoA->execute("delete from md_pen_rel_doc_map_enviado where id_serie = ?", array($serieNaoMapeadaOrigem[0]["ID_SERIE"])); - // $bancoOrgaoA->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?)", array(1, 3, 3, 'E', 'S')); - // $bancoOrgaoA->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?)", array(2, 4, 4, 'E', 'S')); - // $bancoOrgaoA->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?)", array(3, 3, 3, 'R', 'S')); - $bancoOrgaoA->execute("update infra_parametro set valor = ? where nome = ?", array(50, 'SEI_TAM_MB_DOC_EXTERNO')); // Habilitação da extensão docx @@ -143,7 +145,14 @@ public static function setUpBeforeClass(): void ]); putenv("DATABASE_HOST=org1-database"); - // $bancoOrgaoB->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values ('110000002', ?)", array(CONTEXTO_ORGAO_B_ID_ESTRUTURA_SECUNDARIA)); + if (is_numeric(CONTEXTO_ORGAO_B_ID_ESTRUTURA_SECUNDARIA)) { + $penMapUnidadesFixture->carregar([ + 'IdUnidade' => 110000002, + 'Id' => CONTEXTO_ORGAO_B_ID_ESTRUTURA_SECUNDARIA, + 'Sigla' => CONTEXTO_ORGAO_B_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA, + 'Nome' => CONTEXTO_ORGAO_B_NOME_UNIDADE_SECUNDARIA, + ]); + } $bancoOrgaoB->execute("update orgao set codigo_sei=? where sigla=?", array(CONTEXTO_ORGAO_B_NUMERO_SEI, CONTEXTO_ORGAO_B_SIGLA_ORGAO)); $bancoOrgaoB->execute("update unidade set sin_protocolo=? where sigla=?", array('S', CONTEXTO_ORGAO_B_SIGLA_UNIDADE)); @@ -157,8 +166,6 @@ public static function setUpBeforeClass(): void $serieNaoMapeadaOrigem[0] = array_change_key_case($serieNaoMapeadaOrigem[0], CASE_UPPER); $bancoOrgaoB->execute("delete from md_pen_rel_doc_map_recebido where id_serie = ?", array($serieNaoMapeadaOrigem[0]["ID_SERIE"])); - // $bancoOrgaoB->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?);", array(4, 3, 3, 'E', 'S')); - // $bancoOrgaoB->execute("insert into md_pen_rel_hipotese_legal(id_mapeamento, id_hipotese_legal, id_hipotese_legal_pen, tipo, sin_ativo) values (?, ?, ?, ?, ?);", array(5, 3, 3, 'R', 'S')); $bancoOrgaoB->execute("update infra_parametro set valor = ? where nome = ?", array(50, 'SEI_TAM_MB_DOC_EXTERNO')); //para corrigir o erro do oracle que retorna stream sem acentuação das palavras no teste de URL From 57ec95fec2c42b37256433e36d87d527a22d72dc Mon Sep 17 00:00:00 2001 From: Marcus Dias <31357298+marvdias@users.noreply.github.com> Date: Thu, 16 Jan 2025 17:15:11 -0300 Subject: [PATCH 13/26] test: remover warning cadastro unidades pen (#775) --- tests_sei41/funcional/tests/CenarioBaseTestCase.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests_sei41/funcional/tests/CenarioBaseTestCase.php b/tests_sei41/funcional/tests/CenarioBaseTestCase.php index 7d8e7fb9b..ef815ad93 100755 --- a/tests_sei41/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei41/funcional/tests/CenarioBaseTestCase.php @@ -97,6 +97,7 @@ public static function setUpBeforeClass(): void putenv("DATABASE_HOST=org1-database"); $penMapUnidadesFixture = new \PenMapUnidadesFixture(); $penMapUnidadesFixture->carregar([ + 'IdUnidade' => 110000001, 'Id' => CONTEXTO_ORGAO_A_ID_ESTRUTURA, 'Sigla' => CONTEXTO_ORGAO_A_SIGLA_ESTRUTURA, 'Nome' => CONTEXTO_ORGAO_A_NOME_UNIDADE, @@ -105,7 +106,7 @@ public static function setUpBeforeClass(): void $penMapUnidadesFixture->carregar([ 'IdUnidade' => 110000002, 'Id' => CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA, - 'Sigla' => CONTEXTO_ORGAO_A_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA, + 'Sigla' => CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA, 'Nome' => CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA, ]); } @@ -139,6 +140,7 @@ public static function setUpBeforeClass(): void putenv("DATABASE_HOST=org2-database"); $penMapUnidadesFixture = new \PenMapUnidadesFixture(); $penMapUnidadesFixture->carregar([ + 'IdUnidade' => 110000001, 'Id' => CONTEXTO_ORGAO_B_ID_ESTRUTURA, 'Sigla' => CONTEXTO_ORGAO_B_SIGLA_ESTRUTURA, 'Nome' => CONTEXTO_ORGAO_B_NOME_UNIDADE, @@ -149,7 +151,7 @@ public static function setUpBeforeClass(): void $penMapUnidadesFixture->carregar([ 'IdUnidade' => 110000002, 'Id' => CONTEXTO_ORGAO_B_ID_ESTRUTURA_SECUNDARIA, - 'Sigla' => CONTEXTO_ORGAO_B_SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA, + 'Sigla' => CONTEXTO_ORGAO_B_NOME_UNIDADE_SECUNDARIA, 'Nome' => CONTEXTO_ORGAO_B_NOME_UNIDADE_SECUNDARIA, ]); } From 59251c5cfe8107877a6f988b42fcc7097f329399 Mon Sep 17 00:00:00 2001 From: Marcus Dias <31357298+marvdias@users.noreply.github.com> Date: Thu, 16 Jan 2025 18:10:52 -0300 Subject: [PATCH 14/26] =?UTF-8?q?test:=20remove=20msg=20de=20erro=20de=20c?= =?UTF-8?q?onfigura=C3=A7=C3=A3o=20do=20tipo=20de=20banco=20de=20dados=20d?= =?UTF-8?q?o=20SIP=20inv=C3=A1lida=20(#776)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests_sei41/funcional/docker-compose.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests_sei41/funcional/docker-compose.yml b/tests_sei41/funcional/docker-compose.yml index c7a3b2e84..b33b69483 100755 --- a/tests_sei41/funcional/docker-compose.yml +++ b/tests_sei41/funcional/docker-compose.yml @@ -51,6 +51,7 @@ services: - ${SEI_PATH}/sei:/opt/sei - ${SEI_PATH}/sip:/opt/sip - ${SEI_PATH}/infra:/opt/infra + - ./assets/config/ConfiguracaoSip.php:/opt/sip/config/ConfiguracaoSip.php:ro - .:/tests - ${SEI_PATH}/../tests:/tests/sei - ${SEI_PATH}/../src:/tests/sei/src @@ -82,6 +83,7 @@ services: - DATABASE_PORT=${ORG1_DATABASE_GUEST_PORT} - SEI_CHAVE_ACESSO=${ORG1_APP_SEI_CHAVE_ACESSO} - SEI_DATABASE_NAME=${SEI_DATABASE_NAME} + - APP_SIP_CHAVE_ACESSO=${ORG1_APP_SIP_CHAVE_ACESSO} - SIP_CHAVE_ACESSO=${ORG1_APP_SIP_CHAVE_ACESSO} - SIP_DATABASE_NAME=${SIP_DATABASE_NAME} - SIP_DATABASE_USER=${SIP_DATABASE_USER} From c124d1f4df87fb74fab1b47d1076d62440e3af53 Mon Sep 17 00:00:00 2001 From: mateussbh Date: Thu, 16 Jan 2025 20:14:20 -0300 Subject: [PATCH 15/26] =?UTF-8?q?fix:=20corre=C3=A7=C3=A3o=20do=20css=20da?= =?UTF-8?q?=20tabela=20(cor=20cabe=C3=A7alho)=20para=20p=C3=A1gina=20de=20?= =?UTF-8?q?lista=20de=20processo=20em=20blocos=20e=20processos=20em=20tram?= =?UTF-8?q?ita=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pen_procedimento_expedido_listar.php | 7 +++++++ src/pen_tramite_bloco_listar.php | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/pen_procedimento_expedido_listar.php b/src/pen_procedimento_expedido_listar.php index 3c01b3a22..a1492e0de 100755 --- a/src/pen_procedimento_expedido_listar.php +++ b/src/pen_procedimento_expedido_listar.php @@ -214,6 +214,13 @@ position: absolute; opacity: 0; } + #frmProcedimentoExpedido th.infraTh { + color: #ECF0F1; + background: #155f9b; + } + #frmProcedimentoExpedido #tblBlocos_wrapper label:first-of-type{font-size: 12px;} + #frmProcedimentoExpedido #tblBlocos_wrapper select:first-of-type{font-size: 11px;} + #frmProcedimentoExpedido #tblBlocos{border-collapse: collapse;} montarJavaScript(); ?> diff --git a/src/pen_tramite_bloco_listar.php b/src/pen_tramite_bloco_listar.php index 0b5a8bc2d..9f0ad0d86 100644 --- a/src/pen_tramite_bloco_listar.php +++ b/src/pen_tramite_bloco_listar.php @@ -349,6 +349,13 @@ position: absolute; opacity: 0; } + #frmBlocoLista th.infraTh { + color: #ECF0F1; + background: #155f9b; + } + #frmBlocoLista #tblBlocos_wrapper label:first-of-type{font-size: 12px;} + #frmBlocoLista #tblBlocos_wrapper select:first-of-type{font-size: 11px;} + #frmBlocoLista #tblBlocos{border-collapse: collapse;} montarJavaScript(); $acaoOrigem=$_GET['acao_origem']; ?> From f584e68b9860c825e050aba04f50d6f3ed7d3a43 Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Fri, 17 Jan 2025 14:34:32 -0300 Subject: [PATCH 16/26] =?UTF-8?q?fix:=20corre=C3=A7=C3=B5es=20dos=20testes?= =?UTF-8?q?=20automatizados=20que=20usam=20rest=20(#777)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/ConfiguracaoModPEN.php | 6 +- src/rn/ExpedirProcedimentoRN.php | 9 +- src/rn/ProcessoEletronicoRN.php | 49 ++- src/rn/ReceberProcedimentoRN.php | 6 +- ...TramiteRecebimentoDocumentoAnexadoTest.php | 271 ++++++++---- .../TramiteRecebimentoDocumentoAvulsoTest.php | 4 +- ...eRecebimentoInteressadosDuplicadosTest.php | 11 + ...ecebimentoMultiplosComponentesDigitais.php | 411 ++++++++++++------ ...plosComponentesDigitaisApenasPendentes.php | 376 +++++++++------- 9 files changed, 742 insertions(+), 401 deletions(-) diff --git a/src/config/ConfiguracaoModPEN.php b/src/config/ConfiguracaoModPEN.php index c2b14ffaf..1528c197d 100755 --- a/src/config/ConfiguracaoModPEN.php +++ b/src/config/ConfiguracaoModPEN.php @@ -36,9 +36,9 @@ public function getArrConfiguracoes() "PEN" => array( // Endereço do Web Service principal de integração com o Barramento de Serviços do PEN // Os endereços disponíveis são os seguintes (verifique se houve atualizações durante o procedimento de instalação): - // - Homologação: https://homolog.api.processoeletronico.gov.br/interoperabilidade/soap/v3/ - // - Produção: https://api.conectagov.processoeletronico.gov.br/interoperabilidade/soap/v3/ - "WebService" => "https://homolog.api.processoeletronico.gov.br/interoperabilidade/soap/v3/", + // - Homologação: https://homolog.api.processoeletronico.gov.br/interoperabilidade/rest/v3/ + // - Produção: https://api.conectagov.processoeletronico.gov.br/interoperabilidade/rest/v3/ + "WebService" => "https://homolog.api.processoeletronico.gov.br/interoperabilidade/rest/v3/", // Endereço do Web Service de monitoramente de pendências de trâmite no Barramento de Serviços do PEN // Configuração necessária para que o envio e recebimento de processos sejam feitas de forma dinâmica pelo sistema diff --git a/src/rn/ExpedirProcedimentoRN.php b/src/rn/ExpedirProcedimentoRN.php index c4c565b91..d097612b5 100755 --- a/src/rn/ExpedirProcedimentoRN.php +++ b/src/rn/ExpedirProcedimentoRN.php @@ -1078,6 +1078,9 @@ private function atribuirEspecieDocumentalREST($parMetaDocumento, $parDocumentoD //Atribui espécie documental definida pelo produtor do documento e registrado no PEN, caso exista if(count($arrMetaDocumentosAnteriorIndexado) > 0 && array_key_exists($parMetaDocumento['ordem'], $arrMetaDocumentosAnteriorIndexado)){ + if (is_array($arrMetaDocumentosAnteriorIndexado[$parMetaDocumento['ordem']]->especie)) { + $arrMetaDocumentosAnteriorIndexado[$parMetaDocumento['ordem']]->especie = (object) $arrMetaDocumentosAnteriorIndexado[$parMetaDocumento['ordem']]->especie; + } $numCodigoEspecie = $arrMetaDocumentosAnteriorIndexado[$parMetaDocumento['ordem']]->especie->codigo; $strNomeEspecieProdutor = mb_convert_encoding($arrMetaDocumentosAnteriorIndexado[$parMetaDocumento['ordem']]->especie->nomeNoProdutor, 'UTF-8', 'ISO-8859-1'); } @@ -1447,12 +1450,12 @@ private function obterDadosArquivo(DocumentoDTO $objDocumentoDTO, $paramStrStaAs } else { $strCaminhoAnexo = $this->objAnexoRN->obterLocalizacao($objAnexoDTO); $strNomeComponenteDigital = $objAnexoDTO->getStrNome(); - } + } $strConteudoAssinatura = null; - $nrTamanhoBytesArquivo = filesize($strCaminhoAnexo); - list($strDadosComplementares, $strMimeType) = $this->obterDadosComplementaresDoTipoDeArquivo($strCaminhoAnexo, $this->arrPenMimeTypes, $strProtocoloDocumentoFormatado); + $nrTamanhoBytesArquivo = filesize($strCaminhoAnexo); + list($strDadosComplementares, $strMimeType) = $this->obterDadosComplementaresDoTipoDeArquivo($strCaminhoAnexo, $this->arrPenMimeTypes, $strProtocoloDocumentoFormatado); $objInformacaoArquivo['NOME'] = $strNomeComponenteDigital; $objInformacaoArquivo['CONTEUDO'] = $strConteudoAssinatura; diff --git a/src/rn/ProcessoEletronicoRN.php b/src/rn/ProcessoEletronicoRN.php index e85107e5f..204a275e4 100755 --- a/src/rn/ProcessoEletronicoRN.php +++ b/src/rn/ProcessoEletronicoRN.php @@ -1529,12 +1529,17 @@ public static function getHashFromMetaDadosREST($objMeta) private function montarDadosMaisDeUmComponenteDigital($objDocumento, $parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProtocolo, $parObjComponentesDigitaisSolicitados) { - $arrayComponentesDigitais = $objDocumento->componenteDigital; + $arrayComponentesDigitais = $objDocumento->componentesDigitais; $arrObjComponenteDigitalDTO = array(); $arrayTeste = array(); $contComponentes = 0; foreach ($arrayComponentesDigitais as $indice => $objComponenteDigital){ + + if (is_array($objComponenteDigital)) { + $objComponenteDigital = (object) $objComponenteDigital; + } + $contComponentes++; $objComponenteDigitalDTO = new ComponenteDigitalDTO(); $objComponenteDigitalDTO->setStrNumeroRegistro($parStrNumeroRegistro); @@ -1553,8 +1558,8 @@ private function montarDadosMaisDeUmComponenteDigital($objDocumento, $parStrNume } - $objComponenteDigitalDTO->setStrNome($objComponenteDigital->nome); - $strHashConteudo = static::getHashFromMetaDados($objComponenteDigital->hash); + $objComponenteDigitalDTO->setStrNome($objComponenteDigital->nome); + $strHashConteudo = static::getHashFromMetaDados($objComponenteDigital->hash); $objComponenteDigitalDTO->setStrHashConteudo($strHashConteudo); $objComponenteDigitalDTO->setStrAlgoritmoHash(self::ALGORITMO_HASH_DOCUMENTO); @@ -1563,19 +1568,18 @@ private function montarDadosMaisDeUmComponenteDigital($objDocumento, $parStrNume $objComponenteDigitalDTO->setStrDadosComplementares($objComponenteDigital->dadosComplementaresDoTipoDeArquivo); //Registrar componente digital necessita ser enviado pelo trâmite específico //TODO: Teste $parObjComponentesDigitaisSolicitados aqui - if(isset($parObjComponentesDigitaisSolicitados)){ - $arrObjItensSolicitados = is_array($parObjComponentesDigitaisSolicitados->processo) ? $parObjComponentesDigitaisSolicitados->processo : array($parObjComponentesDigitaisSolicitados->processo); - - foreach ($arrObjItensSolicitados as $objItemSolicitado) { - if(!is_null($objItemSolicitado)){ - $objItemSolicitado->hash = is_array($objItemSolicitado->hash) ? $objItemSolicitado->hash : array($objItemSolicitado->hash); - - if($objItemSolicitado->protocolo == $objComponenteDigitalDTO->getStrProtocolo() && in_array($strHashConteudo, $objItemSolicitado->hash) && !$objDocumento->retirado) { - $objComponenteDigitalDTO->setStrSinEnviar("S"); + if(isset($parObjComponentesDigitaisSolicitados)) { + $arrObjItensSolicitados = isset($parObjComponentesDigitaisSolicitados) ? $parObjComponentesDigitaisSolicitados : array($parObjComponentesDigitaisSolicitados); + foreach ($arrObjItensSolicitados as $objItemSolicitado) { + if(!is_null($objItemSolicitado)){ + $objItemSolicitado['hashes'] = is_array($objItemSolicitado['hashes']) ? $objItemSolicitado['hashes'] : array($objItemSolicitado['hashes']); + + if($objItemSolicitado['protocolo'] == $objComponenteDigitalDTO->getStrProtocolo() && in_array($strHashConteudo, $objItemSolicitado['hashes']) && !$objDocumento->retirado) { + $objComponenteDigitalDTO->setStrSinEnviar("S"); + } } } } - } //TODO: Avaliar dados do tamanho do documento em bytes salvo na base de dados $objComponenteDigitalDTO->setNumTamanho($objComponenteDigital->tamanhoEmBytes); @@ -1649,7 +1653,7 @@ private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIden //Registrar componente digital necessita ser enviado pelo trâmite específico //TODO: Teste $parObjComponentesDigitaisSolicitados aqui if(isset($parObjComponentesDigitaisSolicitados)){ - $arrObjItensSolicitados = is_array($parObjComponentesDigitaisSolicitados) ? $parObjComponentesDigitaisSolicitados : array($parObjComponentesDigitaisSolicitados); + $arrObjItensSolicitados = isset($parObjComponentesDigitaisSolicitados) ? $parObjComponentesDigitaisSolicitados : array($parObjComponentesDigitaisSolicitados); foreach ($arrObjItensSolicitados as $objItemSolicitado) { if(!is_null($objItemSolicitado)){ $objItemSolicitado['hashes'] = is_array($objItemSolicitado['hashes']) ? $objItemSolicitado['hashes'] : array($objItemSolicitado['hashes']); @@ -2333,6 +2337,15 @@ 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; @@ -2340,6 +2353,14 @@ public static function comparacaoOrdemDocumentos($parDocumento1, $parDocumento2) 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; diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index 71fd597f3..8b208e4d4 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -2962,10 +2962,14 @@ private static function validaTamanhoMaximoAnexo($nomeArquivo, $nrTamanhMegaByte private function atribuirTipoProcedimentoRelacinado($numIdTipoProcedimento, $numIdProcedimento, $strProcessoNegocio) { + $origem = null; + if (isset($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura) && !empty($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura)) { + $origem = $this->destinatarioReal->numeroDeIdentificacaoDaEstrutura; + } $objAtributoAndamentoDTOAnterior = new AtributoAndamentoDTO(); $objAtributoAndamentoDTOAnterior->setStrNome('TIPO_PROCESSO_ANTERIOR'); $objAtributoAndamentoDTOAnterior->setStrValor($strProcessoNegocio); - $objAtributoAndamentoDTOAnterior->setStrIdOrigem($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura); + $objAtributoAndamentoDTOAnterior->setStrIdOrigem($origem ); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTOAnterior; $objTipoProcedimentoRN = new TipoProcedimentoRN(); diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php b/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php index ade7952e3..d31a1b588 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php @@ -25,6 +25,8 @@ class TramiteRecebimentoDocumentoAnexadoTest extends FixtureCenarioBaseTestCase public static $documentoTeste4; public static $documentoTeste5; + public static $conteudoCompoonenteDigital; + /** * Teste de envio de metadados do processo contendo documentos anexados * @@ -51,24 +53,25 @@ public function test_envio_processo_com_documento_anexado() self::$documentoTeste4 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); self::$documentoTeste5 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - // Instanciar objeto de teste utilizando o BeSimpleSoap $localCertificado = self::$remetente['LOCALIZACAO_CERTIFICADO_DIGITAL']; $senhaCertificado = self::$remetente['SENHA_CERTIFICADO_DIGITAL']; self::$servicoPEN = $this->instanciarApiDeIntegracao($localCertificado, $senhaCertificado); // Inicia o envio dos três primeiros documentos $arrDocumentosPrimeiroEnvio = array(self::$documentoTeste1, self::$documentoTeste2, self::$documentoTeste3); + $processoTeste = $this->construirMetadadosProcessoTeste(self::$processoTeste, $arrDocumentosPrimeiroEnvio); - $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, self::$remetente, self::$destinatario, $processoTeste); - $this->enviarComponentesDigitaisDoTramite(self::$servicoPEN, $novoTramite, $processoTeste); - $reciboTramite = $this->receberReciboEnvio(self::$servicoPEN, $novoTramite); + $novoTramite = $this->enviarMetadadosProcesso(self::$remetente, self::$destinatario, $processoTeste); + $this->enviarComponentesDigitaisDoTramite($novoTramite, $processoTeste); + $reciboTramiteEnvio = $this->receberReciboEnvio($novoTramite); //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); - $this->assertNotNull($reciboTramite); + $this->assertNotNull($reciboTramiteEnvio); $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, $arrDocumentosPrimeiroEnvio, self::$destinatario); - $reciboTramite = $this->receberReciboTramite(self::$servicoPEN, $novoTramite); + $reciboTramiteRecebido = $this->receberReciboTramite($novoTramite); + $this->assertNotNull($reciboTramiteRecebido); } /** @@ -108,92 +111,84 @@ public function test_verificar_processo_com_documento_anexado_apos_devolucao() } - private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) { - $connectionTimeout = 600; - $options = array( - 'soap_version' => SOAP_1_1 - , 'local_cert' => $localCertificado - , 'passphrase' => $senhaCertificado - , 'resolve_wsdl_remote_includes' => true - , 'connection_timeout' => $connectionTimeout - , CURLOPT_TIMEOUT => $connectionTimeout - , CURLOPT_CONNECTTIMEOUT => $connectionTimeout - , 'encoding' => 'UTF-8' - , 'attachment_type' => BeSimple\SoapCommon\Helper::ATTACHMENTS_TYPE_MTOM - , 'ssl' => array( - 'allow_self_signed' => true, - ), - ); - - return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); + $arrheaders = [ + 'Accept' => '*/*', + 'Content-Type' => 'application/json', + ]; + + $strClientGuzzle = new GuzzleHttp\Client([ + 'base_uri' => PEN_ENDERECO_WEBSERVICE, + 'timeout' => 40, + 'headers' => $arrheaders, + 'cert' => [$localCertificado, $senhaCertificado], + ]); + + return $strClientGuzzle; } - private function enviarMetadadosProcesso($servicoPEN, $remetente, $destinatario, $processoTeste) + private function enviarMetadadosProcesso($remetente, $destinatario, $processoTeste) { - $parametros = new stdClass(); - $parametros->novoTramiteDeProcesso = new stdClass(); - $parametros->novoTramiteDeProcesso->cabecalho = $this->construirCabecalhoTeste($remetente, $destinatario); - $parametros->novoTramiteDeProcesso->processo = $processoTeste; - return $servicoPEN->enviarProcesso($parametros); + $parametros = []; + $parametros['cabecalho'] = $this->construirCabecalhoTeste($remetente, $destinatario); + $parametros['processo'] = $processoTeste; + + return $this->enviarProcessoAPI($parametros); } - private function enviarComponentesDigitaisDoTramite($servicoPEN, $novoTramite, $processoTeste) + private function enviarComponentesDigitaisDoTramite($novoTramite, $processoTeste) { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - foreach ($processoTeste['documento'] as $documentoTeste) { - foreach ($documentoTeste['componenteDigital'] as $item) { - $dadosDoComponenteDigital = new stdClass(); - $dadosDoComponenteDigital->protocolo = $processoTeste['protocolo']; - $dadosDoComponenteDigital->hashDoComponenteDigital = $item['valorHash']; - $dadosDoComponenteDigital->conteudoDoComponenteDigital = new SoapVar($item['conteudo'], XSD_BASE64BINARY); - $dadosDoComponenteDigital->ticketParaEnvioDeComponentesDigitais = $dadosTramite->ticketParaEnvioDeComponentesDigitais; - - $parametros = new stdClass(); - $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; - $servicoPEN->enviarComponenteDigital($parametros); + foreach ($processoTeste['documentos'] as $documentoTeste) { + foreach ($documentoTeste['componentesDigitais'] as $item) { + $dadosDoComponenteDigital = []; + $dadosDoComponenteDigital['protocolo'] = $processoTeste['protocolo']; + $dadosDoComponenteDigital['hashDoComponenteDigital'] = $item['hash']['conteudo']; + $dadosDoComponenteDigital['ticketParaEnvioDeComponentesDigitais'] = $novoTramite['ticketParaEnvioDeComponentesDigitais']; + + $parametros['dadosDoComponenteDigital'] = $dadosDoComponenteDigital; + $this->enviarComponenteDigitalAPI($parametros); } } + } - private function receberReciboEnvio($servicoPEN, $novoTramite) + private function receberReciboEnvio($novoTramite) { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->IDT; - return $servicoPEN->receberReciboDeEnvio($parametros); + $idt = $novoTramite['IDT']; + return $this->receberReciboDeEnvioAPI($idt); } - private function receberReciboTramite($servicoPEN, $novoTramite) + + private function receberReciboTramite($novoTramite) { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->IDT; - return $servicoPEN->receberReciboDeTramite($parametros); + $idt = $novoTramite['IDT']; + return $this->receberReciboDeTramiteAPI($idt); } private function construirCabecalhoTeste($remetente, $destinatario) { - $cabecalho = new stdClass(); - $cabecalho->remetente = new stdClass(); - $cabecalho->remetente->identificacaoDoRepositorioDeEstruturas = $remetente['ID_REP_ESTRUTURAS']; - $cabecalho->remetente->numeroDeIdentificacaoDaEstrutura = $remetente['ID_ESTRUTURA']; - - $cabecalho->destinatario = new stdClass(); - $cabecalho->destinatario->identificacaoDoRepositorioDeEstruturas = $destinatario['ID_REP_ESTRUTURAS']; - $cabecalho->destinatario->numeroDeIdentificacaoDaEstrutura =$destinatario['ID_ESTRUTURA']; - - $cabecalho->urgente = false; - $cabecalho->motivoDaUrgencia = null; - $cabecalho->obrigarEnvioDeTodosOsComponentesDigitais = false; + $cabecalho = [ + 'remetente' => [ + 'identificacaoDoRepositorioDeEstruturas' => $remetente['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $remetente['ID_ESTRUTURA'], + ], + 'destinatario' => [ + 'identificacaoDoRepositorioDeEstruturas' => $destinatario['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $destinatario['ID_ESTRUTURA'], + ], + 'enviarApenasComponentesDigitaisPendentes' => false + ]; + return $cabecalho; } public function gerarDadosProcessoTeste($contextoProducao) { $processoTeste = parent::gerarDadosProcessoTeste($contextoProducao); + $processoTeste['PROTOCOLO'] = sprintf('99999.%06d/2020-00', rand(0, 999999)); $processoTeste['INTERESSADOS'] = trim(substr($processoTeste['INTERESSADOS'], 0, 15)); $processoTeste['DESCRICAO'] = trim(substr($processoTeste['DESCRICAO'], 0, 10)); return $processoTeste; @@ -211,7 +206,8 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest { $metadadosDocumentos = array(); foreach ($documentosTeste as $indice => $documentoTeste) { - $metadadosDocumentos[] = $this->construirMetadadosDocumentoTeste($documentoTeste, $indice + 1); + $documentos = $this->construirMetadadosDocumentoTeste($documentoTeste, $indice + 1); + $metadadosDocumentos[] = $documentos['documentoDoProcesso']; } return array( @@ -223,11 +219,14 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), + 'tipo' => "orgaopublico", ), - 'interessado' => array( - 'nome' => $processoTeste['INTERESSADOS'], + 'interessados' => array( + [ + "nome" => $processoTeste['INTERESSADOS'], + ] ), - 'documento' => $metadadosDocumentos, + 'documentos' => $metadadosDocumentos, ); } @@ -246,16 +245,17 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen $nomeArquivo = basename($caminhoArquivo); $componentes[] = array( 'nome' => $nomeArquivo, - 'hash' => new SoapVar("$hashDocumento", XSD_ANYXML), + 'hash' => [ + 'algoritmo' => 'SHA256', + 'conteudo' => $hashDocumento + ], 'tipoDeConteudo' => 'txt', - 'mimeType' => 'text/plain', + 'mimeType' => 'application/pdf', 'tamanhoEmBytes' => $tamanhoDocumento, 'ordem' => $ordemComponente, - - // Chaves abaixo adicionadas apenas para simplificação dos testes - 'valorHash' => $hashDocumento, - 'conteudo' => $conteudo, ); + + self::$conteudoCompoonenteDigital[$hashDocumento] = $conteudo; } finally { fclose($fp); } @@ -268,10 +268,9 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'ordem' => $ordemDocumento, - 'produtor' => array( 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), - 'numeroDeIdentificacao' => '999999', + "tipo" => "orgaopublico" ), 'especie' => array( @@ -279,17 +278,127 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), - 'interessado' => array( - 'nome' => $documentoTeste['INTERESSADOS'], + 'interessados' => array( + [ + "nome" => $documentoTeste['INTERESSADOS'], + "tipo" => "fisica" + ] ), - 'componenteDigital' => $componentes, + 'componentesDigitais' => $componentes, + ); + + $componenteEnvio = array( + 'hashDocumento' => $hashDocumento, + 'conteudo' => $conteudo ); if(!is_null($documentoTeste['ORDEM_DOCUMENTO_REFERENCIADO'])){ $documentoDoProcesso['ordemDoDocumentoReferenciado'] = intval($documentoTeste['ORDEM_DOCUMENTO_REFERENCIADO']); } - return $documentoDoProcesso; + return array( + 'documentoDoProcesso' => $documentoDoProcesso, + 'componenteEnvio' => $componenteEnvio + ); + } + + public function enviarComponenteDigitalAPI($parametros) + { + try { + + $arrParametros = $parametros['dadosDoComponenteDigital']; + $idTicketDeEnvio = $arrParametros['ticketParaEnvioDeComponentesDigitais']; + + $protocolo = $arrParametros['protocolo']; + $hashDoComponenteDigital = $arrParametros['hashDoComponenteDigital']; + + $conteudoComponenteDigital = self::$conteudoCompoonenteDigital[$hashDoComponenteDigital]; + + $queryParams = [ + 'hashDoComponenteDigital' => $hashDoComponenteDigital, + 'protocolo' => $protocolo + ]; + + $endpoint = "tickets-de-envio-de-componente/{$idTicketDeEnvio}/protocolos/componentes-a-enviar"; + + $arrOptions = [ + 'query' => $queryParams, + 'multipart' => [ + [ + 'name' => 'conteudo', + 'contents' => $conteudoComponenteDigital, + 'filename' => 'conteudo.html', + 'headers' => ['Content-Type' => 'text/html'] + ], + ], + ]; + + $response = self::$servicoPEN->request('PUT', $endpoint, $arrOptions); + + return $response; + + } catch (\Exception $e) { + $mensagem = "Falha no envio de de componentes no documento"; + $this->fail($mensagem . " - " . $e->getMessage()); + } + } + + public function receberReciboDeEnvioAPI($parNumIdTramite) + { + $endpoint = "tramites/{$parNumIdTramite}/recibo-de-envio"; + try{ + $parametros = [ + 'IDT' => $parNumIdTramite + ]; + + $response = self::$servicoPEN->request('GET', $endpoint, [ + 'query' => $parametros + ]); + + return json_decode($response->getBody(), true); + } catch (\Exception $e) { + $mensagem = "Falha no recebimento de recibo de trâmite de envio."; + $this->fail($mensagem . " - " . $e->getMessage()); + } + } + + public function enviarProcessoAPI($parametros) + { + try { + $endpoint = "tramites/processo"; + + $response = self::$servicoPEN->request('POST', $endpoint, [ + 'json' => $parametros + ]); + + return json_decode($response->getBody(), true); + + } catch (\Exception $e) { + $mensagem = "Falha no envio de processo"; + $this->fail($mensagem . " - " . $e->getMessage()); + } + } + + + + public function receberReciboDeTramiteAPI($parNumIdTramite) + { + $endpoint = "tramites/{$parNumIdTramite}/recibo"; + try{ + $parametros = [ + 'IDT' => $parNumIdTramite + ]; + + $response = self::$servicoPEN->request('GET', $endpoint, [ + 'json' => $parametros + ]); + + return json_decode($response->getBody(), true); + + } catch (\Exception $e) { + $mensagem = "Falha no recebimento de recibo de trâmite."; + $this->fail($mensagem . " - " . $e->getMessage()); + } } } diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php b/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php index 37b1ee11b..1a294890f 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php @@ -284,6 +284,7 @@ public function enviarDocumentoAPI($parametros) } catch (\Exception $e) { $mensagem = "Falha no envio de documento avulso"; + $this->fail($mensagem . " - " . $e->getMessage()); } } @@ -324,6 +325,7 @@ public function enviarComponenteDigitalAPI($parametros) } catch (\Exception $e) { $mensagem = "Falha no envio de de componentes no documento"; + $this->fail($mensagem . " - " . $e->getMessage()); } } @@ -343,6 +345,7 @@ public function receberReciboDeEnvioAPI($parNumIdTramite) return json_decode($response->getBody(), true); } catch (\Exception $e) { $mensagem = "Falha no recebimento de recibo de trâmite de envio."; + $this->fail($mensagem . " - " . $e->getMessage()); } } @@ -355,7 +358,6 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) $strClientGuzzle = new GuzzleHttp\Client([ 'base_uri' => PEN_ENDERECO_WEBSERVICE, - 'handler' => GuzzleHttp\HandlerStack::create(), 'timeout' => 5.0, 'headers' => $arrheaders, 'cert' => [$localCertificado, $senhaCertificado], diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php b/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php index b612f426f..0315dc2fa 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php @@ -118,6 +118,14 @@ private function receberReciboEnvio($novoTramite) return $this->receberReciboDeEnvioAPI($idt); } + private function receberReciboTramite($servicoPEN, $novoTramite) + { + $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; + $parametros = new StdClass(); + $parametros->IDT = $dadosTramite->IDT; + return $servicoPEN->receberReciboDeTramite($parametros); + } + private function construirCabecalhoTeste($remetente, $destinatario) { $cabecalho = [ @@ -267,6 +275,7 @@ public function enviarProcessoAPI($parametros) } catch (\Exception $e) { $mensagem = "Falha no envio de processo"; + $this->fail($mensagem . " - " . $e->getMessage()); } } @@ -307,6 +316,7 @@ public function enviarComponenteDigitalAPI($parametros) } catch (\Exception $e) { $mensagem = "Falha no envio de de componentes no documento"; + $this->fail($mensagem . " - " . $e->getMessage()); } } @@ -325,6 +335,7 @@ public function receberReciboDeEnvioAPI($parNumIdTramite) return json_decode($response->getBody(), true); } catch (\Exception $e) { $mensagem = "Falha no recebimento de recibo de trâmite de envio."; + $this->fail($mensagem . " - " . $e->getMessage()); } } } diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php b/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php index d1036ae72..fb90d23cb 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php @@ -22,6 +22,8 @@ class TramiteRecebimentoMultiplosComponentesDigitais extends FixtureCenarioBaseT public static $servicoPEN; public static $documentoZip; + public static $conteudoCompoonenteDigital; + /** @@ -68,17 +70,17 @@ public function test_recebimento_processo_com_3_componentes_digitais() // Simular um trâmite chamando a API do Barramento diretamente $metadadosProcessoTeste = $this->construirMetadadosProcessoTeste(self::$processoTeste, array(self::$documentoZip)); - $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, $remetente, $destinatario, $metadadosProcessoTeste); + $novoTramite = $this->enviarMetadadosProcesso($remetente, $destinatario, $metadadosProcessoTeste); - $this->enviarComponentesDigitaisDoProcesso(self::$servicoPEN, $novoTramite, $metadadosProcessoTeste); - $reciboTramite = $this->receberReciboEnvioProcesso(self::$servicoPEN, $novoTramite); + $this->enviarComponentesDigitaisDoProcesso($novoTramite, $metadadosProcessoTeste); + $reciboTramite = $this->receberReciboEnvio($novoTramite); //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); $this->assertNotNull($reciboTramite); $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, array(self::$documentoZip), $destinatario); - $this->receberReciboTramite(self::$servicoPEN, $novoTramite); + $this->receberReciboTramite($novoTramite); } @@ -96,7 +98,7 @@ public function test_devolucao_processo_para_origem() $destinatario = self::$contextoOrgaoB; $orgaosDiferentes = $remetente['URL'] != $destinatario['URL']; - $documentoTeste1 = $this->gerarDadosDocumentoInternoTeste($remetente); + $documentoTeste1 = $this->gerarDadosDocumentoInternoTeste($remetente); $documentoTeste2 = $this->gerarDadosDocumentoExternoTeste($remetente); $novosDocumentos = array($documentoTeste1, $documentoTeste2); @@ -120,9 +122,10 @@ public function test_recebimento_documento_avulso_com_2_componentes_digitais() // Simular um trâmite chamando a API do Barramento diretamente $metadadosDocumentoTeste = $this->construirMetadadosDocumentoAvulsoTeste($documentoTeste); - $novoTramite = $this->enviarMetadadosDocumento(self::$servicoPEN, $remetente, $destinatario, $metadadosDocumentoTeste); - $this->enviarComponentesDigitaisDoDocumentoAvulso(self::$servicoPEN, $novoTramite, $metadadosDocumentoTeste); - $reciboTramite = $this->receberReciboEnvioDocumentoAvulso(self::$servicoPEN, $novoTramite); + $novoTramite = $this->enviarMetadadosDocumento($remetente, $destinatario, $metadadosDocumentoTeste); + $this->enviarComponentesDigitaisDoDocumentoAvulso($novoTramite, $metadadosDocumentoTeste); + sleep(5); + $reciboTramite = $this->receberReciboEnvio($novoTramite); //Verificar recebimento de novo processo administrativo contendo documento avulso enviado @@ -131,120 +134,125 @@ public function test_recebimento_documento_avulso_com_2_componentes_digitais() $this->realizarValidacaoRecebimentoDocumentoAvulsoNoDestinatario($documentoTeste, $destinatario); } - - private function receberReciboEnvioDocumentoAvulso($servicoPEN, $novoTramite) + private function receberReciboTramite($novoTramite) { - $dadosTramite = $novoTramite->dadosTramiteDeDocumentoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->tramite->IDT; - return $servicoPEN->receberReciboDeEnvio($parametros); + $idt = $novoTramite['IDT']; + return $this->receberReciboDeTramiteAPI($idt); } - private function receberReciboEnvioProcesso($servicoPEN, $novoTramite) + private function receberReciboEnvio($novoTramite) { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->IDT; - return $servicoPEN->receberReciboDeEnvio($parametros); - } + // Verifica a origem do envio para determinar se foi realizado por um trâmite de documento avulso ou dentro de um processo. + if (isset($novoTramite['tramites'])) { + $numIDT = $novoTramite['tramites'][0]['IDT']; + } else { + $numIDT = $novoTramite['IDT']; + } - private function receberReciboTramite($servicoPEN, $novoTramite) - { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->IDT; - return $servicoPEN->receberReciboDeTramite($parametros); + return $this->receberReciboDeEnvioAPI($numIDT); } - private function enviarMetadadosProcesso($servicoPEN, $remetente, $destinatario, $processoTeste) + private function enviarMetadadosProcesso($remetente, $destinatario, $processoTeste) { - $parametros = new stdClass(); - $parametros->novoTramiteDeProcesso = new stdClass(); - $parametros->novoTramiteDeProcesso->cabecalho = $this->construirCabecalhoTeste($remetente, $destinatario); - $parametros->novoTramiteDeProcesso->processo = $processoTeste; - return $servicoPEN->enviarProcesso($parametros); + $parametros = []; + $parametros['cabecalho'] = $this->construirCabecalhoTeste($remetente, $destinatario); + $parametros['processo'] = $processoTeste; + + return $this->enviarProcessoAPI($parametros); } - private function enviarMetadadosDocumento($servicoPEN, $remetente, $destinatario, $documentoTeste) + private function enviarMetadadosDocumento($remetente, $destinatario, $documentoTeste) { - $parametros = new stdClass(); - $parametros->novoTramiteDeDocumento = new stdClass(); - $parametros->novoTramiteDeDocumento->cabecalho = $this->construirCabecalhoTeste($remetente, $destinatario); - $parametros->novoTramiteDeDocumento->documento = $documentoTeste; - return $servicoPEN->enviarDocumento($parametros); + $parametros = []; + $parametros['cabecalho'] = $this->construirCabecalhoDocumentoTeste($remetente, $destinatario); + $parametros['documento'] = $documentoTeste['documentoEnvio']; + + return $this->enviarDocumentoAPI($parametros); } - private function enviarComponentesDigitaisDoDocumentoAvulso($servicoPEN, $novoTramite, $documentoTeste) + private function enviarComponentesDigitaisDoDocumentoAvulso($novoTramite, $documentoTeste) { - $dadosTramite = $novoTramite->dadosTramiteDeDocumentoCriado; - foreach ($documentoTeste['componenteDigital'] as $item) { - $dadosDoComponenteDigital = new stdClass(); - $dadosDoComponenteDigital->protocolo = $documentoTeste['protocolo']; - $dadosDoComponenteDigital->hashDoComponenteDigital = $item['valorHash']; - $dadosDoComponenteDigital->conteudoDoComponenteDigital = new SoapVar($item['conteudo'], XSD_BASE64BINARY); - $dadosDoComponenteDigital->ticketParaEnvioDeComponentesDigitais = $dadosTramite->ticketParaEnvioDeComponentesDigitais; - - $parametros = new stdClass(); - $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; - $servicoPEN->enviarComponenteDigital($parametros); - } + $parametros = []; + $arrComponentesDigitais = $documentoTeste['componenteEnvio']; + + $dadosDoComponenteDigital['protocolo'] = $documentoTeste['documentoEnvio']['protocolo']; + $dadosDoComponenteDigital['ticketParaEnvioDeComponentesDigitais'] = $novoTramite['ticketParaEnvioDeComponentesDigitais']; + $parametros['dadosDoComponenteDigital'] = $dadosDoComponenteDigital; + + foreach ($arrComponentesDigitais as $componentesDigitais) { + $parametros['dadosDoComponenteDigital']['hashDoComponenteDigital'] = $componentesDigitais['hashDocumento']; + self::$conteudoCompoonenteDigital[$componentesDigitais['hashDocumento']] = $componentesDigitais['conteudo']; + $this->enviarComponenteDigitalAPI($parametros); + } } - private function enviarComponentesDigitaisDoProcesso($servicoPEN, $novoTramite, $processoTeste) + private function enviarComponentesDigitaisDoProcesso($novoTramite, $processoTeste) { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - foreach ($processoTeste['documento'] as $documentoTeste) { - foreach ($documentoTeste['componenteDigital'] as $item) { - $dadosDoComponenteDigital = new stdClass(); - $dadosDoComponenteDigital->protocolo = $processoTeste['protocolo']; - $dadosDoComponenteDigital->hashDoComponenteDigital = $item['valorHash']; - $dadosDoComponenteDigital->conteudoDoComponenteDigital = new SoapVar($item['conteudo'], XSD_BASE64BINARY); - $dadosDoComponenteDigital->ticketParaEnvioDeComponentesDigitais = $dadosTramite->ticketParaEnvioDeComponentesDigitais; - - $parametros = new stdClass(); - $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; - $servicoPEN->enviarComponenteDigital($parametros); + foreach ($processoTeste['documentos'] as $documentoTeste) { + foreach ($documentoTeste['componentesDigitais'] as $item) { + $dadosDoComponenteDigital = []; + $dadosDoComponenteDigital['protocolo'] = $processoTeste['protocolo']; + $dadosDoComponenteDigital['hashDoComponenteDigital'] = $item['hash']['conteudo']; + $dadosDoComponenteDigital['ticketParaEnvioDeComponentesDigitais'] = $novoTramite['ticketParaEnvioDeComponentesDigitais']; + + $parametros['dadosDoComponenteDigital'] = $dadosDoComponenteDigital; + $this->enviarComponenteDigitalAPI($parametros); } } + } - private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) { - $connectionTimeout = 600; - $options = array( - 'soap_version' => SOAP_1_1 - , 'local_cert' => $localCertificado - , 'passphrase' => $senhaCertificado - , 'resolve_wsdl_remote_includes' => true - , 'cache_wsdl'=> BeSimple\SoapCommon\Cache::TYPE_NONE - , 'connection_timeout' => $connectionTimeout - , CURLOPT_TIMEOUT => $connectionTimeout - , CURLOPT_CONNECTTIMEOUT => $connectionTimeout - , 'encoding' => 'UTF-8' - , 'attachment_type' => BeSimple\SoapCommon\Helper::ATTACHMENTS_TYPE_MTOM - , 'ssl' => array( - 'allow_self_signed' => true, - ), - ); - - return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); - + $arrheaders = [ + 'Accept' => '*/*', + 'Content-Type' => 'application/json', + ]; + + $strClientGuzzle = new GuzzleHttp\Client([ + 'base_uri' => PEN_ENDERECO_WEBSERVICE, + 'handler' => GuzzleHttp\HandlerStack::create(), + 'timeout' => 40, + 'headers' => $arrheaders, + 'cert' => [$localCertificado, $senhaCertificado], + ]); + + return $strClientGuzzle; } private function construirCabecalhoTeste($remetente, $destinatario) { - $cabecalho = new stdClass(); - $cabecalho->remetente = new stdClass(); - $cabecalho->remetente->identificacaoDoRepositorioDeEstruturas = $remetente['ID_REP_ESTRUTURAS']; - $cabecalho->remetente->numeroDeIdentificacaoDaEstrutura = $remetente['ID_ESTRUTURA']; - - $cabecalho->destinatario = new stdClass(); - $cabecalho->destinatario->identificacaoDoRepositorioDeEstruturas = $destinatario['ID_REP_ESTRUTURAS']; - $cabecalho->destinatario->numeroDeIdentificacaoDaEstrutura =$destinatario['ID_ESTRUTURA']; - - $cabecalho->urgente = false; - $cabecalho->motivoDaUrgencia = null; - $cabecalho->obrigarEnvioDeTodosOsComponentesDigitais = false; + $cabecalho = [ + 'remetente' => [ + 'identificacaoDoRepositorioDeEstruturas' => $remetente['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $remetente['ID_ESTRUTURA'], + ], + 'destinatario' => [ + 'identificacaoDoRepositorioDeEstruturas' => $destinatario['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $destinatario['ID_ESTRUTURA'], + ], + 'enviarApenasComponentesDigitaisPendentes' => false + ]; + + return $cabecalho; + } + + + private function construirCabecalhoDocumentoTeste($remetente, $destinatario) + { + $cabecalho = [ + 'remetente' => [ + 'identificacaoDoRepositorioDeEstruturas' => $remetente['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $remetente['ID_ESTRUTURA'], + ], + 'destinatarios' => [ + [ + 'identificacaoDoRepositorioDeEstruturas' => $destinatario['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $destinatario['ID_ESTRUTURA'], + ], + ] + ]; + return $cabecalho; } @@ -262,7 +270,7 @@ private function construirMetadadosDocumentoAvulsoTeste($documentoTeste) { $componentes = array(); $listaComponentes = is_array($documentoTeste['ARQUIVO']) ? $documentoTeste['ARQUIVO'] : array($documentoTeste['ARQUIVO']); - + $componenteEnvio = []; foreach ($listaComponentes as $ordem => $caminhoArquivo) { $caminhoArquivo = realpath($caminhoArquivo); $fp = fopen($caminhoArquivo, "rb"); @@ -273,42 +281,54 @@ private function construirMetadadosDocumentoAvulsoTeste($documentoTeste) $nomeArquivo = basename($caminhoArquivo); $componentes[] = array( 'nome' => $nomeArquivo, - 'hash' => new SoapVar("$hashDocumento", XSD_ANYXML), + 'hash' => [ + 'algoritmo' => 'SHA256', + 'conteudo' => $hashDocumento + ], 'tipoDeConteudo' => 'txt', - 'mimeType' => 'text/plain', + "mimeType" => "application/pdf", 'tamanhoEmBytes' => $tamanhoDocumento, 'ordem' => $ordem + 1, + ); - // Chaves abaixo adicionadas apenas para simplificação dos testes - 'valorHash' => $hashDocumento, - 'conteudo' => $conteudo, + // Utilizada exclusivamente para o envio de componentes digitais. + // Inclui o conteúdo do documento anexado, simplificando o processo de integração. + $componenteEnvio[] = array( + 'hashDocumento' => $hashDocumento, + 'conteudo' => $conteudo ); } finally { fclose($fp); } } - return array( - 'protocolo' => '13990.000181/2020-00', + $documentoEnvio = array( + 'protocolo' => '13990.000185/2024-00', 'nivelDeSigilo' => 1, 'descricao' => $documentoTeste['DESCRICAO'], 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', - 'produtor' => array( - 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), + "nome" => "Nome ABC", + "tipo" => "orgaopublico" ), - 'especie' => array( 'codigo' => 42, - 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') + 'nomeNoProdutor' => 'Despacho', ), - - 'interessado' => array( - 'nome' => $documentoTeste['INTERESSADOS'], + 'interessados' => array( + [ + "nome" => $documentoTeste['INTERESSADOS'], + "tipo" => "fisica" + ] ), - 'componenteDigital' => $componentes, + 'componentesDigitais' => $componentes, + ); + + return array( + 'documentoEnvio' => $documentoEnvio, + 'componenteEnvio' => $componenteEnvio ); } @@ -317,8 +337,7 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen $componentes = array(); $listaComponentes = is_array($documentoTeste['ARQUIVO']) ? $documentoTeste['ARQUIVO'] : array($documentoTeste['ARQUIVO']); - foreach ($listaComponentes as $index => $caminhoArquivo) { - $ordemComponente = $index + 1; + foreach ($listaComponentes as $ordemComponente => $caminhoArquivo) { $caminhoArquivo = realpath($caminhoArquivo); $fp = fopen($caminhoArquivo, "rb"); try{ @@ -328,16 +347,17 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen $nomeArquivo = basename($caminhoArquivo); $componentes[] = array( 'nome' => $nomeArquivo, - 'hash' => new SoapVar("$hashDocumento", XSD_ANYXML), + 'hash' => [ + 'algoritmo' => 'SHA256', + 'conteudo' => $hashDocumento + ], 'tipoDeConteudo' => 'txt', - 'mimeType' => 'text/plain', + 'mimeType' => 'application/pdf', 'tamanhoEmBytes' => $tamanhoDocumento, 'ordem' => $ordemComponente, - - // Chaves abaixo adicionadas apenas para simplificação dos testes - 'valorHash' => $hashDocumento, - 'conteudo' => $conteudo, ); + + self::$conteudoCompoonenteDigital[$hashDocumento] = $conteudo; } finally { fclose($fp); } @@ -350,10 +370,9 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'ordem' => $ordemDocumento, - 'produtor' => array( 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), - 'numeroDeIdentificacao' => '999999', + "tipo" => "orgaopublico" ), 'especie' => array( @@ -361,18 +380,29 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), - 'interessado' => array( - 'nome' => $documentoTeste['INTERESSADOS'], + 'interessados' => array( + [ + "nome" => $documentoTeste['INTERESSADOS'], + "tipo" => "fisica" + ] ), - 'componenteDigital' => $componentes, + 'componentesDigitais' => $componentes, + ); + + $componenteEnvio = array( + 'hashDocumento' => $hashDocumento, + 'conteudo' => $conteudo ); if(!is_null($documentoTeste['ORDEM_DOCUMENTO_REFERENCIADO'])){ $documentoDoProcesso['ordemDoDocumentoReferenciado'] = intval($documentoTeste['ORDEM_DOCUMENTO_REFERENCIADO']); } - return $documentoDoProcesso; + return array( + 'documentoDoProcesso' => $documentoDoProcesso, + 'componenteEnvio' => $componenteEnvio + ); } @@ -380,7 +410,8 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest { $metadadosDocumentos = array(); foreach ($documentosTeste as $indice => $documentoTeste) { - $metadadosDocumentos[] = $this->construirMetadadosDocumentoTeste($documentoTeste, $indice + 1); + $documentos = $this->construirMetadadosDocumentoTeste($documentoTeste, $indice + 1); + $metadadosDocumentos[] = $documentos['documentoDoProcesso']; } return array( @@ -392,12 +423,132 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), + 'tipo' => "orgaopublico", ), - 'interessado' => array( - 'nome' => $processoTeste['INTERESSADOS'], + 'interessados' => array( + [ + "nome" => $processoTeste['INTERESSADOS'], + ] ), - 'documento' => $metadadosDocumentos, + 'documentos' => $metadadosDocumentos, ); } + + public function enviarComponenteDigitalAPI($parametros) + { + try { + + $arrParametros = $parametros['dadosDoComponenteDigital']; + $idTicketDeEnvio = $arrParametros['ticketParaEnvioDeComponentesDigitais']; + + $protocolo = $arrParametros['protocolo']; + $hashDoComponenteDigital = $arrParametros['hashDoComponenteDigital']; + + $conteudoComponenteDigital = self::$conteudoCompoonenteDigital[$hashDoComponenteDigital]; + + $queryParams = [ + 'hashDoComponenteDigital' => $hashDoComponenteDigital, + 'protocolo' => $protocolo + ]; + + $endpoint = "tickets-de-envio-de-componente/{$idTicketDeEnvio}/protocolos/componentes-a-enviar"; + + $arrOptions = [ + 'query' => $queryParams, + 'multipart' => [ + [ + 'name' => 'conteudo', + 'contents' => $conteudoComponenteDigital, + 'filename' => 'conteudo.html', + 'headers' => ['Content-Type' => 'text/html'] + ], + ], + ]; + + $response = self::$servicoPEN->request('PUT', $endpoint, $arrOptions); + + return $response; + + } catch (\Exception $e) { + $mensagem = "Falha no envio de de componentes no documento"; + $this->fail($mensagem . " - " . $e->getMessage()); + } + } + + public function receberReciboDeEnvioAPI($parNumIdTramite) + { + $endpoint = "tramites/{$parNumIdTramite}/recibo-de-envio"; + try{ + $parametros = [ + 'IDT' => $parNumIdTramite + ]; + + $response = self::$servicoPEN->request('GET', $endpoint, [ + 'query' => $parametros + ]); + + return json_decode($response->getBody(), true); + } catch (\Exception $e) { + $mensagem = "Falha no recebimento de recibo de trâmite de envio."; + $this->fail($mensagem . " - " . $e->getMessage()); + } + } + + public function enviarProcessoAPI($parametros) + { + try { + $endpoint = "tramites/processo"; + + $response = self::$servicoPEN->request('POST', $endpoint, [ + 'json' => $parametros + ]); + + return json_decode($response->getBody(), true); + + } catch (\Exception $e) { + $mensagem = "Falha no envio de processo"; + $this->fail($mensagem . " - " . $e->getMessage()); + } + } + + + + public function receberReciboDeTramiteAPI($parNumIdTramite) + { + $endpoint = "tramites/{$parNumIdTramite}/recibo"; + try{ + $parametros = [ + 'IDT' => $parNumIdTramite + ]; + + $response = self::$servicoPEN->request('GET', $endpoint, [ + 'json' => $parametros + ]); + + return json_decode($response->getBody(), true); + + } catch (\Exception $e) { + $mensagem = "Falha no recebimento de recibo de trâmite."; + $this->fail($mensagem . " - " . $e->getMessage()); + } + } + + public function enviarDocumentoAPI($parametros) + { + try { + $endpoint = "tramites/documento"; + + $response = self::$servicoPEN->request('POST', $endpoint, [ + 'json' => $parametros + ]); + + return json_decode($response->getBody(), true); + + } catch (\Exception $e) { + $mensagem = "Falha no envio de documento avulso"; + $this->fail($mensagem . " - " . $e->getMessage()); + } + } + } diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php b/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php index 48982791b..60d625833 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php @@ -19,6 +19,7 @@ class TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes extends Fixt public static $documentoZip; public static $totalDocumentos; + public static $conteudoCompoonenteDigital; /** @@ -64,17 +65,17 @@ public function test_recebimento_processo_com_3_componentes_digitais() // Simular um trâmite chamando a API do Barramento diretamente $metadadosProcessoTeste = $this->construirMetadadosProcessoTeste(self::$processoTeste, array(self::$documentoZip)); - $novoTramite = $this->enviarMetadadosProcesso(self::$servicoPEN, $remetente, $destinatario, $metadadosProcessoTeste); + $novoTramite = $this->enviarMetadadosProcesso($remetente, $destinatario, $metadadosProcessoTeste); - $this->enviarComponentesDigitaisDoProcesso(self::$servicoPEN, $novoTramite, $metadadosProcessoTeste); - $reciboTramite = $this->receberReciboEnvioProcesso(self::$servicoPEN, $novoTramite); + $this->enviarComponentesDigitaisDoProcesso($novoTramite, $metadadosProcessoTeste); + $reciboTramite = $this->receberReciboEnvio($novoTramite); //Verificar recebimento de novo processo administrativo contendo documento avulso enviado $this->assertNotNull($novoTramite); $this->assertNotNull($reciboTramite); $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, array(self::$documentoZip), $destinatario); - $this->receberReciboTramite(self::$servicoPEN, $novoTramite); + $this->receberReciboTramite($novoTramite); } @@ -126,119 +127,81 @@ public function test_devolucao_processo_para_destino_2() } - private function receberReciboEnvioDocumentoAvulso($servicoPEN, $novoTramite) + private function receberReciboEnvio($novoTramite) { - $dadosTramite = $novoTramite->dadosTramiteDeDocumentoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->tramite->IDT; - return $servicoPEN->receberReciboDeEnvio($parametros); - } - - private function receberReciboEnvioProcesso($servicoPEN, $novoTramite) - { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->IDT; - return $servicoPEN->receberReciboDeEnvio($parametros); - } + // Verifica a origem do envio para determinar se foi realizado por um trâmite de documento avulso ou dentro de um processo. + if (isset($novoTramite['tramites'])) { + $numIDT = $novoTramite['tramites'][0]['IDT']; + } else { + $numIDT = $novoTramite['IDT']; + } - private function receberReciboTramite($servicoPEN, $novoTramite) - { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - $parametros = new StdClass(); - $parametros->IDT = $dadosTramite->IDT; - return $servicoPEN->receberReciboDeTramite($parametros); + return $this->receberReciboDeEnvioAPI($numIDT); } - private function enviarMetadadosProcesso($servicoPEN, $remetente, $destinatario, $processoTeste) + private function receberReciboTramite($novoTramite) { - $parametros = new stdClass(); - $parametros->novoTramiteDeProcesso = new stdClass(); - $parametros->novoTramiteDeProcesso->cabecalho = $this->construirCabecalhoTeste($remetente, $destinatario); - $parametros->novoTramiteDeProcesso->processo = $processoTeste; - return $servicoPEN->enviarProcesso($parametros); + $idt = $novoTramite['IDT']; + return $this->receberReciboDeTramiteAPI($idt); } - private function enviarMetadadosDocumento($servicoPEN, $remetente, $destinatario, $documentoTeste) + private function enviarMetadadosProcesso($remetente, $destinatario, $processoTeste) { - $parametros = new stdClass(); - $parametros->novoTramiteDeDocumento = new stdClass(); - $parametros->novoTramiteDeDocumento->cabecalho = $this->construirCabecalhoTeste($remetente, $destinatario); - $parametros->novoTramiteDeDocumento->documento = $documentoTeste; - return $servicoPEN->enviarDocumento($parametros); - } + $parametros = []; + $parametros['cabecalho'] = $this->construirCabecalhoTeste($remetente, $destinatario); + $parametros['processo'] = $processoTeste; - private function enviarComponentesDigitaisDoDocumentoAvulso($servicoPEN, $novoTramite, $documentoTeste) - { - $dadosTramite = $novoTramite->dadosTramiteDeDocumentoCriado; - foreach ($documentoTeste['componenteDigital'] as $item) { - $dadosDoComponenteDigital = new stdClass(); - $dadosDoComponenteDigital->protocolo = $documentoTeste['protocolo']; - $dadosDoComponenteDigital->hashDoComponenteDigital = $item['valorHash']; - $dadosDoComponenteDigital->conteudoDoComponenteDigital = new SoapVar($item['conteudo'], XSD_BASE64BINARY); - $dadosDoComponenteDigital->ticketParaEnvioDeComponentesDigitais = $dadosTramite->ticketParaEnvioDeComponentesDigitais; - - $parametros = new stdClass(); - $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; - $servicoPEN->enviarComponenteDigital($parametros); - } + return $this->enviarProcessoAPI($parametros); } - private function enviarComponentesDigitaisDoProcesso($servicoPEN, $novoTramite, $processoTeste) + private function enviarComponentesDigitaisDoProcesso($novoTramite, $processoTeste) { - $dadosTramite = $novoTramite->dadosTramiteDeProcessoCriado; - foreach ($processoTeste['documento'] as $documentoTeste) { - foreach ($documentoTeste['componenteDigital'] as $item) { - $dadosDoComponenteDigital = new stdClass(); - $dadosDoComponenteDigital->protocolo = $processoTeste['protocolo']; - $dadosDoComponenteDigital->hashDoComponenteDigital = $item['valorHash']; - $dadosDoComponenteDigital->conteudoDoComponenteDigital = new SoapVar($item['conteudo'], XSD_BASE64BINARY); - $dadosDoComponenteDigital->ticketParaEnvioDeComponentesDigitais = $dadosTramite->ticketParaEnvioDeComponentesDigitais; - - $parametros = new stdClass(); - $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; - $servicoPEN->enviarComponenteDigital($parametros); + foreach ($processoTeste['documentos'] as $documentoTeste) { + foreach ($documentoTeste['componentesDigitais'] as $item) { + $dadosDoComponenteDigital = []; + $dadosDoComponenteDigital['protocolo'] = $processoTeste['protocolo']; + $dadosDoComponenteDigital['hashDoComponenteDigital'] = $item['hash']['conteudo']; + $dadosDoComponenteDigital['ticketParaEnvioDeComponentesDigitais'] = $novoTramite['ticketParaEnvioDeComponentesDigitais']; + + $parametros['dadosDoComponenteDigital'] = $dadosDoComponenteDigital; + $this->enviarComponenteDigitalAPI($parametros); } } + } - private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) + private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) { - $connectionTimeout = 600; - $options = array( - 'soap_version' => SOAP_1_1 - , 'local_cert' => $localCertificado - , 'passphrase' => $senhaCertificado - , 'resolve_wsdl_remote_includes' => true - , 'cache_wsdl'=> BeSimple\SoapCommon\Cache::TYPE_NONE - , 'connection_timeout' => $connectionTimeout - , CURLOPT_TIMEOUT => $connectionTimeout - , CURLOPT_CONNECTTIMEOUT => $connectionTimeout - , 'encoding' => 'UTF-8' - , 'attachment_type' => BeSimple\SoapCommon\Helper::ATTACHMENTS_TYPE_MTOM - , 'ssl' => array( - 'allow_self_signed' => true, - ), - ); - - return new BeSimple\SoapClient\SoapClient(PEN_ENDERECO_WEBSERVICE, $options); - + $arrheaders = [ + 'Accept' => '*/*', + 'Content-Type' => 'application/json', + ]; + + $strClientGuzzle = new GuzzleHttp\Client([ + 'base_uri' => PEN_ENDERECO_WEBSERVICE, + 'timeout' => 40, + 'headers' => $arrheaders, + 'cert' => [$localCertificado, $senhaCertificado], + ]); + + return $strClientGuzzle; } + private function construirCabecalhoTeste($remetente, $destinatario) { - $cabecalho = new stdClass(); - $cabecalho->remetente = new stdClass(); - $cabecalho->remetente->identificacaoDoRepositorioDeEstruturas = $remetente['ID_REP_ESTRUTURAS']; - $cabecalho->remetente->numeroDeIdentificacaoDaEstrutura = $remetente['ID_ESTRUTURA']; - - $cabecalho->destinatario = new stdClass(); - $cabecalho->destinatario->identificacaoDoRepositorioDeEstruturas = $destinatario['ID_REP_ESTRUTURAS']; - $cabecalho->destinatario->numeroDeIdentificacaoDaEstrutura =$destinatario['ID_ESTRUTURA']; - - $cabecalho->urgente = false; - $cabecalho->motivoDaUrgencia = null; - $cabecalho->obrigarEnvioDeTodosOsComponentesDigitais = false; + $cabecalho = [ + 'remetente' => [ + 'identificacaoDoRepositorioDeEstruturas' => $remetente['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $remetente['ID_ESTRUTURA'], + ], + 'destinatario' => [ + 'identificacaoDoRepositorioDeEstruturas' => $destinatario['ID_REP_ESTRUTURAS'], + 'numeroDeIdentificacaoDaEstrutura' => $destinatario['ID_ESTRUTURA'], + ], + 'enviarApenasComponentesDigitaisPendentes' => false + ]; + return $cabecalho; } @@ -252,67 +215,12 @@ public function gerarDadosDocumentoExternoTeste($contextoProducao, $nomesArquivo } - private function construirMetadadosDocumentoAvulsoTeste($documentoTeste) - { - $componentes = array(); - $listaComponentes = is_array($documentoTeste['ARQUIVO']) ? $documentoTeste['ARQUIVO'] : array($documentoTeste['ARQUIVO']); - - foreach ($listaComponentes as $ordem => $caminhoArquivo) { - $caminhoArquivo = realpath($caminhoArquivo); - $fp = fopen($caminhoArquivo, "rb"); - try{ - $conteudo = fread($fp, filesize($caminhoArquivo)); - $tamanhoDocumento = strlen($conteudo); - $hashDocumento = base64_encode(hash(self::ALGORITMO_HASH_DOCUMENTO, $conteudo, true)); - $nomeArquivo = basename($caminhoArquivo); - $componentes[] = array( - 'nome' => $nomeArquivo, - 'hash' => new SoapVar("$hashDocumento", XSD_ANYXML), - 'tipoDeConteudo' => 'txt', - 'mimeType' => 'text/plain', - 'tamanhoEmBytes' => $tamanhoDocumento, - 'ordem' => $ordem + 1, - - // Chaves abaixo adicionadas apenas para simplificação dos testes - 'valorHash' => $hashDocumento, - 'conteudo' => $conteudo, - ); - } finally { - fclose($fp); - } - } - - return array( - 'protocolo' => '13990.000181/2020-00', - 'nivelDeSigilo' => 1, - 'descricao' => $documentoTeste['DESCRICAO'], - 'dataHoraDeProducao' => '2017-05-15T03:41:13', - 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', - - 'produtor' => array( - 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), - ), - - 'especie' => array( - 'codigo' => 42, - 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') - ), - - 'interessado' => array( - 'nome' => $documentoTeste['INTERESSADOS'], - ), - - 'componenteDigital' => $componentes, - ); - } - private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumento) { $componentes = array(); $listaComponentes = is_array($documentoTeste['ARQUIVO']) ? $documentoTeste['ARQUIVO'] : array($documentoTeste['ARQUIVO']); - foreach ($listaComponentes as $index => $caminhoArquivo) { - $ordemComponente = $index + 1; + foreach ($listaComponentes as $ordemComponente => $caminhoArquivo) { $caminhoArquivo = realpath($caminhoArquivo); $fp = fopen($caminhoArquivo, "rb"); try{ @@ -322,16 +230,17 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen $nomeArquivo = basename($caminhoArquivo); $componentes[] = array( 'nome' => $nomeArquivo, - 'hash' => new SoapVar("$hashDocumento", XSD_ANYXML), + 'hash' => [ + 'algoritmo' => 'SHA256', + 'conteudo' => $hashDocumento + ], 'tipoDeConteudo' => 'txt', - 'mimeType' => 'text/plain', + 'mimeType' => 'application/pdf', 'tamanhoEmBytes' => $tamanhoDocumento, 'ordem' => $ordemComponente, - - // Chaves abaixo adicionadas apenas para simplificação dos testes - 'valorHash' => $hashDocumento, - 'conteudo' => $conteudo, ); + + self::$conteudoCompoonenteDigital[$hashDocumento] = $conteudo; } finally { fclose($fp); } @@ -344,10 +253,9 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'dataHoraDeProducao' => '2017-05-15T03:41:13', 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'ordem' => $ordemDocumento, - 'produtor' => array( 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), - 'numeroDeIdentificacao' => '999999', + "tipo" => "orgaopublico" ), 'especie' => array( @@ -355,18 +263,29 @@ private function construirMetadadosDocumentoTeste($documentoTeste, $ordemDocumen 'nomeNoProdutor' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1') ), - 'interessado' => array( - 'nome' => $documentoTeste['INTERESSADOS'], + 'interessados' => array( + [ + "nome" => $documentoTeste['INTERESSADOS'], + "tipo" => "fisica" + ] ), - 'componenteDigital' => $componentes, + 'componentesDigitais' => $componentes, + ); + + $componenteEnvio = array( + 'hashDocumento' => $hashDocumento, + 'conteudo' => $conteudo ); if(!is_null($documentoTeste['ORDEM_DOCUMENTO_REFERENCIADO'])){ $documentoDoProcesso['ordemDoDocumentoReferenciado'] = intval($documentoTeste['ORDEM_DOCUMENTO_REFERENCIADO']); } - return $documentoDoProcesso; + return array( + 'documentoDoProcesso' => $documentoDoProcesso, + 'componenteEnvio' => $componenteEnvio + ); } @@ -374,7 +293,8 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest { $metadadosDocumentos = array(); foreach ($documentosTeste as $indice => $documentoTeste) { - $metadadosDocumentos[] = $this->construirMetadadosDocumentoTeste($documentoTeste, $indice + 1); + $documentos = $this->construirMetadadosDocumentoTeste($documentoTeste, $indice + 1); + $metadadosDocumentos[] = $documentos['documentoDoProcesso']; } return array( @@ -386,12 +306,132 @@ private function construirMetadadosProcessoTeste($processoTeste, $documentosTest 'dataHoraDeRegistro' => '2013-12-21T09:32:42-02:00', 'produtor' => array( 'nome' => mb_convert_encoding(util::random_string(20), 'UTF-8', 'ISO-8859-1'), + 'tipo' => "orgaopublico", ), - 'interessado' => array( - 'nome' => $processoTeste['INTERESSADOS'], + 'interessados' => array( + [ + "nome" => $processoTeste['INTERESSADOS'], + ] ), - 'documento' => $metadadosDocumentos, + 'documentos' => $metadadosDocumentos, ); } + + public function enviarComponenteDigitalAPI($parametros) + { + try { + + $arrParametros = $parametros['dadosDoComponenteDigital']; + $idTicketDeEnvio = $arrParametros['ticketParaEnvioDeComponentesDigitais']; + + $protocolo = $arrParametros['protocolo']; + $hashDoComponenteDigital = $arrParametros['hashDoComponenteDigital']; + + $conteudoComponenteDigital = self::$conteudoCompoonenteDigital[$hashDoComponenteDigital]; + + $queryParams = [ + 'hashDoComponenteDigital' => $hashDoComponenteDigital, + 'protocolo' => $protocolo + ]; + + $endpoint = "tickets-de-envio-de-componente/{$idTicketDeEnvio}/protocolos/componentes-a-enviar"; + + $arrOptions = [ + 'query' => $queryParams, + 'multipart' => [ + [ + 'name' => 'conteudo', + 'contents' => $conteudoComponenteDigital, + 'filename' => 'conteudo.html', + 'headers' => ['Content-Type' => 'text/html'] + ], + ], + ]; + + $response = self::$servicoPEN->request('PUT', $endpoint, $arrOptions); + + return $response; + + } catch (\Exception $e) { + $mensagem = "Falha no envio de de componentes no documento"; + $this->fail($mensagem . " - " . $e->getMessage()); + } + } + + public function receberReciboDeEnvioAPI($parNumIdTramite) + { + $endpoint = "tramites/{$parNumIdTramite}/recibo-de-envio"; + try{ + $parametros = [ + 'IDT' => $parNumIdTramite + ]; + + $response = self::$servicoPEN->request('GET', $endpoint, [ + 'query' => $parametros + ]); + + return json_decode($response->getBody(), true); + } catch (\Exception $e) { + $mensagem = "Falha no recebimento de recibo de trâmite de envio."; + $this->fail($mensagem . " - " . $e->getMessage()); + } + } + + public function enviarProcessoAPI($parametros) + { + try { + $endpoint = "tramites/processo"; + + $response = self::$servicoPEN->request('POST', $endpoint, [ + 'json' => $parametros + ]); + + return json_decode($response->getBody(), true); + + } catch (\Exception $e) { + $mensagem = "Falha no envio de processo"; + $this->fail($mensagem . " - " . $e->getMessage()); + } + } + + + + public function receberReciboDeTramiteAPI($parNumIdTramite) + { + $endpoint = "tramites/{$parNumIdTramite}/recibo"; + try{ + $parametros = [ + 'IDT' => $parNumIdTramite + ]; + + $response = self::$servicoPEN->request('GET', $endpoint, [ + 'json' => $parametros + ]); + + return json_decode($response->getBody(), true); + + } catch (\Exception $e) { + $mensagem = "Falha no recebimento de recibo de trâmite."; + $this->fail($mensagem . " - " . $e->getMessage()); + } + } + + public function enviarDocumentoAPI($parametros) + { + try { + $endpoint = "tramites/documento"; + + $response = self::$servicoPEN->request('POST', $endpoint, [ + 'json' => $parametros + ]); + + return json_decode($response->getBody(), true); + + } catch (\Exception $e) { + $mensagem = "Falha no envio de documento avulso"; + $this->fail($mensagem . " - " . $e->getMessage()); + } + } + } From 186b2bcac53fe9b3019a5a70150208713c10fc88 Mon Sep 17 00:00:00 2001 From: mateussbh Date: Mon, 20 Jan 2025 17:22:41 -0300 Subject: [PATCH 17/26] =?UTF-8?q?fix:=20Corre=C3=A7=C3=A3o=20para=20que=20?= =?UTF-8?q?este=20teste=20n=C3=A3o=20passe=20a=20quebrar=20outros,=20pelo?= =?UTF-8?q?=20fato=20de=20n=C3=A3o=20carregar=20a=20unidade=20filha=20via?= =?UTF-8?q?=20fixture.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TramiteProcessoValidacaoBotaoIncluirTest.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tests_sei41/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php b/tests_sei41/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php index 3827ee4b8..4c84b811f 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoValidacaoBotaoIncluirTest.php @@ -36,13 +36,18 @@ public static function tearDownAfterClass() :void { putenv("DATABASE_HOST=org1-database"); $penMapUnidadesFixture = new \PenMapUnidadesFixture(); $penMapUnidadesFixture->carregar([ + 'IdUnidade' => 110000001, 'Id' => CONTEXTO_ORGAO_A_ID_ESTRUTURA, 'Sigla' => CONTEXTO_ORGAO_A_SIGLA_ESTRUTURA, 'Nome' => CONTEXTO_ORGAO_A_NOME_UNIDADE, ]); - - $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); - $bancoOrgaoA->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values (?, ?)", array('110000002', CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA)); + + $penMapUnidadesFixture->carregar([ + 'IdUnidade' => 110000002, + 'Id' => CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA, + 'Sigla' => CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA, + 'Nome' => CONTEXTO_ORGAO_A_NOME_UNIDADE_SECUNDARIA, + ]); } /** From 5fcbd396379d8721d16fddb849ca4c9180c54634 Mon Sep 17 00:00:00 2001 From: mateussbh Date: Mon, 20 Jan 2025 17:23:26 -0300 Subject: [PATCH 18/26] =?UTF-8?q?fix:=20Corre=C3=A7=C3=A3o=20de=20teste=20?= =?UTF-8?q?que=20d=C3=A1=20erro=20ao=20n=C3=A3o=20passar=20o=20c=C3=B3digo?= =?UTF-8?q?=20da=20unidade=20na=20cria=C3=A7=C3=A3o=20de=20unidade=20via?= =?UTF-8?q?=20fixture.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests_sei41/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php b/tests_sei41/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php index f7f85352a..27589ece7 100644 --- a/tests_sei41/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php +++ b/tests_sei41/funcional/tests/MapeamentoDeUnidadesComLimitacaoDeRepositoriosTest.php @@ -23,6 +23,7 @@ function setUp(): void $penMapUnidadesFixture = new \PenMapUnidadesFixture(); $this->penMapUnidadesFixture = $penMapUnidadesFixture->carregar([ + 'IdUnidade' => 110000001, 'Id' => self::$remetente['ID_ESTRUTURA'], 'Sigla' => self::$remetente['SIGLA_ESTRUTURA'], 'Nome' => self::$remetente['NOME_UNIDADE'] From d50a027c89af214382dcb2d2fe777c034a08e989 Mon Sep 17 00:00:00 2001 From: mateussbh Date: Mon, 20 Jan 2025 17:23:57 -0300 Subject: [PATCH 19/26] =?UTF-8?q?fix:=20Corre=C3=A7=C3=A3o=20de=20css=20em?= =?UTF-8?q?=20padr=C3=A3o=20criado=20de=20estilo=20para=20pagina=C3=A7?= =?UTF-8?q?=C3=A3o=20e=20tabelas.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pen_procedimento_expedido_listar.php | 10 +++------- src/pen_tramita_em_bloco_protocolo_listar.php | 2 +- src/pen_tramite_bloco_listar.php | 12 ++++-------- 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/src/pen_procedimento_expedido_listar.php b/src/pen_procedimento_expedido_listar.php index a1492e0de..7bea74c8f 100755 --- a/src/pen_procedimento_expedido_listar.php +++ b/src/pen_procedimento_expedido_listar.php @@ -47,7 +47,7 @@ $strSumarioTabela = 'Tabela de Processos'; $strCaptionTabela = 'Processos'; - $strResultado .= "" . "\n"; + $strResultado .= '
' . "\n"; $strResultado .= ''; $strResultado .= ""; @@ -205,7 +205,7 @@ } .dataTables_paginate .paginate_button.current { - background-color: var(--color-primary-default); + background-color: var(--infra-esquema-cor-clara); color: #fff; } @@ -214,13 +214,9 @@ position: absolute; opacity: 0; } - #frmProcedimentoExpedido th.infraTh { - color: #ECF0F1; - background: #155f9b; - } + #frmProcedimentoExpedido #tblBlocos_wrapper label:first-of-type{font-size: 12px;} #frmProcedimentoExpedido #tblBlocos_wrapper select:first-of-type{font-size: 11px;} - #frmProcedimentoExpedido #tblBlocos{border-collapse: collapse;} montarJavaScript(); ?> diff --git a/src/pen_tramita_em_bloco_protocolo_listar.php b/src/pen_tramita_em_bloco_protocolo_listar.php index 71b5edcb9..fabbd181d 100755 --- a/src/pen_tramita_em_bloco_protocolo_listar.php +++ b/src/pen_tramita_em_bloco_protocolo_listar.php @@ -269,7 +269,7 @@ } .dataTables_paginate .paginate_button.current { - background-color: var(--color-primary-default); + background-color: var(--infra-esquema-cor-clara); color: #fff; } diff --git a/src/pen_tramite_bloco_listar.php b/src/pen_tramite_bloco_listar.php index 9f0ad0d86..49817e525 100644 --- a/src/pen_tramite_bloco_listar.php +++ b/src/pen_tramite_bloco_listar.php @@ -166,7 +166,7 @@ $strSumarioTabela = 'Tabela de Blocos Tramitados.'; $strCaptionTabela = 'Blocos'; - $strResultado = "
' . $objPaginaSEI->gerarCaptionTabela($strCaptionTabela, $numRegistros) . '
" . "\n"; + $strResultado = '
' . "\n"; $strResultado .= ''; $strResultado .= ""; $strResultado .= '' . "\n"; @@ -340,7 +340,7 @@ } .dataTables_paginate .paginate_button.current { - background-color: var(--color-primary-default); + background-color: var(--infra-esquema-cor-clara); color: #fff; } @@ -348,14 +348,10 @@ #tblBlocos_filter { position: absolute; opacity: 0; - } - #frmBlocoLista th.infraTh { - color: #ECF0F1; - background: #155f9b; - } + } + #frmBlocoLista #tblBlocos_wrapper label:first-of-type{font-size: 12px;} #frmBlocoLista #tblBlocos_wrapper select:first-of-type{font-size: 11px;} - #frmBlocoLista #tblBlocos{border-collapse: collapse;} montarJavaScript(); $acaoOrigem=$_GET['acao_origem']; ?> From 4bc5887d6dd5dc8a50e22ed76331b57b26c96a06 Mon Sep 17 00:00:00 2001 From: mateussbh Date: Mon, 20 Jan 2025 17:46:25 -0300 Subject: [PATCH 20/26] =?UTF-8?q?chore:=20permite=20manter=20o=20valor=20d?= =?UTF-8?q?a=20vari=C3=A1vel=20HOST=5FURL,=20caso=20contr=C3=A1rio,=20no?= =?UTF-8?q?=20processo=20de=20instala=C3=A7=C3=A3o=20do=20container=20de?= =?UTF-8?q?=20testes,=20o=20script=20de=20atualiza=C3=A7=C3=A3o=20de=20end?= =?UTF-8?q?ere=C3=A7os=20de=20hosts=20para=20trocar=20de=20localhost=20par?= =?UTF-8?q?a=20org1-http=20e=20org2-http=20na=20base=20do=20SIP=20n=C3=A3o?= =?UTF-8?q?=20=C3=A9=20realizado=20com=20sucesso.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests_sei41/funcional/docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/tests_sei41/funcional/docker-compose.yml b/tests_sei41/funcional/docker-compose.yml index b33b69483..c05a2d2e9 100755 --- a/tests_sei41/funcional/docker-compose.yml +++ b/tests_sei41/funcional/docker-compose.yml @@ -88,6 +88,7 @@ services: - SIP_DATABASE_NAME=${SIP_DATABASE_NAME} - SIP_DATABASE_USER=${SIP_DATABASE_USER} - SIP_DATABASE_PASSWORD=${SIP_DATABASE_PASSWORD} + - HOST_URL=http://${ORG1_HOSTNAME}:${ORG1_PORT} extra_hosts: - "host.docker.internal:host-gateway" links: From 391648adb07bc08888eae1a3fd55e6e968f50fea Mon Sep 17 00:00:00 2001 From: mateussbh Date: Tue, 21 Jan 2025 15:44:05 -0300 Subject: [PATCH 21/26] =?UTF-8?q?fix:=20corre=C3=A7=C3=A3o=20na=20defini?= =?UTF-8?q?=C3=A7=C3=A3o=20de=20destinat=C3=A1rio,=20que=20fazia=20o=20tes?= =?UTF-8?q?te=20quebrar.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php index a307d83c1..2ae840dca 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoContendoDocumentoExternoMesmoOrgaoTest.php @@ -30,7 +30,6 @@ public function test_tramitar_processo_contendo_documento_gerado() //Configuração da unidade destinatário como outra unidade do mesmo órgão self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario['SIGLA_UNIDADE'] = self::$remetente['SIGLA_UNIDADE_SECUNDARIA']; self::$destinatario['NOME_UNIDADE'] = self::$remetente['NOME_UNIDADE_SECUNDARIA']; self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'] = self::$remetente['SIGLA_UNIDADE_SECUNDARIA_HIERARQUIA']; @@ -79,6 +78,8 @@ public function test_verificar_origem_processo_contendo_documento_gerado() */ public function test_verificar_destino_processo_contendo_documento_gerado() { + + self::$destinatario['SIGLA_UNIDADE'] = self::$remetente['SIGLA_UNIDADE_SECUNDARIA']; $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, self::$documentoTeste, self::$destinatario); } } From 4b5dc218370389b7bc40b9df8a9d749f24001ac6 Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Tue, 21 Jan 2025 17:47:39 -0300 Subject: [PATCH 22/26] =?UTF-8?q?chore:=20phpcs=20e=20defini=C3=A7=C3=A3o?= =?UTF-8?q?=20fixa=20de=20tomeout=20para=20testes=20automatizados=20com=20?= =?UTF-8?q?rest=20(#779)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: phpcs e definição fixa de tomeout para testes automatizados * chore: atualizar analise phpcs para php-8.2 --- .github/workflows/phpcs.yml | 2 +- phpcs.xml | 2 +- src/rn/ProcessoEletronicoRN.php | 67 +++++++++---------- src/rn/ReceberProcedimentoRN.php | 16 ++--- .../funcional/tests/CenarioBaseTestCase.php | 2 + ...cebimentoRecusaJustificativaGrandeTest.php | 7 +- ...ramiteProcessoComDocumentoRestritoTest.php | 1 - ...TramiteRecebimentoDocumentoAnexadoTest.php | 2 +- .../TramiteRecebimentoDocumentoAvulsoTest.php | 2 +- ...eRecebimentoInteressadosDuplicadosTest.php | 5 +- ...ecebimentoMultiplosComponentesDigitais.php | 5 +- ...plosComponentesDigitaisApenasPendentes.php | 4 +- 12 files changed, 54 insertions(+), 61 deletions(-) diff --git a/.github/workflows/phpcs.yml b/.github/workflows/phpcs.yml index 4eff7715a..a9b933e47 100755 --- a/.github/workflows/phpcs.yml +++ b/.github/workflows/phpcs.yml @@ -12,7 +12,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: '7.3' + php-version: '8.2' coverage: none tools: composer diff --git a/phpcs.xml b/phpcs.xml index 66b3cfdf2..90002227a 100755 --- a/phpcs.xml +++ b/phpcs.xml @@ -6,7 +6,7 @@ - + src tests diff --git a/src/rn/ProcessoEletronicoRN.php b/src/rn/ProcessoEletronicoRN.php index 204a275e4..e0f04698e 100755 --- a/src/rn/ProcessoEletronicoRN.php +++ b/src/rn/ProcessoEletronicoRN.php @@ -142,11 +142,6 @@ protected function inicializarObjInfraIBanco() return BancoSEI::getInstance(); } - - /** - * Construtor do objeto SoapClien utilizado para comunicação Webservice - * - */ private function getObjPenWs() { if (InfraString::isBolVazia($this->strEnderecoWebService)) { @@ -1536,9 +1531,9 @@ private function montarDadosMaisDeUmComponenteDigital($objDocumento, $parStrNume foreach ($arrayComponentesDigitais as $indice => $objComponenteDigital){ - if (is_array($objComponenteDigital)) { - $objComponenteDigital = (object) $objComponenteDigital; - } + if (is_array($objComponenteDigital)) { + $objComponenteDigital = (object) $objComponenteDigital; + } $contComponentes++; $objComponenteDigitalDTO = new ComponenteDigitalDTO(); @@ -1568,18 +1563,18 @@ private function montarDadosMaisDeUmComponenteDigital($objDocumento, $parStrNume $objComponenteDigitalDTO->setStrDadosComplementares($objComponenteDigital->dadosComplementaresDoTipoDeArquivo); //Registrar componente digital necessita ser enviado pelo trâmite específico //TODO: Teste $parObjComponentesDigitaisSolicitados aqui - if(isset($parObjComponentesDigitaisSolicitados)) { - $arrObjItensSolicitados = isset($parObjComponentesDigitaisSolicitados) ? $parObjComponentesDigitaisSolicitados : array($parObjComponentesDigitaisSolicitados); - foreach ($arrObjItensSolicitados as $objItemSolicitado) { - if(!is_null($objItemSolicitado)){ - $objItemSolicitado['hashes'] = is_array($objItemSolicitado['hashes']) ? $objItemSolicitado['hashes'] : array($objItemSolicitado['hashes']); + if(isset($parObjComponentesDigitaisSolicitados)) { + $arrObjItensSolicitados = isset($parObjComponentesDigitaisSolicitados) ? $parObjComponentesDigitaisSolicitados : array($parObjComponentesDigitaisSolicitados); + foreach ($arrObjItensSolicitados as $objItemSolicitado) { + if(!is_null($objItemSolicitado)){ + $objItemSolicitado['hashes'] = is_array($objItemSolicitado['hashes']) ? $objItemSolicitado['hashes'] : array($objItemSolicitado['hashes']); - if($objItemSolicitado['protocolo'] == $objComponenteDigitalDTO->getStrProtocolo() && in_array($strHashConteudo, $objItemSolicitado['hashes']) && !$objDocumento->retirado) { - $objComponenteDigitalDTO->setStrSinEnviar("S"); - } + if($objItemSolicitado['protocolo'] == $objComponenteDigitalDTO->getStrProtocolo() && in_array($strHashConteudo, $objItemSolicitado['hashes']) && !$objDocumento->retirado) { + $objComponenteDigitalDTO->setStrSinEnviar("S"); } } } + } //TODO: Avaliar dados do tamanho do documento em bytes salvo na base de dados $objComponenteDigitalDTO->setNumTamanho($objComponenteDigital->tamanhoEmBytes); @@ -2323,14 +2318,14 @@ public static function desbloquearProcesso($parDblIdProcedimento) public static function comparacaoOrdemAjustadaDocumentos($parDocumento1, $parDocumento2) { - if (is_array($parDocumento1)){ - $numOrdemDocumento1 = isset($parDocumento1['ordemAjustada']) ? intval($parDocumento1['ordemAjustada']) : intval($parDocumento1['ordem']); - $numOrdemDocumento2 = isset($parDocumento2['ordemAjustada']) ? intval($parDocumento2['ordemAjustada']) : intval($parDocumento2['ordem']); - } - else{ - $numOrdemDocumento1 = isset($parDocumento1->ordemAjustada) ? intval($parDocumento1->ordemAjustada) : intval($parDocumento1->ordem); - $numOrdemDocumento2 = isset($parDocumento2->ordemAjustada) ? intval($parDocumento2->ordemAjustada) : intval($parDocumento2->ordem); - } + if (is_array($parDocumento1)){ + $numOrdemDocumento1 = isset($parDocumento1['ordemAjustada']) ? intval($parDocumento1['ordemAjustada']) : intval($parDocumento1['ordem']); + $numOrdemDocumento2 = isset($parDocumento2['ordemAjustada']) ? intval($parDocumento2['ordemAjustada']) : intval($parDocumento2['ordem']); + } + else{ + $numOrdemDocumento1 = isset($parDocumento1->ordemAjustada) ? intval($parDocumento1->ordemAjustada) : intval($parDocumento1->ordem); + $numOrdemDocumento2 = isset($parDocumento2->ordemAjustada) ? intval($parDocumento2->ordemAjustada) : intval($parDocumento2->ordem); + } return $numOrdemDocumento1 - $numOrdemDocumento2; } @@ -2338,13 +2333,13 @@ public static function comparacaoOrdemAjustadaDocumentos($parDocumento1, $parDoc public static function comparacaoOrdemDocumentos($parDocumento1, $parDocumento2) { - if (is_array($parDocumento1)) { - $parDocumento1 = (object) $parDocumento1; - } + if (is_array($parDocumento1)) { + $parDocumento1 = (object) $parDocumento1; + } - if (is_array($parDocumento2)) { - $parDocumento2 = (object) $parDocumento2; - } + if (is_array($parDocumento2)) { + $parDocumento2 = (object) $parDocumento2; + } $numOrdemDocumento1 = intval($parDocumento1->ordem); $numOrdemDocumento2 = intval($parDocumento2->ordem); @@ -2353,13 +2348,13 @@ public static function comparacaoOrdemDocumentos($parDocumento1, $parDocumento2) public static function comparacaoOrdemComponenteDigitais($parComponenteDigital1, $parComponenteDigital2) { - if (is_array($parComponenteDigital1)) { - $parComponenteDigital1 = (object) $parComponenteDigital1; - } + if (is_array($parComponenteDigital1)) { + $parComponenteDigital1 = (object) $parComponenteDigital1; + } - if (is_array($parComponenteDigital2)) { - $parComponenteDigital2 = (object) $parComponenteDigital2; - } + if (is_array($parComponenteDigital2)) { + $parComponenteDigital2 = (object) $parComponenteDigital2; + } $numOrdemComponenteDigital1 = intval($parComponenteDigital1->ordem); $numOrdemComponenteDigital2 = intval($parComponenteDigital2->ordem); diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index 8b208e4d4..6f9d628de 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -2844,16 +2844,16 @@ private function criarDiretorioAnexo($parObjAnexoDTO) private function adicionarObservacoesSobreNumeroDocumento($parObjDocumento) { $arrObjObservacoes = array(); - if (is_array($parObjDocumento->produtor)) { - $parObjDocumento->produtor = (object) $parObjDocumento->produtor; - } + if (is_array($parObjDocumento->produtor)) { + $parObjDocumento->produtor = (object) $parObjDocumento->produtor; + } $strNumeroDocumentoOrigem = isset($parObjDocumento->protocolo) ? $parObjDocumento->protocolo : $parObjDocumento->produtor->numeroDeIdentificacao; - if(!empty($strNumeroDocumentoOrigem)){ - $objObservacaoDTO = new ObservacaoDTO(); - $objObservacaoDTO->setStrDescricao("Número do Documento na Origem: " . $strNumeroDocumentoOrigem); - $arrObjObservacoes[] = $objObservacaoDTO; - } + if(!empty($strNumeroDocumentoOrigem)){ + $objObservacaoDTO = new ObservacaoDTO(); + $objObservacaoDTO->setStrDescricao("Número do Documento na Origem: " . $strNumeroDocumentoOrigem); + $arrObjObservacoes[] = $objObservacaoDTO; + } return $arrObjObservacoes; } diff --git a/tests_sei41/funcional/tests/CenarioBaseTestCase.php b/tests_sei41/funcional/tests/CenarioBaseTestCase.php index ef815ad93..e499dec29 100755 --- a/tests_sei41/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei41/funcional/tests/CenarioBaseTestCase.php @@ -471,6 +471,8 @@ protected function validarHistoricoTramite( } } + + protected function validarDadosProcesso($descricao, $restricao, $observacoes, $listaInteressados, $hipoteseLegal = null) { sleep(2); diff --git a/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php b/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php index b9138d7cc..355e02813 100755 --- a/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php +++ b/tests_sei41/funcional/tests/RecebimentoRecusaJustificativaGrandeTest.php @@ -24,8 +24,7 @@ public function setUp(): void // Carregar contexto de testes e dados sobre certificado digital $this->destinatarioWs = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - - // Instanciar objeto de teste utilizando o BeSimpleSoap + $localCertificado = $this->destinatarioWs['LOCALIZACAO_CERTIFICADO_DIGITAL']; $senhaCertificado = $this->destinatarioWs['SENHA_CERTIFICADO_DIGITAL']; $this->servicoPEN = $this->instanciarApiDeIntegracao($localCertificado, $senhaCertificado); @@ -99,7 +98,7 @@ private function recusarTramite($id_tramite) $parametros = new stdClass(); $parametros->recusaDeTramite = new stdClass(); $parametros->recusaDeTramite->IDT = $id_tramite; - $parametros->recusaDeTramite->justificativa = utf8_encode($justificativa); + $parametros->recusaDeTramite->justificativa = mb_convert_encoding($justificativa, 'UTF-8', 'ISO-8859-1'); $parametros->recusaDeTramite->motivo = "99"; return $this->recusarTramiteAPI($parametros); @@ -117,7 +116,7 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) $strClientGuzzle = new GuzzleHttp\Client([ 'base_uri' => $strBaseUri, - 'timeout' => 5.0, + 'timeout' => ProcessoEletronicoRN::WS_TIMEOUT_CONEXAO, 'headers' => $arrheaders, 'cert' => [$localCertificado, $senhaCertificado], ]); diff --git a/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php b/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php index 175e51ea2..eae2085ef 100755 --- a/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php +++ b/tests_sei41/funcional/tests/TramiteProcessoComDocumentoRestritoTest.php @@ -43,7 +43,6 @@ public function test_tramitar_processo_com_documento_restrito() self::$remetente['LOGIN'], self::$remetente['SENHA'] ); - self::$protocoloTeste = $this->cadastrarProcessoFixture(self::$processoTeste); // Cadastrar novo processo de teste self::$documentoTeste["RESTRICAO"] = \ProtocoloRN::$NA_RESTRITO; // Configuração de documento restrito diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php b/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php index d31a1b588..8e9dbc220 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAnexadoTest.php @@ -120,7 +120,7 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) $strClientGuzzle = new GuzzleHttp\Client([ 'base_uri' => PEN_ENDERECO_WEBSERVICE, - 'timeout' => 40, + 'timeout' => ProcessoEletronicoRN::WS_TIMEOUT_CONEXAO, 'headers' => $arrheaders, 'cert' => [$localCertificado, $senhaCertificado], ]); diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php b/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php index 1a294890f..56d709a82 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoDocumentoAvulsoTest.php @@ -358,7 +358,7 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) $strClientGuzzle = new GuzzleHttp\Client([ 'base_uri' => PEN_ENDERECO_WEBSERVICE, - 'timeout' => 5.0, + 'timeout' => ProcessoEletronicoRN::WS_TIMEOUT_CONEXAO, 'headers' => $arrheaders, 'cert' => [$localCertificado, $senhaCertificado], ]); diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php b/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php index 0315dc2fa..475911314 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoInteressadosDuplicadosTest.php @@ -44,7 +44,7 @@ public function test_envio_processo_com_documento_anexado() // Atribui dois interessados utilizando o mesmo nome self::$processoTeste['INTERESSADOS'] = array("Interessado com mesmo nome", "Interessado com mesmo nome"); - // Instanciar objeto de teste utilizando o BeSimpleSoap + // Instanciar objeto de teste utilizando o Guzzle $localCertificado = self::$remetente['LOCALIZACAO_CERTIFICADO_DIGITAL']; $senhaCertificado = self::$remetente['SENHA_CERTIFICADO_DIGITAL']; self::$servicoPEN = $this->instanciarApiDeIntegracao($localCertificado, $senhaCertificado); @@ -76,8 +76,7 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) $strClientGuzzle = new GuzzleHttp\Client([ 'base_uri' => PEN_ENDERECO_WEBSERVICE, - 'handler' => GuzzleHttp\HandlerStack::create(), - 'timeout' => 5.0, + 'timeout' => ProcessoEletronicoRN::WS_TIMEOUT_CONEXAO, 'headers' => $arrheaders, 'cert' => [$localCertificado, $senhaCertificado], ]); diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php b/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php index fb90d23cb..f0780d6f9 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitais.php @@ -41,7 +41,7 @@ public function setUp(): void self::$contextoOrgaoA = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$contextoOrgaoB = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - // Instanciar objeto de teste utilizando o BeSimpleSoap + // Instanciar objeto de teste utilizando o Guzzle $localCertificado = self::$contextoOrgaoB['LOCALIZACAO_CERTIFICADO_DIGITAL']; $senhaCertificado = self::$contextoOrgaoB['SENHA_CERTIFICADO_DIGITAL']; self::$servicoPEN = $this->instanciarApiDeIntegracao($localCertificado, $senhaCertificado); @@ -211,8 +211,7 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) $strClientGuzzle = new GuzzleHttp\Client([ 'base_uri' => PEN_ENDERECO_WEBSERVICE, - 'handler' => GuzzleHttp\HandlerStack::create(), - 'timeout' => 40, + 'timeout' => ProcessoEletronicoRN::WS_TIMEOUT_CONEXAO, 'headers' => $arrheaders, 'cert' => [$localCertificado, $senhaCertificado], ]); diff --git a/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php b/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php index 60d625833..f9b8ab48c 100755 --- a/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php +++ b/tests_sei41/funcional/tests/TramiteRecebimentoMultiplosComponentesDigitaisApenasPendentes.php @@ -37,7 +37,7 @@ public function setUp(): void self::$contextoOrgaoA = $this->definirContextoTeste(CONTEXTO_ORGAO_A); self::$contextoOrgaoB = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - // Instanciar objeto de teste utilizando o BeSimpleSoap + // Instanciar objeto de teste utilizando o Guzzle $localCertificado = self::$contextoOrgaoA['LOCALIZACAO_CERTIFICADO_DIGITAL']; $senhaCertificado = self::$contextoOrgaoA['SENHA_CERTIFICADO_DIGITAL']; self::$servicoPEN = $this->instanciarApiDeIntegracao($localCertificado, $senhaCertificado); @@ -179,7 +179,7 @@ private function instanciarApiDeIntegracao($localCertificado, $senhaCertificado) $strClientGuzzle = new GuzzleHttp\Client([ 'base_uri' => PEN_ENDERECO_WEBSERVICE, - 'timeout' => 40, + 'timeout' => ProcessoEletronicoRN::WS_TIMEOUT_CONEXAO, 'headers' => $arrheaders, 'cert' => [$localCertificado, $senhaCertificado], ]); From 030a07b5ba6a7a1f23df3874b5c0697e6c781f57 Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Tue, 21 Jan 2025 23:12:44 -0300 Subject: [PATCH 23/26] =?UTF-8?q?chore:=20corre=C3=A7=C3=A3o=20autom=C3=A1?= =?UTF-8?q?tica=20usando=20rector-1.2=20(#780)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 3 +- rector.php | 15 + src/LogPenWs.php | 6 +- src/PENIntegracao.php | 188 ++--- src/bd/PenMetaBD.php | 17 +- src/bd/PenParametroBD.php | 4 +- src/bd/TramiteBD.php | 14 +- src/console.php | 5 +- src/dto/ProcessoExpedidoDTO.php | 3 +- src/int/ProcessoEletronicoINT.php | 52 +- src/pen_expedir_bloco.php | 14 +- src/pen_map_envio_parcial_cadastrar.php | 5 +- src/pen_map_envio_parcial_listar.php | 7 +- ...pen_map_hipotese_legal_envio_cadastrar.php | 7 +- src/pen_map_hipotese_legal_envio_listar.php | 119 ++-- ...en_map_hipotese_legal_padrao_cadastrar.php | 7 +- ...p_hipotese_legal_recebimento_cadastrar.php | 7 +- ..._map_hipotese_legal_recebimento_listar.php | 132 ++-- src/pen_map_orgaos_externos_cadastrar.php | 7 +- src/pen_map_orgaos_externos_listar.php | 18 +- src/pen_map_orgaos_mapeamento_tipo_listar.php | 13 +- ...estricao_envio_comp_digitais_cadastrar.php | 5 +- ...p_restricao_envio_comp_digitais_listar.php | 7 +- ...pen_map_tipo_documento_envio_cadastrar.php | 54 +- src/pen_map_tipo_documento_envio_listar.php | 5 +- ...p_tipo_documento_recebimento_cadastrar.php | 50 +- ..._map_tipo_documento_recebimento_listar.php | 3 +- src/pen_map_tipo_processo_reativar.php | 7 +- src/pen_map_unidade_cadastrar.php | 11 +- src/pen_map_unidade_listar.php | 5 +- src/pen_parametros_configuracao.php | 2 +- src/pen_procedimento_cancelar_expedir.php | 7 +- src/pen_procedimento_estado.php | 9 +- src/pen_procedimento_expedido_listar.php | 2 +- src/pen_procedimento_expedir.php | 10 +- src/pen_procedimento_expedir_validar.php | 6 +- src/pen_tipo_procedimento_lista.php | 15 +- src/pen_tramite_em_bloco_cadastrar.php | 4 +- ...en_tramite_processo_em_bloco_cadastrar.php | 28 +- ..._pesquisa_textual_expedir_procedimento.php | 2 +- ...ativas_selecionar_expedir_procedimento.php | 2 +- src/pen_validar_expedir_lote.php | 10 +- src/rn/EnviarReciboTramiteRN.php | 13 +- src/rn/ExpedirProcedimentoRN.php | 397 +++-------- src/rn/PENAgendamentoRN.php | 2 +- src/rn/PenAtividadeRN.php | 12 +- src/rn/PenAtualizadorRN.php | 18 +- src/rn/PenBlocoProcessoRN.php | 53 +- src/rn/PenConsoleActionRN.php | 37 +- src/rn/PenConsoleRN.php | 26 +- src/rn/PenHipoteseLegalRN.php | 1 - src/rn/PenMapTipoProcedimentoRN.php | 10 +- src/rn/PenOrgaoExternoRN.php | 6 - src/rn/PenParametroRN.php | 2 +- src/rn/PenRelHipoteseLegalEnvioRN.php | 1 - src/rn/PenRelHipoteseLegalRN.php | 4 +- src/rn/PenRelTipoDocMapEnviadoRN.php | 15 +- src/rn/PenRelTipoDocMapRecebidoRN.php | 33 +- ...PenRestricaoEnvioComponentesDigitaisRN.php | 5 - src/rn/PenUnidadeRN.php | 27 +- src/rn/PenUnidadeRestricaoRN.php | 11 +- src/rn/PendenciasEnvioTramiteRN.php | 82 +-- src/rn/PendenciasTramiteRN.php | 47 +- src/rn/ProcessarPendenciasRN.php | 30 +- src/rn/ProcessoEletronicoRN.php | 311 +++----- src/rn/ProcessoExpedidoRN.php | 26 +- src/rn/ReceberComponenteDigitalRN.php | 39 +- src/rn/ReceberProcedimentoRN.php | 241 ++----- src/rn/ReceberReciboTramiteRN.php | 21 +- src/rn/ReciboTramiteRN.php | 5 +- src/rn/TipoDocMapRN.php | 62 +- src/rn/TramiteEmBlocoRN.php | 7 +- src/rn/VerificadorInstalacaoRN.php | 6 +- src/scripts/MonitoramentoEnvioTarefasPEN.php | 2 +- .../MonitoramentoRecebimentoTarefasPEN.php | 2 +- src/scripts/ProcessamentoTarefasPEN.php | 2 +- .../sei_atualizar_versao_modulo_pen.php | 669 +++--------------- .../sip_atualizar_versao_modulo_pen.php | 67 +- .../verifica_instalacao_modulo_pen.php | 2 +- src/sei_desbloquear_processo_manual.php | 14 +- 80 files changed, 1017 insertions(+), 2178 deletions(-) create mode 100644 rector.php diff --git a/composer.json b/composer.json index dd34e0a4b..ceeb72c6a 100755 --- a/composer.json +++ b/composer.json @@ -16,6 +16,7 @@ "squizlabs/php_codesniffer": "*", "mockery/mockery": "^1.5", "phpcompatibility/php-compatibility": "^9.3", - "pheromone/phpcs-security-audit": "*" + "pheromone/phpcs-security-audit": "*", + "rector/rector": "^1.2" } } \ No newline at end of file diff --git a/rector.php b/rector.php new file mode 100644 index 000000000..2526453c7 --- /dev/null +++ b/rector.php @@ -0,0 +1,15 @@ +withPaths([ + __DIR__ . '/src', + ]) + + ->withPreparedSets(deadCode: true) + ->withSets([LevelSetList::UP_TO_PHP_82]) + ->withTypeCoverageLevel(0); \ No newline at end of file diff --git a/src/LogPenWs.php b/src/LogPenWs.php index 03ca49a35..efda228b9 100755 --- a/src/LogPenWs.php +++ b/src/LogPenWs.php @@ -23,9 +23,9 @@ class LogPenWs { * Construtor */ // phpcs:ignore PEAR.Functions.ValidDefaultValue.NotAtEnd - public function __construct($config = array(), $wsdl, $options) + public function __construct($wsdl, $options, $config = []) { - $this->arrListaMetodos = is_array($config) ? $config : array(); + $this->arrListaMetodos = is_array($config) ? $config : []; $this->objSoapClient = new \BeSimple\SoapClient\SoapClient($wsdl, $options); } @@ -35,7 +35,7 @@ public function __construct($config = array(), $wsdl, $options) */ public function __call($method, $arguments) { - $mixResultado = call_user_func_array(array($this->objSoapClient, $method), $arguments); + $mixResultado = call_user_func_array([$this->objSoapClient, $method], $arguments); if(in_array($method, $this->arrListaMetodos)) { diff --git a/src/PENIntegracao.php b/src/PENIntegracao.php index faec849ab..dbf24423c 100755 --- a/src/PENIntegracao.php +++ b/src/PENIntegracao.php @@ -9,7 +9,7 @@ class PENIntegracao extends SeiIntegracao const PARAMETRO_VERSAO_MODULO_ANTIGO = 'PEN_VERSAO_MODULO_SEI'; const PARAMETRO_VERSAO_MODULO = 'VERSAO_MODULO_PEN'; - private static $instance = null; + private static $instance; public static function getInstance() { @@ -90,7 +90,7 @@ public function montarBotaoControleProcessos() { } } - return array($strAcoesProcedimento); + return [$strAcoesProcedimento]; } public function montarBotaoProcesso(ProcedimentoAPI $objSeiIntegracaoDTO) @@ -113,7 +113,6 @@ public function montarBotaoProcesso(ProcedimentoAPI $objSeiIntegracaoDTO) $dblIdProcedimento = $objProcedimentoDTO->getDblIdProcedimento(); $numIdUsuario = SessaoSEI::getInstance()->getNumIdUsuario(); $numIdUnidadeAtual = SessaoSEI::getInstance()->getNumIdUnidadeAtual(); - $objInfraParametro = new InfraParametro(BancoSEI::getInstance()); //Verifica se o processo encontra-se aberto na unidade atual $objAtividadeRN = new AtividadeRN(); @@ -131,10 +130,7 @@ public function montarBotaoProcesso(ProcedimentoAPI $objSeiIntegracaoDTO) $objExpedirProcedimentoRN = new ExpedirProcedimentoRN(); $objProcedimentoDTO = $objExpedirProcedimentoRN->consultarProcedimento($dblIdProcedimento); - $bolProcessoEstadoNormal = !in_array($objProcedimentoDTO->getStrStaEstadoProtocolo(), array( - ProtocoloRN::$TE_PROCEDIMENTO_SOBRESTADO, - ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO - )); + $bolProcessoEstadoNormal = !in_array($objProcedimentoDTO->getStrStaEstadoProtocolo(), [ProtocoloRN::$TE_PROCEDIMENTO_SOBRESTADO, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO]); $bolBlocoAbertoUnidade = false; $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); @@ -160,12 +156,7 @@ public function montarBotaoProcesso(ProcedimentoAPI $objSeiIntegracaoDTO) $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); $arrObjPenBlocoProcessoDTO = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO); if (count($arrObjPenBlocoProcessoDTO) > 0){ - $concluido = array( - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE - ); + $concluido = [ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE]; foreach ($arrObjPenBlocoProcessoDTO as $objBlocoProcessoDTO) { if (!in_array($objBlocoProcessoDTO->getNumIdAndamento(), $concluido)) { $bolProcessoEmBloco = true; @@ -223,7 +214,7 @@ public function montarBotaoProcesso(ProcedimentoAPI $objSeiIntegracaoDTO) } } - return array($strAcoesProcedimento); + return [$strAcoesProcedimento]; } public function excluirHipoteseLegal($arrObjHipoteseLegalDTO) @@ -268,26 +259,25 @@ public function validarExcluirDesativarHipoteseLegal($arrObjHipoteseLegalAPI, $s } } - public function montarIconeControleProcessos($arrObjProcedimentoAPI = array()) + public function montarIconeControleProcessos($arrObjProcedimentoAPI = []) { if(!PENIntegracao::verificarCompatibilidadeConfiguracoes()){ return false; } - $arrStrIcone = array(); - $arrDblIdProcedimento = array(); + $arrStrIcone = []; + $arrDblIdProcedimento = []; foreach ($arrObjProcedimentoAPI as $ObjProcedimentoAPI) { $arrDblIdProcedimento[] = $ObjProcedimentoAPI->getIdProcedimento(); } $arrStrIcone = $this->montarIconeRecusa($arrDblIdProcedimento, $arrStrIcone); - $arrStrIcone = $this->montarIconeTramite($arrDblIdProcedimento, $arrStrIcone); - return $arrStrIcone; + return $this->montarIconeTramite($arrDblIdProcedimento, $arrStrIcone); } - private function montarIconeRecusa($arrDblIdProcedimento = array(), $arrStrIcone = array()) + private function montarIconeRecusa($arrDblIdProcedimento = [], $arrStrIcone = []) { $objProcedimentoDTO = new ProcedimentoDTO(); $objProcedimentoDTO->setDblIdProcedimento($arrDblIdProcedimento, InfraDTO::$OPER_IN); @@ -308,7 +298,7 @@ private function montarIconeRecusa($arrDblIdProcedimento = array(), $arrStrIcone $objPenProtocoloDTO = $objProtocoloBD->consultar($objPenProtocoloDTO); if (!empty($objPenProtocoloDTO) && $objPenProtocoloDTO->getStrSinObteveRecusa() == 'S') { - $arrStrIcone[$dblIdProcedimento] = array(''); + $arrStrIcone[$dblIdProcedimento] = ['']; } } } @@ -316,15 +306,9 @@ private function montarIconeRecusa($arrDblIdProcedimento = array(), $arrStrIcone return $arrStrIcone; } - private function montarIconeTramite($arrDblIdProcedimento = array(), $arrStrIcone = array()) + private function montarIconeTramite($arrDblIdProcedimento = [], $arrStrIcone = []) { - $arrTiProcessoEletronico = array( - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_DOCUMENTO_AVULSO_RECEBIDO) - ); + $arrTiProcessoEletronico = [ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO), ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO), ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_DOCUMENTO_AVULSO_RECEBIDO)]; foreach ($arrDblIdProcedimento as $dblIdProcedimento) { $objAtividadeDTO = new AtividadeDTO(); @@ -342,7 +326,7 @@ private function montarIconeTramite($arrDblIdProcedimento = array(), $arrStrIcon if (!empty($ObjAtividadeDTO)) { switch ($ObjAtividadeDTO->getNumIdTarefa()) { case ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO): - $arrayIcone = array(''); + $arrayIcone = ['']; if (!isset($arrStrIcone[$dblIdProcedimento])) { $arrStrIcone[$dblIdProcedimento] = $arrayIcone; } else { @@ -351,7 +335,7 @@ private function montarIconeTramite($arrDblIdProcedimento = array(), $arrStrIcon break; case ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO): case ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_DOCUMENTO_AVULSO_RECEBIDO): - $arrayIcone = array(''); + $arrayIcone = ['']; if (!isset($arrStrIcone[$dblIdProcedimento])) { $arrStrIcone[$dblIdProcedimento] = $arrayIcone; } else { @@ -361,7 +345,7 @@ private function montarIconeTramite($arrDblIdProcedimento = array(), $arrStrIcon case ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO): case ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO): if ($this->consultarProcessoRecebido($dblIdProcedimento)) { - $arrayIcone = array(''); + $arrayIcone = ['']; if (!isset($arrStrIcone[$dblIdProcedimento])) { $arrStrIcone[$dblIdProcedimento] = $arrayIcone; } else { @@ -441,7 +425,7 @@ public function montarIconeProcesso(ProcedimentoAPI $objProcedimentoAP) $arrObjArvoreAcaoItemAPI ); } else { - return array(); + return []; } return $arrObjArvoreAcaoItemAPI; @@ -450,13 +434,7 @@ public function montarIconeProcesso(ProcedimentoAPI $objProcedimentoAP) private function getObjArvoreAcao($dblIdProcedimento, $arrObjArvoreAcaoItemAPI) { - $arrTiProcessoEletronico = array( - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_DOCUMENTO_AVULSO_RECEBIDO) - ); + $arrTiProcessoEletronico = [ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO), ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO), ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_DOCUMENTO_AVULSO_RECEBIDO)]; $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setDblIdProtocolo($dblIdProcedimento); @@ -569,7 +547,7 @@ public function montarIconeDocumento(ProcedimentoAPI $objProcedimentoAPI, $arrOb return false; } - $arrIcones = array(); + $arrIcones = []; if ($objProcedimentoAPI->getCodigoAcesso() > 0) { $objProcessoEletronicoRN = new ProcessoEletronicoRN(); @@ -585,7 +563,7 @@ public function montarIconeDocumento(ProcedimentoAPI $objProcedimentoAPI, $arrOb $arrObjCompIndexadoPorOrdemDTO = InfraArray::indexarArrInfraDTO($arrObjComponentesDigitaisDTO, 'OrdemDocumento'); $arrObjCompIndexadoPorIdDocumentoDTO = InfraArray::indexarArrInfraDTO($arrObjComponentesDigitaisDTO, 'IdDocumento'); - $arrObjDocumentoAPIIndexado = array(); + $arrObjDocumentoAPIIndexado = []; foreach ($arrObjDocumentoAPI as $objDocumentoAPI) { $arrObjDocumentoAPIIndexado[$objDocumentoAPI->getIdDocumento()] = $objDocumentoAPI; @@ -594,7 +572,7 @@ public function montarIconeDocumento(ProcedimentoAPI $objProcedimentoAPI, $arrOb if (array_key_exists($dblIdDocumento, $arrObjCompIndexadoPorIdDocumentoDTO)) { $objComponenteDTO = $arrObjCompIndexadoPorIdDocumentoDTO[$dblIdDocumento]; if (!is_null($objComponenteDTO->getNumOrdemDocumentoReferenciado())) { - $arrIcones[$dblIdDocumento] = array(); + $arrIcones[$dblIdDocumento] = []; $objComponenteReferenciadoDTO = $arrObjCompIndexadoPorOrdemDTO[$objComponenteDTO->getNumOrdemDocumentoReferenciado()]; $objDocumentoReferenciadoAPI = $arrObjDocumentoAPIIndexado[$objComponenteReferenciadoDTO->getDblIdDocumento()]; @@ -719,8 +697,7 @@ public static function gerarXMLItensArrInfraDTOAutoCompletar( $xml .= ' favor refinar a pesquisa."'; $xml .= '>'; } - $xml .= ''; - return $xml; + return $xml . ''; } /** @@ -742,7 +719,7 @@ private static function formatarXMLAjax($str) public function processarControlador($strAcao) { //Configuração de páginas do contexto da Árvore do processo para apresentação de erro de forma correta - $bolArvore = in_array($strAcao, array('pen_procedimento_estado')); + $bolArvore = in_array($strAcao, ['pen_procedimento_estado']); PaginaSEI::getInstance()->setBolArvore($bolArvore); if (strpos($strAcao, 'pen_') === false) { @@ -755,124 +732,124 @@ public function processarControlador($strAcao) switch ($strAcao) { case 'pen_procedimento_expedir': - require_once dirname(__FILE__) . '/pen_procedimento_expedir.php'; + require_once __DIR__ . '/pen_procedimento_expedir.php'; break; case 'pen_tramite_bloco_listar': case 'md_pen_tramita_em_bloco': case 'md_pen_tramita_em_bloco_excluir': case 'pen_tramite_em_bloco_cancelar': - require_once dirname(__FILE__) . '/pen_tramite_bloco_listar.php'; + require_once __DIR__ . '/pen_tramite_bloco_listar.php'; break; case 'pen_tramite_em_bloco_cadastrar': case 'pen_tramite_em_bloco_alterar': - require_once dirname(__FILE__) . '/pen_tramite_em_bloco_cadastrar.php'; + require_once __DIR__ . '/pen_tramite_em_bloco_cadastrar.php'; break; case 'pen_tramita_em_bloco_protocolo_excluir': case 'pen_tramita_em_bloco_protocolo_listar': - require_once dirname(__FILE__) . '/pen_tramita_em_bloco_protocolo_listar.php'; + require_once __DIR__ . '/pen_tramita_em_bloco_protocolo_listar.php'; break; case 'pen_excluir_processo_em_bloco_tramite': case 'pen_incluir_processo_em_bloco_tramite': case 'pen_tramita_em_bloco_adicionar': - require_once dirname(__FILE__) . '/pen_tramite_processo_em_bloco_cadastrar.php'; + require_once __DIR__ . '/pen_tramite_processo_em_bloco_cadastrar.php'; break; case 'pen_unidade_sel_expedir_procedimento': - require_once dirname(__FILE__) . '/pen_unidade_sel_expedir_procedimento.php'; + require_once __DIR__ . '/pen_unidade_sel_expedir_procedimento.php'; break; case 'pen_procedimento_processo_anexado': - require_once dirname(__FILE__) . '/pen_procedimento_processo_anexado.php'; + require_once __DIR__ . '/pen_procedimento_processo_anexado.php'; break; case 'pen_procedimento_cancelar_expedir': - require_once dirname(__FILE__) . '/pen_procedimento_cancelar_expedir.php'; + require_once __DIR__ . '/pen_procedimento_cancelar_expedir.php'; break; case 'pen_procedimento_expedido_listar': - require_once dirname(__FILE__) . '/pen_procedimento_expedido_listar.php'; + require_once __DIR__ . '/pen_procedimento_expedido_listar.php'; break; case 'pen_map_tipo_documento_envio_listar': case 'pen_map_tipo_documento_envio_excluir': case 'pen_map_tipo_documento_envio_desativar': case 'pen_map_tipo_documento_envio_ativar': - require_once dirname(__FILE__) . '/pen_map_tipo_documento_envio_listar.php'; + require_once __DIR__ . '/pen_map_tipo_documento_envio_listar.php'; break; case 'pen_map_tipo_documento_envio_cadastrar': case 'pen_map_tipo_documento_envio_visualizar': - require_once dirname(__FILE__) . '/pen_map_tipo_documento_envio_cadastrar.php'; + require_once __DIR__ . '/pen_map_tipo_documento_envio_cadastrar.php'; break; case 'pen_map_tipo_documento_recebimento_listar': case 'pen_map_tipo_documento_recebimento_excluir': - require_once dirname(__FILE__) . '/pen_map_tipo_documento_recebimento_listar.php'; + require_once __DIR__ . '/pen_map_tipo_documento_recebimento_listar.php'; break; case 'pen_map_tipo_documento_recebimento_cadastrar': case 'pen_map_tipo_documento_recebimento_visualizar': - require_once dirname(__FILE__) . '/pen_map_tipo_documento_recebimento_cadastrar.php'; + require_once __DIR__ . '/pen_map_tipo_documento_recebimento_cadastrar.php'; break; case 'pen_apensados_selecionar_expedir_procedimento': - require_once dirname(__FILE__) . '/apensados_selecionar_expedir_procedimento.php'; + require_once __DIR__ . '/apensados_selecionar_expedir_procedimento.php'; break; case 'pen_unidades_administrativas_externas_selecionar_expedir_procedimento': //verifica qual o tipo de seleção passado para carregar o arquivo especifico. if($_GET['tipo_pesquisa'] == 1){ - require_once dirname(__FILE__) . '/pen_unidades_administrativas_selecionar_expedir_procedimento.php'; + require_once __DIR__ . '/pen_unidades_administrativas_selecionar_expedir_procedimento.php'; }else { - require_once dirname(__FILE__) . '/pen_unidades_administrativas_pesquisa_textual_expedir_procedimento.php'; + require_once __DIR__ . '/pen_unidades_administrativas_pesquisa_textual_expedir_procedimento.php'; } break; case 'pen_procedimento_estado': - require_once dirname(__FILE__) . '/pen_procedimento_estado.php'; + require_once __DIR__ . '/pen_procedimento_estado.php'; break; // Mapeamento de Hipóteses Legais de Envio case 'pen_map_hipotese_legal_envio_cadastrar': case 'pen_map_hipotese_legal_envio_visualizar': - require_once dirname(__FILE__) . '/pen_map_hipotese_legal_envio_cadastrar.php'; + require_once __DIR__ . '/pen_map_hipotese_legal_envio_cadastrar.php'; break; case 'pen_map_hipotese_legal_envio_listar': case 'pen_map_hipotese_legal_envio_excluir': - require_once dirname(__FILE__) . '/pen_map_hipotese_legal_envio_listar.php'; + require_once __DIR__ . '/pen_map_hipotese_legal_envio_listar.php'; break; // Mapeamento de Hipóteses Legais de Recebimento case 'pen_map_hipotese_legal_recebimento_cadastrar': case 'pen_map_hipotese_legal_recebimento_visualizar': - require_once dirname(__FILE__) . '/pen_map_hipotese_legal_recebimento_cadastrar.php'; + require_once __DIR__ . '/pen_map_hipotese_legal_recebimento_cadastrar.php'; break; case 'pen_map_hipotese_legal_recebimento_listar': case 'pen_map_hipotese_legal_recebimento_excluir': - require_once dirname(__FILE__) . '/pen_map_hipotese_legal_recebimento_listar.php'; + require_once __DIR__ . '/pen_map_hipotese_legal_recebimento_listar.php'; break; case 'pen_map_hipotese_legal_padrao_cadastrar': case 'pen_map_hipotese_legal_padrao_visualizar': - require_once dirname(__FILE__) . '/pen_map_hipotese_legal_padrao_cadastrar.php'; + require_once __DIR__ . '/pen_map_hipotese_legal_padrao_cadastrar.php'; break; case 'pen_map_unidade_cadastrar': case 'pen_map_unidade_visualizar': - require_once dirname(__FILE__) . '/pen_map_unidade_cadastrar.php'; + require_once __DIR__ . '/pen_map_unidade_cadastrar.php'; break; case 'pen_map_orgaos_externos_salvar': case 'pen_map_orgaos_externos_atualizar': case 'pen_map_orgaos_externos_cadastrar': case 'pen_map_orgaos_externos_visualizar': - require_once dirname(__FILE__) . '/pen_map_orgaos_externos_cadastrar.php'; + require_once __DIR__ . '/pen_map_orgaos_externos_cadastrar.php'; break; case 'pen_map_orgaos_externos_reativar': @@ -880,66 +857,66 @@ public function processarControlador($strAcao) case 'pen_map_orgaos_externos_listar': case 'pen_map_orgaos_externos_excluir': case 'pen_map_orgaos_importar_tipos_processos': - require_once dirname(__FILE__) . '/pen_map_orgaos_externos_listar.php'; + require_once __DIR__ . '/pen_map_orgaos_externos_listar.php'; break; case 'pen_map_tipo_processo_padrao': case 'pen_map_tipo_processo_padrao_salvar': - require_once dirname(__FILE__) . '/pen_map_tipo_processo_padrao.php'; + require_once __DIR__ . '/pen_map_tipo_processo_padrao.php'; break; case 'pen_map_tipo_processo_reativar': - require_once dirname(__FILE__) . '/pen_map_tipo_processo_reativar.php'; + require_once __DIR__ . '/pen_map_tipo_processo_reativar.php'; break; case 'pen_map_orgaos_exportar_tipos_processos': - require_once dirname(__FILE__) . '/pen_tipo_procedimento_lista.php'; + require_once __DIR__ . '/pen_tipo_procedimento_lista.php'; break; case 'pen_map_orgaos_externos_mapeamento_desativar': case 'pen_map_orgaos_externos_mapeamento': case 'pen_map_orgaos_externos_mapeamento_gerenciar': case 'pen_map_orgaos_externos_mapeamento_excluir': - require_once dirname(__FILE__) . '/pen_map_orgaos_mapeamento_tipo_listar.php'; + require_once __DIR__ . '/pen_map_orgaos_mapeamento_tipo_listar.php'; break; case 'pen_map_unidade_listar': case 'pen_map_unidade_excluir': - require_once dirname(__FILE__) . '/pen_map_unidade_listar.php'; + require_once __DIR__ . '/pen_map_unidade_listar.php'; break; case 'pen_parametros_configuracao': case 'pen_parametros_configuracao_salvar': - require_once dirname(__FILE__) . '/pen_parametros_configuracao.php'; + require_once __DIR__ . '/pen_parametros_configuracao.php'; break; case 'pen_map_tipo_documento_envio_padrao_atribuir': case 'pen_map_tipo_documento_envio_padrao_consultar': - require_once dirname(__FILE__) . '/pen_map_tipo_documento_envio_padrao.php'; + require_once __DIR__ . '/pen_map_tipo_documento_envio_padrao.php'; break; case 'pen_map_tipo_doc_recebimento_padrao_atribuir': case 'pen_map_tipo_doc_recebimento_padrao_consultar': - require_once dirname(__FILE__) . '/pen_map_tipo_doc_recebimento_padrao.php'; + require_once __DIR__ . '/pen_map_tipo_doc_recebimento_padrao.php'; break; case 'pen_envio_processo_lote_cadastrar': - require_once dirname(__FILE__) . '/pen_envio_processo_lote_cadastrar.php'; + require_once __DIR__ . '/pen_envio_processo_lote_cadastrar.php'; break; case 'pen_expedir_bloco': - require_once dirname(__FILE__) . '/pen_expedir_bloco.php'; + require_once __DIR__ . '/pen_expedir_bloco.php'; break; case 'pen_map_envio_parcial_listar': case 'pen_map_envio_parcial_excluir': - require_once dirname(__FILE__) . '/pen_map_envio_parcial_listar.php'; + require_once __DIR__ . '/pen_map_envio_parcial_listar.php'; break; case 'pen_map_envio_parcial_salvar': case 'pen_map_envio_parcial_cadastrar': case 'pen_map_envio_parcial_visualizar': - require_once dirname(__FILE__) . '/pen_map_envio_parcial_cadastrar.php'; + require_once __DIR__ . '/pen_map_envio_parcial_cadastrar.php'; break; default: @@ -976,7 +953,7 @@ public function autoCompletarExpedirProcedimento() $objUnidadeRN = new UnidadeRN(); $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO); - $arrObjEstruturaDTO = array(); + $arrObjEstruturaDTO = []; if (!is_null($objUnidadeDTO)) { try { $objPenUnidadeRestricaoDTO = new PenUnidadeRestricaoDTO(); @@ -995,7 +972,7 @@ public function autoCompletarExpedirProcedimento() $objPenUnidadeRestricaoDTO->setStrNomeUnidadeRHRestricao('%' . $_POST['palavras_pesquisa'] . '%', InfraDTO::$OPER_LIKE); $arrEstruturas = $objPenUnidadeRestricaoRN->listar($objPenUnidadeRestricaoDTO); - foreach ($arrEstruturas as $key => $unidade) { + foreach ($arrEstruturas as $unidade) { if ($unidade->getNumIdUnidadeRHRestricao() != null) { $arrObjEstruturaDTO[] = $unidade; } @@ -1084,11 +1061,11 @@ public function processarControladorAjax($strAcao) { case 'pen_procedimento_expedir_validar': - require_once dirname(__FILE__) . '/pen_procedimento_expedir_validar.php'; + require_once __DIR__ . '/pen_procedimento_expedir_validar.php'; break; case 'pen_validar_expedir_lote': - require_once dirname(__FILE__) . '/pen_validar_expedir_lote.php'; + require_once __DIR__ . '/pen_validar_expedir_lote.php'; break; case 'pen_procedimento_expedir_cancelar': @@ -1097,7 +1074,6 @@ public function processarControladorAjax($strAcao) { $result = json_encode($objProcessoEletronicoRN->cancelarTramite($numIdTramite)); InfraAjax::enviarJSON($result); exit(0); - break; case 'pen_pesquisar_unidades_administrativas_estrutura_pai': $idRepositorioEstruturaOrganizacional = $_POST['idRepositorioEstruturaOrganizacional']; @@ -1108,7 +1084,6 @@ public function processarControladorAjax($strAcao) { print json_encode($arrEstruturas); exit(0); - break; case 'pen_pesquisar_unidades_administrativas_estrutura_pai_textual': @@ -1144,7 +1119,6 @@ public function processarControladorAjax($strAcao) { print json_encode($arrEstruturas); exit(0); - break; } return $xml; @@ -1156,39 +1130,13 @@ public function processarControladorWebServices($servico) $strArq = null; switch ($_GET['servico']) { case 'modpen': - $strArq = dirname(__FILE__) . '/ws/modpen.wsdl'; + $strArq = __DIR__ . '/ws/modpen.wsdl'; break; } return $strArq; } - - /** - * Método responsável por recuperar a hierarquia da unidade e montar o seu nome com as SIGLAS da hierarquia - * @param $idRepositorioEstruturaOrganizacional - * @param $arrEstruturas - * @return mixed - * @throws InfraException - */ - private function obterHierarquiaEstruturaDeUnidadeExterna($idRepositorioEstruturaOrganizacional, $arrEstruturas) - { - //Monta o nome da unidade com a hierarquia de SIGLAS - $objProcessoEletronicoRN = new ProcessoEletronicoRN(); - foreach ($arrEstruturas as $key => $estrutura) { - if(!is_null($estrutura)) { - $arrObjEstruturaDTO = $objProcessoEletronicoRN->listarEstruturas($idRepositorioEstruturaOrganizacional, $estrutura->numeroDeIdentificacaoDaEstrutura); - if (!is_null($arrObjEstruturaDTO[0])) { - $interface = new ProcessoEletronicoINT(); - $arrHierarquiaEstruturaDTO = $interface->gerarHierarquiaEstruturas($arrObjEstruturaDTO); - $arrEstruturas[$key]->nome = mb_convert_encoding($arrHierarquiaEstruturaDTO[0]->get('Nome'), 'UTF-8', 'ISO-8859-1'); - } - } - } - - return $arrEstruturas; - } - public static function getDiretorio() { $arrConfig = ConfiguracaoSEI::getInstance()->getValor('SEI', 'Modulos'); @@ -1243,12 +1191,12 @@ public static function compararVersoes($strVersao1, $strVersao2){ $numVersao1 = explode('.', $strVersao1); $numVersao1 = array_map(function($item){ return str_pad($item, 2, '0', STR_PAD_LEFT); }, $numVersao1); - $numVersao1 = intval(join($numVersao1)); + $numVersao1 = intval(join('', $numVersao1)); $numVersao2 = explode('.', $strVersao2); $numVersao2 = array_map(function($item){ return str_pad($item, 2, '0', STR_PAD_LEFT); }, $numVersao2); - $numVersao2 = intval(join($numVersao2)); + $numVersao2 = intval(join('', $numVersao2)); return $numVersao1 - $numVersao2; } @@ -1260,7 +1208,7 @@ public function processarPendencias() ProcessarPendenciasRN::getInstance()->processarPendencias(); } - public function assinarDocumento($arrObjDocumentoAPI = array()){ + public function assinarDocumento($arrObjDocumentoAPI = []){ $objProcessoEletronicoRN = new ProcessoEletronicoRN(); diff --git a/src/bd/PenMetaBD.php b/src/bd/PenMetaBD.php index 93f630a18..858c70796 100755 --- a/src/bd/PenMetaBD.php +++ b/src/bd/PenMetaBD.php @@ -120,7 +120,7 @@ public function isVersaoSuportada($strRegexVersaoSistema, $strVerMinRequirida){ return $this; } - public function adicionarChaveUnica($strNomeTabela = '', $arrNomeChave = array()){ + public function adicionarChaveUnica($strNomeTabela = '', $arrNomeChave = []){ $this->getObjInfraIBanco() ->executarSql('ALTER TABLE '.$strNomeTabela.' ADD CONSTRAINT UK_'.$strNomeTabela.' UNIQUE('.implode(', ', $arrNomeChave).')'); @@ -255,7 +255,7 @@ public function isChaveExiste($strNomeTabela = '', $strNomeChave = ''){ * @throws InfraException * @return PenMetaBD */ - public function criarTabela($arrSchema = array()){ + public function criarTabela($arrSchema = []){ $strNomeTabela = $arrSchema['tabela']; @@ -264,12 +264,12 @@ public function criarTabela($arrSchema = array()){ } $objInfraBanco = $this->getObjInfraIBanco(); - $arrColunas = array(); - $arrStrQuery = array(); + $arrColunas = []; + $arrStrQuery = []; foreach($arrSchema['cols'] as $strNomeColuna => $arrColunaConfig) { - list($strTipoDado, $strValorPadrao) = $arrColunaConfig; + [$strTipoDado, $strValorPadrao] = $arrColunaConfig; if($strValorPadrao != self::SNULLO && $strValorPadrao != self::NNULLO) { @@ -315,11 +315,8 @@ public function criarTabela($arrSchema = array()){ } } - if(!empty($arrStrQuery)) { - - foreach($arrStrQuery as $strQuery) { - $objInfraBanco->executarSql($strQuery); - } + foreach($arrStrQuery as $strQuery) { + $objInfraBanco->executarSql($strQuery); } return $this; diff --git a/src/bd/PenParametroBD.php b/src/bd/PenParametroBD.php index 545ca39b4..68f451f43 100755 --- a/src/bd/PenParametroBD.php +++ b/src/bd/PenParametroBD.php @@ -36,9 +36,7 @@ public function setValor($strNome, $strValor) { $sql .= ' WHERE nome = ' . $this->getObjInfraIBanco()->formatarGravacaoStr($strNome); } - $ret = $this->getObjInfraIBanco()->executarSql($sql); - - return $ret; + return $this->getObjInfraIBanco()->executarSql($sql); } public function isSetValor($strNome) { diff --git a/src/bd/TramiteBD.php b/src/bd/TramiteBD.php index cd837ca24..82cb02715 100755 --- a/src/bd/TramiteBD.php +++ b/src/bd/TramiteBD.php @@ -9,11 +9,10 @@ public function __construct(InfraIBanco $objInfraIBanco){ } /** - * Recupera os dados do último trâmite válido realizado para determinado número de processo eletrônico - * - * @param ProcessoEletronicoDTO $parObjProcessoEletronicoDTO - * @return void - */ + * Recupera os dados do último trâmite válido realizado para determinado número de processo eletrônico + * + * @return void + */ public function consultarUltimoTramite(ProcessoEletronicoDTO $parObjProcessoEletronicoDTO, $parStrStaTipoTramite = null) { if(is_null($parObjProcessoEletronicoDTO)){ @@ -29,10 +28,7 @@ public function consultarUltimoTramite(ProcessoEletronicoDTO $parObjProcessoElet $objTramiteDTOPesquisa->setNumMaxRegistrosRetorno(1); $objTramiteDTOPesquisa->setOrdNumIdTramite(InfraDTO::$TIPO_ORDENACAO_DESC); $objTramiteDTOPesquisa->setStrStaTipoProtocolo( - array( - ProcessoEletronicoRN::$STA_TIPO_PROTOCOLO_PROCESSO, - ProcessoEletronicoRN::$STA_TIPO_PROTOCOLO_DOCUMENTO_AVULSO - ), + [ProcessoEletronicoRN::$STA_TIPO_PROTOCOLO_PROCESSO, ProcessoEletronicoRN::$STA_TIPO_PROTOCOLO_DOCUMENTO_AVULSO], InfraDTO::$OPER_IN ); diff --git a/src/console.php b/src/console.php index bf2e03783..43ac8b417 100755 --- a/src/console.php +++ b/src/console.php @@ -2,10 +2,7 @@ set_time_limit(0); -set_include_path(implode(PATH_SEPARATOR, array( - realpath(__DIR__.'/../../../infra/infra_php'), - get_include_path(), -))); +set_include_path(implode(PATH_SEPARATOR, [realpath(__DIR__.'/../../../infra/infra_php'), get_include_path()])); require_once DIR_SEI_WEB.'/SEI.php'; require_once DIR_SEI_WEB.'/SEI.php'; diff --git a/src/dto/ProcessoExpedidoDTO.php b/src/dto/ProcessoExpedidoDTO.php index 308a935fd..c650615f2 100755 --- a/src/dto/ProcessoExpedidoDTO.php +++ b/src/dto/ProcessoExpedidoDTO.php @@ -6,7 +6,8 @@ */ class ProcessoExpedidoDTO extends InfraDTO { - public function __construct($bolComposto = false) { + public function __construct() + { // Força o JOIN com todas as tabelas parent::__construct(true); } diff --git a/src/int/ProcessoEletronicoINT.php b/src/int/ProcessoEletronicoINT.php index cf3a4bd4f..119bbf88e 100755 --- a/src/int/ProcessoEletronicoINT.php +++ b/src/int/ProcessoEletronicoINT.php @@ -18,7 +18,7 @@ class ProcessoEletronicoINT extends InfraINT { * @param array(EstruturaDTO) $estruturas * @return array */ - public static function gerarHierarquiaEstruturas($estruturas = array()){ + public static function gerarHierarquiaEstruturas($estruturas = []){ if(empty($estruturas)) { return $estruturas; @@ -29,9 +29,9 @@ public static function gerarHierarquiaEstruturas($estruturas = array()){ $nome = $estrutura->getStrNome(); $nome .= ' - '; - $array = array($estrutura->getStrSigla()); + $array = [$estrutura->getStrSigla()]; foreach($estrutura->getArrHierarquia() as $sigla) { - if(trim($sigla) !== '' && !in_array($sigla, array('PR', 'PE', 'UNIAO'))) { + if(trim($sigla) !== '' && !in_array($sigla, ['PR', 'PE', 'UNIAO'])) { $array[] = $sigla; } } @@ -50,7 +50,7 @@ public static function gerarHierarquiaEstruturas($estruturas = array()){ * @param array(EstruturaDTO) $estruturas * @return array */ - public static function gerarHierarquiaEstruturasAutoCompletar($estruturas = array()) + public static function gerarHierarquiaEstruturasAutoCompletar($estruturas = []) { if (empty($estruturas['itens'])) { @@ -62,11 +62,9 @@ public static function gerarHierarquiaEstruturasAutoCompletar($estruturas = arra $nome = $estrutura->getStrNome(); $nome .= ' - '; - $array = array($estrutura->getStrSigla()); + $array = [$estrutura->getStrSigla()]; foreach ($estrutura->getArrHierarquia() as $sigla) { - if (trim($sigla) !== '' && !in_array($sigla, array( - 'PR', 'PE', 'UNIAO' - ))) { + if (trim($sigla) !== '' && !in_array($sigla, ['PR', 'PE', 'UNIAO'])) { $array[] = $sigla; } } @@ -121,7 +119,7 @@ public static function autoCompletarRepositorioEstruturas($strPalavrasPesquisa) { $objProcessoEletronicoRN = new ProcessoEletronicoRN(); $arrObjRepositorioDTO = (array) $objProcessoEletronicoRN->listarRepositoriosDeEstruturas(); - $arrayRepositorioEstruturas = array(); + $arrayRepositorioEstruturas = []; foreach ($arrObjRepositorioDTO as $value) { if (strpos(strtoupper($value->getStrNome()), strtoupper($strPalavrasPesquisa)) !== false) { $arrayRepositorioEstruturas[] = $value; @@ -144,7 +142,7 @@ public static function formatarHierarquia($ObjEstrutura) $arrObjNivel = $ObjEstrutura->hierarquia; - $siglasUnidades = array(); + $siglasUnidades = []; $siglasUnidades[] = $ObjEstrutura->sigla; foreach($arrObjNivel as $key => $objNivel){ @@ -168,9 +166,8 @@ public static function formatarHierarquia($ObjEstrutura) $objNivel=current($arrObjNivel); } - $dados=["nome"=>$nome,"objNivel"=>$objNivel]; - return $dados; + return ["nome"=>$nome,"objNivel"=>$objNivel]; } @@ -184,40 +181,29 @@ public static function getCaminhoIcone($imagem, $relPath = null) { switch ($imagem) { case 'imagens/consultar.gif': return '/infra_css/svg/consultar.svg'; - break; case 'imagens/alterar.gif': return '/infra_css/svg/alterar.svg'; - break; case 'imagens/excluir.gif': return '/infra_css/svg/excluir.svg'; - break; case '/pen_expedir_procedimento.gif': return 'modulos/' . $strModulo . '/imagens/pen_expedir_procedimento.png'; - break; case '/pen_consultar_recibos.png': return 'modulos/' . $strModulo . '/imagens/consultar_recibo.png'; - break; case '/pen_cancelar_tramite.gif': return 'modulos/' . $strModulo . '/imagens/pen_cancelar_envio.svg'; - break; case '/infra_js/arvore/plus.gif': return '/infra_css/svg/mais.svg'; - break; case '/infra_js/arvore/minus.gif': return '/infra_css/svg/menos.svg'; - break; case 'imagens/anexos.gif': return '/infra_css/imagens/anexos.gif'; - break; case 'imagens/sei_erro.png': return 'modulos/' . $strModulo . '/imagens/sei_erro.png'; - break; default: if($relPath==null){ return $imagem; } return $relPath . $imagem; - break; } } @@ -235,22 +221,18 @@ public static function getCssCompatibilidadeSEI4($arquivo) switch ($arquivo) { case 'pen_procedimento_expedir.css': return 'pen_procedimento_expedir_sei4.css'; - break; default: return $arquivo; - break; } }elseif (InfraUtil::compararVersoes(SEI_VERSAO, ">", "4.0.1")) { switch ($arquivo) { case 'pen_procedimento_expedir.css': return 'pen_procedimento_expedir_sei402.css'; - break; default: return $arquivo; - break; } } @@ -276,22 +258,22 @@ public static function montarRestricaoTramitaGovBr($idUnidade, &$strCss, &$strHt $objPenUnidadeRestricaoRN = new PenUnidadeRestricaoRN(); $arrObjPenUnidadeRestricaoDTO = $objPenUnidadeRestricaoRN->listar($objPenUnidadeRestricaoDTO); - $items = array(); - $arrayKeys = array(); - $arrObjPenUnidadeDTO = array(); - $itemsUnidades = array(); - $hdnRepoEstruturas = array(); + $items = []; + $arrayKeys = []; + $arrObjPenUnidadeDTO = []; + $itemsUnidades = []; + $hdnRepoEstruturas = []; $strHtmlRepoEstruturasUnidades = ""; foreach ($arrObjPenUnidadeRestricaoDTO as $item) { if (!in_array($item->getNumIdUnidadeRestricao(), $arrayKeys)) { //IdUnidadeRestricao NomeUnidadeRestricao $arrayKeys[] = $item->getNumIdUnidadeRestricao(); - $items[] = array($item->getNumIdUnidadeRestricao(), $item->getStrNomeUnidadeRestricao()); - $hdnRepoEstruturas[$item->getNumIdUnidadeRestricao()] = array(); + $items[] = [$item->getNumIdUnidadeRestricao(), $item->getStrNomeUnidadeRestricao()]; + $hdnRepoEstruturas[$item->getNumIdUnidadeRestricao()] = []; } if ($item->getNumIdUnidadeRHRestricao() != null) { $arrObjPenUnidadeDTO[] = $item; - $itemsUnidades[] = array($item->getNumIdUnidadeRHRestricao(), $item->getStrNomeUnidadeRHRestricao()); + $itemsUnidades[] = [$item->getNumIdUnidadeRHRestricao(), $item->getStrNomeUnidadeRHRestricao()]; $hdnRepoEstruturas[$item->getNumIdUnidadeRestricao()][] = $item->getNumIdUnidadeRHRestricao() . '±' . $item->getStrNomeUnidadeRHRestricao(); } } diff --git a/src/pen_expedir_bloco.php b/src/pen_expedir_bloco.php index 40d800187..982ddfc95 100755 --- a/src/pen_expedir_bloco.php +++ b/src/pen_expedir_bloco.php @@ -13,12 +13,12 @@ $strParametros = ''; $bolErrosValidacao = false; $executarExpedicao = false; - $arrComandos = array(); + $arrComandos = []; $strDiretorioModulo = PENIntegracao::getDiretorio(); - $arrProtocolosOrigem = array(); - $tramiteEmBloco = isset($_GET['tramite_em_bloco']) ? $_GET['tramite_em_bloco'] : null; + $arrProtocolosOrigem = []; + $tramiteEmBloco = $_GET['tramite_em_bloco'] ?? null; if ($tramiteEmBloco == 1) { $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); $objPenBlocoProcessoDTO->retDblIdProtocolo(); @@ -35,7 +35,7 @@ $arrPenBlocoProcesso = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO); $idTramiteEmBloco = $arrPenBlocoProcesso[0]->getNumIdBloco(); $strParametros .= '&id_bloco=' . $idTramiteEmBloco; - foreach ($arrPenBlocoProcesso as $i => $PenBlocoProcesso) { + foreach ($arrPenBlocoProcesso as $PenBlocoProcesso) { $arrProtocolosOrigem[] = $PenBlocoProcesso->getDblIdProtocolo(); } } else { @@ -98,7 +98,7 @@ //Preparação dos dados para montagem da tela de expedição de processos if ($arrIdUnidadeRestricao != null) { - $repositorios = array(); + $repositorios = []; foreach ($arrIdUnidadeRestricao as $value) { $repositorios[$value->getNumIdUnidadeRestricao()] = $value->getStrNomeUnidadeRestricao(); } @@ -109,7 +109,7 @@ $repositorios = $objExpedirProcedimentoRN->listarRepositoriosDeEstruturas(); } - $idRepositorioSelecionado = (isset($numIdRepositorio)) ? $numIdRepositorio : ''; + $idRepositorioSelecionado = $numIdRepositorio ?? ''; $strItensSelRepositorioEstruturas = InfraINT::montarSelectArray('', 'Selecione', $idRepositorioSelecionado, $repositorios); $strLinkAjaxUnidade = $objSessaoSEI->assinarLink('controlador_ajax.php?acao_ajax=pen_unidade_auto_completar_expedir_procedimento'); @@ -151,7 +151,7 @@ $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); $arrPenBlocoProcesso = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO); - $arrProcedimentos = array(); + $arrProcedimentos = []; foreach ($arrPenBlocoProcesso as $objDTO) { $objDTO->setNumIdRepositorioOrigem($numIdRepositorioOrigem); $objDTO->setNumIdUnidadeOrigem($numIdUnidadeOrigem); diff --git a/src/pen_map_envio_parcial_cadastrar.php b/src/pen_map_envio_parcial_cadastrar.php index 7f07bc71b..9894d1765 100644 --- a/src/pen_map_envio_parcial_cadastrar.php +++ b/src/pen_map_envio_parcial_cadastrar.php @@ -61,7 +61,7 @@ $objDTO->setNumIdEstrutura($numIdRepositorio); $objDTO->setNumIdUnidadePen($numIdUnidadePen); if (!empty($id)) { - $objDTO->setDblId(array($id), InfraDTO::$OPER_NOT_IN); + $objDTO->setDblId([$id], InfraDTO::$OPER_NOT_IN); } $objDTO->setNumMaxRegistrosRetorno(1); @@ -101,7 +101,6 @@ 'controlador.php?acao=pen_map_envio_parcial_listar&acao_=' . $_GET['acao_'] )); exit(0); - break; case 'pen_map_envio_parcial_visualizar': case 'pen_map_envio_parcial_atualizar': case 'pen_map_envio_parcial_cadastrar': @@ -159,7 +158,7 @@ } } - $idRepositorioSelecionado = (isset($numIdRepositorio)) ? $numIdRepositorio : ''; + $idRepositorioSelecionado = $numIdRepositorio ?? ''; $strItensSelRepositorioEstruturas = InfraINT::montarSelectArray( '', 'Selecione', diff --git a/src/pen_map_envio_parcial_listar.php b/src/pen_map_envio_parcial_listar.php index 6aee18e13..487476a45 100644 --- a/src/pen_map_envio_parcial_listar.php +++ b/src/pen_map_envio_parcial_listar.php @@ -52,7 +52,6 @@ } else { throw new InfraException('Nenhum registro foi selecionado para executar esta ação'); } - break; case 'pen_map_envio_parcial_listar': // Ação padrão desta tela break; @@ -73,14 +72,14 @@ $strBotaoEspeciePadrao = ''; } - $arrComandos = array(); + $arrComandos = []; $btnPesquisar = ''; $btnNovo = ''; $btnExcluir = ''; $btnImprimir = ''; - $arrComandos = array($btnPesquisar, $strBotaoEspeciePadrao, $btnNovo, $btnExcluir, $btnImprimir); - $arrComandosFinal = array($btnPesquisar, $btnNovo, $btnExcluir, $btnImprimir); + $arrComandos = [$btnPesquisar, $strBotaoEspeciePadrao, $btnNovo, $btnExcluir, $btnImprimir]; + $arrComandosFinal = [$btnPesquisar, $btnNovo, $btnExcluir, $btnImprimir]; $objPenRestricaoEnvioComponentesDigitaisDTO = new PenRestricaoEnvioComponentesDigitaisDTO(); $objPenRestricaoEnvioComponentesDigitaisDTO->retTodos(true); diff --git a/src/pen_map_hipotese_legal_envio_cadastrar.php b/src/pen_map_hipotese_legal_envio_cadastrar.php index 6e9b920b4..ea0ee5a80 100755 --- a/src/pen_map_hipotese_legal_envio_cadastrar.php +++ b/src/pen_map_hipotese_legal_envio_cadastrar.php @@ -18,7 +18,7 @@ $objSessao->validarLink(); $objSessao->validarPermissao(PEN_RECURSO_ATUAL); - $arrComandos = array(); + $arrComandos = []; $bolSomenteLeitura = false; @@ -132,10 +132,7 @@ $objPenHipoteseLegalRN = new PenHipoteseLegalRN(); $arrMapIdBarramento = InfraArray::converterArrInfraDTO($objPenHipoteseLegalRN->listar($objPenHipoteseLegalDTO), 'Nome', 'IdHipoteseLegal'); } -catch (InfraException $e) { - $objPagina->processarExcecao($e); -} -catch(Exception $e) { +catch(InfraException|Exception $e) { $objPagina->processarExcecao($e); } diff --git a/src/pen_map_hipotese_legal_envio_listar.php b/src/pen_map_hipotese_legal_envio_listar.php index a78511698..cb8508c00 100755 --- a/src/pen_map_hipotese_legal_envio_listar.php +++ b/src/pen_map_hipotese_legal_envio_listar.php @@ -20,71 +20,70 @@ $objBanco = BancoSEI::getInstance(); $objSessao = SessaoSEI::getInstance(); $objDebug = InfraDebug::getInstance(); - + try { - + $objDebug->setBolLigado(false); $objDebug->setBolDebugInfra(true); $objDebug->limpar(); $objSessao->validarLink(); $objSessao->validarPermissao(PEN_RECURSO_ATUAL); - - + + //-------------------------------------------------------------------------- // Ações if(array_key_exists('acao', $_GET)) { - + $arrParam = array_merge($_GET, $_POST); - + switch($_GET['acao']) { - + case PEN_RECURSO_BASE.'_excluir': if(array_key_exists('hdnInfraItensSelecionados', $arrParam) && !empty($arrParam['hdnInfraItensSelecionados'])) { - + $objPenRelHipoteseLegalDTO = new PenRelHipoteseLegalDTO(); $objPenRelHipoteseLegalRN = new PenRelHipoteseLegalEnvioRN(); - + $arrParam['hdnInfraItensSelecionados'] = explode(',', $arrParam['hdnInfraItensSelecionados']); - + if(is_array($arrParam['hdnInfraItensSelecionados'])) { - + foreach($arrParam['hdnInfraItensSelecionados'] as $dblIdMap) { - + $objPenRelHipoteseLegalDTO->setDblIdMap($dblIdMap); $objPenRelHipoteseLegalRN->excluir($objPenRelHipoteseLegalDTO); } } else { - + $objPenRelHipoteseLegalDTO->setDblIdMap($arrParam['hdnInfraItensSelecionados']); $objPenRelHipoteseLegalRN->excluir($objPenRelHipoteseLegalDTO); } - + $objPagina->adicionarMensagem(sprintf('%s foi excluido com sucesso.', PEN_PAGINA_TITULO), InfraPagina::$TIPO_MSG_AVISO); - + header('Location: '.SessaoSEI::getInstance()->assinarLink('controlador.php?acao='.$_GET['acao_retorno'].'&acao_origem='.$_GET['acao_origem'])); exit(0); } else { - + throw new InfraException('Nenhum Registro foi selecionado para executar esta ação'); } - break; - + case PEN_RECURSO_BASE.'_listar': // Ação padrão desta tela break; - + default: throw new InfraException('Ação não permitida nesta tela'); - + } } //-------------------------------------------------------------------------- - - $arrComandos = array(); + + $arrComandos = []; $arrComandos[] = ''; $arrComandos[] = ''; $arrComandos[] = ''; @@ -92,7 +91,7 @@ //-------------------------------------------------------------------------- // DTO de paginao - + $objPenRelHipoteseLegalDTO = new PenRelHipoteseLegalDTO(); $objPenRelHipoteseLegalDTO->setStrTipo('E'); $objPenRelHipoteseLegalDTO->retTodos(); @@ -101,13 +100,13 @@ if(array_key_exists('id_barramento', $_POST) && (!empty($_POST['id_barramento']) && $_POST['id_barramento'] !== 'null')) { $objPenRelHipoteseLegalDTO->setNumIdBarramento($_POST['id_barramento']); } - + if(array_key_exists('id_hipotese_legal', $_POST) && (!empty($_POST['id_hipotese_legal']) && $_POST['id_barramento'] !== 'null')) { $objPenRelHipoteseLegalDTO->setNumIdHipoteseLegal($_POST['id_hipotese_legal']); } - + $objFiltroDTO = clone $objPenRelHipoteseLegalDTO; - + if(!$objFiltroDTO->isSetNumIdBarramento()) { $objFiltroDTO->setNumIdBarramento(''); } @@ -117,7 +116,7 @@ } //-------------------------------------------------------------------------- $objGenericoBD = new GenericoBD($objBanco); - + // Mapeamento da hipotese legal remota $objPenHipoteseLegalDTO = new PenHipoteseLegalDTO(); $objPenHipoteseLegalDTO->setDistinct(true); @@ -125,7 +124,7 @@ $objPenHipoteseLegalDTO->retNumIdHipoteseLegal(); $objPenHipoteseLegalDTO->setStrAtivo('S'); $objPenHipoteseLegalDTO->retStrNome(); - + $objPenHipoteseLegalRN = new PenHipoteseLegalRN(); $arrMapIdBarramento = InfraArray::converterArrInfraDTO($objPenHipoteseLegalRN->listar($objPenHipoteseLegalDTO), 'Nome', 'IdHipoteseLegal'); @@ -149,7 +148,7 @@ $numRegistros = count($arrObjPenRelHipoteseLegalDTO); if(!empty($arrObjPenRelHipoteseLegalDTO)){ - + $strResultado = ''; $strResultado .= '
' . PaginaSEI::getInstance()->gerarCaptionTabela($strCaptionTabela, $numRegistros) . '
' . PaginaSEI::getInstance()->getThCheck() . '
'."\n"; @@ -173,15 +172,15 @@ $strResultado .= ''; $strResultado .= ''; $strResultado .= ''; $strResultado .= ''."\n"; @@ -191,7 +190,7 @@ } } catch(InfraException $e){ - + print '
';
     print_r($e);
     print '
'; @@ -220,7 +219,7 @@ montarJavaScript(); ?> "; }); diff --git a/src/pen_procedimento_expedir_validar.php b/src/pen_procedimento_expedir_validar.php index da72f6c07..f1b569880 100755 --- a/src/pen_procedimento_expedir_validar.php +++ b/src/pen_procedimento_expedir_validar.php @@ -4,7 +4,7 @@ session_start(); -$arrResponse = array('sucesso' => false, 'mensagem' => '', 'erros' => array()); +$arrResponse = ['sucesso' => false, 'mensagem' => '', 'erros' => []]; $objInfraException = new InfraException(); @@ -66,11 +66,11 @@ if($objInfraException->contemValidacoes()) { - $arrErros = array(); + $arrErros = []; foreach($objInfraException->getArrObjInfraValidacao() as $objInfraValidacao) { $strAtributo = $objInfraValidacao->getStrAtributo(); if(!array_key_exists($strAtributo, $arrErros)){ - $arrErros[$strAtributo] = array(); + $arrErros[$strAtributo] = []; } $arrErros[$strAtributo][] = mb_convert_encoding($objInfraValidacao->getStrDescricao(), 'UTF-8', 'ISO-8859-1'); } diff --git a/src/pen_tipo_procedimento_lista.php b/src/pen_tipo_procedimento_lista.php index e742e69bb..4ac8e816b 100644 --- a/src/pen_tipo_procedimento_lista.php +++ b/src/pen_tipo_procedimento_lista.php @@ -36,14 +36,11 @@ $arrObjTipoProcedimentoDTO = $objTipoProcedimentoRN->listarRN0244($objTipoProcedimentoDTO); } - $dados = array(); + $dados = []; $dados[] = ['ID', 'Nome']; - foreach ($arrObjTipoProcedimentoDTO as $key => $value) { - $dados[] = array( - $value->getNumIdTipoProcedimento(), - $value->getStrNome(), - ); + foreach ($arrObjTipoProcedimentoDTO as $value) { + $dados[] = [$value->getNumIdTipoProcedimento(), $value->getStrNome()]; } $nomeArquivo = 'tipos_processos.csv'; @@ -65,10 +62,10 @@ throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); } - $arrComandosModal = array(); + $arrComandosModal = []; $arrComandosModal[] = ''; $arrComandosModal[] = ''; - $arrComandosModalFinal = array(); + $arrComandosModalFinal = []; $arrComandosModalFinal[] = ''; $arrComandosModalFinal[] = ''; @@ -83,7 +80,7 @@ $strResultadoExportar .= '' . "\n"; $strResultadoExportar .= '
'.$arrMapIdHipoteseLegal[$objPenRelHipoteseLegalDTO->getNumIdHipoteseLegal()].''.$arrMapIdBarramento[$objPenRelHipoteseLegalDTO->getNumIdBarramento()].''; - + if($objSessao->verificarPermissao('pen_map_hipotese_legal_envio_alterar')) { $strResultado .= 'Alterar Mapeamento'; } - + if($objSessao->verificarPermissao('pen_map_hipotese_legal_envio_excluir')) { $strResultado .= 'Excluir Mapeamento'; } - + $strResultado .= '
'; - $arrComandos = array(); + $arrComandos = []; $arrComandos[] = ''; $arrComandos[] = ''; diff --git a/src/pen_tramite_em_bloco_cadastrar.php b/src/pen_tramite_em_bloco_cadastrar.php index da8ace211..78f341ff7 100644 --- a/src/pen_tramite_em_bloco_cadastrar.php +++ b/src/pen_tramite_em_bloco_cadastrar.php @@ -8,7 +8,7 @@ $objSessaoSEI = SessaoSEI::getInstance(); $objPaginaSEI = PaginaSEI::getInstance(); - $objPaginaSEI->salvarCamposPost(array('txtDescricao', 'hdnIdBloco')); + $objPaginaSEI->salvarCamposPost(['txtDescricao', 'hdnIdBloco']); $strParametros = ''; if (isset($_GET['arvore'])) { @@ -27,7 +27,7 @@ $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); $strDesabilitar = ''; - $arrComandos = array(); + $arrComandos = []; switch ($_GET['acao']) { case 'pen_tramite_em_bloco_cadastrar': diff --git a/src/pen_tramite_processo_em_bloco_cadastrar.php b/src/pen_tramite_processo_em_bloco_cadastrar.php index d3d0b30fb..050e3cb3c 100755 --- a/src/pen_tramite_processo_em_bloco_cadastrar.php +++ b/src/pen_tramite_processo_em_bloco_cadastrar.php @@ -9,7 +9,7 @@ $objSessaoSEI->validarLink(); - $objPaginaSEI->salvarCamposPost(array('hdnIdProtocolo', 'selBlocos')); + $objPaginaSEI->salvarCamposPost(['hdnIdProtocolo', 'selBlocos']); $strIdItensSelecionados = $objPaginaSEI->recuperarCampo('hdnIdProtocolo'); $idBlocoExterno = $objPaginaSEI->recuperarCampo('selBlocos'); @@ -55,14 +55,9 @@ $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); $arrObjPenBlocoProcessoDTO = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO); foreach($arrObjPenBlocoProcessoDTO as $objPenBlocoProcessoDTO){ - $concluido = array( - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE - ); + $concluido = [ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE]; if ($objPenBlocoProcessoDTO->getNumIdAndamento() === null || !in_array($objPenBlocoProcessoDTO->getNumIdAndamento(), $concluido)) { - $objPenBlocoProcessoRN->excluir(array($objPenBlocoProcessoDTO)); + $objPenBlocoProcessoRN->excluir([$objPenBlocoProcessoDTO]); $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); $objPenBlocoProcessoRN->atualizarEstadoDoBloco($objPenBlocoProcessoDTO->getNumIdBloco()); @@ -81,7 +76,6 @@ validarPermissao($_GET['acao']); @@ -133,7 +127,7 @@ //Verifica processo aberto em outra unidade. $objInfraException = new InfraException(); $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); - $objExpedirProcedimentosRN->verificarProcessosAbertoNaUnidade($objInfraException, array($_GET['id_procedimento'])); + $objExpedirProcedimentosRN->verificarProcessosAbertoNaUnidade($objInfraException, [$_GET['id_procedimento']]); $mensagemDeErro = $objExpedirProcedimentosRN->trazerTextoSeContemValidacoes($objInfraException); if (!is_null($mensagemDeErro)) { $objPaginaSEI->adicionarMensagem($mensagemDeErro, InfraPagina::$TIPO_MSG_ERRO); @@ -141,7 +135,7 @@ exit(0); } - $objExpedirProcedimentosRN->validarProcessoAbertoEmOutraUnidade($objInfraException, array($_GET['id_procedimento'])); + $objExpedirProcedimentosRN->validarProcessoAbertoEmOutraUnidade($objInfraException, [$_GET['id_procedimento']]); $mensagemDeErro = $objExpedirProcedimentosRN->trazerTextoSeContemValidacoes($objInfraException); if (!is_null($mensagemDeErro)) { $objPaginaSEI->adicionarMensagem($mensagemDeErro, InfraPagina::$TIPO_MSG_ERRO); @@ -212,14 +206,14 @@ }else{ $objInfraException = new InfraException(); $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); - $objExpedirProcedimentosRN->verificarProcessosAbertoNaUnidade($objInfraException, array($idItensSelecionados)); + $objExpedirProcedimentosRN->verificarProcessosAbertoNaUnidade($objInfraException, [$idItensSelecionados]); $mensagemDeErro = $objExpedirProcedimentosRN->trazerTextoSeContemValidacoes($objInfraException); if (!is_null($mensagemDeErro)) { $bolInclusaoErro = true; $arrMensagensErros[] = $mensagemDeErro; } - $objExpedirProcedimentosRN->validarProcessoAbertoEmOutraUnidade($objInfraException, array($idItensSelecionados)); + $objExpedirProcedimentosRN->validarProcessoAbertoEmOutraUnidade($objInfraException, [$idItensSelecionados]); $mensagemDeErro = $objExpedirProcedimentosRN->trazerTextoSeContemValidacoes($objInfraException); if (!is_null($mensagemDeErro)) { $bolInclusaoErro = true; @@ -234,10 +228,8 @@ } } - if (!empty($arrMensagensErros)) { - foreach ($arrMensagensErros as $mensagemErro) { - $objPaginaSEI->adicionarMensagem($mensagemErro, InfraPagina::$TIPO_MSG_ERRO); - } + foreach ($arrMensagensErros as $mensagemErro) { + $objPaginaSEI->adicionarMensagem($mensagemErro, InfraPagina::$TIPO_MSG_ERRO); } $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); @@ -265,7 +257,7 @@ } //Monta o select dos blocos - $arrMapIdBloco = array(); + $arrMapIdBloco = []; $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); //($objSessaoSEI->getNumIdUnidadeAtual()); diff --git a/src/pen_unidades_administrativas_pesquisa_textual_expedir_procedimento.php b/src/pen_unidades_administrativas_pesquisa_textual_expedir_procedimento.php index 6dd41c3e9..914a83912 100755 --- a/src/pen_unidades_administrativas_pesquisa_textual_expedir_procedimento.php +++ b/src/pen_unidades_administrativas_pesquisa_textual_expedir_procedimento.php @@ -19,7 +19,7 @@ SessaoSEI::getInstance()->validarLink(); $strTitulo = 'Seleção de Unidade Externa (Pesquisa Textual)'; - $arrComandos = array(); + $arrComandos = []; $arrComandos[] = ''; $arrComandos[] = ''; $arrComandos[] = ''; diff --git a/src/pen_unidades_administrativas_selecionar_expedir_procedimento.php b/src/pen_unidades_administrativas_selecionar_expedir_procedimento.php index 427a49842..96844dfda 100755 --- a/src/pen_unidades_administrativas_selecionar_expedir_procedimento.php +++ b/src/pen_unidades_administrativas_selecionar_expedir_procedimento.php @@ -20,7 +20,7 @@ $bolVersaoSuperior4 = InfraUtil::compararVersoes(SEI_VERSAO, ">=", "4.0.0"); $strImagensArvore = ($bolVersaoSuperior4) ? '24/' : ''; $strTitulo = "Seleção de Unidade Externa (Pesquisa em Árvore)"; - $arrComandos = array(); + $arrComandos = []; $arrComandos[] = ''; $arrComandos[] = ''; $arrComandos[] = ''; diff --git a/src/pen_validar_expedir_lote.php b/src/pen_validar_expedir_lote.php index 36d5d6ace..2c2d91425 100755 --- a/src/pen_validar_expedir_lote.php +++ b/src/pen_validar_expedir_lote.php @@ -4,7 +4,7 @@ session_start(); -$arrResponse = array('sucesso' => false, 'mensagem' => '', 'erros' => array()); +$arrResponse = ['sucesso' => false, 'mensagem' => '', 'erros' => []]; $objInfraException = new InfraException(); @@ -19,11 +19,11 @@ $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); $objExpedirProcedimentosRN->verificarProcessosAbertoNaUnidade($objInfraException, $arrProtocolosOrigem); if ($objInfraException->contemValidacoes()) { - $arrErros = array(); + $arrErros = []; foreach ($objInfraException->getArrObjInfraValidacao() as $objInfraValidacao) { $strAtributo = $objInfraValidacao->getStrAtributo(); if (!array_key_exists($strAtributo, $arrErros)) { - $arrErros[$strAtributo] = array(); + $arrErros[$strAtributo] = []; } $arrErros[$strAtributo][] = mb_convert_encoding($objInfraValidacao->getStrDescricao(), 'UTF-8', 'ISO-8859-1'); } @@ -71,11 +71,11 @@ if ($objInfraException->contemValidacoes()) { - $arrErros = array(); + $arrErros = []; foreach ($objInfraException->getArrObjInfraValidacao() as $objInfraValidacao) { $strAtributo = $objInfraValidacao->getStrAtributo(); if (!array_key_exists($strAtributo, $arrErros)) { - $arrErros[$strAtributo] = array(); + $arrErros[$strAtributo] = []; } $arrErros[$strAtributo][] = mb_convert_encoding($objInfraValidacao->getStrDescricao(), 'UTF-8', 'ISO-8859-1'); } diff --git a/src/rn/EnviarReciboTramiteRN.php b/src/rn/EnviarReciboTramiteRN.php index 7d4ad46b6..f017dec43 100755 --- a/src/rn/EnviarReciboTramiteRN.php +++ b/src/rn/EnviarReciboTramiteRN.php @@ -5,16 +5,11 @@ class EnviarReciboTramiteRN extends InfraRN { private $objProcessoEletronicoRN; - private $objInfraParametro; - private $objPenParametroRN; public function __construct() { parent::__construct(); - - $this->objInfraParametro = new InfraParametro(BancoSEI::getInstance()); $this->objProcessoEletronicoRN = new ProcessoEletronicoRN(); - $this->objPenParametroRN = new PenParametroRN(); } protected function inicializarObjInfraIBanco() @@ -31,13 +26,13 @@ protected function inicializarObjInfraIBanco() */ protected function gerarReciboTramite($numIdTramite){ - $arrStrHashConteudo = array(); + $arrStrHashConteudo = []; $objMetaRetorno = $this->objProcessoEletronicoRN->solicitarMetadados($numIdTramite); $objMetaProcesso = $objMetaRetorno->metadados->processo; - $arrObjMetaDocumento = is_array($objMetaProcesso->documentos) ? $objMetaProcesso->documentos : array($objMetaProcesso->documentos); + $arrObjMetaDocumento = is_array($objMetaProcesso->documentos) ? $objMetaProcesso->documentos : [$objMetaProcesso->documentos]; $objDTO = new ComponenteDigitalDTO(); $objBD = new ComponenteDigitalBD($this->inicializarObjInfraIBanco()); @@ -57,7 +52,7 @@ protected function gerarReciboTramite($numIdTramite){ return $arrStrHashConteudo; } - protected function cadastrarReciboTramiteRecebimento($strNumeroRegistro = '', $parNumIdTramite = 0, $strHashConteudo = '', $parArrayHash = array()) + protected function cadastrarReciboTramiteRecebimento($strNumeroRegistro = '', $parNumIdTramite = 0, $strHashConteudo = '', $parArrayHash = []) { try { $objBD = new ReciboTramiteRecebidoBD($this->inicializarObjInfraIBanco()); @@ -153,7 +148,7 @@ private function obterDataRecebimentoComponentesDigitais($parObjTramite){ } if(!is_array($parObjTramite->itensHistorico->operacao)) { - $parObjTramite->itensHistorico->operacao = array($parObjTramite->itensHistorico->operacao); + $parObjTramite->itensHistorico->operacao = [$parObjTramite->itensHistorico->operacao]; } foreach ($parObjTramite->itensHistorico->operacao as $operacao) { diff --git a/src/rn/ExpedirProcedimentoRN.php b/src/rn/ExpedirProcedimentoRN.php index d097612b5..7e80ba3ec 100755 --- a/src/rn/ExpedirProcedimentoRN.php +++ b/src/rn/ExpedirProcedimentoRN.php @@ -52,35 +52,9 @@ class ExpedirProcedimentoRN extends InfraRN { private $objProcedimentoAndamentoRN; private $fnEventoEnvioMetadados; private $objPenDebug; - private $objCacheMetadadosProtocolo=array(); - - private $arrPenMimeTypes = array( - "application/pdf", - "application/vnd.oasis.opendocument.text", - "application/vnd.oasis.opendocument.formula", - "application/vnd.oasis.opendocument.spreadsheet", - "application/vnd.oasis.opendocument.presentation", - "text/xml", - "text/rtf", - "text/html", - "text/plain", - "text/csv", - "image/gif", - "image/jpeg", - "image/png", - "image/svg+xml", - "image/tiff", - "image/bmp", - "audio/mp4", - "audio/midi", - "audio/ogg", - "audio/vnd.wave", - "video/avi", - "video/mpeg", - "video/mp4", - "video/ogg", - "video/webm" - ); + private $objCacheMetadadosProtocolo=[]; + + private $arrPenMimeTypes = ["application/pdf", "application/vnd.oasis.opendocument.text", "application/vnd.oasis.opendocument.formula", "application/vnd.oasis.opendocument.spreadsheet", "application/vnd.oasis.opendocument.presentation", "text/xml", "text/rtf", "text/html", "text/plain", "text/csv", "image/gif", "image/jpeg", "image/png", "image/svg+xml", "image/tiff", "image/bmp", "audio/mp4", "audio/midi", "audio/ogg", "audio/vnd.wave", "video/avi", "video/mpeg", "video/mp4", "video/ogg", "video/webm"]; private $contadorDaBarraDeProgresso; @@ -167,11 +141,11 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe $objInfraException->lancarValidacoes(); }else{ - $arrErros = array(); + $arrErros = []; foreach($objInfraException->getArrObjInfraValidacao() as $objInfraValidacao) { $strAtributo = $objInfraValidacao->getStrAtributo(); if(!array_key_exists($strAtributo, $arrErros)){ - $arrErros[$strAtributo] = array(); + $arrErros[$strAtributo] = []; } $arrErros[$strAtributo][] = mb_convert_encoding($objInfraValidacao->getStrDescricao(), 'UTF-8', 'ISO-8859-1'); } @@ -390,14 +364,14 @@ private function consultarMetadadosPEN($parDblIdProcedimento) private function obterTamanhoTotalDaBarraDeProgressoREST($parObjProcesso) { $nrTamanhoMegasMaximo = ProcessoEletronicoRN::obterTamanhoBlocoTransferencia(); - $nrTamanhoBytesMaximo = ($nrTamanhoMegasMaximo * pow(1024, 2)); //Qtd de MB definido como parametro + $nrTamanhoBytesMaximo = ($nrTamanhoMegasMaximo * 1024 ** 2); //Qtd de MB definido como parametro $totalBarraProgresso = 2; $this->contadorDaBarraDeProgresso = 2; - $arrHashIndexados = array(); + $arrHashIndexados = []; foreach ($parObjProcesso['documentos'] as $objDoc) { - $arrComponentesDigitais = is_array($objDoc['componentesDigitais']) ? $objDoc['componentesDigitais'] : array($objDoc['componentesDigitais']); + $arrComponentesDigitais = is_array($objDoc['componentesDigitais']) ? $objDoc['componentesDigitais'] : [$objDoc['componentesDigitais']]; foreach ($arrComponentesDigitais as $objComponenteDigital) { $strHashComponente = ProcessoEletronicoRN::getHashFromMetaDadosREST($objComponenteDigital['hash']); if(!in_array($strHashComponente, $arrHashIndexados)){ @@ -418,7 +392,7 @@ private function obterTamanhoTotalDaBarraDeProgressoREST($parObjProcesso) { public function listarRepositoriosDeEstruturas() { - $dadosArray = array(); + $dadosArray = []; $arrObjRepositorioDTO = $this->objProcessoEletronicoRN->listarRepositoriosDeEstruturas(); foreach ($arrObjRepositorioDTO as $repositorio) { $dadosArray[$repositorio->getNumId()] = $repositorio->getStrNome(); @@ -476,7 +450,7 @@ private function enviarApenasComponentesDigitaisPendentes($numIdRepositorioDesti if (!is_null($arrObjEnvioParcialDTO) && count($arrObjEnvioParcialDTO) > 0) { if (count($arrObjEnvioParcialDTO) > 1) { - $arrIdUnidadesParaEnvioPendentes = array(); + $arrIdUnidadesParaEnvioPendentes = []; foreach ($arrObjEnvioParcialDTO as $value) { $arrIdUnidadesParaEnvioPendentes[] = $value->getNumIdUnidadePen(); } @@ -519,7 +493,7 @@ public function construirProcessoREST($dblIdProcedimento, $arrIdProcessoApensado ]; } - $objProcesso = $this->atribuirProdutorProcessoREST($objProcesso, $objProcedimentoDTO->getNumIdUsuarioGeradorProtocolo(), $objProcedimentoDTO->getNumIdUnidadeGeradoraProtocolo()); + $objProcesso = $this->atribuirProdutorProcessoREST($objProcesso, $objProcedimentoDTO->getNumIdUsuarioGeradorProtocolo()); $objProcesso = $this->atribuirDataHoraDeRegistroREST($objProcesso, $objProcedimentoDTO->getDblIdProcedimento()); @@ -552,7 +526,7 @@ private function atribuirDadosHistoricoREST($objProcesso, $dblIdProcedimento) throw new InfraException("Não foi possível obter andamentos do processo {$objProcesso['protocolo']}"); } - $arrObjOperacao = array(); + $arrObjOperacao = []; foreach ($arrObjAtividadeDTO as $objAtividadeDTO) { $objOperacao = [ @@ -577,13 +551,12 @@ private function atribuirDadosHistoricoREST($objProcesso, $dblIdProcedimento) } /** - * Muda o estado de um procedimento - * - * @param object $objProcesso - * @param string $strStaEstado - * @throws InfraException - * @return null - */ + * Muda o estado de um procedimento + * + * @param object $objProcesso + * @param string $strStaEstado + * @throws InfraException + */ public static function mudarEstadoProcedimento($objProcesso, $strStaEstado) { if(!isset($objProcesso)) { @@ -609,7 +582,7 @@ public static function mudarEstadoProcedimento($objProcesso, $strStaEstado) $objAtributoAndamentoDTO->setStrNome('MOTIVO'); $objAtributoAndamentoDTO->setStrIdOrigem(null); $objAtributoAndamentoDTO->setStrValor('Processo está em processamento devido ao seu trâmite externo para outra unidade.'); - $objAtividadeDTO->setArrObjAtributoAndamentoDTO(array($objAtributoAndamentoDTO)); + $objAtividadeDTO->setArrObjAtributoAndamentoDTO([$objAtributoAndamentoDTO]); $objAtividadeRN = new AtividadeRN(); $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); @@ -626,13 +599,12 @@ public static function mudarEstadoProcedimento($objProcesso, $strStaEstado) } /** - * Muda o estado de um procedimento - * - * @param object $objProcesso - * @param string $strStaEstado - * @throws InfraException - * @return null - */ + * Muda o estado de um procedimento + * + * @param object $objProcesso + * @param string $strStaEstado + * @throws InfraException + */ public static function mudarEstadoProcedimentoNormal($objProcesso, $strStaEstado) { //Muda o estado do Protocolo para normal @@ -655,7 +627,7 @@ public function bloquearProcedimentoExpedicao($objExpedirProcedimentoDTO, $numId $objSeiRN = new SeiRN(); $objSeiRN->bloquearProcesso($objEntradaBloquearProcessoAPI); - $arrObjAtributoAndamentoDTO = array(); + $arrObjAtributoAndamentoDTO = []; //Seta o repositrio de destino para constar no histrico $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); @@ -716,7 +688,7 @@ public function registrarAndamentoExpedicaoAbortada($dblIdProtocolo) $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objAtividadeDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO)); - $objAtividadeDTO->setArrObjAtributoAndamentoDTO(array()); + $objAtividadeDTO->setArrObjAtributoAndamentoDTO([]); //Gera o andamento de expedio abortada $objAtividadeRN = new AtividadeRN(); @@ -727,7 +699,7 @@ public static function receberRecusaProcedimento($motivo, $unidade_destino, $idP { try{ //Muda o status do protocolo para "Normal" - $arrObjAtributoAndamentoDTO = array(); + $arrObjAtributoAndamentoDTO = []; $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('MOTIVO'); @@ -781,14 +753,14 @@ private function atribuirDataHoraDeRegistroREST($objContexto, $dblIdProcedimento $objProcedimentoHistoricoDTO = new ProcedimentoHistoricoDTO(); $objProcedimentoHistoricoDTO->setDblIdProcedimento($dblIdProcedimento); $objProcedimentoHistoricoDTO->setStrStaHistorico(ProcedimentoRN::$TH_TOTAL); - $objProcedimentoHistoricoDTO->adicionarCriterio(array('IdTarefa','IdTarefa'), array(InfraDTO::$OPER_IGUAL,InfraDTO::$OPER_IGUAL), array(TarefaRN::$TI_GERACAO_PROCEDIMENTO, ProcessoeletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), InfraDTO::$OPER_LOGICO_OR); + $objProcedimentoHistoricoDTO->adicionarCriterio(['IdTarefa', 'IdTarefa'], [InfraDTO::$OPER_IGUAL, InfraDTO::$OPER_IGUAL], [TarefaRN::$TI_GERACAO_PROCEDIMENTO, ProcessoeletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO], InfraDTO::$OPER_LOGICO_OR); $objProcedimentoHistoricoDTO->setStrSinGerarLinksHistorico('N'); $objProcedimentoHistoricoDTO->setNumMaxRegistrosRetorno(1); $objProcedimentoHistoricoDTO->setOrdNumIdTarefa(InfraDTO::$TIPO_ORDENACAO_ASC); if(isset($dblIdDocumento)){ $objProcedimentoHistoricoDTO->setDblIdDocumento($dblIdDocumento); - $objProcedimentoHistoricoDTO->setNumIdTarefa(array(TarefaRN::$TI_GERACAO_DOCUMENTO, TarefaRN::$TI_RECEBIMENTO_DOCUMENTO, TarefaRN::$TI_DOCUMENTO_MOVIDO_DO_PROCESSO), InfraDTO::$OPER_IN); + $objProcedimentoHistoricoDTO->setNumIdTarefa([TarefaRN::$TI_GERACAO_DOCUMENTO, TarefaRN::$TI_RECEBIMENTO_DOCUMENTO, TarefaRN::$TI_DOCUMENTO_MOVIDO_DO_PROCESSO], InfraDTO::$OPER_IN); } $objProcedimentoDTOHistorico = $this->objProcedimentoRN->consultarHistoricoRN1025($objProcedimentoHistoricoDTO); @@ -801,7 +773,7 @@ private function atribuirDataHoraDeRegistroREST($objContexto, $dblIdProcedimento return $objContexto; } - private function atribuirProdutorProcessoREST($objProcesso, $dblIdProcedimento, $numIdUnidadeGeradora) + private function atribuirProdutorProcessoREST($objProcesso, $dblIdProcedimento) { if(!isset($objProcesso)){ throw new InfraException('Parâmetro $objProcesso não informado.'); @@ -843,7 +815,7 @@ private function atribuirDadosInteressadosREST($objProcesso, $dblIdProcedimento) $arrParticipantesDTO = $this->listarInteressados($dblIdProcedimento); if (isset($arrParticipantesDTO) && count($arrParticipantesDTO) > 0) { - $objProcesso['interessados'] = array(); + $objProcesso['interessados'] = []; foreach ($arrParticipantesDTO as $participanteDTO) { $interessado = [ @@ -870,7 +842,7 @@ private function atribuirDocumentosREST($objProcesso, $dblIdProcedimento, $parOb throw new InfraException('Documentos não encontrados.'); } - $arrObjCompIndexadoPorIdDocumentoDTO = array(); + $arrObjCompIndexadoPorIdDocumentoDTO = []; $objProcessoEletronicoPesquisaDTO = new ProcessoEletronicoDTO(); $objProcessoEletronicoPesquisaDTO->setDblIdProcedimento($dblIdProcedimento); $objUltimoTramiteRecebidoDTO = $this->objProcessoEletronicoRN->consultarUltimoTramiteRecebido($objProcessoEletronicoPesquisaDTO); @@ -881,7 +853,7 @@ private function atribuirDocumentosREST($objProcesso, $dblIdProcedimento, $parOb } } - $objProcesso['documentos'] = array(); + $objProcesso['documentos'] = []; foreach ($arrDocumentosRelacionados as $ordem => $objDocumentosRelacionados) { $documentoDTO = $objDocumentosRelacionados["Documento"]; $staAssociacao = $objDocumentosRelacionados["StaAssociacao"]; @@ -914,13 +886,13 @@ private function atribuirDocumentosREST($objProcesso, $dblIdProcedimento, $parOb $documento['retirado'] = true; } if($documentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_RESTRITO){ - $documento['hipoteseLegal'] = array(); // Inicializando a chave 'hipoteseLegal' como um array + $documento['hipoteseLegal'] = []; // Inicializando a chave 'hipoteseLegal' como um array $documento['hipoteseLegal']['identificacao'] = $objPenRelHipoteseLegalRN->getIdHipoteseLegalPEN($documentoDTO->getNumIdHipoteseLegalProtocolo()); //TODO: Adicionar nome da hipótese legal atribuida ao documento } $documento['dataHoraDeProducao'] = $this->objProcessoEletronicoRN->converterDataWebService($documentoDTO->getDtaGeracaoProtocolo()); $documento['dataHoraDeRegistro'] = $this->objProcessoEletronicoRN->converterDataWebService($documentoDTO->getDtaGeracaoProtocolo()); - $documento['produtor'] = array(); // Inicializando a chave 'produtor' como um array + $documento['produtor'] = []; // Inicializando a chave 'produtor' como um array $usuarioDTO = $this->consultarUsuario($documentoDTO->getNumIdUsuarioGeradorProtocolo()); if(isset($usuarioDTO)) { $documento['produtor']['nome'] = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($usuarioDTO->getStrNome(), 150), 'UTF-8', 'ISO-8859-1'); @@ -934,7 +906,7 @@ private function atribuirDocumentosREST($objProcesso, $dblIdProcedimento, $parOb $documento['produtor']['unidade'] = []; // Inicializando a chave 'unidade' como um array $documento['produtor']['unidade']['nome'] = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($unidadeDTO->getStrDescricao(), 150), 'UTF-8', 'ISO-8859-1'); $documento['produtor']['unidade']['tipo'] = self::STA_TIPO_PESSOA_ORGAOPUBLICO; - + //TODO: Informar dados da estrutura organizacional (estruturaOrganizacional) } if(array_key_exists($documentoDTO->getDblIdDocumento(), $arrObjCompIndexadoPorIdDocumentoDTO)){ @@ -1058,20 +1030,20 @@ private function atribuirEspecieDocumentalREST($parMetaDocumento, $parDocumentoD //a espécie documental e o nome do produtor serão obtidos para atribuição ao documento if($objComponenteDigitalDTO != null && $numCodigoEspecie == null) { if(isset($parObjMetadadosTramiteAnterior)){ - $arrObjMetaDocumentosTramiteAnterior = array(); + $arrObjMetaDocumentosTramiteAnterior = []; //Obtenção de lista de documentos do processo $objProcesso = $parObjMetadadosTramiteAnterior->processo; $objDocumento = $parObjMetadadosTramiteAnterior->documento; - $objProtocolo = isset($objProcesso) ? $objProcesso : $objDocumento; + $objProtocolo = $objProcesso ?? $objDocumento; $arrObjMetaDocumentosTramiteAnterior = ProcessoEletronicoRN::obterDocumentosProtocolo($objProtocolo); if(isset($arrObjMetaDocumentosTramiteAnterior) && !is_array($arrObjMetaDocumentosTramiteAnterior)){ - $arrObjMetaDocumentosTramiteAnterior = array($arrObjMetaDocumentosTramiteAnterior); + $arrObjMetaDocumentosTramiteAnterior = [$arrObjMetaDocumentosTramiteAnterior]; } //Indexação dos documentos pela sua ordem - $arrMetaDocumentosAnteriorIndexado = array(); + $arrMetaDocumentosAnteriorIndexado = []; foreach ($arrObjMetaDocumentosTramiteAnterior as $objMetaDoc) { $arrMetaDocumentosAnteriorIndexado[$objMetaDoc->ordem] = $objMetaDoc; } @@ -1092,10 +1064,7 @@ private function atribuirEspecieDocumentalREST($parMetaDocumento, $parDocumentoD $strNomeEspecieProdutor = mb_convert_encoding($parDocumentoDTO->getStrNomeSerie(), 'UTF-8', 'ISO-8859-1'); } - $parMetaDocumento['especie'] = array( - 'codigo' => $numCodigoEspecie, - 'nomeNoProdutor' => $strNomeEspecieProdutor - ); + $parMetaDocumento['especie'] = ['codigo' => $numCodigoEspecie, 'nomeNoProdutor' => $strNomeEspecieProdutor]; return $parMetaDocumento; @@ -1133,22 +1102,6 @@ private function obterEspecieMapeada($parNumIdSerie) return $numCodigoEspecieMapeada; } - - private function atribuirAssinaturaEletronica($objComponenteDigital, AssinaturaDTO $objAssinaturaDTO) - { - if(!isset($objComponenteDigital)){ - throw new InfraException('Parâmetro $objComponenteDigital não informado.'); - } - - //TODO: Obter as informações corretas dos metadados da assinatura digital - if(isset($objAssinaturaDTO)) { - $objComponenteDigital->assinaturaDigital = new stdClass(); - $objComponenteDigital->assinaturaDigital->dataHora = $this->objProcessoEletronicoRN->converterDataWebService($objComponenteDigital->getDthAberturaAtividade()); - $objComponenteDigital->assinaturaDigital->cadeiaDoCertificado = new SoapVar('', XSD_ANYXML); - $objComponenteDigital->assinaturaDigital->hash = new SoapVar("{$objAssinaturaDTO->getStrP7sBase64()}", XSD_ANYXML); - } - } - private function atribuirComponentesDigitaisREST($objDocumento, DocumentoDTO $objDocumentoDTO, $dblIdProcedimento = null) { if(!isset($objDocumento)){ @@ -1161,7 +1114,7 @@ private function atribuirComponentesDigitaisREST($objDocumento, DocumentoDTO $ob $arrObjDocumentoDTOAssociacao = $this->listarDocumentosRelacionados($dblIdProcedimento, $objDocumentoDTO->getDblIdDocumento()); $strStaAssociacao = count($arrObjDocumentoDTOAssociacao) == 1 ? $arrObjDocumentoDTOAssociacao[0]['StaAssociacao'] : null; $arrObjDadosArquivos = $this->listarDadosArquivos($objDocumentoDTO, $strStaAssociacao); - $objDocumento['componentesDigitais'] = array(); + $objDocumento['componentesDigitais'] = []; foreach ($arrObjDadosArquivos as $numOrdemComponente => $objDadosArquivos) { if(!isset($objDadosArquivos) || count($objDadosArquivos) == 0){ @@ -1173,7 +1126,7 @@ private function atribuirComponentesDigitaisREST($objDocumento, DocumentoDTO $ob $strAlgoritmoHash = $objDadosArquivos['ALGORITMO_HASH_CONTEUDO']; //TODO: Revisar tal implementação para atender a gerao de hash de arquivos grandes - $objComponenteDigital = array(); + $objComponenteDigital = []; $objComponenteDigital['ordem'] = $numOrdemComponente; $objComponenteDigital['nome'] = mb_convert_encoding($objDadosArquivos["NOME"], 'UTF-8', 'ISO-8859-1'); $objComponenteDigital['hash'] = [ @@ -1236,7 +1189,7 @@ public function atribuirDadosAssinaturaDigitalREST($objDocumentoDTO, $objCompone $objDocumentoRN = new DocumentoRN(); $objDocumentoDTOTarjas = $objDocumentoRN->consultarRN0005($objDocumentoDTOTarjas); - $dataTarjas = array(); + $dataTarjas = []; $arrObjTarjas = $this->listarTarjasHTML($objDocumentoDTOTarjas); foreach ($arrObjTarjas as $strConteudoTarja) { $strConteudoTarja = trim(strip_tags($strConteudoTarja)); @@ -1255,13 +1208,13 @@ public function atribuirDadosAssinaturaDigitalREST($objDocumentoDTO, $objCompone foreach ($resAssinatura as $keyOrder => $assinatura) { $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setNumIdAtividade($assinatura->getNumIdAtividade()); //7 - $objAtividadeDTO->setNumIdTarefa(array(TarefaRN::$TI_ASSINATURA_DOCUMENTO, TarefaRN::$TI_AUTENTICACAO_DOCUMENTO), InfraDTO::$OPER_IN); // 5, 115 + $objAtividadeDTO->setNumIdTarefa([TarefaRN::$TI_ASSINATURA_DOCUMENTO, TarefaRN::$TI_AUTENTICACAO_DOCUMENTO], InfraDTO::$OPER_IN); // 5, 115 $objAtividadeDTO->retDthAbertura(); $objAtividadeDTO->retNumIdAtividade(); $objAtividadeRN = new AtividadeRN(); $objAtividade = $objAtividadeRN->consultarRN0033($objAtividadeDTO); - $objAssinaturaDigital = array(); + $objAssinaturaDigital = []; $objAssinaturaDigital['razao'] = mb_convert_encoding($dataTarjas[$keyOrder], 'UTF-8', 'ISO-8859-1'); $objAssinaturaDigital['observacao'] = mb_convert_encoding($dataTarjas[count($dataTarjas) - 1], 'UTF-8', 'ISO-8859-1'); $objAssinaturaDigital['dataHora'] = $this->objProcessoEletronicoRN->converterDataWebService($objAtividade->getDthAbertura()); @@ -1273,7 +1226,7 @@ public function atribuirDadosAssinaturaDigitalREST($objDocumentoDTO, $objCompone ]; $objAssinaturaDigital['cadeiaDoCertificado'] = [ 'formato' => 'PKCS7', - 'conteudo' => $assinatura->getStrP7sBase64() ? $assinatura->getStrP7sBase64() : 'vazio' + 'conteudo' => $assinatura->getStrP7sBase64() ?: 'vazio' ]; } else { $objAssinaturaDigital['hash'] = [ @@ -1317,7 +1270,7 @@ private function obterDadosArquivo(DocumentoDTO $objDocumentoDTO, $paramStrStaAs throw new InfraException('Parâmetro $objDocumentoDTO não informado.'); } - $objInformacaoArquivo = array(); + $objInformacaoArquivo = []; $objInformacaoArquivo['ALGORITMO_HASH_CONTEUDO'] = self::ALGORITMO_HASH_DOCUMENTO; $strProtocoloDocumentoFormatado = $objDocumentoDTO->getStrProtocoloDocumentoFormatado(); @@ -1401,7 +1354,7 @@ private function obterDadosArquivo(DocumentoDTO $objDocumentoDTO, $paramStrStaAs // e verificar se a sigla do sistema mudou para SUPER $hashDoComponenteDigital = base64_encode(hash(self::ALGORITMO_HASH_DOCUMENTO, $strConteudoAssinatura, true)); if(InfraUtil::compararVersoes(SEI_VERSAO, ">=", "4.0.0") && isset($hashDoComponenteDigitalAnterior) && $hashDoComponenteDigital <> $hashDoComponenteDigitalAnterior){ - $strConteudoAssinatura = $this->obterConteudoInternoAssinatura($objDocumentoDTO, false, false, null, true, true, true, true); + $strConteudoAssinatura = $this->obterConteudoInternoAssinatura($objDocumentoDTO, false, false, null, true, true, true); } //Caso o hash ainda esteja inconsistente testaremos o caso de uso envio SEI3 e atualizado pra SEI4.0.3 @@ -1445,7 +1398,7 @@ private function obterDadosArquivo(DocumentoDTO $objDocumentoDTO, $paramStrStaAs $strNomeComponenteDigital = ""; if($bolMultiplosComponentes){ $strCaminhoAnexoCompactado = $this->objAnexoRN->obterLocalizacao($objAnexoDTO); - list($strCaminhoAnexoTemporario, $strNomeComponenteDigital) = ProcessoEletronicoRN::descompactarComponenteDigital($strCaminhoAnexoCompactado, $numOrdemComponenteDigital); + [$strCaminhoAnexoTemporario, $strNomeComponenteDigital] = ProcessoEletronicoRN::descompactarComponenteDigital($strCaminhoAnexoCompactado, $numOrdemComponenteDigital); $strCaminhoAnexo = $strCaminhoAnexoTemporario; } else { $strCaminhoAnexo = $this->objAnexoRN->obterLocalizacao($objAnexoDTO); @@ -1455,7 +1408,7 @@ private function obterDadosArquivo(DocumentoDTO $objDocumentoDTO, $paramStrStaAs $strConteudoAssinatura = null; $nrTamanhoBytesArquivo = filesize($strCaminhoAnexo); - list($strDadosComplementares, $strMimeType) = $this->obterDadosComplementaresDoTipoDeArquivo($strCaminhoAnexo, $this->arrPenMimeTypes, $strProtocoloDocumentoFormatado); + [$strDadosComplementares, $strMimeType] = $this->obterDadosComplementaresDoTipoDeArquivo($strCaminhoAnexo, $this->arrPenMimeTypes, $strProtocoloDocumentoFormatado); $objInformacaoArquivo['NOME'] = $strNomeComponenteDigital; $objInformacaoArquivo['CONTEUDO'] = $strConteudoAssinatura; @@ -1488,7 +1441,7 @@ private function obterDadosArquivo(DocumentoDTO $objDocumentoDTO, $paramStrStaAs } else { throw new InfraException("Componente digital do documento {$strProtocoloDocumentoFormatado} não pode ser localizado."); } - } elseif(in_array($objDocumentoDTO->getStrStaDocumento(), array(DocumentoRN::$TD_FORMULARIO_GERADO, DocumentoRN::$TD_FORMULARIO_AUTOMATICO))) { + } elseif(in_array($objDocumentoDTO->getStrStaDocumento(), [DocumentoRN::$TD_FORMULARIO_GERADO, DocumentoRN::$TD_FORMULARIO_AUTOMATICO])) { $strConteudoAssinatura = null; $strConteudoFS = $this->recuperarConteudoComponenteImutavel($objDocumentoDTO); if(!empty($strConteudoFS)){ @@ -1541,7 +1494,6 @@ private function obterDadosArquivo(DocumentoDTO $objDocumentoDTO, $paramStrStaAs * Tramita.gov.br, garantindo o envio da versão correta enviado originalmente e impedindo erros de hash por conta de * mudança na forma dinâmica de recuperação do conteúdo do documento * - * @param DocumentoDTO $objDocumentoDTO * @return str String contendo o conteúdo do documento */ private function recuperarConteudoComponenteImutavel(DocumentoDTO $objDocumentoDTO){ @@ -1584,7 +1536,7 @@ private function obterDadosComplementaresDoTipoDeArquivo($strCaminhoAnexo, $arrP private function listarDadosArquivos($objDocumentoDTO, $strStaAssociacao){ $numOrdemComponenteInicial = 1; - $arrObjInformacaoArquivo = array(); + $arrObjInformacaoArquivo = []; $arrObjComponentesDigitaisDTO = $this->listarComponentesDigitaisUltimoTramite($objDocumentoDTO); if(empty($arrObjComponentesDigitaisDTO)){ @@ -1740,43 +1692,6 @@ private function obterTipoDeConteudo($strMimeType) return $resultado; } - private function atribuirNumeracaoDocumento($objDocumento, DocumentoDTO $parObjDocumentoDTO) - { - $objSerieDTO = $this->consultarSerie($parObjDocumentoDTO->getNumIdSerie()); - - if(!isset($objSerieDTO)){ - throw new InfraException("Tipo de Documento não pode ser localizado. (Código: ".$parObjDocumentoDTO->getNumIdSerie().")"); - } - - $strStaNumeracao = $objSerieDTO->getStrStaNumeracao(); - - if($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_UNIDADE) { - $objDocumento->identificacao = new stdClass(); - $objDocumento->identificacao->numero = mb_convert_encoding($parObjDocumentoDTO->getStrNumero(), 'UTF-8', 'ISO-8859-1'); - $objDocumento->identificacao->siglaDaUnidadeProdutora = mb_convert_encoding($parObjDocumentoDTO->getStrSiglaUnidadeGeradoraProtocolo(), 'UTF-8', 'ISO-8859-1'); - $objDocumento->identificacao->complemento = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($parObjDocumentoDTO->getStrDescricaoUnidadeGeradoraProtocolo(), 100), 'UTF-8', 'ISO-8859-1'); - }else if($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_ORGAO){ - $objOrgaoDTO = $this->consultarOrgao($parObjDocumentoDTO->getNumIdOrgaoUnidadeGeradoraProtocolo()); - $objDocumento->identificacao = new stdClass(); - $objDocumento->identificacao->numero = mb_convert_encoding($parObjDocumentoDTO->getStrNumero(), 'UTF-8', 'ISO-8859-1'); - $objDocumento->identificacao->siglaDaUnidadeProdutora = mb_convert_encoding($objOrgaoDTO->getStrSigla(), 'UTF-8', 'ISO-8859-1'); - $objDocumento->identificacao->complemento = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objOrgaoDTO->getStrDescricao(), 100), 'UTF-8', 'ISO-8859-1'); - }else if($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_ANUAL_UNIDADE){ - $objDocumento->identificacao = new stdClass(); - $objDocumento->identificacao->siglaDaUnidadeProdutora = mb_convert_encoding($parObjDocumentoDTO->getStrSiglaUnidadeGeradoraProtocolo(), 'UTF-8', 'ISO-8859-1'); - $objDocumento->identificacao->complemento = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($parObjDocumentoDTO->getStrDescricaoUnidadeGeradoraProtocolo(), 100), 'UTF-8', 'ISO-8859-1'); - $objDocumento->identificacao->numero = mb_convert_encoding($parObjDocumentoDTO->getStrNumero(), 'UTF-8', 'ISO-8859-1'); - $objDocumento->identificacao->ano = substr($parObjDocumentoDTO->getDtaGeracaoProtocolo(), 6, 4); - }else if($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_ANUAL_ORGAO){ - $objOrgaoDTO = $this->consultarOrgao($parObjDocumentoDTO->getNumIdOrgaoUnidadeGeradoraProtocolo()); - $objDocumento->identificacao = new stdClass(); - $objDocumento->identificacao->numero = mb_convert_encoding($parObjDocumentoDTO->getStrNumero(), 'UTF-8', 'ISO-8859-1'); - $objDocumento->identificacao->siglaDaUnidadeProdutora = mb_convert_encoding($objOrgaoDTO->getStrSigla(), 'UTF-8', 'ISO-8859-1'); - $objDocumento->identificacao->complemento = mb_convert_encoding($this->objProcessoEletronicoRN->reduzirCampoTexto($objOrgaoDTO->getStrDescricao(), 100), 'UTF-8', 'ISO-8859-1'); - $objDocumento->identificacao->ano = substr($parObjDocumentoDTO->getDtaGeracaoProtocolo(), 6, 4); - } - } - private function atribuirNumeracaoDocumentoREST($objDocumento, DocumentoDTO $parObjDocumentoDTO) { $objSerieDTO = $this->consultarSerie($parObjDocumentoDTO->getNumIdSerie()); @@ -1815,7 +1730,7 @@ private function atribuirNumeracaoDocumentoREST($objDocumento, DocumentoDTO $par private function adicionarProcessosApensadosREST($objProcesso, $arrIdProcessoApensado) { if (isset($arrIdProcessoApensado) && is_array($arrIdProcessoApensado) && count($arrIdProcessoApensado) > 0) { - $objProcesso['processoApensado'] = array(); + $objProcesso['processoApensado'] = []; foreach ($arrIdProcessoApensado as $idProcedimentoApensado) { $objProcesso['processoApensado'][] = $this->construirProcessoREST($idProcedimentoApensado); @@ -1903,19 +1818,6 @@ public function listarInteressados($numIdProtocolo) return $this->objParticipanteRN->listarRN0189($objParticipanteDTO); } - private function consultarProtocoloDocumento($numIdProcedimento) - { - $objProtocoloDTO = new ProtocoloDTO(); - - $objProtocoloDTO->setStrStaProtocolo(array(ProtocoloRN::$TP_DOCUMENTO_GERADO,ProtocoloRN::$TP_DOCUMENTO_RECEBIDO), InfraDTO::$OPER_IN); - $objProtocoloDTO->setStrStaProtocolo($staProtocolo); - $objProtocoloDTO->setDblIdProtocolo($numIdProcedimento); - $objProtocoloDTO->retTodos(); - $objProtocoloDTO->retNumIdSerie(); - - return $this->objProtocoloRN->consultarRN0186($objProtocoloDTO); //TODO: Verificar regra de busca - } - private function consultarAnexo($dblIdDocumento) { if(!isset($dblIdDocumento)){ @@ -1976,7 +1878,7 @@ public function listarDocumentosRelacionados($idProcedimento, $idDblDocumentoFil throw new InfraException('Parâmetro $idProcedimento não informado.'); } - $arrObjDocumentoDTO = array(); + $arrObjDocumentoDTO = []; $arrAssociacaoDocumentos = $this->objProcessoEletronicoRN->listarAssociacoesDocumentos($idProcedimento); $arrIdDocumentos = array_map(function($item){ return $item["IdProtocolo"]; }, $arrAssociacaoDocumentos); @@ -2010,17 +1912,14 @@ public function listarDocumentosRelacionados($idProcedimento, $idDblDocumentoFil $arrObjDocumentoDTOIndexado = InfraArray::indexarArrInfraDTO($arrObjDocumentoDTOBanco, 'IdDocumento'); //Mantem ordenação definida pelo usuário, indicando qual a sua associação com o processo - $arrObjDocumentoDTO = array(); + $arrObjDocumentoDTO = []; foreach($arrAssociacaoDocumentos as $objAssociacaoDocumento){ $dblIdDocumento = $objAssociacaoDocumento["IdProtocolo"]; $bolIdDocumentoExiste = array_key_exists($dblIdDocumento, $arrObjDocumentoDTOIndexado) && isset($arrObjDocumentoDTOIndexado[$dblIdDocumento]); $bolIdDocumentoFiltrado = is_null($idDblDocumentoFiltro) || ($dblIdDocumento == $idDblDocumentoFiltro); if ($bolIdDocumentoExiste && $bolIdDocumentoFiltrado){ - $arrObjDocumentoDTO[] = array( - "Documento" => $arrObjDocumentoDTOIndexado[$dblIdDocumento], - "StaAssociacao" => $objAssociacaoDocumento["StaAssociacao"] - ); + $arrObjDocumentoDTO[] = ["Documento" => $arrObjDocumentoDTOIndexado[$dblIdDocumento], "StaAssociacao" => $objAssociacaoDocumento["StaAssociacao"]]; } } } @@ -2055,30 +1954,6 @@ private function consultarNomeDocumentoPEN(DocumentoDTO $objDocumentoDTO){ return $strNome; } - private function consultarDocumento($dblIdDocumento) - { - if(!isset($dblIdDocumento)){ - throw new InfraException('Parâmetro $dblIdDocumento não informado.'); - } - - $documentoDTO = new DocumentoDTO(); - $documentoDTO->setDblIdDocumento($dblIdDocumento); - $documentoDTO->retStrDescricaoUnidadeGeradoraProtocolo(); - $documentoDTO->retStrProtocoloDocumentoFormatado(); - $documentoDTO->retStrStaProtocoloProtocolo(); - $documentoDTO->retStrDescricaoProtocolo(); - $documentoDTO->retDblIdDocumento(); - $documentoDTO->retStrNomeSerie(); - $documentoDTO->retNumIdSerie(); - $documentoDTO->retStrConteudoAssinatura(); - $documentoDTO->retStrStaDocumento(); - $documentoDTO->retStrStaEstadoProtocolo(); - $documentoDTO->retNumIdHipoteseLegalProtocolo(); - $documentoDTO->retStrStaProtocoloProtocolo(); - - return $this->objDocumentoRN->consultarRN0005($documentoDTO); - } - private function enviarComponentesDigitais($strNumeroRegistro, $numIdTramite, $strProtocolo, $bolSinProcessamentoEmBloco = false) { if (!isset($strNumeroRegistro)) { @@ -2115,9 +1990,9 @@ private function enviarComponentesDigitais($strNumeroRegistro, $numIdTramite, $s $arrComponentesDigitaisIndexadosDTO = InfraArray::indexarArrInfraDTO($arrComponentesDigitaisDTOBanco, "IdDocumento", true); //Construir objeto Componentes digitais - $arrHashComponentesEnviados = array(); + $arrHashComponentesEnviados = []; - foreach ($arrComponentesDigitaisIndexadosDTO as $numIdDocumento => $arrComponentesDigitaisDTO) { + foreach ($arrComponentesDigitaisIndexadosDTO as $arrComponentesDigitaisDTO) { $bolMultiplosComponentes = count($arrComponentesDigitaisDTO) > 1; $this->corrigirNumeroOrdemComponentes($arrComponentesDigitaisDTO, $arrComponentesDigitaisDTO[0]->getStrProtocoloDocumentoFormatado()); foreach ($arrComponentesDigitaisDTO as $objComponenteDigitalDTO) { @@ -2150,7 +2025,7 @@ private function enviarComponentesDigitais($strNumeroRegistro, $numIdTramite, $s $nrTamanhoArquivoMb = 0; $nrTamanhoBytesArquivo = 0; $nrTamanhoMegasMaximo = ProcessoEletronicoRN::obterTamanhoBlocoTransferencia(); - $nrTamanhoBytesMaximo = ($nrTamanhoMegasMaximo * pow(1024, 2)); //Qtd de MB definido como parametro + $nrTamanhoBytesMaximo = ($nrTamanhoMegasMaximo * 1024 ** 2); //Qtd de MB definido como parametro try { //Verifica se o arquivo é maior que o tamanho máximo definido para envio, se for, realiza o particionamento do arquivo @@ -2166,19 +2041,19 @@ private function enviarComponentesDigitais($strNumeroRegistro, $numIdTramite, $s if($bolMultiplosComponentes){ $numOrdemComponenteDigital = $objComponenteDigitalDTO->getNumOrdem(); $strCaminhoAnexoCompactado = $this->objAnexoRN->obterLocalizacao($objAnexoDTO); - list($strCaminhoAnexoTemporario, ) = ProcessoEletronicoRN::descompactarComponenteDigital($strCaminhoAnexoCompactado, $numOrdemComponenteDigital); + [$strCaminhoAnexoTemporario, ] = ProcessoEletronicoRN::descompactarComponenteDigital($strCaminhoAnexoCompactado, $numOrdemComponenteDigital); $strCaminhoAnexo = $strCaminhoAnexoTemporario; } else { $strCaminhoAnexo = $this->objAnexoRN->obterLocalizacao($objAnexoDTO); } $nrTamanhoBytesArquivo = filesize($strCaminhoAnexo); //Tamanho total do arquivo - $nrTamanhoArquivoMb = ($nrTamanhoBytesArquivo / pow(1024, 2)); + $nrTamanhoArquivoMb = ($nrTamanhoBytesArquivo / 1024 ** 2); //Método que irá particionar o arquivo em partes para realizar o envio $this->particionarComponenteDigitalParaEnvio( $strCaminhoAnexo, $dadosDoComponenteDigital, $nrTamanhoArquivoMb, $nrTamanhoMegasMaximo, - $nrTamanhoBytesMaximo, $objComponenteDigitalDTO, $numIdTramite, $bolSinProcessamentoEmBloco + $nrTamanhoBytesMaximo, $bolSinProcessamentoEmBloco ); //Finalizar o envio das partes do componente digital @@ -2244,9 +2119,8 @@ protected function retornaComponentesImutaveisControlado($objDocumentoDTO){ $objComponenteDigitalDTO->retTodos(); $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); - $arrComponenteDigital=$objComponenteDigitalBD->listar($objComponenteDigitalDTO); - return $arrComponenteDigital; + return $objComponenteDigitalBD->listar($objComponenteDigitalDTO); } @@ -2328,54 +2202,6 @@ private function corrigirNumeroOrdemComponentes($arrComponentesDigitaisDTO, $str } } - /** - * Método responsável por realizar o particionamento do componente digital a ser enviado, de acordo com o parametro (TamanhoBlocoArquivoTransferencia) - * @author Josinaldo Júnior - * @param $strCaminhoAnexo - * @param $dadosDoComponenteDigital - * @param $nrTamanhoArquivoMb - * @param $nrTamanhoMegasMaximo - * @param $nrTamanhoBytesMaximo - * @param $objComponenteDigitalDTO - * @throws InfraException - */ - private function enviarComponenteDigitalParticionado($strCaminhoAnexo, $dadosDoComponenteDigital, $nrTamanhoArquivoMb, $nrTamanhoMegasMaximo, $nrTamanhoBytesMaximo, $objComponenteDigitalDTO) - { - $qtdPartes = ceil($nrTamanhoArquivoMb / $nrTamanhoMegasMaximo); - - //Abre o arquivo para leitura - $fp = fopen($strCaminhoAnexo, "rb"); - - try{ - $inicio = 0; - //Lê o arquivo em partes para realizar o envio - for ($i = 1; $i <= $qtdPartes; $i++) - { - $this->barraProgresso->setStrRotulo(sprintf(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_DOCUMENTO, $objComponenteDigitalDTO->getStrProtocoloDocumentoFormatado())." (Componente digital: parte $i de $qtdPartes)"); - $parteDoArquivo = stream_get_contents($fp, $nrTamanhoBytesMaximo, $inicio); - $tamanhoParteArquivo = strlen($parteDoArquivo); - - //Cria um objeto com as informaes da parte do componente digital - $identificacaoDaParte = new stdClass(); - $identificacaoDaParte->inicio = $inicio; - $identificacaoDaParte->fim = ($inicio + $tamanhoParteArquivo); - - $dadosDoComponenteDigital->identificacaoDaParte = $identificacaoDaParte; - $dadosDoComponenteDigital->conteudoDaParteDeComponenteDigital = $parteDoArquivo; - - $parametros = new stdClass(); - $parametros->dadosDaParteDeComponenteDigital = $dadosDoComponenteDigital; - - //Envia uma parte de um componente digital - $resultado = $this->objProcessoEletronicoRN->enviarParteDeComponenteDigital($parametros); - $inicio = ($nrTamanhoBytesMaximo * $i); - } - } - finally{ - fclose($fp); - } - } - private function validarParametrosExpedicao(InfraException $objInfraException, ExpedirProcedimentoDTO $objExpedirProcedimentoDTO) { @@ -2496,12 +2322,7 @@ private function validarProcessoAbertoUnidade(InfraException $objInfraException, public function validarProcessoIncluidoBlocoEmAndamento(InfraException $objInfraException, ProcedimentoDTO $objProcedimentoDTO, $strAtributoValidacao) { - $concluido = array( - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE - ); + $concluido = [ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE]; $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); $objPenBlocoProcessoDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento()); @@ -2539,11 +2360,9 @@ private function validarNivelAcessoProcesso(InfraException $objInfraException, P } /** - * Valida existncia da Hiptese legal de Envio - * @param InfraException $objInfraException - * @param ProcedimentoDTO $objProcedimentoDTO - * @param string $strAtributoValidacao - */ + * Valida existncia da Hiptese legal de Envio + * @param string $strAtributoValidacao + */ private function validarHipoteseLegalEnvio(InfraException $objInfraException, ProcedimentoDTO $objProcedimentoDTO, $strAtributoValidacao) { if ($objProcedimentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_RESTRITO) { @@ -2642,7 +2461,7 @@ protected function validarPossibilidadeBloqueioControlado($objProcedimentoDTO){ $objProtocoloDTOBanco = new ProcedimentoDTO(); $objProtocoloDTOBanco->setDblIdProcedimento($objProcedimentoDTO->getDblIdProcedimento()); $objProtocoloDTOBanco->retStrStaEstadoProtocolo(); - $objProtocoloDTOBanco = $objProcedimentoRN->consultarRN0201($objProtocoloDTOBanco); + $objProcedimentoRN->consultarRN0201($objProtocoloDTOBanco); $objProcedimentoRN->desbloquear([$objProcedimentoDTO]); } @@ -2729,12 +2548,12 @@ public function validarProcessoAbertoEmOutraUnidade($objInfraException, $arrProt public function trazerTextoSeContemValidacoes($objInfraException) { if ($objInfraException->contemValidacoes()) { - $arrErros = array(); + $arrErros = []; $message = ""; foreach ($objInfraException->getArrObjInfraValidacao() as $objInfraValidacao) { $strAtributo = $objInfraValidacao->getStrAtributo(); if (!array_key_exists($strAtributo, $arrErros)) { - $arrErros[$strAtributo] = array(); + $arrErros[$strAtributo] = []; } $arrErros[$strAtributo][] = mb_convert_encoding($objInfraValidacao->getStrDescricao(), 'UTF-8', 'ISO-8859-1'); $message .= $objInfraValidacao->getStrDescricao() . "\n"; @@ -2751,13 +2570,10 @@ private function obterNivelSigiloPEN($strNivelSigilo) switch ($strNivelSigilo) { case ProtocoloRN::$NA_PUBLICO: return self::STA_SIGILO_PUBLICO; - break; case ProtocoloRN::$NA_RESTRITO: return self::STA_SIGILO_RESTRITO; - break; case ProtocoloRN::$NA_SIGILOSO: return self::STA_SIGILO_SIGILOSO; - break; } } @@ -2765,7 +2581,7 @@ private function obterNivelSigiloPEN($strNivelSigilo) public function listarProcessosApensados($dblIdProcedimentoAtual, $idUnidadeAtual, $strPalavrasPesquisa = '', $numRegistros = 15) { - $arrObjProcessosApensados = array(); + $arrObjProcessosApensados = []; try{ $objInfraException = new InfraException(); @@ -2803,11 +2619,11 @@ public function listarProcessosApensados($dblIdProcedimentoAtual, $idUnidadeAtua $objAtividadeDTO->adicionarCriterio($a, $b, $arrPalavrasPesquisa, $d); } - $arrResultado = array(); + $arrResultado = []; $arrObjAtividadeDTO = $this->objAtividadeRN->listarRN0036($objAtividadeDTO); $arrObjAtividadeDTOIndexado = InfraArray::indexarArrInfraDTO($arrObjAtividadeDTO, 'ProtocoloFormatadoProtocolo', true); - foreach ($arrObjAtividadeDTOIndexado as $key => $value) { + foreach ($arrObjAtividadeDTOIndexado as $value) { if(is_array($value) && count($value) == 1) { $arrResultado[] = $value[0]; @@ -2835,7 +2651,7 @@ public function listarProcessosAbertos($dblIdProcedimentoAtual, $idUnidadeAtual) $arrObjAtividadeDTO = $this->objAtividadeRN->listarRN0036($objAtividadeDTO); - $arrayProcedimentos = array(); + $arrayProcedimentos = []; foreach($arrObjAtividadeDTO as $atividade){ $arrayProcedimentos[$atividade->getDblIdProtocolo()][$atividade->getNumIdUnidade()] = 1; @@ -2846,7 +2662,7 @@ public function listarProcessosAbertos($dblIdProcedimentoAtual, $idUnidadeAtual) public function listarProcessosApensadosAvancado(AtividadeDTO $objAtividadeDTO, $dblIdProcedimentoAtual, $idUnidadeAtual, $strPalavrasPesquisa = '', $strDescricaoPesquisa = '', $numRegistros = 15) { - $arrObjProcessosApensados = array(); + $arrObjProcessosApensados = []; try { $objInfraException = new InfraException(); @@ -2884,11 +2700,11 @@ public function listarProcessosApensadosAvancado(AtividadeDTO $objAtividadeDTO, $objAtividadeDTO->adicionarCriterio($a, $b, $arrPalavrasPesquisa, $d); } - $arrResultado = array(); + $arrResultado = []; $arrObjAtividadeDTO = $this->objAtividadeRN->listarRN0036($objAtividadeDTO); $arrObjAtividadeDTOIndexado = InfraArray::indexarArrInfraDTO($arrObjAtividadeDTO, 'ProtocoloFormatadoProtocolo', true); - foreach ($arrObjAtividadeDTOIndexado as $key => $value) { + foreach ($arrObjAtividadeDTOIndexado as $value) { if(is_array($value) && count($value) == 1) { $arrResultado[] = $value[0]; @@ -2916,7 +2732,7 @@ public function listarProcessosApensadosAvancado(AtividadeDTO $objAtividadeDTO, * @throws InfraException */ private function particionarComponenteDigitalParaEnvio($strCaminhoAnexo, $dadosDoComponenteDigital, $nrTamanhoArquivoMb, $nrTamanhoMegasMaximo, - $nrTamanhoBytesMaximo, $objComponenteDigitalDTO, $numIdTramite, $bolSinProcessamentoEmBloco = false) + $nrTamanhoBytesMaximo, $bolSinProcessamentoEmBloco = false) { //Faz o cálculo para obter a quantidade de partes que o arquivo será particionado, sempre arrendondando para cima $qtdPartes = ceil($nrTamanhoArquivoMb / $nrTamanhoMegasMaximo); @@ -2953,11 +2769,7 @@ private function particionarComponenteDigitalParaEnvio($strCaminhoAnexo, $dadosD { $conteudoDaParteNaoEnviadaDoArquivo = stream_get_contents($fp, $nrTamanhoBytesMaximo, $parteComponenteNaoEnviada); $fim = ($parteComponenteNaoEnviada + strlen($conteudoDaParteNaoEnviadaDoArquivo)); - try{ - $this->enviarParteDoComponenteDigital($parteComponenteNaoEnviada, $fim, $conteudoDaParteNaoEnviadaDoArquivo, $dadosDoComponenteDigital); - }catch (Exception $e){ - throw $e; - } + $this->enviarParteDoComponenteDigital($parteComponenteNaoEnviada, $fim, $conteudoDaParteNaoEnviadaDoArquivo, $dadosDoComponenteDigital); $i++; } } @@ -3062,7 +2874,7 @@ protected function receberReciboDeEnvioControlado($parNumIdTramite) $objGenericoBD->cadastrar($objReciboTramiteDTO); if(isset($objReciboEnvio->reciboDeEnvio->hashDoComponenteDigital)) { - $objReciboEnvio->reciboDeEnvio->hashDoComponenteDigital = !is_array($objReciboEnvio->reciboDeEnvio->hashDoComponenteDigital) ? array($objReciboEnvio->reciboDeEnvio->hashDoComponenteDigital) : $objReciboEnvio->reciboDeEnvio->hashDoComponenteDigital; + $objReciboEnvio->reciboDeEnvio->hashDoComponenteDigital = !is_array($objReciboEnvio->reciboDeEnvio->hashDoComponenteDigital) ? [$objReciboEnvio->reciboDeEnvio->hashDoComponenteDigital] : $objReciboEnvio->reciboDeEnvio->hashDoComponenteDigital; if($objReciboEnvio->reciboDeEnvio->hashDoComponenteDigital && is_array($objReciboEnvio->reciboDeEnvio->hashDoComponenteDigital)){ foreach($objReciboEnvio->reciboDeEnvio->hashDoComponenteDigital as $strHashComponenteDigital){ $objReciboTramiteHashDTO = new ReciboTramiteHashDTO(); @@ -3085,11 +2897,10 @@ protected function receberReciboDeEnvioControlado($parNumIdTramite) } /** - * Atualiza os dados do protocolo somente para o modulo PEN - * - * @param int $dblIdProtocolo - * @return null - */ + * Atualiza os dados do protocolo somente para o modulo PEN + * + * @param int $dblIdProtocolo + */ private function atualizarPenProtocolo($dblIdProtocolo = 0){ $objProtocoloDTO = new PenProtocoloDTO(); @@ -3156,11 +2967,7 @@ protected function cancelarTramiteInternoControlado(ProtocoloDTO $objDtoProtocol $objPenBlocoProcessoDTO->retTodos(); $objPenBlocoProcessoDTO->setDblIdProtocolo($dblIdProcedimento); $objPenBlocoProcessoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); - $objPenBlocoProcessoDTO->setNumIdAndamento(array( - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE - ), InfraDTO::$OPER_IN); + $objPenBlocoProcessoDTO->setNumIdAndamento([ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE], InfraDTO::$OPER_IN); $objPenBlocoProcessoDTO->setNumMaxRegistrosRetorno(1); $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); @@ -3222,18 +3029,15 @@ protected function cancelarTramiteInternoControlado(ProtocoloDTO $objDtoProtocol switch ($numSituacaoAtual) { case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO: throw new InfraException("O sistema destinatário já iniciou o recebimento desse processo, portanto não é possível realizar o cancelamento"); - break; case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE: throw new InfraException("O sistema destinatário já recebeu esse processo, portanto não é possivel realizar o cancelamento"); - break; case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO: throw new InfraException("O trâmite externo para esse processo encontra-se recusado."); - break; } // Solicitação de cancelamento de tramite de processo ao TramitaGOV.br // Somente solicita cancelamento ao PEN se processo ainda não estiver cancelado - if(!in_array($numSituacaoAtual, array(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO))) { + if(!in_array($numSituacaoAtual, [ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO])) { $this->objProcessoEletronicoRN->cancelarTramite($tramite->IDT); } } @@ -3283,7 +3087,7 @@ protected function cancelarTramiteInternoControlado(ProtocoloDTO $objDtoProtocol $objAtributoAndamentoDTOUser->setStrIdOrigem(null); $objAtributoAndamentoDTOUser->setStrValor(SessaoSEI::getInstance()->getStrNomeUsuario()); - $objAtividadeDTO->setArrObjAtributoAndamentoDTO(array($objAtributoAndamentoDTOHora, $objAtributoAndamentoDTOUser)); + $objAtividadeDTO->setArrObjAtributoAndamentoDTO([$objAtributoAndamentoDTOHora, $objAtributoAndamentoDTOUser]); $objAtividadeRN = new AtividadeRN(); $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); @@ -3311,13 +3115,7 @@ public function verificarProcessoEmExpedicao($parNumIdProcedimento) $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento()); $objAtividadeDTO->setNumIdTarefa( - array(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_EXTERNO), - ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO), - ), + [ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO), ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO), ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_EXTERNO), ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO)], InfraDTO::$OPER_IN); $objAtividadeDTO->setNumMaxRegistrosRetorno(1); $objAtividadeDTO->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC); @@ -3345,9 +3143,7 @@ public function consultaUnidadePk($idUnidade) { $objUnidadeDTO->setNumIdUnidade($idUnidade); $objUnidadeDTO->retTodos(); - $objUnidadeDTO = $this->objUnidadeRN->consultarRN0125($objUnidadeDTO); - - return $objUnidadeDTO; + return $this->objUnidadeRN->consultarRN0125($objUnidadeDTO); } public function consultaUsuarioPk($idUsuario) @@ -3357,9 +3153,7 @@ public function consultaUsuarioPk($idUsuario) $objUsuarioDTO->setNumIdUsuario($idUsuario); $objUsuarioDTO->retTodos(); - $objUsuarioDTO = $this->objUsuarioRN->consultarRN0489($objUsuarioDTO); - - return $objUsuarioDTO; + return $this->objUsuarioRN->consultarRN0489($objUsuarioDTO); } public function consultarProtocoloPk($idPrtocedimento) @@ -3381,12 +3175,10 @@ public function consultarProtocoloPk($idPrtocedimento) public function consultaDocumentosProcesso($idPrtocedimento) { - $documentoRespArray = array(); $documentoDTO = new DocumentoDTO(); $documentoDTO->setDblIdProcedimento($idPrtocedimento); $documentoDTO->retTodos(); - $documentoDTO = $this->objDocumentoRN->listarRN0008($documentoDTO); - return $documentoDTO; + return $this->objDocumentoRN->listarRN0008($documentoDTO); } @@ -3414,13 +3206,12 @@ private function necessitaCancelamentoTramiteAnterior($parArrTramitesAnteriores) * Devido a estrutura interna do SEI, não existe uma forma de reaproveitar as regras de montagem de tarjas * de forma individual, restando como última alternativa a reprodução das regras até que esta seja encapsulado pelo core do SEI * - * @param DocumentoDTO $objDocumentoDTO * @return array */ protected function listarTarjasHTMLConectado(DocumentoDTO $objDocumentoDTO) { try { - $arrResposta = array(); + $arrResposta = []; $objAssinaturaDTO = new AssinaturaDTO(); $objAssinaturaDTO->retStrNome(); diff --git a/src/rn/PENAgendamentoRN.php b/src/rn/PENAgendamentoRN.php index 7cd742fe8..0e6fc0cd8 100755 --- a/src/rn/PENAgendamentoRN.php +++ b/src/rn/PENAgendamentoRN.php @@ -21,7 +21,7 @@ protected function atualizarHipotesesLegaisControlado() $hipotesesPen = $processoEletronicoRN->consultarHipotesesLegais(); $hipotesesPenDesativadas = $processoEletronicoRN->consultarHipotesesLegais(false); - $hipoteses = array(); + $hipoteses = []; if (!empty($hipotesesPen) && !empty($hipotesesPen['hipotesesLegais'])) { $hipoteses = $hipotesesPen['hipotesesLegais']; } diff --git a/src/rn/PenAtividadeRN.php b/src/rn/PenAtividadeRN.php index 7cafe6eeb..e56be0c95 100755 --- a/src/rn/PenAtividadeRN.php +++ b/src/rn/PenAtividadeRN.php @@ -9,11 +9,8 @@ class PenAtividadeRN extends AtividadeRN { - private $statusPesquisa = true; - - public function setStatusPesquisa($statusPesquisa) { - - $this->statusPesquisa = $statusPesquisa; + public function setStatusPesquisa($statusPesquisa) + { } /** @@ -25,10 +22,7 @@ public function setStatusPesquisa($statusPesquisa) { */ public static function retornaAtividadeDoTramiteFormatado($numIdTramite, $numIdEstrutura, $numIdTarefa){ - $objReturn = (object)array( - 'strMensagem' => '', - 'bolReciboExiste' => false - ); + $objReturn = (object)['strMensagem' => '', 'bolReciboExiste' => false]; $objBancoSEI = BancoSEI::getInstance(); diff --git a/src/rn/PenAtualizadorRN.php b/src/rn/PenAtualizadorRN.php index e7cdbcaa4..68545e1cb 100755 --- a/src/rn/PenAtualizadorRN.php +++ b/src/rn/PenAtualizadorRN.php @@ -57,19 +57,15 @@ protected function inicializarObjMetaBanco() { } /** - * Adiciona uma mensagem ao output para o usuário - * - * @return null - */ + * Adiciona uma mensagem ao output para o usuário + */ protected function logar($strMsg) { $this->objDebug->gravar($strMsg); } /** - * Inicia o script criando um contator interno do tempo de execução - * - * @return null - */ + * Inicia o script criando um contator interno do tempo de execução + */ protected function inicializar($strTitulo) { $this->numSeg = InfraUtil::verificarTempoProcessamento(); @@ -78,10 +74,8 @@ protected function inicializar($strTitulo) { } /** - * Finaliza o script informando o tempo de execução. - * - * @return null - */ + * Finaliza o script informando o tempo de execução. + */ protected function finalizar($strMsg = null, $bolErro = false){ if (!$bolErro) { $this->numSeg = InfraUtil::verificarTempoProcessamento($this->numSeg); diff --git a/src/rn/PenBlocoProcessoRN.php b/src/rn/PenBlocoProcessoRN.php index 30d1c0046..604e722a2 100755 --- a/src/rn/PenBlocoProcessoRN.php +++ b/src/rn/PenBlocoProcessoRN.php @@ -19,7 +19,6 @@ protected function inicializarObjInfraIBanco() /** * Verifica se o bloco pode ser excluído * - * @param array $arrObjDTO * @return string|null */ public function verificarExclusaoBloco(array $arrObjDTO) @@ -60,7 +59,7 @@ protected function obterPendenciasBlocoControlado(PenBlocoProcessoDTO $objPenBlo SessaoSEI::getInstance()->validarAuditarPermissao('pen_expedir_bloco', __METHOD__, $objPenBlocoProcessoDTO); //Obter todos os processos pendentes antes de iniciar o monitoramento - $arrObjPendenciasBlocoDTO = $this->listar($objPenBlocoProcessoDTO) ?: array(); + $arrObjPendenciasBlocoDTO = $this->listar($objPenBlocoProcessoDTO) ?: []; shuffle($arrObjPendenciasBlocoDTO); $objPenBlocoProcessoBD = new PenBlocoProcessoBD($this->getObjInfraIBanco()); @@ -84,7 +83,7 @@ protected function desbloquearProcessoBlocoControlado($dblIdProcedimento) $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); $objPenBlocoProcessoDTO->retTodos(); $objPenBlocoProcessoDTO->setDblIdProtocolo($dblIdProcedimento); - $objPenBlocoProcessoDTO->setNumIdAndamento(array(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO), InfraDTO::$OPER_IN); + $objPenBlocoProcessoDTO->setNumIdAndamento([ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO], InfraDTO::$OPER_IN); $objPenBlocoProcessoDTO = $this->consultar($objPenBlocoProcessoDTO); @@ -129,7 +128,7 @@ protected function desbloquearProcessoBlocoControlado($dblIdProcedimento) $objAtributoAndamentoDTOUser->setStrIdOrigem(null); $objAtributoAndamentoDTOUser->setStrValor($objUsuario->getStrNome()); - $objAtividadeDTO->setArrObjAtributoAndamentoDTO(array($objAtributoAndamentoDTOHora, $objAtributoAndamentoDTOUser)); + $objAtividadeDTO->setArrObjAtributoAndamentoDTO([$objAtributoAndamentoDTOHora, $objAtributoAndamentoDTOUser]); $objAtividadeRN = new AtividadeRN(); $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); @@ -141,7 +140,6 @@ protected function desbloquearProcessoBlocoControlado($dblIdProcedimento) /** * Registra a tentativa de trâmite do processo em bloco para posterior verificação de estouro do limite de envios * - * @param PenBlocoProcessoDTO $objPenBlocoProcessoDTO * @return void */ protected function registrarTentativaEnvioControlado(PenBlocoProcessoDTO $objPenBlocoProcessoDTO) @@ -158,7 +156,7 @@ protected function listarProtocolosBlocoConectado(PenBlocoProcessoDTO $parObjTra { try { - $ret = array(); + $ret = []; //Valida Permissao SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramita_em_bloco_protocolo_listar', __METHOD__, $parObjTramitaEmBlocoProtocoloDTO); @@ -253,9 +251,8 @@ protected function listarControlado(PenBlocoProcessoDTO $objDTO) SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramita_em_bloco_protocolo_listar', __METHOD__, $objDTO); $objPenBlocoProcessoBD = new PenBlocoProcessoBD($this->getObjInfraIBanco()); - $arrObjPenBlocoProcessoDTO = $objPenBlocoProcessoBD->listar($objDTO); - return $arrObjPenBlocoProcessoDTO; + return $objPenBlocoProcessoBD->listar($objDTO); } catch (\Exception $e) { throw new InfraException('Falha na listagem de pendências de trâmite de processos em bloco.', $e); } @@ -267,7 +264,7 @@ protected function excluirControlado(array $arrayObjDTO) //Valida Permissão SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramita_em_bloco_protocolo_excluir', __METHOD__, $arrayObjDTO); - $arrExcluido = array(); + $arrExcluido = []; foreach ($arrayObjDTO as $objDTO) { @@ -345,9 +342,8 @@ protected function cadastrarControlado(PenBlocoProcessoDTO $objPenBlocoProcessoD $objInfraException = new InfraException(); $objPenBlocoProcessoBD = new PenBlocoProcessoBD($this->getObjInfraIBanco()); - $ret = $objPenBlocoProcessoBD->cadastrar($objPenBlocoProcessoDTO); - return $ret; + return $objPenBlocoProcessoBD->cadastrar($objPenBlocoProcessoDTO); } catch (Exception $e) { throw new InfraException('Erro cadastrando Processo em Bloco.', $e); } @@ -357,9 +353,8 @@ protected function alterarControlado(PenBlocoProcessoDTO $objPenBlocoProcessoDTO { try { $objPenBlocoProcessoBD = new PenBlocoProcessoBD($this->getObjInfraIBanco()); - $ret = $objPenBlocoProcessoBD->alterar($objPenBlocoProcessoDTO); - return $ret; + return $objPenBlocoProcessoBD->alterar($objPenBlocoProcessoDTO); } catch (Exception $e) { throw new InfraException('Erro cadastrando Processo em Bloco.', $e); } @@ -375,12 +370,7 @@ protected function validarBlocoDeTramiteControlado($idProtocolo) $objPenBlocoProcessoDTO->retNumIdAndamento(); $objPenBlocoProcessoDTO->retStrProtocoloFormatadoProtocolo(); - $concluidos = array( - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE - ); + $concluidos = [ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE]; $arrTramitaEmBloco = $this->listar($objPenBlocoProcessoDTO); if (!is_null($arrTramitaEmBloco) && count($arrTramitaEmBloco) > 0) { @@ -408,10 +398,7 @@ protected function validarBlocoDeTramiteControlado($idProtocolo) $objExpedirProcedimentoRN = new ExpedirProcedimentoRN(); $objProcedimentoDTO = $objExpedirProcedimentoRN->consultarProcedimento($idProtocolo); - $bolProcessoEstadoNormal = !in_array($objProcedimentoDTO->getStrStaEstadoProtocolo(), array( - ProtocoloRN::$TE_PROCEDIMENTO_SOBRESTADO, - ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO - )); + $bolProcessoEstadoNormal = !in_array($objProcedimentoDTO->getStrStaEstadoProtocolo(), [ProtocoloRN::$TE_PROCEDIMENTO_SOBRESTADO, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO]); if (!$bolProcessoEstadoNormal) { return "Prezado(a) usuário(a), o processo {$objProcedimentoDTO->getStrProtocoloProcedimentoFormatado()} encontra-se bloqueado." . " Dessa forma, não foi possível realizar a sua inserção no bloco selecionado."; @@ -526,24 +513,12 @@ private function buscarBlocoProcessos($idBloco) */ private function validarStatusProcessoParaBloco($arrObjTramiteEmBlocoProtocoloDTO, $idAndamentoBloco) { - $concluido = array( - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE - ); - $emAndamento = array( - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_METADADOS_RECEBIDO_DESTINATARIO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO - ); + $concluido = [ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE]; + $emAndamento = [ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_METADADOS_RECEBIDO_DESTINATARIO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO]; $qtdProcesos = count($arrObjTramiteEmBlocoProtocoloDTO); - $arrayConcluidos = array(); - $arrayEmAndamento = array(); + $arrayConcluidos = []; + $arrayEmAndamento = []; foreach ($arrObjTramiteEmBlocoProtocoloDTO as $objDTO) { if (in_array($objDTO->getNumIdAndamento(), $concluido)) { $arrayConcluidos[] = $objDTO; diff --git a/src/rn/PenConsoleActionRN.php b/src/rn/PenConsoleActionRN.php index 40e2c14f4..e33c4f7bb 100755 --- a/src/rn/PenConsoleActionRN.php +++ b/src/rn/PenConsoleActionRN.php @@ -72,7 +72,7 @@ protected function getAssunto($strCodigoEstruturado = ''){ $objRelProtocoloAssuntoDTO->setNumIdAssunto($objAssuntoDTO->getNumIdAssunto()); $objRelProtocoloAssuntoDTO->setNumSequencia(0); - return array($objRelProtocoloAssuntoDTO); + return [$objRelProtocoloAssuntoDTO]; } /** @@ -110,7 +110,7 @@ protected function getTipoProcedimento($strTipoProcedimento = ''){ $objTipoProcedimentoDTO->setStrSinOuvidoria('N'); $objTipoProcedimentoDTO->setStrSinIndividual('N'); $objTipoProcedimentoDTO->setArrObjNivelAcessoPermitidoDTO($arrObjNivelAcessoPermitidoDTO); - $objTipoProcedimentoDTO->setArrObjRelTipoProcedimentoAssuntoDTO(array()); + $objTipoProcedimentoDTO->setArrObjRelTipoProcedimentoAssuntoDTO([]); $objTipoProcedimentoDTO->setStrStaNivelAcessoSugestao(0); $objTipoProcedimentoDTO->setStrSinAtivo('S'); @@ -196,7 +196,7 @@ protected function inicializarUnidade($strSiglaUnidade = ''){ * * @param array $args Description */ - public function assinarDocumento($args = array()){ + public function assinarDocumento($args = []){ if(!array_key_exists('doc-id', $args)) { throw new InfraException('Paramêtro "doc-id" é obrigatório'); @@ -245,7 +245,7 @@ public function assinarDocumento($args = array()){ $objAssinaturaDTO->setNumIdUsuario($objUsuarioDTO->getNumIdUsuario()); $objAssinaturaDTO->setStrSenhaUsuario($args['auth-pass']); $objAssinaturaDTO->setStrCargoFuncao('Testador'); - $objAssinaturaDTO->setArrObjDocumentoDTO(array($objDocumentoDTO)); + $objAssinaturaDTO->setArrObjDocumentoDTO([$objDocumentoDTO]); $objDocumentoRN->assinar($objAssinaturaDTO); @@ -259,7 +259,7 @@ public function assinarDocumento($args = array()){ * * @param array $args Description */ - public function criarDocumento($args = array()){ + public function criarDocumento($args = []){ if(!array_key_exists('desc', $args)) { throw new InfraException('Paramêtro "desc" é obrigatório'); @@ -283,10 +283,10 @@ public function criarDocumento($args = array()){ $objProtocoloDTO->setNumIdHipoteseLegal(null); $objProtocoloDTO->setStrStaGrauSigilo(null); $objProtocoloDTO->setStrDescricao($args['desc']); - $objProtocoloDTO->setArrObjParticipanteDTO(array($objParticipanteDTO)); - $objProtocoloDTO->setArrObjRelProtocoloAssuntoDTO(array($objAssuntoDTO)); - $objProtocoloDTO->setArrObjObservacaoDTO(array()); - $objProtocoloDTO->setArrObjAnexoDTO(array()); + $objProtocoloDTO->setArrObjParticipanteDTO([$objParticipanteDTO]); + $objProtocoloDTO->setArrObjRelProtocoloAssuntoDTO([$objAssuntoDTO]); + $objProtocoloDTO->setArrObjObservacaoDTO([]); + $objProtocoloDTO->setArrObjAnexoDTO([]); $objDocumentoDTO = new DocumentoDTO(); $objDocumentoDTO->setDblIdDocumento(null); @@ -303,7 +303,7 @@ public function criarDocumento($args = array()){ $objProtocoloDTO->setStrDescricao($args['desc']); $objProtocoloDTO->setDtaGeracao(InfraData::getStrDataAtual()); $objProtocoloDTO->setArrObjRelProtocoloAssuntoDTO($objAssuntoDTO); - $objProtocoloDTO->setArrObjParticipanteDTO(array($objParticipanteDTO)); + $objProtocoloDTO->setArrObjParticipanteDTO([$objParticipanteDTO]); $objDocumentoDTO->setObjProtocoloDTO($objProtocoloDTO); $objDocumentoRN = new DocumentoRN(); @@ -322,7 +322,7 @@ public function criarDocumento($args = array()){ /** * Cria um novo procedimento por background task */ - public function criarProcedimento($args = array()){ + public function criarProcedimento($args = []){ if(!array_key_exists('desc', $args)) { throw new InfraException('Paramêtro "desc" é obrigatório'); @@ -345,10 +345,10 @@ public function criarProcedimento($args = array()){ $objProtocoloDTO->setNumIdHipoteseLegal(null); $objProtocoloDTO->setStrStaGrauSigilo(null); $objProtocoloDTO->setStrDescricao($args['desc']); - $objProtocoloDTO->setArrObjParticipanteDTO(array($this->getParticipante($args['stakeholder']))); - $objProtocoloDTO->setArrObjAnexoDTO(array()); + $objProtocoloDTO->setArrObjParticipanteDTO([$this->getParticipante($args['stakeholder'])]); + $objProtocoloDTO->setArrObjAnexoDTO([]); $objProtocoloDTO->setArrObjRelProtocoloAssuntoDTO($this->getAssunto($args['subject'])); - $objProtocoloDTO->setArrObjObservacaoDTO(array()); + $objProtocoloDTO->setArrObjObservacaoDTO([]); // Tipo Procedimento $objTipoProcedimentoDTO = $this->getTipoProcedimento(); @@ -385,7 +385,7 @@ public function criarProcedimento($args = array()){ /** * Remover um procedimento por background task */ - public function removerProcedimento($args = array()){ + public function removerProcedimento($args = []){ if(!array_key_exists('proc-id', $args)) { throw new InfraException('Paramêtro "proc-id" é obrigatório'); @@ -406,7 +406,7 @@ public function removerProcedimento($args = array()){ * * @return string */ - public function log($args = array()){ + public function log($args = []){ if(!array_key_exists('msg', $args)) { throw new InfraException('Paramêtro "msg" é obrigatório'); @@ -423,7 +423,7 @@ public function log($args = array()){ * * @return string */ - public function syncProcedimento($args = array()){ + public function syncProcedimento($args = []){ if(!array_key_exists('protocolo', $args)) { throw new InfraException('Paramêtro "protocolo" é obrigatório'); @@ -468,8 +468,7 @@ public function ajuda(){ $string .= ' assinarDocumento'.PHP_EOL; $string .= ' removerProcedimento'.PHP_EOL; $string .= ' syncProcedimento'.PHP_EOL; - $string .= PHP_EOL; - return $string; + return $string . PHP_EOL; } } diff --git a/src/rn/PenConsoleRN.php b/src/rn/PenConsoleRN.php index 4b0e3929b..d8149f37a 100755 --- a/src/rn/PenConsoleRN.php +++ b/src/rn/PenConsoleRN.php @@ -11,10 +11,10 @@ class PenConsoleRN extends InfraRN { protected $objRN; protected $strAction; - protected $arrTokens = array(); + protected $arrTokens = []; protected $objInfraBanco; - public function __construct($objRN = null, $tokens = array()) { + public function __construct($objRN = null, $tokens = []) { if(!is_null($objRN)) { @@ -23,12 +23,7 @@ public function __construct($objRN = null, $tokens = array()) { if(!is_object($objRN)) { throw new InfraException('Requerido objeto Infra'); } - - if(get_parent_class($objRN) !== 'InfraRN') { - throw new InfraException('Requerido objeto Infra que seja extendido de InfraRN'); - } - - $this->objRN = $objRN; + throw new InfraException('Requerido objeto Infra que seja extendido de InfraRN'); } if(empty($tokens)) { @@ -49,18 +44,17 @@ protected function inicializarObjInfraIBanco() { } /** - * Processa os parâmetros passados ao script pelo cli - * - * @param array $arguments - * @return null - */ - protected function criarTokens($arguments = array()){ + * Processa os parâmetros passados ao script pelo cli + * + * @param array $arguments + */ + protected function criarTokens($arguments = []){ if(empty($arguments)) { throw new InfraException('Script não pode ser executado pela web'); } - $strScript = array_shift($arguments); + array_shift($arguments); if(!empty($this->objRN)) { @@ -112,7 +106,7 @@ public function run(){ return true; } - return call_user_func(array($this->objRN, $this->strAction), $this->getTokens()); + return call_user_func([$this->objRN, $this->strAction], $this->getTokens()); } public static function format($strMensagem = '', $strFonte = '', $bolBold = false){ diff --git a/src/rn/PenHipoteseLegalRN.php b/src/rn/PenHipoteseLegalRN.php index e8510a00e..06ab47ec8 100755 --- a/src/rn/PenHipoteseLegalRN.php +++ b/src/rn/PenHipoteseLegalRN.php @@ -23,7 +23,6 @@ protected function inicializarObjInfraIBanco() /** * Listar hipoteses legais * - * @param PenHipoteseLegalDTO $objDTO * @return array * @throws InfraException */ diff --git a/src/rn/PenMapTipoProcedimentoRN.php b/src/rn/PenMapTipoProcedimentoRN.php index 05f92271a..46ad1c46e 100644 --- a/src/rn/PenMapTipoProcedimentoRN.php +++ b/src/rn/PenMapTipoProcedimentoRN.php @@ -19,7 +19,6 @@ protected function inicializarObjInfraIBanco() /** * Método utilizado para listagem de dados. - * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO * @return array * @throws InfraException */ @@ -35,7 +34,6 @@ protected function listarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoProce /** * Método utilizado para listagem de dados. - * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO * @return array * @throws InfraException */ @@ -51,7 +49,6 @@ protected function consultarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoPr /** * Método utilizado para alteração de dados. - * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO * @return array * @throws InfraException */ @@ -67,7 +64,6 @@ protected function alterarControlado(PenMapTipoProcedimentoDTO $objPenMapTipoPro /** * Método utilizado para cadastro de dados. - * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO * @return array * @throws InfraException */ @@ -83,7 +79,6 @@ protected function cadastrarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoPr /** * Método utilizado para exclusão de dados. - * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO * @return array * @throws InfraException */ @@ -99,7 +94,6 @@ protected function excluirControlado(PenMapTipoProcedimentoDTO $objPenMapTipoPro /** * Método utilizado para contagem de procedimento mapeadas - * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO * @return array * @throws InfraException */ @@ -120,8 +114,8 @@ protected function contarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoProce */ public function validarAcaoTipoProcesso($arrObjTipoProcedimentoDTO, $mensagem) { - $arrTipoProcedimento = array(); - $mapeamentos = array(); + $arrTipoProcedimento = []; + $mapeamentos = []; foreach ($arrObjTipoProcedimentoDTO as $objTipoProcedimentoDTO) { $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); $objMapeamentoTipoProcedimentoDTO->retNumIdMapOrgao(); diff --git a/src/rn/PenOrgaoExternoRN.php b/src/rn/PenOrgaoExternoRN.php index 60d023028..58270cc92 100644 --- a/src/rn/PenOrgaoExternoRN.php +++ b/src/rn/PenOrgaoExternoRN.php @@ -19,7 +19,6 @@ protected function inicializarObjInfraIBanco() /** * Método utilizado para listagem de dados. - * @param PenOrgaoExternoDTO $objDTO * @return array * @throws InfraException */ @@ -37,7 +36,6 @@ protected function listarConectado(PenOrgaoExternoDTO $objDTO) /** * Método utilizado para consulta de dados. - * @param PenOrgaoExternoDTO $objDTO * @return PenOrgaoExternoDTO * @throws InfraException */ @@ -55,7 +53,6 @@ protected function consultarConectado(PenOrgaoExternoDTO $objDTO) /** * Método utilizado para alteração de dados. - * @param PenOrgaoExternoDTO $objDTO * @return PenOrgaoExternoDTO * @throws InfraException */ @@ -73,7 +70,6 @@ protected function alterarControlado(PenOrgaoExternoDTO $objDTO) /** * Método utilizado para cadastro de dados. - * @param PenOrgaoExternoDTO $objDTO * @return array * @throws InfraException */ @@ -91,7 +87,6 @@ protected function cadastrarConectado(PenOrgaoExternoDTO $objDTO) /** * Método utilizado para exclusão de dados. - * @param PenOrgaoExternoDTO $objDTO * @return array * @throws InfraException */ @@ -109,7 +104,6 @@ protected function excluirControlado(PenOrgaoExternoDTO $objDTO) /** * Método utilizado para contagem de unidades mapeadas - * @param PenOrgaoExternoDTO $objDTO * @return array * @throws InfraException */ diff --git a/src/rn/PenParametroRN.php b/src/rn/PenParametroRN.php index 00d0ece9a..110fd8fa4 100755 --- a/src/rn/PenParametroRN.php +++ b/src/rn/PenParametroRN.php @@ -197,7 +197,7 @@ private function validarUnidadeRecebimento(PenParametroDTO $objPenParametroDTO, */ public function validarAcaoTipoProcessoPadrao($arrObjTipoProcedimentoDTO, $mensagem) { - $mapeamentos = array(); + $mapeamentos = []; foreach ($arrObjTipoProcedimentoDTO as $objTipoProcedimentoDTO) { $objPenParametroDTO = new PenParametroDTO(); $objPenParametroDTO->setStrNome('PEN_TIPO_PROCESSO_EXTERNO'); diff --git a/src/rn/PenRelHipoteseLegalEnvioRN.php b/src/rn/PenRelHipoteseLegalEnvioRN.php index 2f7e659d5..d1463557c 100755 --- a/src/rn/PenRelHipoteseLegalEnvioRN.php +++ b/src/rn/PenRelHipoteseLegalEnvioRN.php @@ -61,7 +61,6 @@ protected function getIdHipoteseLegalPENConectado($numIdHipoteseSEI) { /** * Contar HipoteseLegal * - * @param PenRelHipoteseLegalDTO $objDTO * @return int * @throws InfraException */ diff --git a/src/rn/PenRelHipoteseLegalRN.php b/src/rn/PenRelHipoteseLegalRN.php index e3b9c08e9..989c91413 100755 --- a/src/rn/PenRelHipoteseLegalRN.php +++ b/src/rn/PenRelHipoteseLegalRN.php @@ -76,7 +76,7 @@ public function getIdBarramentoEmUso(PenRelHipoteseLegalDTO $objFiltroDTO, $strT $arrObjDTO = $this->listar($objDTO); - $arrIdBarramento = array(); + $arrIdBarramento = []; if(!empty($arrObjDTO)) { $arrIdBarramento = InfraArray::converterArrInfraDTO($arrObjDTO, 'IdBarramento'); @@ -97,7 +97,7 @@ public function getIdHipoteseLegalEmUso(PenRelHipoteseLegalDTO $objFiltroDTO, $s $arrObjDTO = $this->listar($objDTO); - $arrIdBarramento = array(); + $arrIdBarramento = []; if(!empty($arrObjDTO)) { $arrIdBarramento = InfraArray::converterArrInfraDTO($arrObjDTO, 'IdHipoteseLegal'); diff --git a/src/rn/PenRelTipoDocMapEnviadoRN.php b/src/rn/PenRelTipoDocMapEnviadoRN.php index 91c9dec84..038541383 100755 --- a/src/rn/PenRelTipoDocMapEnviadoRN.php +++ b/src/rn/PenRelTipoDocMapEnviadoRN.php @@ -14,11 +14,10 @@ protected function inicializarObjInfraIBanco() { /** - * Lista mapeamentos de tipos de documentos para envio de processos pelo Barramento PEN - * - * @param PenRelTipoDocMapEnviadoDTO $parObjPenRelTipoDocMapEnviadoDTO - * @return array - */ + * Lista mapeamentos de tipos de documentos para envio de processos pelo Barramento PEN + * + * @return array + */ protected function listarConectado(PenRelTipoDocMapEnviadoDTO $parObjPenRelTipoDocMapEnviadoDTO) { try { @@ -43,7 +42,7 @@ protected function consultarConectado(PenRelTipoDocMapEnviadoDTO $objPenRelTipoD protected function listarEmUsoConectado($dblIdSerie) { - $arrNumIdSerie = array(); + $arrNumIdSerie = []; $objPenRelTipoDocMapRecebidoDTO = new PenRelTipoDocMapEnviadoDTO(); $objPenRelTipoDocMapRecebidoDTO->retNumIdSerie(); $objPenRelTipoDocMapRecebidoDTO->setDistinct(true); @@ -174,11 +173,11 @@ protected function mapearEspeciesDocumentaisEnvioControlado() $numPercentualSimilaridadeValido = 85; // Obter todas as espécies documentais do Barramento de Serviços do PEN - $arrEspeciesDocumentais = array(); + $arrEspeciesDocumentais = []; $arrEspecies = $objTipoDocMapRN->listarParesEspecie(); foreach ($arrEspecies as $numCodigo => $strItem) { foreach (preg_split('/\//', $strItem) as $strNomeEspecie) { - $arrEspeciesDocumentais[] = array("codigo" => $numCodigo, "nome" => $strNomeEspecie); + $arrEspeciesDocumentais[] = ["codigo" => $numCodigo, "nome" => $strNomeEspecie]; } } diff --git a/src/rn/PenRelTipoDocMapRecebidoRN.php b/src/rn/PenRelTipoDocMapRecebidoRN.php index a334c3e44..01af58548 100755 --- a/src/rn/PenRelTipoDocMapRecebidoRN.php +++ b/src/rn/PenRelTipoDocMapRecebidoRN.php @@ -14,7 +14,7 @@ protected function inicializarObjInfraIBanco() { protected function listarEmUsoConectado($dblCodigoEspecie) { - $arrNumCodigoEspecie = array(); + $arrNumCodigoEspecie = []; $objDTO = new PenRelTipoDocMapRecebidoDTO(); $objDTO->retNumCodigoEspecie(); @@ -72,11 +72,10 @@ public function cadastrarControlado(PenRelTipoDocMapRecebidoDTO $objParamDTO) /** - * Consulta os mapeamentos de tipos de documentos para envio de processos pelo Barramento PEN para recebimento - * - * @param PenRelTipoDocMapRecebidoDTO $parObjPenRelTipoDocMapRecebidoDTO - * @return void - */ + * Consulta os mapeamentos de tipos de documentos para envio de processos pelo Barramento PEN para recebimento + * + * @return void + */ protected function consultarConectado(PenRelTipoDocMapRecebidoDTO $parObjPenRelTipoDocMapRecebidoDTO) { try { @@ -112,11 +111,10 @@ protected function excluirPorEspecieDocumentalControlado($parNumIdEspecieDocumen } /** - * Lista mapeamentos de tipos de documentos para recebimento de processos pelo Barramento PEN - * - * @param PenRelTipoDocMapRecebidoDTO $parObjPenRelTipoDocMapRecebidoDTO - * @return array - */ + * Lista mapeamentos de tipos de documentos para recebimento de processos pelo Barramento PEN + * + * @return array + */ protected function listarConectado(PenRelTipoDocMapRecebidoDTO $parObjPenRelTipoDocMapRecebidoDTO) { try { @@ -129,11 +127,10 @@ protected function listarConectado(PenRelTipoDocMapRecebidoDTO $parObjPenRelTipo } /** - * Conta a lista de mapeamentos de tipos de documentos para envio de processos pelo Barramento PEN - * - * @param PenRelTipoDocMapRecebidoDTO $parObjPenRelTipoDocMapRecebidoDTO - * @return int - */ + * Conta a lista de mapeamentos de tipos de documentos para envio de processos pelo Barramento PEN + * + * @return int + */ protected function contarConectado(PenRelTipoDocMapRecebidoDTO $parObjPenRelTipoDocMapRecebidoDTO) { try { @@ -184,11 +181,11 @@ protected function mapearEspeciesDocumentaisRecebimentoControlado() // Obter todas as espécies documentais do Barramento de Serviços do PEN // Antes separa as espécies com nomes separados por '/' em itens diferentes - $arrEspeciesDocumentais = array(); + $arrEspeciesDocumentais = []; $arrEspecies = $objTipoDocMapRN->listarParesEspecie($this->listarEmUso(null)); foreach ($arrEspecies as $numCodigo => $strItem) { foreach (preg_split('/\//', $strItem) as $strNomeEspecie) { - $arrEspeciesDocumentais[] = array("codigo" => $numCodigo, "nome" => $strNomeEspecie); + $arrEspeciesDocumentais[] = ["codigo" => $numCodigo, "nome" => $strNomeEspecie]; } } diff --git a/src/rn/PenRestricaoEnvioComponentesDigitaisRN.php b/src/rn/PenRestricaoEnvioComponentesDigitaisRN.php index ffb10a0a1..1aeb7e215 100644 --- a/src/rn/PenRestricaoEnvioComponentesDigitaisRN.php +++ b/src/rn/PenRestricaoEnvioComponentesDigitaisRN.php @@ -19,7 +19,6 @@ protected function inicializarObjInfraIBanco() /** * Método utilizado para listagem de dados. - * @param PenRestricaoEnvioComponentesDigitaisDTO $objDTO * @return array * @throws InfraException */ @@ -41,7 +40,6 @@ protected function listarConectado(PenRestricaoEnvioComponentesDigitaisDTO $objD /** * Método utilizado para consulta de dados. - * @param PenRestricaoEnvioComponentesDigitaisDTO $objDTO * @return array * @throws InfraException */ @@ -63,7 +61,6 @@ protected function consultarControlado(PenRestricaoEnvioComponentesDigitaisDTO $ /** * Método utilizado para alteração de dados. - * @param PenRestricaoEnvioComponentesDigitaisDTO $objDTO * @return array * @throws InfraException */ @@ -85,7 +82,6 @@ protected function alterarControlado(PenRestricaoEnvioComponentesDigitaisDTO $ob /** * Método utilizado para cadastro de dados. - * @param PenRestricaoEnvioComponentesDigitaisDTO $objDTO * @return array * @throws InfraException */ @@ -107,7 +103,6 @@ protected function cadastrarConectado(PenRestricaoEnvioComponentesDigitaisDTO $o /** * Método utilizado para exclusão de dados. - * @param PenRestricaoEnvioComponentesDigitaisDTO $objDTO * @return array * @throws InfraException */ diff --git a/src/rn/PenUnidadeRN.php b/src/rn/PenUnidadeRN.php index aecebd6c0..4509597f5 100755 --- a/src/rn/PenUnidadeRN.php +++ b/src/rn/PenUnidadeRN.php @@ -18,10 +18,9 @@ protected function inicializarObjInfraIBanco(){ } /** - * Método para buscar apenas as unidades que já estão em uso - * @param PenUnidadeDTO $objFiltroDTO - * @return arrayDTO - */ + * Método para buscar apenas as unidades que já estão em uso + * @return arrayDTO + */ protected function getIdUnidadeEmUsoConectado(PenUnidadeDTO $objFiltroDTO){ $objDTO = new PenUnidadeDTO(); $objDTO->setDistinct(true); @@ -33,7 +32,7 @@ protected function getIdUnidadeEmUsoConectado(PenUnidadeDTO $objFiltroDTO){ $arrObjDTO = $this->listar($objDTO); - $arrIdUnidade = array(); + $arrIdUnidade = []; if(!empty($arrObjDTO)) { $arrIdUnidade = InfraArray::converterArrInfraDTO($arrObjDTO, 'IdUnidade'); @@ -75,11 +74,10 @@ protected function alterarControlado(UnidadeDTO $objPenUnidadeDTO){ } /** - * Método utilizado para cadastro de dados. - * @param UnidadeDTO $objDTO - * @return array - * @throws InfraException - */ + * Método utilizado para cadastro de dados. + * @return array + * @throws InfraException + */ protected function cadastrarConectado(UnidadeDTO $objDTO){ try { $objBD = new PenUnidadeBD($this->inicializarObjInfraIBanco()); @@ -91,11 +89,10 @@ protected function cadastrarConectado(UnidadeDTO $objDTO){ } /** - * Método utilizado para exclusão de dados. - * @param UnidadeDTO $objDTO - * @return array - * @throws InfraException - */ + * Método utilizado para exclusão de dados. + * @return array + * @throws InfraException + */ protected function excluirControlado(UnidadeDTO $objDTO){ try { $objBD = new PenUnidadeBD($this->inicializarObjInfraIBanco()); diff --git a/src/rn/PenUnidadeRestricaoRN.php b/src/rn/PenUnidadeRestricaoRN.php index 30e5f9538..32b867725 100644 --- a/src/rn/PenUnidadeRestricaoRN.php +++ b/src/rn/PenUnidadeRestricaoRN.php @@ -21,7 +21,6 @@ protected function inicializarObjInfraIBanco() /** * Método utilizado para listagem de dados. - * @param PenUnidadeRestricaoDTO $objPenUnidadeRestricaoDTO * @return array * @throws InfraException */ @@ -45,8 +44,8 @@ protected function listarConectado(PenUnidadeRestricaoDTO $objPenUnidadeRestrica */ public function prepararRepoEstruturas($IdUnidade, $IdUnidadeRH, $hdnRepoEstruturas) { - $arrUnidadesSelecionadas = array(); - $arrayObjPenUnidadeRestricaoDTO = array(); + $arrUnidadesSelecionadas = []; + $arrayObjPenUnidadeRestricaoDTO = []; $arrOpcoes = PaginaSEI::getInstance()->getArrOptionsSelect($hdnRepoEstruturas); foreach ($arrOpcoes as $opcoes) { $hdnRepoEstruturasUnidades = 'hdnRepoEstruturas' . $opcoes[0]; @@ -89,7 +88,7 @@ public function prepararRepoEstruturas($IdUnidade, $IdUnidadeRH, $hdnRepoEstrutu protected function cadastrarConectado($arrayObjDTO) { try { - $retArrayObjDTO = array(); + $retArrayObjDTO = []; $objBD = new PenUnidadeRestricaoBD($this->inicializarObjInfraIBanco()); foreach ($arrayObjDTO as $objDTO) { $retArrayObjDTO[] = $objBD->cadastrar($objDTO); @@ -102,14 +101,13 @@ protected function cadastrarConectado($arrayObjDTO) /** * Método utilizado para exclusão de dados. - * @param PenUnidadeRestricaoDTO $objDTO * @return array * @throws InfraException */ protected function prepararExcluirControlado(PenUnidadeRestricaoDTO $objDTO) { try { - $arrayObjPenUnidadeRestricaoDTO = array(); + $arrayObjPenUnidadeRestricaoDTO = []; $objDTO->retTodos(); $objPenUnidadeRestricaoDTO = $this->listar($objDTO); if ($objPenUnidadeRestricaoDTO != null) { @@ -125,7 +123,6 @@ protected function prepararExcluirControlado(PenUnidadeRestricaoDTO $objDTO) /** * Método utilizado para exclusão de dados. - * @param PenUnidadeRestricaoDTO $objDTO * @return array * @throws InfraException */ diff --git a/src/rn/PendenciasEnvioTramiteRN.php b/src/rn/PendenciasEnvioTramiteRN.php index 2f6f80d67..70bb35010 100644 --- a/src/rn/PendenciasEnvioTramiteRN.php +++ b/src/rn/PendenciasEnvioTramiteRN.php @@ -25,7 +25,7 @@ public function expedirPendencias($parBolMonitorarPendencias = false, $parBolSeg do { try { $this->gravarLogDebug('Recuperando lista de pendências de envio do Tramita GOV.BR', 1); - $arrObjPendenciasDTO = $this->obterPendenciasEnvioTramite($parBolMonitorarPendencias); + $arrObjPendenciasDTO = $this->obterPendenciasEnvioTramite(); foreach ($arrObjPendenciasDTO as $objPendenciaDTO) { @@ -63,9 +63,7 @@ public function expedirPendencias($parBolMonitorarPendencias = false, $parBolSeg } // Caso não esteja sendo realizado o monitoramente de pendências, lança exceção diretamente na página para apresentação ao usuário - if (!$parBolMonitorarPendencias) { - $this->salvarLogDebug($parBolDebug); - } + $this->salvarLogDebug($parBolDebug); return self::CODIGO_EXECUCAO_SUCESSO; } @@ -75,45 +73,40 @@ public function expedirPendencias($parBolMonitorarPendencias = false, $parBolSeg * @param num $parNumIdTramiteRecebido * @return [type] [description] */ - private function obterPendenciasEnvioTramite($parBolMonitorarPendencias) + private function obterPendenciasEnvioTramite() { - //Obter todos os trâmites pendentes antes de iniciar o monitoramento - $arrPendenciasRetornadas = array(); - $arrObjPendenciasDTO = array(); - - $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); - $objPenBlocoProcessoDTO->retNumIdBlocoProcesso(); - $objPenBlocoProcessoDTO->retDblIdProtocolo(); - $objPenBlocoProcessoDTO->retNumIdAndamento(); - $objPenBlocoProcessoDTO->retNumIdAtividade(); - $objPenBlocoProcessoDTO->retNumIdRepositorioDestino(); - $objPenBlocoProcessoDTO->retStrRepositorioDestino(); - $objPenBlocoProcessoDTO->retNumIdRepositorioOrigem(); - $objPenBlocoProcessoDTO->retNumIdUnidadeDestino(); - $objPenBlocoProcessoDTO->retStrUnidadeDestino(); - $objPenBlocoProcessoDTO->retNumIdUnidadeOrigem(); - $objPenBlocoProcessoDTO->retNumIdBloco(); - $objPenBlocoProcessoDTO->retNumIdUsuario(); - $objPenBlocoProcessoDTO->retStrProtocoloFormatadoProtocolo(); - $objPenBlocoProcessoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO); - - $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); - $arrObjPenBlocoProcessoDTO = $objPenBlocoProcessoRN->obterPendenciasBloco($objPenBlocoProcessoDTO); - - foreach ($arrObjPenBlocoProcessoDTO as $objPenBlocoProcessoDTO) { - $objPendenciaDTO = new PendenciaDTO(); - $objPendenciaDTO->setNumIdentificacaoTramite($objPenBlocoProcessoDTO->getDblIdProtocolo()); - $objPendenciaDTO->setStrStatus($objPenBlocoProcessoDTO->getNumIdAndamento()); - $arrObjPendenciasDTO[] = $objPendenciaDTO; - } - - $this->gravarLogDebug(count($arrObjPendenciasDTO) . " pendências de trâmites identificadas", 2); - - foreach ($arrObjPendenciasDTO as $objPendenciaDTO) { - //Captura todas as pendências e status retornadas para impedir duplicidade - $arrPendenciasRetornadas[] = sprintf("%d-%s", $objPendenciaDTO->getNumIdentificacaoTramite(), $objPendenciaDTO->getStrStatus()); - yield $objPendenciaDTO; - } + //Obter todos os trâmites pendentes antes de iniciar o monitoramento + $arrPendenciasRetornadas = []; + $arrObjPendenciasDTO = []; + $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcessoDTO->retNumIdBlocoProcesso(); + $objPenBlocoProcessoDTO->retDblIdProtocolo(); + $objPenBlocoProcessoDTO->retNumIdAndamento(); + $objPenBlocoProcessoDTO->retNumIdAtividade(); + $objPenBlocoProcessoDTO->retNumIdRepositorioDestino(); + $objPenBlocoProcessoDTO->retStrRepositorioDestino(); + $objPenBlocoProcessoDTO->retNumIdRepositorioOrigem(); + $objPenBlocoProcessoDTO->retNumIdUnidadeDestino(); + $objPenBlocoProcessoDTO->retStrUnidadeDestino(); + $objPenBlocoProcessoDTO->retNumIdUnidadeOrigem(); + $objPenBlocoProcessoDTO->retNumIdBloco(); + $objPenBlocoProcessoDTO->retNumIdUsuario(); + $objPenBlocoProcessoDTO->retStrProtocoloFormatadoProtocolo(); + $objPenBlocoProcessoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO); + $objPenBlocoProcessoRN = new PenBlocoProcessoRN(); + $arrObjPenBlocoProcessoDTO = $objPenBlocoProcessoRN->obterPendenciasBloco($objPenBlocoProcessoDTO); + foreach ($arrObjPenBlocoProcessoDTO as $objPenBlocoProcessoDTO) { + $objPendenciaDTO = new PendenciaDTO(); + $objPendenciaDTO->setNumIdentificacaoTramite($objPenBlocoProcessoDTO->getDblIdProtocolo()); + $objPendenciaDTO->setStrStatus($objPenBlocoProcessoDTO->getNumIdAndamento()); + $arrObjPendenciasDTO[] = $objPendenciaDTO; + } + $this->gravarLogDebug(count($arrObjPendenciasDTO) . " pendências de trâmites identificadas", 2); + foreach ($arrObjPendenciasDTO as $objPendenciaDTO) { + //Captura todas as pendências e status retornadas para impedir duplicidade + $arrPendenciasRetornadas[] = sprintf("%d-%s", $objPendenciaDTO->getNumIdentificacaoTramite(), $objPendenciaDTO->getStrStatus()); + yield $objPendenciaDTO; + } } /** @@ -146,10 +139,7 @@ private function expedirPendenciaProcessamentoDireto($objPendencia) if (!in_array( $numStatus, - array( - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE - ) + [ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE] )) { $strStatus = $objPendencia->getStrStatus(); $this->gravarLogDebug("Situação do trâmite ($strStatus) não pode ser tratada para expedir pendências."); diff --git a/src/rn/PendenciasTramiteRN.php b/src/rn/PendenciasTramiteRN.php index d7f048c22..85ac3bb17 100755 --- a/src/rn/PendenciasTramiteRN.php +++ b/src/rn/PendenciasTramiteRN.php @@ -23,12 +23,12 @@ class PendenciasTramiteRN extends InfraRN const COMANDO_IDENTIFICACAO_WORKER = "ps -c ax | grep 'MonitoramentoRecebimentoTarefasPEN\.php' | grep -o '^[ ]*[0-9]*'"; const COMANDO_IDENTIFICACAO_WORKER_ID = "ps -c ax | grep 'MonitoramentoRecebimentoTarefasPEN\.php.*--worker=%02d' | grep -o '^[ ]*[0-9]*'"; - protected $objPenDebug = null; - protected $strEnderecoServico = null; - protected $strEnderecoServicoPendencias = null; - protected $strLocalizacaoCertificadoDigital = null; - protected $strSenhaCertificadoDigital = null; - protected $arrStrUltimasMensagensErro = array(); + protected $objPenDebug; + protected $strEnderecoServico; + protected $strEnderecoServicoPendencias; + protected $strLocalizacaoCertificadoDigital; + protected $strSenhaCertificadoDigital; + protected $arrStrUltimasMensagensErro = []; public function __construct($parStrLogTag = null) { @@ -143,26 +143,6 @@ public function receberPendencias($parBolMonitorarPendencias = false, $parBolSeg return self::CODIGO_EXECUCAO_SUCESSO; } - /** - * Valida a correta parametrização do certificado digital - * - * @return void - */ - private function validarCertificado() - { - if (InfraString::isBolVazia($this->strLocalizacaoCertificadoDigital)) { - throw new InfraException('Certificado digital de autenticação do serviço de integração do Tramita.GOV.BR não informado.'); - } - - if (!@file_get_contents($this->strLocalizacaoCertificadoDigital)) { - throw new InfraException("Certificado digital de autenticação do serviço de integração do Tramita.GOV.BR não encontrado."); - } - - if (InfraString::isBolVazia($this->strSenhaCertificadoDigital)) { - throw new InfraException('Dados de autenticação do serviço de integração do Tramita.GOV.BR não informados.'); - } - } - /** * Grava log de debug nas tabelas de log do SEI, caso o debug esteja habilitado * @@ -206,15 +186,13 @@ protected function configurarRequisicao() private function obterPendenciasRecebimentoTramite($parBolMonitorarPendencias) { //Obter todos os trâmites pendentes antes de iniciar o monitoramento - $arrPendenciasRetornadas = array(); + $arrPendenciasRetornadas = []; $objProcessoEletronicoRN = new ProcessoEletronicoRN(); - $arrObjPendenciasDTO = $objProcessoEletronicoRN->listarPendencias(self::RECUPERAR_TODAS_PENDENCIAS) ?: array(); + $arrObjPendenciasDTO = $objProcessoEletronicoRN->listarPendencias(self::RECUPERAR_TODAS_PENDENCIAS) ?: []; shuffle($arrObjPendenciasDTO); - if (isset($arrObjPendenciasDTO)) { - if (!is_array($arrObjPendenciasDTO)) { - $arrObjPendenciasDTO = array(); - } + if (!is_array($arrObjPendenciasDTO)) { + $arrObjPendenciasDTO = []; } $this->gravarLogDebug(count($arrObjPendenciasDTO) . " pendências de trâmites identificadas", 2); @@ -230,7 +208,7 @@ private function obterPendenciasRecebimentoTramite($parBolMonitorarPendencias) $bolEncontrouPendencia = false; $numUltimoIdTramiteRecebido = 0; - $arrObjPendenciasDTONovas = array(); + $arrObjPendenciasDTONovas = []; $this->gravarLogDebug("Iniciando monitoramento no serviço de pendências (long polling)", 2); do { @@ -337,8 +315,7 @@ protected function servicoGearmanAtivo() */ protected function servicoMonitoramentoPendenciasAtivo() { - $bolMonitoramentoAtivo = !empty($this->strEnderecoServicoPendencias); - return $bolMonitoramentoAtivo; + return !empty($this->strEnderecoServicoPendencias); } diff --git a/src/rn/ProcessarPendenciasRN.php b/src/rn/ProcessarPendenciasRN.php index 79530de77..fd3ecb468 100755 --- a/src/rn/ProcessarPendenciasRN.php +++ b/src/rn/ProcessarPendenciasRN.php @@ -4,10 +4,10 @@ class ProcessarPendenciasRN extends InfraRN { - private $objGearmanWorker = null; - private $objPenDebug = null; - private $strGearmanServidor = null; - private $strGearmanPorta = null; + private $objGearmanWorker; + private $objPenDebug; + private $strGearmanServidor; + private $strGearmanPorta; const TIMEOUT_PROCESSAMENTO_JOB = 5400; // valores em segundos, 5400 = 90 minutos const TIMEOUT_PROCESSAMENTO_EVENTOS = 300000; // valores em milisegundos, 300000 = 5 minutos @@ -93,7 +93,6 @@ public function processarPendencias() switch ($numReturnCode) { case GEARMAN_SUCCESS: - break; case GEARMAN_TIMEOUT: //Nenhuma ação necessário, sendo que timeout é utilizado apenas para avaliação de sinal pcntl_signal de interrupção @@ -323,35 +322,35 @@ public function expedirBloco($idProcedimento) private function configurarCallbacks() { - $this->objGearmanWorker->addFunction("enviarProcesso", function($job) { + $this->objGearmanWorker->addFunction("enviarProcesso", function($job): void { $this->enviarProcesso($job->workload()); }, null, self::TIMEOUT_PROCESSAMENTO_JOB); - $this->objGearmanWorker->addFunction("enviarComponenteDigital", function($job) { + $this->objGearmanWorker->addFunction("enviarComponenteDigital", function($job): void { $this->enviarComponenteDigital($job->workload()); }, null, self::TIMEOUT_PROCESSAMENTO_JOB); - $this->objGearmanWorker->addFunction("receberReciboTramite", function($job) { + $this->objGearmanWorker->addFunction("receberReciboTramite", function($job): void { $this->receberReciboTramite($job->workload()); }, null, self::TIMEOUT_PROCESSAMENTO_JOB); - $this->objGearmanWorker->addFunction("receberProcedimento", function($job) { + $this->objGearmanWorker->addFunction("receberProcedimento", function($job): void { $this->receberProcedimento($job->workload()); }, null, self::TIMEOUT_PROCESSAMENTO_JOB); - $this->objGearmanWorker->addFunction("receberTramitesRecusados", function($job) { + $this->objGearmanWorker->addFunction("receberTramitesRecusados", function($job): void { $this->receberTramitesRecusados($job->workload()); }, null, self::TIMEOUT_PROCESSAMENTO_JOB); - $this->objGearmanWorker->addFunction("receberComponenteDigital", function($job) { + $this->objGearmanWorker->addFunction("receberComponenteDigital", function($job): void { $this->receberComponenteDigital($job->workload()); }, null, self::TIMEOUT_PROCESSAMENTO_JOB); - $this->objGearmanWorker->addFunction("enviarReciboTramiteProcesso", function($job) { + $this->objGearmanWorker->addFunction("enviarReciboTramiteProcesso", function($job): void { $this->enviarReciboTramiteProcesso($job->workload()); }, null, self::TIMEOUT_PROCESSAMENTO_JOB); - $this->objGearmanWorker->addFunction("expedirBloco", function($job) { + $this->objGearmanWorker->addFunction("expedirBloco", function($job): void { $this->expedirBloco($job->workload()); }, null, self::TIMEOUT_PROCESSAMENTO_JOB); @@ -369,10 +368,7 @@ private function gravarLogDebug($parStrMensagem, $parNumIdentacao = 0, $parBolLo */ private static function verificarGearmanAtivo($parStrServidor, $parStrPorta) { - // Verifica se existe um servidor do Gearman ativo para conexão - $bolAtivo = false; - - try { + try { if(!class_exists("GearmanClient")){ throw new InfraException("Não foi possível localizar as bibliotecas do PHP para conexão ao GEARMAN (GearmanClient). " . "Verifique os procedimentos de instalação do mod-sei-pen para maiores detalhes"); diff --git a/src/rn/ProcessoEletronicoRN.php b/src/rn/ProcessoEletronicoRN.php index e0f04698e..12ec9efd1 100755 --- a/src/rn/ProcessoEletronicoRN.php +++ b/src/rn/ProcessoEletronicoRN.php @@ -92,13 +92,7 @@ class ProcessoEletronicoRN extends InfraRN */ const MTV_RCSR_TRAM_CD_OUTROU = '99'; - public static $MOTIVOS_RECUSA = array( - "01" => "Formato de componente digital não suportado", - "02" => "Componente digital corrompido", - "03" => "Falta de componentes digitais", - "04" => "Espécie documental não mapeada no destinatário", - "99" => "Outro" - ); + public static $MOTIVOS_RECUSA = ["01" => "Formato de componente digital não suportado", "02" => "Componente digital corrompido", "03" => "Falta de componentes digitais", "04" => "Espécie documental não mapeada no destinatário", "99" => "Outro"]; private $strEnderecoWebService; private $numTentativasErro; @@ -284,13 +278,12 @@ public function consultarEstrutura($idRepositorioEstrutura, $numeroDeIdentificac } /** - * Método responsável por recuperar pela estutura pai a estrutura de filhos de uma unidade - * @param $idRepositorioEstrutura - * @param null $numeroDeIdentificacaoDaEstrutura - * @param bool $bolRetornoRaw - * @return array - * @throws InfraException - */ + * Método responsável por recuperar pela estutura pai a estrutura de filhos de uma unidade + * @param $idRepositorioEstrutura + * @param bool $bolRetornoRaw + * @return array + * @throws InfraException + */ public function consultarEstruturasPorEstruturaPai($idRepositorioEstrutura, $numeroDeIdentificacaoDaEstrutura = null, $bolRetornoRaw = false) { try { @@ -425,7 +418,6 @@ public function buscarEstrutura( $parBolPermiteRecebimento = null, $parBolPermiteEnvio = null ) { - $arrObjEstruturaDTO = []; try { $idRepositorioEstrutura = filter_var($idRepositorioEstrutura, FILTER_SANITIZE_NUMBER_INT); if (!$idRepositorioEstrutura) { @@ -459,8 +451,6 @@ public function buscarEstrutura( } catch (Exception $e) { throw new InfraException("Falha na obtenção de unidades externas"); } - - return $arrObjEstruturaDTO; } /** @@ -495,7 +485,7 @@ protected function validarRestricaoUnidadesCadastradas($idRepositorioEstrutura) $restricaoCadastrada = $restricaoCadastrada > 0; if ($restricaoCadastrada) { - $arrEstruturasCadastradas = array(); + $arrEstruturasCadastradas = []; $arrEstruturas = $objPenUnidadeRestricaoRN->listar($objPenUnidadeRestricaoDTO); $parametros = new stdClass(); $parametros->filtroDeEstruturas = new stdClass(); @@ -552,7 +542,7 @@ protected function buscarEstruturasPorEstruturaPai($idRepositorioEstrutura, $num return is_array($result->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura) ? $result->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura - : array($result->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura); + : [$result->estruturasEncontradasNoFiltroPorEstruturaPai->estrutura]; } @@ -567,7 +557,7 @@ public function listarEstruturasBuscaTextual( $parBolPermiteRecebimento = null, $parBolPermiteEnvio = null ) { - $arrObjEstruturaDTO = array(); + $arrObjEstruturaDTO = []; try { $idRepositorioEstrutura = filter_var($idRepositorioEstrutura, FILTER_SANITIZE_NUMBER_INT); @@ -618,53 +608,6 @@ public function listarEstruturasBuscaTextual( return $arrObjEstruturaDTO; } - - private function buscarListaEstruturas( - $idRepositorioEstrutura, - $filtro = array() - ) { - $parametros = new stdClass(); - $parametros->filtroDeEstruturas = new stdClass(); - $parametros->filtroDeEstruturas->identificacaoDoRepositorioDeEstruturas = $idRepositorioEstrutura; - $parametros->filtroDeEstruturas->apenasAtivas = true; - - if (!is_null($filtro['numeroDeIdentificacaoDaEstruturaRaizDaConsulta'])) { - $parametros->filtroDeEstruturas->numeroDeIdentificacaoDaEstruturaRaizDaConsulta = $filtro['numeroDeIdentificacaoDaEstruturaRaizDaConsulta']; - } else { - $nome = trim($filtro['nome']); - if (is_numeric($nome)) { - $parametros->filtroDeEstruturas->numeroDeIdentificacaoDaEstrutura = intval($nome); - } else { - $parametros->filtroDeEstruturas->nome = mb_convert_encoding($nome, 'UTF-8', 'ISO-8859-1'); - } - } - - if (!is_null($filtro['siglaUnidade'])) { - $parametros->filtroDeEstruturas->sigla = $filtro['siglaUnidade']; - } - - if (!is_null($filtro['nomeUnidade'])) { - $parametros->filtroDeEstruturas->nome = mb_convert_encoding($filtro['nomeUnidade'], 'UTF-8', 'ISO-8859-1'); - } - - if (!is_null($filtro['registrosPorPagina']) && !is_null($filtro['offset'])) { - $parametros->filtroDeEstruturas->paginacao = new stdClass(); - $parametros->filtroDeEstruturas->paginacao->registroInicial = $filtro['offset']; - $parametros->filtroDeEstruturas->paginacao->quantidadeDeRegistros = $filtro['registrosPorPagina']; - } - - if (!is_null($filtro['parBolPermiteRecebimento']) && $filtro['parBolPermiteRecebimento'] === true) { - $parametros->filtroDeEstruturas->permiteRecebimento = true; - } - - if (!is_null($filtro['parBolPermiteEnvio']) && $filtro['parBolPermiteEnvio'] === true) { - $parametros->filtroDeEstruturas->permiteEnvio = true; - } - - return $this->tentarNovamenteSobErroHTTP(function ($objPenWs) use ($parametros) { - return $objPenWs->consultarEstruturas($parametros); - }); - } public function listarEstruturasAutoCompletar( $idRepositorioEstrutura, @@ -677,7 +620,7 @@ public function listarEstruturasAutoCompletar( $parBolPermiteRecebimento = null, $parBolPermiteEnvio = null ) { - $arrObjEstruturaDTO = array('diferencaDeRegistros' => 0, 'itens' => array()); + $arrObjEstruturaDTO = ['diferencaDeRegistros' => 0, 'itens' => []]; try { $idRepositorioEstrutura = filter_var($idRepositorioEstrutura, FILTER_SANITIZE_NUMBER_INT); @@ -799,9 +742,7 @@ public function enviarProcessoREST($parametros) { $endpoint = "tramites/processo"; try { - $arrResultado = $this->post($endpoint, $parametros['novoTramiteDeProcesso']); - - return $arrResultado; + return $this->post($endpoint, $parametros['novoTramiteDeProcesso']); } catch (Exception $e) { @@ -818,24 +759,6 @@ public function enviarProcessoREST($parametros) } } - private function validarTramitaEmAndamento($parametros, $strMensagem) - { - if (strpos($strMensagem, 'já possui trâmite em andamento')) { - $objProcessoEletronicoDTO = new ProcessoEletronicoDTO(); - $objProcessoEletronicoDTO->setDblIdProcedimento($parametros->dblIdProcedimento); - - $objProcessoEletronicoRN = new ProcessoEletronicoRN(); - $objUltimoTramiteDTO = $objProcessoEletronicoRN->consultarUltimoTramite($objProcessoEletronicoDTO); - $numIdTramite = $objUltimoTramiteDTO->getNumIdTramite(); - - if (!is_null($numIdTramite) && $numIdTramite > 0) { - $strMensagem = "O trâmite ainda não foi concluído. Acompanhe no Painel de Controle o andamento da tramitação, antes de realizar uma nova tentativa. NRE: " . $objUltimoTramiteDTO->getStrNumeroRegistro() . ". Processo: " . $parametros->novoTramiteDeProcesso->processo->protocolo . "."; - } - } - return $strMensagem; - - } - public function listarPendencias($bolTodasPendencias) { $endpoint = 'tramites/pendentes'; @@ -916,36 +839,36 @@ public function construirCabecalho($strNumeroRegistro, $idRepositorioOrigem, $id } - $atribuirInformacoes = $this->atribuirInformacoesAssuntoREST($cabecalho, $dblIdProcedimento); - $atribuirInfoModulo = $this->atribuirInformacoesModuloREST($cabecalho); + $atribuirInformacoes = $this->atribuirInformacoesAssuntoREST($dblIdProcedimento); + $atribuirInfoModulo = $this->atribuirInformacoesModuloREST(); $cabecalho['propriedadesAdicionais'] = array_merge($atribuirInformacoes, $atribuirInfoModulo); return $cabecalho; } - private function atribuirInformacoesModuloREST($objCabecalho) - { - try{ - $arrInformacoeesModulo = []; - $objInfraParametro = new InfraParametro(BancoSEI::getInstance()); - - $arrInformacoeesModulo[] = [ - 'chave' => 'MODULO_PEN_VERSAO', - 'valor' => $objInfraParametro->getValor('VERSAO_MODULO_PEN') - ]; - - return $arrInformacoeesModulo; - - }catch(Exception $e){ - $mensagem = "Erro ao obter versão do módulo PEN"; - throw new InfraException($mensagem, $e); - } + private function atribuirInformacoesModuloREST() + { + try{ + $arrInformacoeesModulo = []; + $objInfraParametro = new InfraParametro(BancoSEI::getInstance()); + + $arrInformacoeesModulo[] = [ + 'chave' => 'MODULO_PEN_VERSAO', + 'valor' => $objInfraParametro->getValor('VERSAO_MODULO_PEN') + ]; + + return $arrInformacoeesModulo; + + }catch(Exception $e){ + $mensagem = "Erro ao obter versão do módulo PEN"; + throw new InfraException($mensagem, $e); + } } - private function atribuirInformacoesAssuntoREST($objCabecalho, $dblIdProcedimento) + private function atribuirInformacoesAssuntoREST($dblIdProcedimento) { try{ @@ -963,7 +886,7 @@ private function atribuirInformacoesAssuntoREST($objCabecalho, $dblIdProcediment $objRelProtocoloAssuntoRN = new RelProtocoloAssuntoRN(); $arrobjRelProtocoloAssuntoDTO = $objRelProtocoloAssuntoRN->listarRN0188($objRelProtocoloAssuntoDTO); - $arrDadosAssunto = array(); + $arrDadosAssunto = []; $contagem=1; $objProcessoEletronicoRN = new ProcessoEletronicoRN(); @@ -1307,7 +1230,7 @@ public function cadastrarTramiteDeProcesso($parDblIdProcedimento, $parStrNumeroR throw new InfraException('Parâmetro $parStrNumeroRegistro não informado.'); } - if(!isset($parStrStaTipoTramite) || !in_array($parStrStaTipoTramite, array(ProcessoEletronicoRN::$STA_TIPO_TRAMITE_ENVIO, ProcessoEletronicoRN::$STA_TIPO_TRAMITE_RECEBIMENTO))) { + if(!isset($parStrStaTipoTramite) || !in_array($parStrStaTipoTramite, [ProcessoEletronicoRN::$STA_TIPO_TRAMITE_ENVIO, ProcessoEletronicoRN::$STA_TIPO_TRAMITE_RECEBIMENTO])) { throw new InfraException('Parâmetro $parStrStaTipoTramite inválio'); } @@ -1344,10 +1267,10 @@ public function cadastrarTramiteDeProcesso($parDblIdProcedimento, $parStrNumeroR //Montar dados dos procedimentos apensados if (isset($parObjProtocolo->processoApensado)) { if (!is_array($parObjProtocolo->processoApensado)) { - $parObjProtocolo->processoApensado = array($parObjProtocolo->processoApensado); + $parObjProtocolo->processoApensado = [$parObjProtocolo->processoApensado]; } - $arrObjRelProcessoEletronicoApensadoDTO = array(); + $arrObjRelProcessoEletronicoApensadoDTO = []; $objRelProcessoEletronicoApensadoDTO = null; foreach ($parObjProtocolo->processoApensado as $objProcessoApensado) { $objRelProcessoEletronicoApensadoDTO = new RelProcessoEletronicoApensadoDTO(); @@ -1365,7 +1288,7 @@ public function cadastrarTramiteDeProcesso($parDblIdProcedimento, $parStrNumeroR $objTramiteDTO->setStrNumeroRegistro($parStrNumeroRegistro); $objTramiteDTO->setNumIdTramite($parNumIdentificacaoTramite); $objTramiteDTO->setNumTicketEnvioComponentes($parNumTicketComponentesDigitais); - $objTramiteDTO->setDthRegistro($this->converterDataSEI($parDthRegistroTramite)); + $objTramiteDTO->setDthRegistro(static::converterDataSEI($parDthRegistroTramite)); if($bolSinProcessamentoEmBloco){ $objTramiteDTO->setNumIdUnidade($numIdUnidade); }else{ @@ -1377,7 +1300,7 @@ public function cadastrarTramiteDeProcesso($parDblIdProcedimento, $parStrNumeroR $objTramiteDTO->setNumIdRepositorioDestino($parNumIdRepositorioDestino); $objTramiteDTO->setNumIdEstruturaDestino($parNumIdEstruturaDestino); $objTramiteDTO->setStrStaTipoTramite($parStrStaTipoTramite); - $objProcessoEletronicoDTO->setArrObjTramiteDTO(array($objTramiteDTO)); + $objProcessoEletronicoDTO->setArrObjTramiteDTO([$objTramiteDTO]); //Monta dados dos componentes digitais $parObjProtocoloDesmembrado = ProcessoEletronicoRN::desmembrarProcessosAnexados($parObjProtocolo); @@ -1441,13 +1364,13 @@ protected function cadastrarTramiteDeProcessoInternoControlado(ProcessoEletronic $objTramiteDTO = $objTramiteBD->cadastrar($parObjTramiteDTO); } - $objProcessoEletronicoDTO->setArrObjTramiteDTO(array($objTramiteDTO)); + $objProcessoEletronicoDTO->setArrObjTramiteDTO([$objTramiteDTO]); //Registra informações sobre o componente digital do documento - $arrObjComponenteDigitalDTO = array(); + $arrObjComponenteDigitalDTO = []; $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); - $arrObjComponenteDigitalDTO = array(); + $arrObjComponenteDigitalDTO = []; foreach ($parObjTramiteDTO->getArrObjComponenteDigitalDTO() as $objComponenteDigitalDTO) { //Verifica se o documento foi inserido pelo trâmite atual @@ -1497,8 +1420,8 @@ public static function getHashFromMetaDados($objMeta) if(is_string($objMeta)){ $strHashConteudo = $objMeta; } else { - $matches = array(); - $strHashConteudo = (isset($objMeta->enc_value)) ? $objMeta->enc_value : $objMeta->conteudo; + $matches = []; + $strHashConteudo = $objMeta->enc_value ?? $objMeta->conteudo; if (preg_match('/^(.*)<\/hash>$/', $strHashConteudo, $matches, PREG_OFFSET_CAPTURE)) { $strHashConteudo = $matches[1][0]; @@ -1516,7 +1439,7 @@ public static function getHashFromMetaDadosREST($objMeta) if(is_string($objMeta)){ $strHashConteudo = $objMeta; } else { - $strHashConteudo = (isset($objMeta['conteudo'])) ? $objMeta['conteudo'] : $objMetaconteudo; + $strHashConteudo = $objMeta['conteudo'] ?? $objMetaconteudo; } } return $strHashConteudo; @@ -1525,11 +1448,10 @@ public static function getHashFromMetaDadosREST($objMeta) private function montarDadosMaisDeUmComponenteDigital($objDocumento, $parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProtocolo, $parObjComponentesDigitaisSolicitados) { $arrayComponentesDigitais = $objDocumento->componentesDigitais; - $arrObjComponenteDigitalDTO = array(); - $arrayTeste = array(); + $arrObjComponenteDigitalDTO = []; $contComponentes = 0; - foreach ($arrayComponentesDigitais as $indice => $objComponenteDigital){ + foreach ($arrayComponentesDigitais as $objComponenteDigital){ if (is_array($objComponenteDigital)) { $objComponenteDigital = (object) $objComponenteDigital; @@ -1564,10 +1486,10 @@ private function montarDadosMaisDeUmComponenteDigital($objDocumento, $parStrNume //Registrar componente digital necessita ser enviado pelo trâmite específico //TODO: Teste $parObjComponentesDigitaisSolicitados aqui if(isset($parObjComponentesDigitaisSolicitados)) { - $arrObjItensSolicitados = isset($parObjComponentesDigitaisSolicitados) ? $parObjComponentesDigitaisSolicitados : array($parObjComponentesDigitaisSolicitados); + $arrObjItensSolicitados = $parObjComponentesDigitaisSolicitados ?? [$parObjComponentesDigitaisSolicitados]; foreach ($arrObjItensSolicitados as $objItemSolicitado) { if(!is_null($objItemSolicitado)){ - $objItemSolicitado['hashes'] = is_array($objItemSolicitado['hashes']) ? $objItemSolicitado['hashes'] : array($objItemSolicitado['hashes']); + $objItemSolicitado['hashes'] = is_array($objItemSolicitado['hashes']) ? $objItemSolicitado['hashes'] : [$objItemSolicitado['hashes']]; if($objItemSolicitado['protocolo'] == $objComponenteDigitalDTO->getStrProtocolo() && in_array($strHashConteudo, $objItemSolicitado['hashes']) && !$objDocumento->retirado) { $objComponenteDigitalDTO->setStrSinEnviar("S"); @@ -1590,10 +1512,10 @@ private function montarDadosMaisDeUmComponenteDigital($objDocumento, $parStrNume private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProtocolo, $parObjComponentesDigitaisSolicitados) { //Monta dados dos componentes digitais - $arrObjComponenteDigitalDTO = array(); + $arrObjComponenteDigitalDTO = []; $arrObjDocumento = self::obterDocumentosProtocolo($parObjProtocolo, true); - $arrObjComponenteDigitalDTOAux = array(); + $arrObjComponenteDigitalDTOAux = []; foreach ($arrObjDocumento as $objDocumento) { $quantidadeDeComponentesDigitais = count($objDocumento->componentesDigitais); if($quantidadeDeComponentesDigitais > 1){ @@ -1648,10 +1570,10 @@ private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIden //Registrar componente digital necessita ser enviado pelo trâmite específico //TODO: Teste $parObjComponentesDigitaisSolicitados aqui if(isset($parObjComponentesDigitaisSolicitados)){ - $arrObjItensSolicitados = isset($parObjComponentesDigitaisSolicitados) ? $parObjComponentesDigitaisSolicitados : array($parObjComponentesDigitaisSolicitados); + $arrObjItensSolicitados = $parObjComponentesDigitaisSolicitados ?? [$parObjComponentesDigitaisSolicitados]; foreach ($arrObjItensSolicitados as $objItemSolicitado) { if(!is_null($objItemSolicitado)){ - $objItemSolicitado['hashes'] = is_array($objItemSolicitado['hashes']) ? $objItemSolicitado['hashes'] : array($objItemSolicitado['hashes']); + $objItemSolicitado['hashes'] = is_array($objItemSolicitado['hashes']) ? $objItemSolicitado['hashes'] : [$objItemSolicitado['hashes']]; if($objItemSolicitado['protocolo'] == $objComponenteDigitalDTO->getStrProtocolo() && in_array($strHashConteudo, $objItemSolicitado['hashes']) && !$objDocumento->retirado) { $objComponenteDigitalDTO->setStrSinEnviar("S"); @@ -1719,7 +1641,7 @@ public function consultarTramites($parNumIdTramite = null, $parNumeroRegistro = $endpoint = 'tramites'; try { - $arrObjTramite = array(); + $arrObjTramite = []; $parametros = [ 'IDT' => $parNumIdTramite ]; @@ -1771,7 +1693,7 @@ public function consultarTramites($parNumIdTramite = null, $parNumeroRegistro = public function consultarTramitesProtocolo($parProtocoloFormatado) { - $arrObjTramite = array(); + $arrObjTramite = []; try { $parametros = [ @@ -1800,9 +1722,7 @@ public function cienciaRecusa($parNumIdTramite) $parametros = [ 'IDT' => $parNumIdTramite ]; - - $arrResultado = $this->get($endpoint, $parametros); - return $arrResultado; + return $this->get($endpoint, $parametros); } catch (\Exception $e) { $mensagem = "Falha no registro de ciência da recusa de trâmite"; @@ -1897,7 +1817,6 @@ public function consultarEstadoProcedimento($strProtocoloFormatado = '', $numIdR case static::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE: throw new InfraException(mb_convert_encoding('O trâmite externo deste processo já foi concluído', 'UTF-8', 'ISO-8859-1')); - break; default: $objAtividadeDTO = new AtividadeDTO(); @@ -1905,7 +1824,7 @@ public function consultarEstadoProcedimento($strProtocoloFormatado = '', $numIdR $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objAtividadeDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO); - $objAtividadeDTO->setArrObjAtributoAndamentoDTO(array()); + $objAtividadeDTO->setArrObjAtributoAndamentoDTO([]); $objAtividadeRN = new AtividadeRN(); $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); @@ -2012,7 +1931,7 @@ public function converterOperacaoDTO($objOperacaoPEN) $objOperacaoDTO = new OperacaoDTO(); $objOperacaoDTO->setStrCodigo(mb_convert_encoding($objOperacaoPEN->codigo, 'ISO-8859-1', 'UTF-8')); $objOperacaoDTO->setStrComplemento(mb_convert_encoding($objOperacaoPEN->complemento, 'ISO-8859-1', 'UTF-8')); - $objOperacaoDTO->setDthOperacao($this->converterDataSEI($objOperacaoPEN->dataHora)); + $objOperacaoDTO->setDthOperacao(static::converterDataSEI($objOperacaoPEN->dataHora)); $strIdPessoa = ($objOperacaoPEN->pessoa->numeroDeIdentificacao) ?: null; $objOperacaoDTO->setStrIdentificacaoPessoaOrigem(mb_convert_encoding($strIdPessoa, 'ISO-8859-1', 'UTF-8')); @@ -2022,6 +1941,7 @@ public function converterOperacaoDTO($objOperacaoPEN) switch ($objOperacaoPEN->codigo) { case "01": + default: $objOperacaoDTO->setStrNome("Registro"); break; case "02": @@ -2075,9 +1995,6 @@ public function converterOperacaoDTO($objOperacaoPEN) case "18": $objOperacaoDTO->setStrNome("Registro de extravio"); break; - default: - $objOperacaoDTO->setStrNome("Registro"); - break; } return $objOperacaoDTO; @@ -2109,15 +2026,13 @@ public function obterIdTarefaSEIMapeado($strCodigoOperacao) /** - * Cancela um tramite externo de um procedimento para outra unidade, gera - * falha caso a unidade de destino já tenha começado a receber o procedimento. - * - * @param type $idTramite - * @param type $idProtocolo - * @throws Exception|InfraException - * @return null - */ - + * Cancela um tramite externo de um procedimento para outra unidade, gera + * falha caso a unidade de destino já tenha começado a receber o procedimento. + * + * @param type $idTramite + * @param type $idProtocolo + * @throws Exception|InfraException + */ public function cancelarTramite($idTramite) { $endpoint = "tramites/{$idTramite}"; @@ -2229,13 +2144,10 @@ public function isDisponivelCancelarTramite($strProtocolo = '') }); if($objMeta->tramitesEncontrados) { - $arrObjMetaTramite = !is_array($objMeta->tramitesEncontrados->tramite) ? array($objMeta->tramitesEncontrados->tramite) : $objMeta->tramitesEncontrados->tramite; + $arrObjMetaTramite = !is_array($objMeta->tramitesEncontrados->tramite) ? [$objMeta->tramitesEncontrados->tramite] : $objMeta->tramitesEncontrados->tramite; $objMetaTramite = $arrObjMetaTramite[0]; - $strSituacoesDisponíveisCancelamento = array( - static::$STA_SITUACAO_TRAMITE_INICIADO, static::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE, - static::$STA_SITUACAO_TRAMITE_METADADOS_RECEBIDO_DESTINATARIO, static::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO - ); + $strSituacoesDisponíveisCancelamento = [static::$STA_SITUACAO_TRAMITE_INICIADO, static::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE, static::$STA_SITUACAO_TRAMITE_METADADOS_RECEBIDO_DESTINATARIO, static::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO]; if(in_array($objMetaTramite->situacaoAtual, $strSituacoesDisponíveisCancelamento)){ return true; @@ -2244,10 +2156,7 @@ public function isDisponivelCancelarTramite($strProtocolo = '') return false; } - catch(SoapFault $e) { - return false; - } - catch(Exception $e) { + catch(SoapFault|Exception $e) { return false; } } @@ -2294,7 +2203,7 @@ protected function tentarNovamenteSobErroHTTP($callback, $numTentativa = 1) try { return $callback($this->getObjPenWs()); } catch (\SoapFault $fault) { - if(in_array($fault->faultcode, array("HTTP", "WSDL")) && $this->numTentativasErro >= $numTentativa){ + if(in_array($fault->faultcode, ["HTTP", "WSDL"]) && $this->numTentativasErro >= $numTentativa){ sleep(self::WS_ESPERA_RECONEXAO); return $this->tentarNovamenteSobErroHTTP($callback, ++$numTentativa); } else { @@ -2363,10 +2272,10 @@ public static function comparacaoOrdemComponenteDigitais($parComponenteDigital1, public static function obterDocumentosProtocolo($parObjProtocolo, $parBolExtrairAnexados = false) { - $arrObjDocumento = array(); + $arrObjDocumento = []; if(isset($parObjProtocolo->documentos)){ - $arrObjProtocolo = is_array($parObjProtocolo->documentos) ? $parObjProtocolo->documentos : array($parObjProtocolo->documentos); - usort($arrObjProtocolo, array("ProcessoEletronicoRN", "comparacaoOrdemAjustadaDocumentos")); + $arrObjProtocolo = is_array($parObjProtocolo->documentos) ? $parObjProtocolo->documentos : [$parObjProtocolo->documentos]; + usort($arrObjProtocolo, ["ProcessoEletronicoRN", "comparacaoOrdemAjustadaDocumentos"]); //Tratamento recursivo para processos anexados foreach ($arrObjProtocolo as $objProtocolo) { @@ -2392,11 +2301,11 @@ public static function obterDocumentosProtocolo($parObjProtocolo, $parBolExtrair $parObjProtocolo->ordem = 1; $parObjProtocolo->ordemAjustada = 1; $parObjProtocolo->componentesDigitais = self::obterComponentesDocumentos($parObjProtocolo); - return array($parObjProtocolo); + return [$parObjProtocolo]; } if($parBolExtrairAnexados){ - usort($arrObjDocumento, array("ProcessoEletronicoRN", "comparacaoOrdemDocumentos")); + usort($arrObjDocumento, ["ProcessoEletronicoRN", "comparacaoOrdemDocumentos"]); } $arrObjDocumentoPadronizados = ($parBolExtrairAnexados) ? $arrObjDocumento : $arrObjProtocolo; @@ -2415,10 +2324,10 @@ public static function obterDocumentosProtocolo($parObjProtocolo, $parBolExtrair public static function obterComponentesDocumentos($parObjDocumento) { - $arrObjComponenteDigital = array(); + $arrObjComponenteDigital = []; if (isset($parObjDocumento->componentesDigitais)) { - $arrObjComponenteDigital = is_array($parObjDocumento->componentesDigitais) ? $parObjDocumento->componentesDigitais : array($parObjDocumento->componentesDigitais); - usort($arrObjComponenteDigital, array("ProcessoEletronicoRN", "comparacaoOrdemComponenteDigitais")); + $arrObjComponenteDigital = is_array($parObjDocumento->componentesDigitais) ? $parObjDocumento->componentesDigitais : [$parObjDocumento->componentesDigitais]; + usort($arrObjComponenteDigital, ["ProcessoEletronicoRN", "comparacaoOrdemComponenteDigitais"]); } return $arrObjComponenteDigital; @@ -2434,7 +2343,7 @@ public static function obterProtocoloDosMetadados($parobjMetadadosProcedimento) { $objProcesso = $parobjMetadadosProcedimento->metadados->processo; $objDocumento = $parobjMetadadosProcedimento->metadados->documento; - $objProtocolo = isset($objProcesso) ? $objProcesso : $objDocumento; + $objProtocolo = $objProcesso ?? $objDocumento; //Caso seja processo receberá em staTipoProtocolo P e caso seja documento avulso receberá D $objProtocolo->staTipoProtocolo = isset($objProcesso) ? ProcessoEletronicoRN::$STA_TIPO_PROTOCOLO_PROCESSO : ProcessoEletronicoRN::$STA_TIPO_PROTOCOLO_DOCUMENTO_AVULSO; @@ -2476,9 +2385,9 @@ public static function obterUnidadeParaRegistroDocumento($parDblIdProcedimento) */ public static function obterComponentesDigitaisDocumento($parObjDocumento) { - $arrObjComponenteDigital = array(); + $arrObjComponenteDigital = []; if(isset($parObjDocumento->componentesDigitais)){ - $arrObjComponenteDigital = is_array($parObjDocumento->componentesDigitais) ? $parObjDocumento->componentesDigitais : array($parObjDocumento->componentesDigitais); + $arrObjComponenteDigital = is_array($parObjDocumento->componentesDigitais) ? $parObjDocumento->componentesDigitais : [$parObjDocumento->componentesDigitais]; } return $arrObjComponenteDigital; @@ -2503,11 +2412,11 @@ public static function desmembrarProcessosAnexados($parObjProtocolo) return $parObjProtocolo; } - $arrObjRefProcessosAnexados = array(); + $arrObjRefProcessosAnexados = []; $objProcessoPrincipal = clone $parObjProtocolo; - $objProcessoPrincipal->documentos = array(); + $objProcessoPrincipal->documentos = []; $arrObjDocumentosOrdenados = ProcessoEletronicoRN::obterDocumentosProtocolo($parObjProtocolo, true); - usort($arrObjDocumentosOrdenados, array("ProcessoEletronicoRN", "comparacaoOrdemDocumentos")); + usort($arrObjDocumentosOrdenados, ["ProcessoEletronicoRN", "comparacaoOrdemDocumentos"]); // Agrupamento dos documentos por processo foreach ($arrObjDocumentosOrdenados as $objDocumento) { @@ -2519,7 +2428,7 @@ public static function desmembrarProcessosAnexados($parObjProtocolo) // existe apenas o número do protocolo de referência if($bolDocumentoAnexado && !array_key_exists($strProtocoloProcAnexado, $arrObjRefProcessosAnexados)){ $objProcessoAnexado = clone $objProcessoPrincipal; - $objProcessoAnexado->documentos = array(); + $objProcessoAnexado->documentos = []; $objProcessoAnexado->protocolo = $strProtocoloProcAnexado; $objProcessoAnexado->ordemAjustada = count($objProcessoPrincipal->documentos) + 1; $objProcessoPrincipal->documentos[] = $objProcessoAnexado; @@ -2612,11 +2521,10 @@ public function validarDisponibilidade() } /** - * Recupera os dados do último trâmite de recebimento válido realizado para determinado número de processo eletrônico - * - * @param ProcessoEletronicoDTO $parObjProcessoEletronicoDTO - * @return void - */ + * Recupera os dados do último trâmite de recebimento válido realizado para determinado número de processo eletrônico + * + * @return void + */ protected function consultarUltimoTramiteRecebidoConectado(ProcessoEletronicoDTO $parObjProcessoEletronicoDTO) { $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); @@ -2624,11 +2532,10 @@ protected function consultarUltimoTramiteRecebidoConectado(ProcessoEletronicoDTO } /** - * Recupera os dados do último trâmite válido realizado para determinado número de processo eletrônico - * - * @param ProcessoEletronicoDTO $parObjProcessoEletronicoDTO - * @return void - */ + * Recupera os dados do último trâmite válido realizado para determinado número de processo eletrônico + * + * @return void + */ protected function consultarUltimoTramiteConectado(ProcessoEletronicoDTO $parObjProcessoEletronicoDTO) { $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); @@ -2637,11 +2544,10 @@ protected function consultarUltimoTramiteConectado(ProcessoEletronicoDTO $parObj /** - * Lista componentes digitais de determinado trâmite - * - * @param TramiteDTO $parObjTramiteDTO - * @return void - */ + * Lista componentes digitais de determinado trâmite + * + * @return void + */ protected function listarComponentesDigitaisConectado(TramiteDTO $parObjTramiteDTO, $dblIdDocumento = null) { $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); @@ -2649,11 +2555,10 @@ protected function listarComponentesDigitaisConectado(TramiteDTO $parObjTramiteD } /** - * Verifica a existência de algum documento contendo outro referenciado no próprio processo - * - * @param TramiteDTO $parObjTramiteDTO - * @return void - */ + * Verifica a existência de algum documento contendo outro referenciado no próprio processo + * + * @return void + */ protected function possuiComponentesComDocumentoReferenciadoConectado(TramiteDTO $parObjTramiteDTO) { $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); @@ -2696,7 +2601,7 @@ public static function descompactarComponenteDigital($strCaminhoAnexoCompactado, $objAnexoRN = new AnexoRN(); $strNomeArquivoTemporario = DIR_SEI_TEMP . '/' . $objAnexoRN->gerarNomeArquivoTemporario(); - $arrStrNomeArquivos = array(); + $arrStrNomeArquivos = []; $zipArchive = new ZipArchive(); if($zipArchive->open($strCaminhoAnexoCompactado)){ try { @@ -2733,9 +2638,7 @@ public function listarAssociacoesDocumentos($idProcedimento) } //Recupera toda a lista de documentos vinculados ao processo, considerando a ordenação definida pelo usuário - $arrTipoAssociacao = array( - RelProtocoloProtocoloRN::$TA_DOCUMENTO_ASSOCIADO, RelProtocoloProtocoloRN::$TA_DOCUMENTO_MOVIDO, RelProtocoloProtocoloRN::$TA_PROCEDIMENTO_ANEXADO - ); + $arrTipoAssociacao = [RelProtocoloProtocoloRN::$TA_DOCUMENTO_ASSOCIADO, RelProtocoloProtocoloRN::$TA_DOCUMENTO_MOVIDO, RelProtocoloProtocoloRN::$TA_PROCEDIMENTO_ANEXADO]; $objRelProtocoloProtocoloDTO = new RelProtocoloProtocoloDTO(); $objRelProtocoloProtocoloDTO->retDblIdRelProtocoloProtocolo(); @@ -2749,11 +2652,11 @@ public function listarAssociacoesDocumentos($idProcedimento) $objRelProtocoloProtocoloRN = new RelProtocoloProtocoloRN(); $arrObjRelProtocoloProtocoloDTO = $objRelProtocoloProtocoloRN->listarRN0187($objRelProtocoloProtocoloDTO); - $arrIdDocumentos = array(); + $arrIdDocumentos = []; foreach($arrObjRelProtocoloProtocoloDTO as $objRelProtocoloProtocoloDTO) { if (in_array($objRelProtocoloProtocoloDTO->getStrStaAssociacao(), [RelProtocoloProtocoloRN::$TA_DOCUMENTO_ASSOCIADO, RelProtocoloProtocoloRN::$TA_DOCUMENTO_MOVIDO])) { // Adiciona documentos em ordem presentes diretamente ao processo - $arrIdDocumentos[] = array("IdProtocolo" => $objRelProtocoloProtocoloDTO->getDblIdProtocolo2(), "StaAssociacao" => $objRelProtocoloProtocoloDTO->getStrStaAssociacao()); + $arrIdDocumentos[] = ["IdProtocolo" => $objRelProtocoloProtocoloDTO->getDblIdProtocolo2(), "StaAssociacao" => $objRelProtocoloProtocoloDTO->getStrStaAssociacao()]; } elseif($objRelProtocoloProtocoloDTO->getStrStaAssociacao() == RelProtocoloProtocoloRN::$TA_PROCEDIMENTO_ANEXADO) { // Adiciona documentos presente no processo anexado, mantendo a ordem de todo o conjunto $numIdProtocoloAnexado = $objRelProtocoloProtocoloDTO->getDblIdProtocolo2(); @@ -2804,8 +2707,7 @@ public function consultarEstruturas($idRepositorioEstrutura, $parametros = []) { $endpoint = "repositorios-de-estruturas/{$idRepositorioEstrutura}/estruturas-organizacionais"; try { - $arrResultado = $this->get($endpoint, $parametros); - return $arrResultado; + return $this->get($endpoint, $parametros); } catch (Exception $e) { $mensagem = "Falha na obtenção de unidades externas"; $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); @@ -2825,8 +2727,7 @@ public function buscarEstruturaRest($idRepositorioEstrutura, $idUnidadeRH) { $endpoint = "repositorios-de-estruturas/{$idRepositorioEstrutura}/estruturas-organizacionais/{$idUnidadeRH}"; try { - $arrResultado = $this->get($endpoint); - return $arrResultado; + return $this->get($endpoint); } catch (Exception $e) { $mensagem = "Falha na obtenção de unidades externas"; $detalhes = InfraString::formatarJavaScript($this->tratarFalhaWebService($e)); diff --git a/src/rn/ProcessoExpedidoRN.php b/src/rn/ProcessoExpedidoRN.php index 2db9b7506..e6ce10ce1 100755 --- a/src/rn/ProcessoExpedidoRN.php +++ b/src/rn/ProcessoExpedidoRN.php @@ -51,32 +51,14 @@ public function listarProcessoExpedido(ProtocoloDTO &$objProtocoloDTO) AND at2.dth_abertura > a.dth_abertura ) GROUP BY p.id_protocolo, p.protocolo_formatado, a.id_unidade , atd.valor , us.id_usuario, us.nome, a.dth_abertura ORDER BY a.dth_abertura DESC "; - - - $sqlCount = "SELECT count(*) total - FROM protocolo p - INNER JOIN atividade a ON a.id_protocolo = p.id_protocolo - INNER JOIN atributo_andamento atd ON a.id_atividade = atd.id_atividade AND atd.nome = 'UNIDADE_DESTINO' - INNER JOIN md_pen_processo_eletronico pe ON pe.id_procedimento = p.id_protocolo - INNER JOIN md_pen_tramite ptra ON ptra.numero_registro = pe.numero_registro - INNER JOIN usuario us ON ptra.id_usuario = us.id_usuario - WHERE - p.sta_estado = '" . $objProtocoloDTO->getStrStaEstado() . "' - AND - a.id_tarefa = ". ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_EXTERNO) ." - AND - ptra.dth_registro = (SELECT MAX(pt.dth_registro) dth_registro FROM md_pen_tramite pt WHERE pt.numero_registro = pe.numero_registro) - AND - NOT EXISTS ( - SELECT at2.* FROM atividade at2 - WHERE at2.id_protocolo = p.id_protocolo - AND at2.id_tarefa = ". ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO) ." - AND at2.dth_abertura > a.dth_abertura ) "; + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_EXTERNO); + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO); + $objProtocoloDTO->getStrStaEstado(); $objPaginacao = $this->getObjInfraIBanco()->paginarSql($sql, $numOffset, $numLimit); $total = $objPaginacao['totalRegistros']; - $arrProcessosExpedidos = array(); + $arrProcessosExpedidos = []; $objProtocoloDTO->setNumTotalRegistros($total); $objProtocoloDTO->setNumRegistrosPaginaAtual($total); diff --git a/src/rn/ReceberComponenteDigitalRN.php b/src/rn/ReceberComponenteDigitalRN.php index b7695f636..a3adf507e 100755 --- a/src/rn/ReceberComponenteDigitalRN.php +++ b/src/rn/ReceberComponenteDigitalRN.php @@ -4,14 +4,11 @@ class ReceberComponenteDigitalRN extends InfraRN { private $objProcessoEletronicoRN; - private $objInfraParametro; - private $arrAnexos = array(); + private $arrAnexos = []; public function __construct() { parent::__construct(); - - $this->objInfraParametro = new InfraParametro(BancoSEI::getInstance()); $this->objProcessoEletronicoRN = new ProcessoEletronicoRN(); } @@ -30,7 +27,7 @@ protected function inicializarObjInfraIBanco() protected function receberComponenteDigitalControlado(ComponenteDigitalDTO $parObjComponenteDigitalDTO) { - if(!isset($parObjComponenteDigitalDTO) || !isset($parObjComponenteDigitalDTO)) { + if(!isset($parObjComponenteDigitalDTO)) { throw new InfraException('Parâmetro $parObjComponenteDigitalDTO não informado.'); } @@ -69,7 +66,7 @@ public function atribuirComponentesDigitaisAoDocumento($parNumIdDocumento, $parA if(!isset($parArrObjComponenteDigitalDTO)) { throw new InfraException('Parâmetro parArrObjComponenteDigitalDTO não informado.'); } - $arrObjAnexoDTOParaCompactacao = array(); + $arrObjAnexoDTOParaCompactacao = []; foreach ($parArrObjComponenteDigitalDTO as $objComponenteDigital){ foreach($this->arrAnexos as $key => $objAnexo){ if(array_key_exists($objComponenteDigital->getStrHashConteudo(), $objAnexo) && $objAnexo['recebido'] == false){ @@ -127,7 +124,7 @@ protected function compactarAnexosDoDocumento($parNumIdDocumento, $parArrAnexoDT /** * Transforma em array, o id do documento */ - $arrIdDocumentos = array($parNumIdDocumento); + $arrIdDocumentos = [$parNumIdDocumento]; $objDocumentoDTO = new DocumentoDTO(); $objDocumentoDTO->retDblIdDocumento(); @@ -149,7 +146,7 @@ protected function compactarAnexosDoDocumento($parNumIdDocumento, $parArrAnexoDT } $contDocumentosDto = 0; - $arrayRetornoObjAnexoDTO = array(); + $arrayRetornoObjAnexoDTO = []; foreach ($arrObjDocumentoDTO as $objDocumentoDTO) { $contDocumentosDto++; $objAnexoRN = new AnexoRN(); @@ -168,7 +165,7 @@ protected function compactarAnexosDoDocumento($parNumIdDocumento, $parArrAnexoDT $objDocumentoDTO = $arrObjDocumentoDTO[$dblIdDocumento]; $strDocumento = ''; if ($objDocumentoDTO->getStrStaProtocoloProtocolo() == ProtocoloRN::$TP_DOCUMENTO_RECEBIDO){ - $arrayAnexosExcluirFisicamente = array(); + $arrayAnexosExcluirFisicamente = []; foreach ($parArrAnexoDTO as $objAnexoDTO){ $numSequencial++; @@ -246,7 +243,7 @@ private function atualizarAnexoDoComponenteDigital($parObjComponenteDigitalDTO, //$objComponenteDigitalDTO->setNumOrdem($parObjComponenteDigitalDTO->getNumOrdem()); $objComponenteDigitalDTO->setNumIdAnexo($parObjAnexoDTO->getNumIdAnexo()); $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); - $objComponenteDigitalDTO = $objComponenteDigitalBD->alterar($objComponenteDigitalDTO); + $objComponenteDigitalBD->alterar($objComponenteDigitalDTO); } /** @@ -302,11 +299,9 @@ public function validarIntegridadeDoComponenteDigital(AnexoDTO $objAnexoDTO, $st } /** - * Método para cadastramento do anexo correspondente ao componente digital recebido - * @param ComponenteDigitalDTO $parObjComponenteDigitalDTO - * @param AnexoDTO $parObjAnexoDTO - * @throws InfraException - */ + * Método para cadastramento do anexo correspondente ao componente digital recebido + * @throws InfraException + */ public function cadastrarComponenteDigital(ComponenteDigitalDTO $parObjComponenteDigitalDTO, AnexoDTO $parObjAnexoDTO) { //Obter dados do documento @@ -333,18 +328,16 @@ public function cadastrarComponenteDigital(ComponenteDigitalDTO $parObjComponent // Complementa informações do componente digital $parObjAnexoDTO->setStrNome($parObjComponenteDigitalDTO->getStrNome()); $arrStrNome = explode('.', $parObjComponenteDigitalDTO->getStrNome()); - $strProtocoloFormatado = current($arrStrNome); $objDocumentoDTO->setObjProtocoloDTO($objProtocoloDTO); - $objProtocoloDTO->setArrObjAnexoDTO(array($parObjAnexoDTO)); + $objProtocoloDTO->setArrObjAnexoDTO([$parObjAnexoDTO]); $objDocumentoRN->alterarRN0004($objDocumentoDTO); } /** - * Método responsável por cadastrar o anexo correspondente aos componentes digitais recebidos pelo PEN - * @param ComponenteDigitalDTO $parObjComponenteDigitalDTO - * @param AnexoDTO $parObjAnexoDTO - * @throws InfraException - */ + * Método responsável por cadastrar o anexo correspondente aos componentes digitais recebidos pelo PEN + * @param ComponenteDigitalDTO $parObjComponenteDigitalDTO + * @throws InfraException + */ public function cadastrarAnexoDoDocumento(AnexoDTO $parObjAnexoDTO) { $dblIdDocumento = $parObjAnexoDTO->getDblIdProtocolo(); @@ -374,7 +367,7 @@ public function cadastrarAnexoDoDocumento(AnexoDTO $parObjAnexoDTO) $parObjAnexoDTO->setStrNome($nomeArquivoZip); $objDocumentoDTO->setObjProtocoloDTO($objProtocoloDTO); - $objProtocoloDTO->setArrObjAnexoDTO(array($parObjAnexoDTO)); + $objProtocoloDTO->setArrObjAnexoDTO([$parObjAnexoDTO]); $objDocumentoRN->alterarRN0004($objDocumentoDTO); } diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index 6f9d628de..c21546a97 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -14,7 +14,6 @@ class ReceberProcedimentoRN extends InfraRN private $objRelProtocoloProtocoloRN; private $objPenParametroRN; private $objProcedimentoRN; - private $objDocumentoRN; public $destinatarioReal; private $objPenDebug; private $objProtocoloRN; @@ -29,7 +28,6 @@ public function __construct() $this->objSeiRN = new SeiRN(); $this->objProtocoloRN = new ProtocoloRN(); $this->objProcedimentoRN = new ProcedimentoRN(); - $this->objDocumentoRN = new DocumentoRN(); $this->objInfraParametro = new InfraParametro(BancoSEI::getInstance()); $this->objProcessoEletronicoRN = new ProcessoEletronicoRN(); $this->objProcedimentoAndamentoRN = new ProcedimentoAndamentoRN(); @@ -69,7 +67,7 @@ public function receberProcedimento($parNumIdentificacaoTramite) try{ // Inicialização do recebimento do processo, abrindo nova transação e controle de concorrência, // evitando processamento simultâneo de cadastramento do mesmo processo - $arrChavesSincronizacao = array(); + $arrChavesSincronizacao = []; $arrChavesSincronizacao["IdTramite"] = $objMetadadosProcedimento->IDT; $arrChavesSincronizacao["NumeroRegistro"] = $objMetadadosProcedimento->metadados->NRE; $objProtocolo = ProcessoEletronicoRN::obterProtocoloDosMetadados($objMetadadosProcedimento); @@ -144,7 +142,7 @@ protected function receberProcedimentoInternoControlado($parObjMetadadosProcedim } $this->gravarLogDebug("Persistindo/atualizando dados do processo com NRE " . $strNumeroRegistro, 2); - list($objProcedimentoDTO, $bolProcedimentoExistente) = $this->registrarProcesso( + [$objProcedimentoDTO, $bolProcedimentoExistente] = $this->registrarProcesso( $strNumeroRegistro, $numIdTramite, $objProtocolo, @@ -179,9 +177,9 @@ protected function receberProcedimentoInternoControlado($parObjMetadadosProcedim throw new InfraException("Desconsiderando recebimento do processo devido a situação de trâmite inconsistente: " . $objTramite->situacaoAtual); } - $this->atribuirComponentesDigitaisAosDocumentos($objProcedimentoDTO, $strNumeroRegistro, $numIdTramite, $arrHashComponenteBaixados, $objProtocolo); + $this->atribuirComponentesDigitaisAosDocumentos($strNumeroRegistro, $numIdTramite, $arrHashComponenteBaixados, $objProtocolo); - $this->atribuirObservacoesSobreDocumentoReferenciado($objProcedimentoDTO, $objProtocolo); + $this->atribuirObservacoesSobreDocumentoReferenciado($objProcedimentoDTO); $this->atribuirProcessosAnexados($objProtocolo); @@ -235,8 +233,8 @@ private function baixarComponentesDigitais($parObjTramite, $parObjMetadadosProce { // TODO: Migrar funções baixarComponenteDigital, receberComponenteDigital e receberComponenteDigitalParticionado // para classe ReceberComponenteDigitalRN - $arrAnexosComponentes = array(); - $arrHashComponentesBaixados = array(); + $arrAnexosComponentes = []; + $arrHashComponentesBaixados = []; $numIdTramite = $parObjMetadadosProcedimento->IDT; $objProtocolo = ProcessoEletronicoRN::obterProtocoloDosMetadados($parObjMetadadosProcedimento); $numParamTamMaxDocumentoMb = ProcessoEletronicoRN::obterTamanhoBlocoTransferencia(); @@ -260,7 +258,7 @@ private function baixarComponentesDigitais($parObjTramite, $parObjMetadadosProce $nrTamanhoBytesArquivo = $this->obterTamanhoComponenteDigitalPendente($objProtocolo, $strHashComponentePendente); $nrTamanhoArquivoKB = round($nrTamanhoBytesArquivo / 1024, 2); $nrTamanhMegaByte = $nrTamanhoBytesArquivo / (1024 * 1024); - $nrTamanhoBytesMaximo = $numParamTamMaxDocumentoMb * pow(1024, 2); + $nrTamanhoBytesMaximo = $numParamTamMaxDocumentoMb * 1024 ** 2; $arrObjComponenteDigitalIndexado = self::indexarComponenteDigitaisDoProtocolo($objProtocolo); @@ -371,11 +369,7 @@ public function receberTramitesRecusados($parNumIdentificacaoTramite) try{ // Inicialização do recebimento do processo, abrindo nova transação e controle de concorrência, // evitando processamento simultâneo de cadastramento do mesmo processo - $arrChavesSincronizacao = array( - "NumeroRegistro" => $objTramite->NRE, - "IdTramite" => $objTramite->IDT, - "IdTarefa" => ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO) - ); + $arrChavesSincronizacao = ["NumeroRegistro" => $objTramite->NRE, "IdTramite" => $objTramite->IDT, "IdTarefa" => ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO)]; if($this->objProcedimentoAndamentoRN->sinalizarInicioRecebimento($arrChavesSincronizacao)){ $this->receberTramitesRecusadosInterno($objTramite); @@ -500,7 +494,7 @@ protected function receberTramitesRecusadosInternoControlado($parObjTramite) //Adiciona um andamento para o trâmite recusado $this->gravarLogDebug("Adicionando andamento para registro da recusa do trâmite", 2); - $arrObjAtributoAndamentoDTO = array(); + $arrObjAtributoAndamentoDTO = []; $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('MOTIVO'); $objAtributoAndamentoDTO->setStrValor($objReceberTramiteRecusadoDTO->getStrMotivoRecusa()); @@ -533,12 +527,7 @@ protected function receberTramitesRecusadosInternoControlado($parObjTramite) $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); $objPenBlocoProcessoDTO->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo()); $objPenBlocoProcessoDTO->setNumIdAndamento( - array( - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO - ), + [ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO], InfraDTO::$OPER_NOT_IN ); $objPenBlocoProcessoDTO->setOrdNumIdBlocoProcesso(InfraDTO::$TIPO_ORDENACAO_DESC); @@ -548,7 +537,7 @@ protected function receberTramitesRecusadosInternoControlado($parObjTramite) $arrObjPenBlocoProcesso = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO); if ($arrObjPenBlocoProcesso != null) { - $blocos = array(); + $blocos = []; foreach ($arrObjPenBlocoProcesso as $objBlocoProcesso) { $objBlocoProcesso->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA); $objPenBlocoProcessoRN->alterar($objBlocoProcesso); @@ -582,7 +571,7 @@ protected function listarPendenciasConectado() /** * Método responsável por atribuir a lista de componentes digitais baixados do PEN aos seus respectivos documentos no SEI */ - private function atribuirComponentesDigitaisAosDocumentos(ProcedimentoDTO $parObjProcedimentoDTO, $parStrNumeroRegistro, $parNumIdentificacaoTramite, + private function atribuirComponentesDigitaisAosDocumentos($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parArrHashComponentes, $objProtocolo) { if(count($parArrHashComponentes) > 0){ @@ -644,7 +633,7 @@ private function atribuirComponentesDigitaisAosDocumentos(ProcedimentoDTO $parOb */ private function listarHashDosComponentesMetadado($parObjProtocolo) { - $arrHashsComponentesDigitais = array(); + $arrHashsComponentesDigitais = []; $arrObjDocumento = ProcessoEletronicoRN::obterDocumentosProtocolo($parObjProtocolo); foreach($arrObjDocumento as $objDocumento){ //Desconsidera os componendes digitais de documentos cancelados @@ -653,7 +642,7 @@ private function listarHashDosComponentesMetadado($parObjProtocolo) throw new InfraException("Metadados do componente digital do documento de ordem {$objDocumento->ordem} não informado."); } - $arrObjComponentesDigitais = is_array($objDocumento->componentesDigitais) ? $objDocumento->componentesDigitais : array($objDocumento->componentesDigitais); + $arrObjComponentesDigitais = is_array($objDocumento->componentesDigitais) ? $objDocumento->componentesDigitais : [$objDocumento->componentesDigitais]; foreach ($arrObjComponentesDigitais as $objComponenteDigital) { if (is_array($objComponenteDigital)) { @@ -676,11 +665,11 @@ private function listarHashDosComponentesMetadado($parObjProtocolo) */ private function listarMetaDadosComponentesDigitais($parObjProtocolo) { - $arrMetadadoDocumento = array(); + $arrMetadadoDocumento = []; $objMapBD = new GenericoBD($this->getObjInfraIBanco()); $arrObjDocumento = ProcessoEletronicoRN::obterDocumentosProtocolo($parObjProtocolo, true); - foreach($arrObjDocumento as $key => $objDocumento){ + foreach($arrObjDocumento as $objDocumento){ if (is_array($objDocumento->componentesDigitais[0])) { $objDocumento->componentesDigitais[0] = (object) $objDocumento->componentesDigitais[0]; } @@ -699,22 +688,18 @@ private function listarMetaDadosComponentesDigitais($parObjProtocolo) $strNomeDocumento = $objMapDTO->getStrNomeSerie(); } - $arrMetadadoDocumento[$strHash] = array( - 'especieNome' => $strNomeDocumento - ); + $arrMetadadoDocumento[$strHash] = ['especieNome' => $strNomeDocumento]; } return $arrMetadadoDocumento; } - private function validarDadosProcesso(InfraException $objInfraException, $objMetadadosProcedimento) - { - + private function validarDadosProcesso() + { } - private function validarDadosDocumentos(InfraException $objInfraException, $objMetadadosProcedimento) - { - + private function validarDadosDocumentos() + { } /** @@ -774,15 +759,15 @@ private function registrarProcesso($parStrNumeroRegistro, $parNumIdentificacaoTr { // Validação dos dados do processo recebido $objInfraException = new InfraException(); - $this->validarDadosProcesso($objInfraException, $parObjProtocolo); - $this->validarDadosDocumentos($objInfraException, $parObjProtocolo); + $this->validarDadosProcesso(); + $this->validarDadosDocumentos(); // TODO: Regra de Negócio - Processos recebidos pelo Barramento não poderão disponibilizar a opção de reordenação e cancelamento de documentos // para o usuário final, mesmo possuindo permissão para isso $objInfraException->lancarValidacoes(); // Verificar se procedimento já existia na base de dados do sistema - list($dblIdProcedimento, ) = $this->consultarProcedimentoExistente($parStrNumeroRegistro, $parObjProtocolo->protocolo); + [$dblIdProcedimento, ] = $this->consultarProcedimentoExistente($parStrNumeroRegistro, $parObjProtocolo->protocolo); $bolProcedimentoExistente = isset($dblIdProcedimento); if($bolProcedimentoExistente){ @@ -796,7 +781,7 @@ private function registrarProcesso($parStrNumeroRegistro, $parNumIdentificacaoTr // Chamada recursiva para registro dos processos apensados if(isset($parObjProtocolo->processoApensado)) { if(!is_array($parObjProtocolo->processoApensado)) { - $parObjProtocolo->processoApensado = array($parObjProtocolo->processoApensado); + $parObjProtocolo->processoApensado = [$parObjProtocolo->processoApensado]; } foreach ($parObjProtocolo->processoApensado as $objProcessoApensado) { @@ -804,7 +789,7 @@ private function registrarProcesso($parStrNumeroRegistro, $parNumIdentificacaoTr } } - return array($objProcedimentoDTO, $bolProcedimentoExistente); + return [$objProcedimentoDTO, $bolProcedimentoExistente]; } private function tramiteRecebimentoRegistrado($parStrNumeroRegistro, $parNumIdentificacaoTramite) @@ -817,18 +802,6 @@ private function tramiteRecebimentoRegistrado($parStrNumeroRegistro, $parNumIden return $objTramiteBD->contar($objTramiteDTO) > 0; } - private function documentoJaRegistrado($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parStrHashComponenteDigital) - { - //Verifica se componente digital já está registrado para o documento - $objComponenteDigitalDTO = new ComponenteDigitalDTO(); - $objComponenteDigitalDTO->setStrNumeroRegistro($parStrNumeroRegistro); - $objComponenteDigitalDTO->setNumIdTramite($parNumIdentificacaoTramite); - $objComponenteDigitalDTO->setStrHashConteudo($parStrHashComponenteDigital); - - $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); - return $objComponenteDigitalBD->contar($objComponenteDigitalDTO) > 0; - } - private function consultarProcedimentoExistente($parStrNumeroRegistro, $parStrProtocolo) { // Recupera a lista de Processos Eletrônicos registrados para o NRE ou protocolo informado @@ -878,7 +851,7 @@ private function consultarProcedimentoExistente($parStrNumeroRegistro, $parStrPr } } - return array($dblIdProcedimento, $strNumeroRegistro); + return [$dblIdProcedimento, $strNumeroRegistro]; } @@ -1015,7 +988,7 @@ private function gerarAndamentoUnidadeReceptora($parNumIdProcedimento) $objAtributoAndamentoDTO->setStrValor('Processo remetido para a unidade ' . $objUnidadeDTO->getStrDescricao()); $objAtributoAndamentoDTO->setStrIdOrigem($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura); - $arrObjAtributoAndamentoDTO = array($objAtributoAndamentoDTO); + $arrObjAtributoAndamentoDTO = [$objAtributoAndamentoDTO]; $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setDblIdProtocolo($parNumIdProcedimento); @@ -1036,10 +1009,6 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) if(!isset($objMetadadosProcedimento)){ throw new InfraException('Parâmetro $objMetadadosProcedimento não informado.'); } - - //TODO: Usar dados do destinatário em outro método específico para envio - // Dados do procedimento enviados pelos órgão externo integrado ao PEN - $objRemetente = $objMetadadosProcedimento->metadados->remetente; $objDestinatario = $objMetadadosProcedimento->metadados->destinatario; //Atribuição de dados do protocolo @@ -1071,9 +1040,9 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) $strProtocoloFormatado = ($parObjProtocolo->staTipoProtocolo == ProcessoEletronicoRN::$STA_TIPO_PROTOCOLO_PROCESSO) ? $parObjProtocolo->protocolo : null; $objProtocoloDTO->setStrProtocoloFormatado(mb_convert_encoding($strProtocoloFormatado, 'ISO-8859-1', 'UTF-8')); $objProtocoloDTO->setDtaGeracao($this->objProcessoEletronicoRN->converterDataSEI($parObjProtocolo->dataHoraDeProducao)); - $objProtocoloDTO->setArrObjAnexoDTO(array()); - $objProtocoloDTO->setArrObjRelProtocoloAssuntoDTO(array()); - $objProtocoloDTO->setArrObjRelProtocoloProtocoloDTO(array()); + $objProtocoloDTO->setArrObjAnexoDTO([]); + $objProtocoloDTO->setArrObjRelProtocoloAssuntoDTO([]); + $objProtocoloDTO->setArrObjRelProtocoloProtocoloDTO([]); $this->atribuirParticipantes($objProtocoloDTO, $parObjProtocolo->interessados); $strDescricao = ""; @@ -1098,7 +1067,7 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) $objObservacaoDTO->setStrDescricao($strDescricao); } - $objProtocoloDTO->setArrObjObservacaoDTO(array($objObservacaoDTO)); + $objProtocoloDTO->setArrObjObservacaoDTO([$objObservacaoDTO]); //Atribuição de dados do procedimento $strProcessoNegocio = mb_convert_encoding($parObjProtocolo->processoDeNegocio, 'ISO-8859-1', 'UTF-8'); @@ -1109,7 +1078,7 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) $objProcedimentoDTO->setDtaGeracaoProtocolo($this->objProcessoEletronicoRN->converterDataSEI($parObjProtocolo->dataHoraDeProducao)); $objProcedimentoDTO->setStrProtocoloProcedimentoFormatado(mb_convert_encoding($parObjProtocolo->protocolo, 'ISO-8859-1', 'UTF-8')); $objProcedimentoDTO->setStrSinGerarPendencia('S'); - $objProcedimentoDTO->setArrObjDocumentoDTO(array()); + $objProcedimentoDTO->setArrObjDocumentoDTO([]); $numIdTipoProcedimento = $this->objPenParametroRN->getParametro('PEN_TIPO_PROCESSO_EXTERNO'); $remetente = $objMetadadosProcedimento->metadados->remetente; @@ -1141,7 +1110,7 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) // Verifica se o protocolo é do tipo documento avulso, se for gera um novo número de protocolo if($parObjProtocolo->staTipoProtocolo == ProcessoEletronicoRN::$STA_TIPO_PROTOCOLO_DOCUMENTO_AVULSO) { - $strNumProtocoloDocumentoAvulso = $this->gerarNumeroProtocoloDocumentoAvulso($objUnidadeDTO, $this->objPenParametroRN); + $strNumProtocoloDocumentoAvulso = $this->gerarNumeroProtocoloDocumentoAvulso($objUnidadeDTO); $objProcedimentoDTO->getObjProtocoloDTO()->setStrProtocoloFormatado($strNumProtocoloDocumentoAvulso); } @@ -1204,7 +1173,7 @@ public function consultarProtocoloExistente($parObjProtocolo) * @return mixed * @throws InfraException */ - private function gerarNumeroProtocoloDocumentoAvulso($parObjUnidadeDTO, $parObjPenParametroRN) + private function gerarNumeroProtocoloDocumentoAvulso($parObjUnidadeDTO) { try{ // Alterado contexto de unidade atual para a unidade de destino do processo para que o núcleo do SEI possa @@ -1251,7 +1220,7 @@ private function alterarMetadadosProcedimento($parNumIdProcedimento, $parObjMeta $this->objProtocoloRN->alterarRN0203($objProtocoloDTO); } - private function alterarMetadadosDocumento($parNumIdProcedimento, $parNumIdDocumento, $parObjMetadadoDocumento) + private function alterarMetadadosDocumento($parNumIdDocumento, $parObjMetadadoDocumento) { //Realiza a alteração dos metadados do documento(Por hora, apenas do nível de sigilo e hipótese legal) $objProtocoloDTO = new ProtocoloDTO(); @@ -1265,26 +1234,13 @@ private function alterarMetadadosDocumento($parNumIdProcedimento, $parNumIdDocum $this->objProtocoloRN->alterarRN0203($objProtocoloDTO); } - - private function removerAndamentosProcedimento($parObjProtocoloDTO) - { - $objAtividadeDTO = new AtividadeDTO(); - $objAtividadeDTO->retNumIdAtividade(); - $objAtividadeDTO->setDblIdProtocolo($parObjProtocoloDTO->getDblIdProcedimento()); - $objAtividadeDTO->setNumIdTarefa(TarefaRN::$TI_GERACAO_PROCEDIMENTO); - - $objAtividadeRN = new AtividadeRN(); - $objAtividadeRN->excluirRN0034($objAtividadeRN->listarRN0036($objAtividadeDTO)); - } - private function registrarAndamentoRecebimentoProcesso(ProcedimentoDTO $objProcedimentoDTO, $parObjMetadadosProcedimento) { //Processo recebido da entidade @ENTIDADE_ORIGEM@ - @REPOSITORIO_ORIGEM@ $objRemetente = $parObjMetadadosProcedimento->metadados->remetente; - $objProcesso = $parObjMetadadosProcedimento->metadados->processo; $objProtocolo = ProcessoEletronicoRN::obterProtocoloDosMetadados($parObjMetadadosProcedimento); - $arrObjAtributoAndamentoDTO = array(); + $arrObjAtributoAndamentoDTO = []; //TODO: Otimizar código. Pesquisar 1 único elemento no barramento de serviços $objRepositorioDTO = $this->objProcessoEletronicoRN->consultarRepositoriosDeEstruturas( @@ -1361,39 +1317,9 @@ private function registrarAndamentoRecebimentoProcesso(ProcedimentoDTO $objProce } - // Avaliar a necessidade de registrar os dados do remetente como participante do processo - private function atribuirRemetente(ProtocoloDTO $objProtocoloDTO, $objRemetente) - { - $arrObjParticipantesDTO = array(); - if($objProtocoloDTO->isSetArrObjParticipanteDTO()) { - $arrObjParticipantesDTO = $objProtocoloDTO->getArrObjParticipanteDTO(); - } - - //Obtenção de detalhes do remetente na infraestrutura do PEN - $objEstruturaDTO = $this->objProcessoEletronicoRN->consultarEstrutura( - $objRemetente->identificacaoDoRepositorioDeEstruturas, - $objRemetente->numeroDeIdentificacaoDaEstrutura - ); - - if(!empty($objEstruturaDTO)) { - $objParticipanteDTO = new ParticipanteDTO(); - $objParticipanteDTO->setStrSiglaContato($objEstruturaDTO->getStrSigla()); - $objParticipanteDTO->setStrNomeContato($objEstruturaDTO->getStrNome()); - $objParticipanteDTO->setStrStaParticipacao(ParticipanteRN::$TP_REMETENTE); - $objParticipanteDTO->setNumSequencia(0); - $arrObjParticipantesDTO[] = $objParticipanteDTO; - - $arrObjParticipantesDTO = InfraArray::distinctArrInfraDTO($arrObjParticipantesDTO, 'NomeContato'); - $arrObjParticipantesDTO = $this->prepararParticipantes($arrObjParticipantesDTO); - } - - $objProtocoloDTO->setArrObjParticipanteDTO($arrObjParticipantesDTO); - } - - private function atribuirParticipantes(ProtocoloDTO $objProtocoloDTO, $arrObjInteressados) { - $arrObjParticipantesDTO = array(); + $arrObjParticipantesDTO = []; if($objProtocoloDTO->isSetArrObjParticipanteDTO()) { $arrObjParticipantesDTO = $objProtocoloDTO->getArrObjParticipanteDTO(); } @@ -1430,9 +1356,8 @@ private function obterTipoProcessoPadrao($numIdTipoProcedimento) { $objTipoProcedimentoDTO->setNumIdTipoProcedimento($numIdTipoProcedimento); $objTipoProcedimentoRN = new TipoProcedimentoRN(); - $objTipoProcedimentoDTO = $objTipoProcedimentoRN->consultarRN0267($objTipoProcedimentoDTO); - return $objTipoProcedimentoDTO; + return $objTipoProcedimentoRN->consultarRN0267($objTipoProcedimentoDTO); } /** @@ -1474,7 +1399,7 @@ private function obterTipoProcessoPeloNomeOrgaoUnidade($strNomeTipoProcesso, $nu $objTipoProcedRestricaoRN = new TipoProcedRestricaoRN(); $arrObjTipoProcedRestricaoDTO = $objTipoProcedRestricaoRN->listar($objTipoProcedRestricaoDTOFiltro); - $arrCache = array(); + $arrCache = []; foreach ($arrObjTipoProcedRestricaoDTO as $objTipoProcedRestricaoDTO) { $arrCache[$objTipoProcedRestricaoDTO->getNumIdOrgao()][($objTipoProcedRestricaoDTO->getNumIdUnidade() == null ? '*' : $objTipoProcedRestricaoDTO->getNumIdUnidade())] = 0; } @@ -1495,7 +1420,6 @@ private function obterTipoProcessoPeloNomeOrgaoUnidade($strNomeTipoProcesso, $nu * Procura tipo de procedimento no mapeamento entre orgão * Procura tipo de procedimento padrão * - * @param ProcedimentoDTO $objProcedimentoDTO * @param \stdClass $remetente * @param \stdClass $destinatario * @param string|int $numIdTipoProcedimento @@ -1614,7 +1538,7 @@ private function atribuirDadosUnidade(ProcedimentoDTO $objProcedimentoDTO, $objD ', Número: ' . $objDestinatario->numeroDeIdentificacaoDaEstrutura); } - $arrObjUnidadeDTO = array(); + $arrObjUnidadeDTO = []; $arrObjUnidadeDTO[] = $objUnidadeDTOEnvio; $objProcedimentoDTO->setArrObjUnidadeDTO($arrObjUnidadeDTO); @@ -1677,9 +1601,9 @@ private function atribuirDocumentos($parObjProcedimentoDTO, $parObjProtocolo, $o $arrObjComponenteDigitalDTO = $objComponenteDigitalBD->listar($objComponenteDigitalDTO); $arrObjComponenteDigitalDTOIndexado = InfraArray::indexarArrInfraDTO($arrObjComponenteDigitalDTO, "OrdemDocumento", true); - $arrObjDocumentoDTO = array(); - $arrDocumentosExistentesPorHash = array(); - $arrIdDocumentosRetirados = array(); + $arrObjDocumentoDTO = []; + $arrDocumentosExistentesPorHash = []; + $arrIdDocumentosRetirados = []; $count = count($arrObjDocumentos); $this->gravarLogDebug("Quantidade de documentos para recebimento: $count", 2); @@ -1699,18 +1623,14 @@ private function atribuirDocumentos($parObjProcedimentoDTO, $parObjProtocolo, $o $arrObjComponenteDigitalDTO = $arrObjComponenteDigitalDTOIndexado[$numOrdemDocumento]; $objComponenteDigitalDTO = count($arrObjComponenteDigitalDTO) > 0 ? $arrObjComponenteDigitalDTO[0] : $arrObjComponenteDigitalDTO; - $this->alterarMetadadosDocumento($objComponenteDigitalDTO->getDblIdProcedimento(), $objComponenteDigitalDTO->getDblIdDocumento(), $objDocumento); + $this->alterarMetadadosDocumento($objComponenteDigitalDTO->getDblIdDocumento(), $objDocumento); $objDocumento->idDocumentoSEI = $objComponenteDigitalDTO->getDblIdDocumento(); $objDocumento->idProcedimentoSEI = $objComponenteDigitalDTO->getDblIdProcedimento(); $objDocumento->idProcedimentoAnexadoSEI = $objComponenteDigitalDTO->getDblIdProcedimentoAnexado(); $objDocumento->protocoloProcedimentoSEI = $objComponenteDigitalDTO->getStrProtocoloProcedimentoAnexado(); foreach ($arrObjComponenteDigitalDTO as $objComponenteDTO) { - $arrDocumentosExistentesPorHash[$objComponenteDTO->getStrHashConteudo()] = array( - "IdDocumento" => $objComponenteDTO->getDblIdDocumento(), - "ComponenteDigitalDTO" => $objComponenteDTO, - "MultiplosComponentes" => count($arrObjComponenteDigitalDTO) > 1 - ); + $arrDocumentosExistentesPorHash[$objComponenteDTO->getStrHashConteudo()] = ["IdDocumento" => $objComponenteDTO->getDblIdDocumento(), "ComponenteDigitalDTO" => $objComponenteDTO, "MultiplosComponentes" => count($arrObjComponenteDigitalDTO) > 1]; } if(isset($objDocumento->retirado) && $objDocumento->retirado === true) { @@ -1748,10 +1668,10 @@ private function atribuirDocumentos($parObjProcedimentoDTO, $parObjProtocolo, $o $objProcedimentoDTO2->retNumIdTipoProcedimento(); $objProcedimentoDTO2->retStrNomeTipoProcedimento(); $objProcedimentoDTO2->adicionarCriterio( - array('IdProcedimento','ProtocoloProcedimentoFormatado','ProtocoloProcedimentoFormatadoPesquisa'), - array(InfraDTO::$OPER_IGUAL,InfraDTO::$OPER_IGUAL,InfraDTO::$OPER_IGUAL), - array($objDocumentoDTO->getDblIdProcedimento(), $objDocumentoDTO->getDblIdProcedimento(), $objDocumentoDTO->getDblIdProcedimento()), - array(InfraDTO::$OPER_LOGICO_OR,InfraDTO::$OPER_LOGICO_OR) + ['IdProcedimento', 'ProtocoloProcedimentoFormatado', 'ProtocoloProcedimentoFormatadoPesquisa'], + [InfraDTO::$OPER_IGUAL, InfraDTO::$OPER_IGUAL, InfraDTO::$OPER_IGUAL], + [$objDocumentoDTO->getDblIdProcedimento(), $objDocumentoDTO->getDblIdProcedimento(), $objDocumentoDTO->getDblIdProcedimento()], + [InfraDTO::$OPER_LOGICO_OR, InfraDTO::$OPER_LOGICO_OR] ); $objProcedimentoRN = new ProcedimentoRN(); @@ -1788,10 +1708,10 @@ private function atribuirDocumentos($parObjProcedimentoDTO, $parObjProtocolo, $o //TODO: Avaliar regra de formação do número do documento $objProtocoloDTO->setStrStaNivelAcessoLocal($this->obterNivelSigiloSEI($objDocumento->nivelDeSigilo)); $objProtocoloDTO->setDtaGeracao($this->objProcessoEletronicoRN->converterDataSEI($objDocumento->dataHoraDeProducao)); - $objProtocoloDTO->setArrObjAnexoDTO(array()); - $objProtocoloDTO->setArrObjRelProtocoloAssuntoDTO(array()); - $objProtocoloDTO->setArrObjRelProtocoloProtocoloDTO(array()); - $objProtocoloDTO->setArrObjParticipanteDTO(array()); + $objProtocoloDTO->setArrObjAnexoDTO([]); + $objProtocoloDTO->setArrObjRelProtocoloAssuntoDTO([]); + $objProtocoloDTO->setArrObjRelProtocoloProtocoloDTO([]); + $objProtocoloDTO->setArrObjParticipanteDTO([]); //TODO: Analisar se o modelo de dados do PEN possui destinatários específicos para os documentos //caso não possua, analisar o repasse de tais informações via parâmetros adicionais @@ -1918,7 +1838,7 @@ private function atribuirDocumentos($parObjProcedimentoDTO, $parObjProtocolo, $o } else { // Busca por um outro processo tramitado anteriormente e que agora está sendo devolvido como anexo de outro // Neste caso, o processo anterior deve ser localizado, atualizado e anexado ao principal - list($dblIdProcedimentoDTOExistente, $strNumeroRegistroAnterior) = $this->consultarProcedimentoExistente(null, $objProcessoAnexado->protocolo); + [$dblIdProcedimentoDTOExistente, $strNumeroRegistroAnterior] = $this->consultarProcedimentoExistente(null, $objProcessoAnexado->protocolo); if(isset($dblIdProcedimentoDTOExistente)){ $this->atualizarProcedimento($dblIdProcedimentoDTOExistente, $parObjMetadadosProcedimento, $objProcessoAnexado, $strNumeroRegistroAnterior); } else { @@ -1935,9 +1855,9 @@ private function atribuirDocumentos($parObjProcedimentoDTO, $parObjProtocolo, $o } - private function atribuirComponentesJaExistentesNoProcesso($objDocumentoDTO, $objComponentesDigitais, $arrDocumentosExistentesPorHash, $arrHashComponenteBaixados){ - $arrObjAnexosDTO = array(); - $arrObjAnexoDTO = array(); + private function atribuirComponentesJaExistentesNoProcesso($objComponentesDigitais, $arrDocumentosExistentesPorHash, $arrHashComponenteBaixados){ + $arrObjAnexosDTO = []; + $arrObjAnexoDTO = []; foreach ($objComponentesDigitais as $objComponenteDigital) { if (is_array($objComponenteDigital)) { $objComponenteDigital = (object) $objComponenteDigital; @@ -1949,7 +1869,6 @@ private function atribuirComponentesJaExistentesNoProcesso($objDocumentoDTO, $ob if(!$bolComponenteDigitalBaixado && $bolComponenteDigitalExistente){ $arrDocumentoExistente = $arrDocumentosExistentesPorHash[$strHashComponenteDigital]; $arr = $this->clonarComponentesJaExistentesNoProcesso( - $objDocumentoDTO, $arrDocumentoExistente["IdDocumento"], $arrDocumentoExistente["ComponenteDigitalDTO"], $arrDocumentoExistente["MultiplosComponentes"] @@ -1962,7 +1881,7 @@ private function atribuirComponentesJaExistentesNoProcesso($objDocumentoDTO, $ob } - private function clonarComponentesJaExistentesNoProcesso($objDocumentoDTO, $dblIdDocumentoReferencia, $objComponenteDigitalDTO, $bolMultiplosComponentes){ + private function clonarComponentesJaExistentesNoProcesso($dblIdDocumentoReferencia, $objComponenteDigitalDTO, $bolMultiplosComponentes){ $objAnexoDTO = new AnexoDTO(); $objAnexoDTO->retNumIdAnexo(); @@ -1979,7 +1898,7 @@ private function clonarComponentesJaExistentesNoProcesso($objDocumentoDTO, $dblI $strCaminhoAnexo = $objAnexoRN->obterLocalizacao($objAnexoDTO); if($bolMultiplosComponentes){ $numOrdemComponente = $objComponenteDigitalDTO->getNumOrdem(); - list($strCaminhoAnexoTemporario, ) = ProcessoEletronicoRN::descompactarComponenteDigital($strCaminhoAnexo, $numOrdemComponente); + [$strCaminhoAnexoTemporario, ] = ProcessoEletronicoRN::descompactarComponenteDigital($strCaminhoAnexo, $numOrdemComponente); $strCaminhoAnexo = $strCaminhoAnexoTemporario; $strSinDuplicado = 'N'; } @@ -2079,23 +1998,19 @@ private function atribuirComponentesDigitais(DocumentoDTO $objDocumentoDTO, $par if(!isset($parArrObjComponentesDigitais)) { throw new InfraException('Componentes digitais do documento não informado.'); } - - // Atribui componentes digitais já presentes no processo e não reenviados pelo Tramita.gov.br - $arrAnexo = array(); $arrAnexo = $this->atribuirComponentesJaExistentesNoProcesso( - $parObjDocumentoDTO, $parArrObjComponentesDigitais, $arrDocumentosExistentesPorHash, $arrHashComponenteBaixados ); - $arrAnexoDTO = array(); + $arrAnexoDTO = []; if($objDocumentoDTO->getObjProtocoloDTO()->isSetArrObjAnexoDTO()) { $arrAnexoDTO = $objDocumentoDTO->getObjProtocoloDTO()->getArrObjAnexoDTO(); } if (!is_array($parArrObjComponentesDigitais)) { - $parArrObjComponentesDigitais = array($parArrObjComponentesDigitais); + $parArrObjComponentesDigitais = [$parArrObjComponentesDigitais]; } $arrObjAnexoDTO = array_merge($arrAnexoDTO, $arrAnexo); @@ -2112,7 +2027,7 @@ private function atribuirProcessosAnexados($parObjProtocolo) $objRelProtocoloProtocoloDTO->setStrStaAssociacao(RelProtocoloProtocoloRN ::$TA_PROCEDIMENTO_ANEXADO); $objRelProtocoloProtocoloDTO->retDblIdRelProtocoloProtocolo(); - $arrOrdemProtocolos = array(); + $arrOrdemProtocolos = []; $arrObjProtocolos = ProcessoEletronicoRN::obterDocumentosProtocolo($parObjProtocolo); foreach ($arrObjProtocolos as $numOrdem => $objProtocolo) { @@ -2165,7 +2080,7 @@ private function atribuirProcessosApensados(ProcedimentoDTO $objProtocoloDTO, $o { if(isset($objProcedimento->processoApensado)) { if(!is_array($objProcedimento->processoApensado)){ - $objProcedimento->processoApensado = array($objProcedimento->processoApensado); + $objProcedimento->processoApensado = [$objProcedimento->processoApensado]; } $objProcedimentoDTOApensado = null; @@ -2451,7 +2366,7 @@ private function enviarProcedimentoUnidade(ProcedimentoDTO $parObjProcedimentoDT } $objPesquisaPendenciaDTO = new PesquisaPendenciaDTO(); - $objPesquisaPendenciaDTO->setDblIdProtocolo(array($objProcedimentoDTO->getDblIdProcedimento())); + $objPesquisaPendenciaDTO->setDblIdProtocolo([$objProcedimentoDTO->getDblIdProcedimento()]); $objPesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); $objPesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); @@ -2486,7 +2401,7 @@ private function enviarProcedimentoUnidade(ProcedimentoDTO $parObjProcedimentoDT $objAtividadeDTO->setNumIdUsuarioOrigem(SessaoSEI::getInstance()->getNumIdUsuario()); $objAtividadeDTO->setNumIdUnidade($numIdUnidade); $objAtividadeDTO->setNumIdUnidadeOrigem(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); - $objEnviarProcessoDTO->setArrAtividades(array($objAtividadeDTO)); + $objEnviarProcessoDTO->setArrAtividades([$objAtividadeDTO]); $objEnviarProcessoDTO->setStrSinManterAberto('S'); $objEnviarProcessoDTO->setStrSinEnviarEmailNotificacao($strEnviaEmailNotificacao); @@ -2509,7 +2424,7 @@ private function enviarProcedimentoUnidade(ProcedimentoDTO $parObjProcedimentoDT $objConcluirProcessoDTO->setDblIdProcedimento($objProcedimentoDTO->getDblIdProcedimento()); $objProcedimentoRN->concluir($objConcluirProcessoDTO); }else{ - $objProcedimentoRN->concluir(array($objProcedimentoDTO)); + $objProcedimentoRN->concluir([$objProcedimentoDTO]); } } @@ -2527,8 +2442,7 @@ private function tramiteRecusaRegistrado($parNumIdProtocolo) $objPenProtocoloDTO->setDblIdProtocolo($parNumIdProtocolo); $objPenProtocoloDTO->setStrSinObteveRecusa('S'); $objPenProtocoloBD = new ProtocoloBD($this->getObjInfraIBanco()); - $result =$objPenProtocoloBD->contar($objPenProtocoloDTO) > 0; - return $result; + return $objPenProtocoloBD->contar($objPenProtocoloDTO) > 0; } @@ -2630,8 +2544,7 @@ private function documentosPendenteRegistro($parNumIdProcedimento, $parNumIdDocu if($bolDocumentoPendente && !is_null($parStrHashComponenteDigital)) { foreach ($recordset as $item) { if(!is_null($item['hash_conteudo']) && $item['hash_conteudo'] === $parStrHashComponenteDigital){ - $bolDocumentoPendente = true; - return $bolDocumentoPendente; + return true; } } @@ -2702,7 +2615,7 @@ private function receberComponenenteDigitalParticionado($componentePendente, $nr { $receberComponenteDigitalRN = new ReceberComponenteDigitalRN(); - $qtdPartes = ceil(($nrTamanhoBytesArquivo / pow(1024, 2)) / $nrTamanhoMegasMaximo); + $qtdPartes = ceil(($nrTamanhoBytesArquivo / 1024 ** 2) / $nrTamanhoMegasMaximo); $inicio = 0; $fim = $nrTamanhoBytesMaximo; @@ -2747,11 +2660,11 @@ private function receberComponenenteDigitalParticionado($componentePendente, $nr private function indexarComponenteDigitaisDoProtocolo($parObjProtocolo) { - $resultado = array(); + $resultado = []; $arrObjDocumentos = ProcessoEletronicoRN::obterDocumentosProtocolo($parObjProtocolo); foreach ($arrObjDocumentos as $arrDocumento) { if(isset($arrDocumento->componentesDigitais) && !is_array($arrDocumento->componentesDigitais)){ - $arrDocumento->componentesDigitais = array($arrDocumento->componentesDigitais); + $arrDocumento->componentesDigitais = [$arrDocumento->componentesDigitais]; } foreach ($arrDocumento->componentesDigitais as $objComponente) { @@ -2843,12 +2756,12 @@ private function criarDiretorioAnexo($parObjAnexoDTO) private function adicionarObservacoesSobreNumeroDocumento($parObjDocumento) { - $arrObjObservacoes = array(); + $arrObjObservacoes = []; if (is_array($parObjDocumento->produtor)) { $parObjDocumento->produtor = (object) $parObjDocumento->produtor; } - $strNumeroDocumentoOrigem = isset($parObjDocumento->protocolo) ? $parObjDocumento->protocolo : $parObjDocumento->produtor->numeroDeIdentificacao; + $strNumeroDocumentoOrigem = $parObjDocumento->protocolo ?? $parObjDocumento->produtor->numeroDeIdentificacao; if(!empty($strNumeroDocumentoOrigem)){ $objObservacaoDTO = new ObservacaoDTO(); $objObservacaoDTO->setStrDescricao("Número do Documento na Origem: " . $strNumeroDocumentoOrigem); @@ -2859,7 +2772,7 @@ private function adicionarObservacoesSobreNumeroDocumento($parObjDocumento) } - private function atribuirObservacoesSobreDocumentoReferenciado($parObjProcedimentoDTO, $parObjProtocolo) + private function atribuirObservacoesSobreDocumentoReferenciado($parObjProcedimentoDTO) { $objProcessoEletronicoPesquisaDTO = new ProcessoEletronicoDTO(); $objProcessoEletronicoPesquisaDTO->setDblIdProcedimento($parObjProcedimentoDTO->getDblIdProcedimento()); @@ -2871,7 +2784,7 @@ private function atribuirObservacoesSobreDocumentoReferenciado($parObjProcedimen $arrObjCompIndexadoPorOrdemDTO = InfraArray::indexarArrInfraDTO($arrObjComponentesDigitaisDTO, 'OrdemDocumento'); $arrObjCompIndexadoPorIdDocumentoDTO = InfraArray::indexarArrInfraDTO($arrObjComponentesDigitaisDTO, 'IdDocumento'); - $arrObjDocumentoDTOIndexado = array(); + $arrObjDocumentoDTOIndexado = []; foreach ($parObjProcedimentoDTO->getArrObjDocumentoDTO() as $objDocumentoDTO) { $dblIdDocumento = $objDocumentoDTO->getDblIdDocumento(); $arrObjDocumentoDTOIndexado[$dblIdDocumento] = $objDocumentoDTO; @@ -2913,7 +2826,7 @@ private function atribuirObservacoesSobreDocumentoReferenciado($parObjProcedimen $objProtocoloDTO = $this->objProtocoloRN->consultarRN0186($objProtocoloDTOPesquisa); $objObservacaoDTO = new ObservacaoDTO(); $objObservacaoDTO->setStrDescricao($strTextoInformativo); - $objProtocoloDTO->setArrObjObservacaoDTO(array($objObservacaoDTO)); + $objProtocoloDTO->setArrObjObservacaoDTO([$objObservacaoDTO]); $this->objProtocoloRN->alterarRN0203($objProtocoloDTO); } } diff --git a/src/rn/ReceberReciboTramiteRN.php b/src/rn/ReceberReciboTramiteRN.php index e7cff0d7f..7ac251ed6 100755 --- a/src/rn/ReceberReciboTramiteRN.php +++ b/src/rn/ReceberReciboTramiteRN.php @@ -6,7 +6,6 @@ class ReceberReciboTramiteRN extends InfraRN private $objProcessoEletronicoRN; private $objProcedimentoAndamentoRN; private $objPenDebug; - private $objPenParametroRN; public function __construct() { @@ -14,7 +13,6 @@ public function __construct() $this->objProcessoEletronicoRN = new ProcessoEletronicoRN(); $this->objProcedimentoAndamentoRN = new ProcedimentoAndamentoRN(); $this->objPenDebug = DebugPen::getInstance("PROCESSAMENTO"); - $this->objPenParametroRN = new PenParametroRN(); } protected function inicializarObjInfraIBanco() @@ -40,11 +38,7 @@ public function receberReciboDeTramite($parNumIdTramite) // Inicialização do recebimento do processo, abrindo nova transação e controle de concorrência, // evitando processamento simultâneo de cadastramento do mesmo processo - $arrChavesSincronizacao = array( - "NumeroRegistro" => $objReciboTramite->recibo->NRE, - "IdTramite" => $objReciboTramite->recibo->IDT, - "IdTarefa" => ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO) - ); + $arrChavesSincronizacao = ["NumeroRegistro" => $objReciboTramite->recibo->NRE, "IdTramite" => $objReciboTramite->recibo->IDT, "IdTarefa" => ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO)]; if ($this->objProcedimentoAndamentoRN->sinalizarInicioRecebimento($arrChavesSincronizacao)) { $this->receberReciboDeTramiteInterno($objReciboTramite); @@ -143,12 +137,7 @@ protected function receberReciboDeTramiteInternoControlado($objReciboTramite) $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); $objPenBlocoProcessoDTO->setDblIdProtocolo($objProtocoloDTO->getDblIdProtocolo()); $objPenBlocoProcessoDTO->setNumIdAndamento( - array( - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO - ), + [ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO], InfraDTO::$OPER_NOT_IN ); $objPenBlocoProcessoDTO->setOrdNumIdBlocoProcesso(InfraDTO::$TIPO_ORDENACAO_DESC); @@ -158,7 +147,7 @@ protected function receberReciboDeTramiteInternoControlado($objReciboTramite) $arrPenBlocoProcesso = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO); if ($arrPenBlocoProcesso != null) { - $blocos = array(); + $blocos = []; foreach ($arrPenBlocoProcesso as $PenBlocoProcesso) { $PenBlocoProcesso->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE); $objPenBlocoProcessoRN->alterar($PenBlocoProcesso); @@ -200,7 +189,7 @@ private function registrarRecebimentoRecibo($numIdProcedimento, $strProtocoloFor $this->objPenDebug->gravar("Processo $strProtocoloFormatado não está aberto na unidade."); } - $arrObjAtributoAndamentoDTO = array(); + $arrObjAtributoAndamentoDTO = []; $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('PROTOCOLO_FORMATADO'); @@ -229,7 +218,7 @@ private function registrarRecebimentoRecibo($numIdProcedimento, $strProtocoloFor $arrObjNivel = $objEstrutura->hierarquia; $nome = ""; - $siglasUnidades = array(); + $siglasUnidades = []; $siglasUnidades[] = $objEstrutura->sigla; foreach ($arrObjNivel as $key => $objNivel) { diff --git a/src/rn/ReciboTramiteRN.php b/src/rn/ReciboTramiteRN.php index cf23ef560..50b0c906b 100755 --- a/src/rn/ReciboTramiteRN.php +++ b/src/rn/ReciboTramiteRN.php @@ -25,7 +25,7 @@ protected function listarPorAtividadeConectado($parArrParametros) $numIdTramite = $parArrParametros['id_tramite']; $numIdTarefa = $parArrParametros['id_tarefa']; - $arrObjDTO = array(); + $arrObjDTO = []; switch ($numIdTarefa) { case ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO): $objReciboTramiteDTO = new ReciboTramiteDTO(); @@ -69,9 +69,8 @@ protected function downloadReciboEnvioConectado($numIdTramite) { $objReciboTramiteDTO->retStrCadeiaCertificado(); $objReciboTramiteBD = new ReciboTramiteRecebidoBD($this->getObjInfraIBanco()); - $arrObjDTO = $objReciboTramiteBD->listar($objReciboTramiteDTO); - return $arrObjDTO; + return $objReciboTramiteBD->listar($objReciboTramiteDTO); } } diff --git a/src/rn/TipoDocMapRN.php b/src/rn/TipoDocMapRN.php index b0a2c9d7f..1951fcfa3 100755 --- a/src/rn/TipoDocMapRN.php +++ b/src/rn/TipoDocMapRN.php @@ -22,24 +22,19 @@ protected function inicializarObjInfraIBanco() { * conjunto com o primeiro paramêtro * @return array */ - protected function listarParesEspecieConectado($arrNumCodigoEspecie = array()) - { - try { - $objInfraIBanco = $this->inicializarObjInfraIBanco(); - $objGenericoBD = new GenericoBD($objInfraIBanco); - - $objEspecieDocumentalDTO = new EspecieDocumentalDTO(); - $objEspecieDocumentalDTO->retDblIdEspecie(); - $objEspecieDocumentalDTO->retStrNomeEspecie(); - $objEspecieDocumentalDTO->setOrdStrNomeEspecie(InfraDTO::$TIPO_ORDENACAO_ASC); - + protected function listarParesEspecieConectado($arrNumCodigoEspecie = []) + { + $objInfraIBanco = $this->inicializarObjInfraIBanco(); + $objGenericoBD = new GenericoBD($objInfraIBanco); + $objEspecieDocumentalDTO = new EspecieDocumentalDTO(); + $objEspecieDocumentalDTO->retDblIdEspecie(); + $objEspecieDocumentalDTO->retStrNomeEspecie(); + $objEspecieDocumentalDTO->setOrdStrNomeEspecie(InfraDTO::$TIPO_ORDENACAO_ASC); if (!empty($arrNumCodigoEspecie)) { $objEspecieDocumentalDTO->setDblIdEspecie($arrNumCodigoEspecie, InfraDTO::$OPER_NOT_IN); } - - $arrEspecieDocumentalDTO = $objGenericoBD->listar($objEspecieDocumentalDTO); - $arrRetorno = array(); - + $arrEspecieDocumentalDTO = $objGenericoBD->listar($objEspecieDocumentalDTO); + $arrRetorno = []; if (!empty($arrEspecieDocumentalDTO)) { foreach ($arrEspecieDocumentalDTO as $objEspecieDocumentalDTO) { @@ -48,10 +43,7 @@ protected function listarParesEspecieConectado($arrNumCodigoEspecie = array()) $arrRetorno[$strChave] = $strValor; } } - return $arrRetorno; - } catch (InfraException $e) { - throw $e; - } + return $arrRetorno; } /** @@ -63,28 +55,22 @@ protected function listarParesEspecieConectado($arrNumCodigoEspecie = array()) * Só funciona em conjunto com o primeiro paramêtro * @return array */ - public function listarParesSerie($arrNumIdSerie = array(), $bolListarTodos = false) - { - try { - $arrRetorno = array(); - $objInfraIBanco = $this->inicializarObjInfraIBanco(); - - $objSerieDTO = new SerieDTO(); - $objSerieDTO->retNumIdSerie(); - $objSerieDTO->retStrNome(); - + public function listarParesSerie($arrNumIdSerie = [], $bolListarTodos = false) + { + $arrRetorno = []; + $objInfraIBanco = $this->inicializarObjInfraIBanco(); + $objSerieDTO = new SerieDTO(); + $objSerieDTO->retNumIdSerie(); + $objSerieDTO->retStrNome(); if($bolListarTodos === false) { $objSerieDTO->setStrStaAplicabilidade('I', InfraDTO::$OPER_DIFERENTE); } - $objSerieDTO->setOrdStrNome(InfraDTO::$TIPO_ORDENACAO_ASC); - + $objSerieDTO->setOrdStrNome(InfraDTO::$TIPO_ORDENACAO_ASC); if(!empty($arrNumIdSerie)) { $objSerieDTO->setNumIdSerie($arrNumIdSerie, InfraDTO::$OPER_NOT_IN); } - - $objSerieRN = new SerieRN($objInfraIBanco); - $arrObjSerieDTO = $objSerieRN->listarRN0646($objSerieDTO); - + $objSerieRN = new SerieRN($objInfraIBanco); + $arrObjSerieDTO = $objSerieRN->listarRN0646($objSerieDTO); if(!empty($arrObjSerieDTO)) { foreach($arrObjSerieDTO as $objSerieDTO) { $strChave = strval($objSerieDTO->getNumIdSerie()); @@ -92,11 +78,7 @@ public function listarParesSerie($arrNumIdSerie = array(), $bolListarTodos = fal $arrRetorno[$strChave] = $strValor; } } - return $arrRetorno; - } - catch (InfraException $e) { - throw $e; - } + return $arrRetorno; } } diff --git a/src/rn/TramiteEmBlocoRN.php b/src/rn/TramiteEmBlocoRN.php index 55a98ac7f..f714a4326 100644 --- a/src/rn/TramiteEmBlocoRN.php +++ b/src/rn/TramiteEmBlocoRN.php @@ -91,7 +91,7 @@ public function listarValoresTipo() { try { - $arrObjTipoDTO = array(); + $arrObjTipoDTO = []; $objTipoDTO = new TipoDTO(); $objTipoDTO->setStrStaTipo(self::$TB_INTERNO); @@ -109,7 +109,7 @@ public function listarValoresEstado() { try { $arrEstadoBlocoDescricao = $this->retornarEstadoDescricao(); - $objArrEstadoBlocoDTO = array(); + $objArrEstadoBlocoDTO = []; foreach ($arrEstadoBlocoDescricao as $TE_Estado => $estadoDescricao) { $objEstadoBlocoDTO = new EstadoBlocoDTO(); $objEstadoBlocoDTO->setStrStaEstado($TE_Estado); @@ -338,7 +338,6 @@ protected function alterarControlado(TramiteEmBlocoDTO $objTramiteEmBlocoDTO) /** * Método utilizado para exclusão de dados. - * @param array $arrayObjDTO * @return array * @throws InfraException */ @@ -348,7 +347,7 @@ protected function excluirControlado(array $arrayObjDTO) //Valida Permissao SessaoSEI::getInstance()->validarAuditarPermissao('md_pen_tramita_em_bloco_excluir', __METHOD__, $arrayObjDTO); - $arrayExcluido = array(); + $arrayExcluido = []; foreach ($arrayObjDTO as $objDTO) { $objBD = new TramiteEmBlocoBD(BancoSEI::getInstance()); $arrayExcluido[] = $objBD->excluir($objDTO); diff --git a/src/rn/VerificadorInstalacaoRN.php b/src/rn/VerificadorInstalacaoRN.php index 50b1a6d2f..e3cad598d 100755 --- a/src/rn/VerificadorInstalacaoRN.php +++ b/src/rn/VerificadorInstalacaoRN.php @@ -29,9 +29,7 @@ */ class VerificadorInstalacaoRN extends InfraRN { - const COMPATIBILIDADE_MODULO_SEI = array( - '5.0.0' - ); + const COMPATIBILIDADE_MODULO_SEI = ['5.0.0']; public function __construct() { parent::__construct(); @@ -126,7 +124,7 @@ public function verificarArquivoConfiguracao() // Valida se todas as chaves de configuração obrigatórias foram atribuídas $arrStrChavesConfiguracao = $arrStrChavesConfiguracao["PEN"]; - $arrStrParametrosExperados = array("WebService", "LocalizacaoCertificado", "SenhaCertificado"); + $arrStrParametrosExperados = ["WebService", "LocalizacaoCertificado", "SenhaCertificado"]; foreach ($arrStrParametrosExperados as $strChaveConfiguracao) { if(!array_key_exists($strChaveConfiguracao, $arrStrChavesConfiguracao)){ $strMensagem = "Parâmetro 'PEN > $strChaveConfiguracao' não pode ser localizado no arquivo de configuração do módulo de integração do SEI com o Tramita GOV.BR"; diff --git a/src/scripts/MonitoramentoEnvioTarefasPEN.php b/src/scripts/MonitoramentoEnvioTarefasPEN.php index 04efe10ad..510b3c7c1 100644 --- a/src/scripts/MonitoramentoEnvioTarefasPEN.php +++ b/src/scripts/MonitoramentoEnvioTarefasPEN.php @@ -16,7 +16,7 @@ try { SessaoSEI::getInstance(false); - $arrParametros = getopt("fd", array("monitorar", "segundo-plano", "debug", "wsdl-cache:")); + $arrParametros = getopt("fd", ["monitorar", "segundo-plano", "debug", "wsdl-cache:"]); $bolMonitorar = array_key_exists("f", $arrParametros) || array_key_exists("monitorar", $arrParametros); $parBolSegundoPlano = array_key_exists("d", $arrParametros) || array_key_exists("segundo-plano", $arrParametros); $parBoldebug = array_key_exists("debug", $arrParametros); diff --git a/src/scripts/MonitoramentoRecebimentoTarefasPEN.php b/src/scripts/MonitoramentoRecebimentoTarefasPEN.php index c3119805c..43fc8c42e 100755 --- a/src/scripts/MonitoramentoRecebimentoTarefasPEN.php +++ b/src/scripts/MonitoramentoRecebimentoTarefasPEN.php @@ -16,7 +16,7 @@ try { SessaoSEI::getInstance(false); - $arrParametros = getopt("fd", array("monitorar", "segundo-plano", "debug", "wsdl-cache:")); + $arrParametros = getopt("fd", ["monitorar", "segundo-plano", "debug", "wsdl-cache:"]); $bolMonitorar = array_key_exists("f", $arrParametros) || array_key_exists("monitorar", $arrParametros); $parBolSegundoPlano = array_key_exists("d", $arrParametros) || array_key_exists("segundo-plano", $arrParametros); $parBoldebug = array_key_exists("debug", $arrParametros); diff --git a/src/scripts/ProcessamentoTarefasPEN.php b/src/scripts/ProcessamentoTarefasPEN.php index 819215186..c66b1aec6 100755 --- a/src/scripts/ProcessamentoTarefasPEN.php +++ b/src/scripts/ProcessamentoTarefasPEN.php @@ -5,7 +5,7 @@ class ProcessamentoTarefasPEN { - private static $instance = null; + private static $instance; public static function getInstance() { if (self::$instance == null) { diff --git a/src/scripts/sei_atualizar_versao_modulo_pen.php b/src/scripts/sei_atualizar_versao_modulo_pen.php index f19135969..bcc053b5e 100755 --- a/src/scripts/sei_atualizar_versao_modulo_pen.php +++ b/src/scripts/sei_atualizar_versao_modulo_pen.php @@ -50,7 +50,7 @@ public function atualizarVersaoCompatibilidade($strVersaoAtual) class PenAtualizarSeiRN extends PenAtualizadorRN { - private $objInfraMetaBD = null; + private $objInfraMetaBD; public function __construct() { @@ -350,7 +350,7 @@ protected function deletaParametroInfra($strNome) */ protected function removerIndicesTabela($parObjInfraMetaBD, $parFiltroTabelas) { - $arrTabelasExclusao = is_array($parFiltroTabelas) ? $parFiltroTabelas : array($parFiltroTabelas); + $arrTabelasExclusao = is_array($parFiltroTabelas) ? $parFiltroTabelas : [$parFiltroTabelas]; foreach ($arrTabelasExclusao as $strTabelaExclusao) { $arrStrIndices = $parObjInfraMetaBD->obterIndices(null, $strTabelaExclusao); foreach ($arrStrIndices as $strTabela => $arrStrIndices) { @@ -372,7 +372,7 @@ protected function removerIndicesTabela($parObjInfraMetaBD, $parFiltroTabelas) private function atualizarNumeroVersao($parStrNumeroVersao) { $objInfraParametroDTO = new InfraParametroDTO(); - $objInfraParametroDTO->setStrNome(array(PENIntegracao::PARAMETRO_VERSAO_MODULO, PENIntegracao::PARAMETRO_VERSAO_MODULO_ANTIGO), InfraDTO::$OPER_IN); + $objInfraParametroDTO->setStrNome([PENIntegracao::PARAMETRO_VERSAO_MODULO, PENIntegracao::PARAMETRO_VERSAO_MODULO_ANTIGO], InfraDTO::$OPER_IN); $objInfraParametroDTO->retTodos(); $objInfraParametroBD = new InfraParametroBD(BancoSEI::getInstance()); $arrObjInfraParametroDTO = $objInfraParametroBD->listar($objInfraParametroDTO); @@ -451,260 +451,50 @@ protected function instalarV100() $objInfraBanco = BancoSEI::getInstance(); $objMetaBD = $this->objMeta; - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_processo_eletronico', - 'cols' => array( - 'numero_registro' => array($objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO), - 'id_procedimento' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO) - ), - 'pk' => array('cols' => array('numero_registro')), - 'uk' => array('numero_registro', 'id_procedimento'), - 'fks' => array( - 'procedimento' => array( - 'nome' => 'fk_md_pen_proc_eletr_procedim', - 'cols' => array('id_procedimento', 'id_procedimento') - ), - ) - )); - - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_tramite', - 'cols' => array( - 'numero_registro' => array($objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO), - 'id_tramite' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'ticket_envio_componentes' => array($objMetaBD->tipoTextoGrande(), PenMetaBD::SNULLO), - 'dth_registro' => array($objMetaBD->tipoDataHora(), PenMetaBD::SNULLO), - 'id_andamento' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), - 'id_usuario' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), - 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO) - ), - 'pk' => array('cols' => array('id_tramite')), - 'uk' => array('numero_registro', 'id_tramite'), - 'fks' => array( - 'md_pen_processo_eletronico' => array( - 'nome' => 'fk_md_pen_tramite_proc_eletr', - 'cols' => array('numero_registro', 'numero_registro') - ), - 'usuario' => array('id_usuario', 'id_usuario'), - 'unidade' => array('id_unidade', 'id_unidade'), - ) - )); - - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_especie_documental', - 'cols' => array( - 'id_especie' => array($objMetaBD->tipoNumero(16), PenMetaBD::NNULLO), - 'nome_especie' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO), + $objMetaBD->criarTabela(['tabela' => 'md_pen_processo_eletronico', 'cols' => ['numero_registro' => [$objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO], 'id_procedimento' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO]], 'pk' => ['cols' => ['numero_registro']], 'uk' => ['numero_registro', 'id_procedimento'], 'fks' => ['procedimento' => ['nome' => 'fk_md_pen_proc_eletr_procedim', 'cols' => ['id_procedimento', 'id_procedimento']]]]); + + + $objMetaBD->criarTabela(['tabela' => 'md_pen_tramite', 'cols' => ['numero_registro' => [$objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO], 'id_tramite' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'ticket_envio_componentes' => [$objMetaBD->tipoTextoGrande(), PenMetaBD::SNULLO], 'dth_registro' => [$objMetaBD->tipoDataHora(), PenMetaBD::SNULLO], 'id_andamento' => [$objMetaBD->tipoNumero(), PenMetaBD::SNULLO], 'id_usuario' => [$objMetaBD->tipoNumero(), PenMetaBD::SNULLO], 'id_unidade' => [$objMetaBD->tipoNumero(), PenMetaBD::SNULLO]], 'pk' => ['cols' => ['id_tramite']], 'uk' => ['numero_registro', 'id_tramite'], 'fks' => ['md_pen_processo_eletronico' => ['nome' => 'fk_md_pen_tramite_proc_eletr', 'cols' => ['numero_registro', 'numero_registro']], 'usuario' => ['id_usuario', 'id_usuario'], 'unidade' => ['id_unidade', 'id_unidade']]]); + + + $objMetaBD->criarTabela(['tabela' => 'md_pen_especie_documental', 'cols' => [ + 'id_especie' => [$objMetaBD->tipoNumero(16), PenMetaBD::NNULLO], + 'nome_especie' => [$objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO], // Campo não mais necessário após a versão 2.0.0 do módulo - 'descricao' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::SNULLO) - ), - 'pk' => array('cols' => array('id_especie')), - )); - - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_tramite_pendente', - 'cols' => array( - 'id' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'numero_tramite' => array($objMetaBD->tipoTextoVariavel(255)), - 'id_atividade_expedicao' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO) - ), - 'pk' => array('cols' => array('id')), - )); - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_tramite_recibo_envio', - 'cols' => array( - 'numero_registro' => array($objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO), - 'id_tramite' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'dth_recebimento' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO), - 'hash_assinatura' => array($objMetaBD->tipoTextoVariavel(345), PenMetaBD::NNULLO) - ), - 'pk' => array('cols' => array('numero_registro', 'id_tramite')), - )); - - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_procedimento_andamento', - 'cols' => array( - 'id_andamento' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'id_procedimento' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'id_tramite' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'situacao' => array($objMetaBD->tipoTextoFixo(1), 'N'), - 'data' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO), - 'mensagem' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO), - 'hash' => array($objMetaBD->tipoTextoFixo(32), PenMetaBD::NNULLO), - 'id_tarefa' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO) - ), - 'pk' => array('nome' => 'pk_md_pen_procedim_andamen', 'cols' => array('id_andamento')), - )); - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_protocolo', - 'cols' => array( - 'id_protocolo' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'sin_obteve_recusa' => array($objMetaBD->tipoTextoFixo(1), 'N') - ), - 'pk' => array('cols' => array('id_protocolo')), - 'fks' => array( - 'protocolo' => array('id_protocolo', 'id_protocolo') - ) - )); - - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_recibo_tramite', - 'cols' => array( - 'numero_registro' => array($objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO), - 'id_tramite' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'dth_recebimento' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO), - 'hash_assinatura' => array($objMetaBD->tipoTextoVariavel(345), PenMetaBD::NNULLO), - 'cadeia_certificado' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO) - ), - 'pk' => array('cols' => array('numero_registro', 'id_tramite')), - 'fks' => array( - 'md_pen_tramite' => array( - 'nome' => 'fk_md_pen_rec_tramite_tramite', - 'cols' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite')) - ) - ) - )); - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_recibo_tramite_enviado', - 'cols' => array( - 'numero_registro' => array($objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO), - 'id_tramite' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'dth_recebimento' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO), - 'hash_assinatura' => array($objMetaBD->tipoTextoVariavel(345), PenMetaBD::NNULLO), - 'cadeia_certificado ' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO) - ), - 'pk' => array('nome' => 'pk_md_pen_recibo_tram_envia', 'cols' => array('numero_registro', 'id_tramite')), - 'fks' => array( - 'md_pen_tramite' => array( - 'nome' => 'fk_md_pen_rec_tram_env_tram', - 'cols' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite')) - ) - ) - )); - - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_recibo_tramite_recebido', - 'cols' => array( - 'numero_registro' => array($objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO), - 'id_tramite' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'dth_recebimento' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO), - 'hash_assinatura' => array($objMetaBD->tipoTextoVariavel(345), PenMetaBD::NNULLO) - ), - 'pk' => array('nome' => 'pk_md_pen_recibo_tramite_receb', 'cols' => array('numero_registro', 'id_tramite', 'hash_assinatura')), - 'fks' => array( - 'md_pen_tramite' => array( - 'nome' => 'fk_md_pen_recibo_receb_tram', - 'cols' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite')) - ) - ) - )); - - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_rel_processo_apensado', - 'cols' => array( - 'numero_registro' => array($objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO), - 'id_procedimento_apensado' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'protocolo' => array($objMetaBD->tipoTextoVariavel(50), PenMetaBD::NNULLO) - ), - 'pk' => array('nome' => 'pk_md_pen_rel_processo_apensad', 'cols' => array('numero_registro', 'id_procedimento_apensado')), - 'fks' => array( - 'md_pen_processo_eletronico' => array( - 'nome' => 'fk_md_pen_proc_eletr_apensado', - 'cols' => array('numero_registro', 'numero_registro') - ) - ) - )); - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_rel_serie_especie', - 'cols' => array( - 'codigo_especie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_serie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'sin_padrao' => array($objMetaBD->tipoTextoFixo(1), 'N') - ), - 'pk' => array('cols' => array('id_serie')), - 'uk' => array('codigo_especie', 'id_serie'), - 'fks' => array( - 'serie' => array('nome' => ' fk_md_pen_rel_serie_especie', 'cols' => array('id_serie', 'id_serie')) - ) - )); - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_rel_tarefa_operacao', - 'cols' => array( - 'id_tarefa' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'codigo_operacao' => array($objMetaBD->tipoTextoFixo(2), PenMetaBD::NNULLO) - ), - 'pk' => array('cols' => array('id_tarefa', 'codigo_operacao')), - 'fks' => array( - 'tarefa' => array('nome' => 'fk_md_pen_rel_operacao_tarefa', 'cols' => array('id_tarefa', 'id_tarefa')) - ) - )); - - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_rel_tipo_doc_map_rec', - 'cols' => array( - 'codigo_especie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_serie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'sin_padrao' => array($objMetaBD->tipoTextoFixo(2), PenMetaBD::NNULLO) - ), - 'pk' => array('cols' => array('codigo_especie', 'id_serie')), - 'fks' => array( - 'serie' => array('nome' => 'fk_md_pen_rel_tipo_doc_serie', 'cols' => array('id_serie', 'id_serie')) - ) - )); - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_componente_digital', - 'cols' => array( - 'numero_registro' => array($objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO), - 'id_procedimento' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'id_documento' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'id_tramite' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'id_anexo' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), - 'protocolo' => array($objMetaBD->tipoTextoVariavel(50), PenMetaBD::NNULLO), - 'nome' => array($objMetaBD->tipoTextoVariavel(100), PenMetaBD::NNULLO), - 'hash_conteudo' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO), - 'algoritmo_hash' => array($objMetaBD->tipoTextoVariavel(20), PenMetaBD::NNULLO), - 'tipo_conteudo' => array($objMetaBD->tipoTextoFixo(3), PenMetaBD::NNULLO), - 'mime_type' => array($objMetaBD->tipoTextoVariavel(100), PenMetaBD::NNULLO), - 'dados_complementares' => array($objMetaBD->tipoTextoVariavel(1000), PenMetaBD::SNULLO), - 'tamanho' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'ordem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'sin_enviar' => array($objMetaBD->tipoTextoFixo(1), 'N') - ), - 'pk' => array('cols' => array('numero_registro', 'id_procedimento', 'id_documento', 'id_tramite')), - 'fks' => array( - 'anexo' => array('nome' => 'fk_md_pen_comp_dig_anexo', 'cols' => array('id_anexo', 'id_anexo')), - 'documento' => array('nome' => 'fk_md_pen_comp_dig_documento', 'cols' => array('id_documento', 'id_documento')), - 'procedimento' => array('nome' => 'fk_md_pen_comp_dig_procediment', 'cols' => array('id_procedimento', 'id_procedimento')), - 'md_pen_processo_eletronico' => array('nome' => 'fk_md_pen_comp_dig_proc_eletr', 'cols' => array('numero_registro', 'numero_registro')), - 'md_pen_tramite' => array('nome' => 'fk_md_pen_comp_dig_tramite', 'cols' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite'))) - ) - )); - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_unidade', - 'cols' => array( - 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_unidade_rh' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO) - ), - 'pk' => array('cols' => array('id_unidade')), - 'fks' => array( - 'unidade' => array('id_unidade', 'id_unidade') - ) - )); + 'descricao' => [$objMetaBD->tipoTextoVariavel(255), PenMetaBD::SNULLO], + ], 'pk' => ['cols' => ['id_especie']]]); + + + $objMetaBD->criarTabela(['tabela' => 'md_pen_tramite_pendente', 'cols' => ['id' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'numero_tramite' => [$objMetaBD->tipoTextoVariavel(255)], 'id_atividade_expedicao' => [$objMetaBD->tipoNumero(), PenMetaBD::SNULLO]], 'pk' => ['cols' => ['id']]]); + + $objMetaBD->criarTabela(['tabela' => 'md_pen_tramite_recibo_envio', 'cols' => ['numero_registro' => [$objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO], 'id_tramite' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'dth_recebimento' => [$objMetaBD->tipoDataHora(), PenMetaBD::NNULLO], 'hash_assinatura' => [$objMetaBD->tipoTextoVariavel(345), PenMetaBD::NNULLO]], 'pk' => ['cols' => ['numero_registro', 'id_tramite']]]); + + + $objMetaBD->criarTabela(['tabela' => 'md_pen_procedimento_andamento', 'cols' => ['id_andamento' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'id_procedimento' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'id_tramite' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'situacao' => [$objMetaBD->tipoTextoFixo(1), 'N'], 'data' => [$objMetaBD->tipoDataHora(), PenMetaBD::NNULLO], 'mensagem' => [$objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO], 'hash' => [$objMetaBD->tipoTextoFixo(32), PenMetaBD::NNULLO], 'id_tarefa' => [$objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO]], 'pk' => ['nome' => 'pk_md_pen_procedim_andamen', 'cols' => ['id_andamento']]]); + + $objMetaBD->criarTabela(['tabela' => 'md_pen_protocolo', 'cols' => ['id_protocolo' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'sin_obteve_recusa' => [$objMetaBD->tipoTextoFixo(1), 'N']], 'pk' => ['cols' => ['id_protocolo']], 'fks' => ['protocolo' => ['id_protocolo', 'id_protocolo']]]); + + + $objMetaBD->criarTabela(['tabela' => 'md_pen_recibo_tramite', 'cols' => ['numero_registro' => [$objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO], 'id_tramite' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'dth_recebimento' => [$objMetaBD->tipoDataHora(), PenMetaBD::NNULLO], 'hash_assinatura' => [$objMetaBD->tipoTextoVariavel(345), PenMetaBD::NNULLO], 'cadeia_certificado' => [$objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO]], 'pk' => ['cols' => ['numero_registro', 'id_tramite']], 'fks' => ['md_pen_tramite' => ['nome' => 'fk_md_pen_rec_tramite_tramite', 'cols' => [['numero_registro', 'id_tramite'], ['numero_registro', 'id_tramite']]]]]); + + $objMetaBD->criarTabela(['tabela' => 'md_pen_recibo_tramite_enviado', 'cols' => ['numero_registro' => [$objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO], 'id_tramite' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'dth_recebimento' => [$objMetaBD->tipoDataHora(), PenMetaBD::NNULLO], 'hash_assinatura' => [$objMetaBD->tipoTextoVariavel(345), PenMetaBD::NNULLO], 'cadeia_certificado ' => [$objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO]], 'pk' => ['nome' => 'pk_md_pen_recibo_tram_envia', 'cols' => ['numero_registro', 'id_tramite']], 'fks' => ['md_pen_tramite' => ['nome' => 'fk_md_pen_rec_tram_env_tram', 'cols' => [['numero_registro', 'id_tramite'], ['numero_registro', 'id_tramite']]]]]); + + + $objMetaBD->criarTabela(['tabela' => 'md_pen_recibo_tramite_recebido', 'cols' => ['numero_registro' => [$objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO], 'id_tramite' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'dth_recebimento' => [$objMetaBD->tipoDataHora(), PenMetaBD::NNULLO], 'hash_assinatura' => [$objMetaBD->tipoTextoVariavel(345), PenMetaBD::NNULLO]], 'pk' => ['nome' => 'pk_md_pen_recibo_tramite_receb', 'cols' => ['numero_registro', 'id_tramite', 'hash_assinatura']], 'fks' => ['md_pen_tramite' => ['nome' => 'fk_md_pen_recibo_receb_tram', 'cols' => [['numero_registro', 'id_tramite'], ['numero_registro', 'id_tramite']]]]]); + + + $objMetaBD->criarTabela(['tabela' => 'md_pen_rel_processo_apensado', 'cols' => ['numero_registro' => [$objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO], 'id_procedimento_apensado' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'protocolo' => [$objMetaBD->tipoTextoVariavel(50), PenMetaBD::NNULLO]], 'pk' => ['nome' => 'pk_md_pen_rel_processo_apensad', 'cols' => ['numero_registro', 'id_procedimento_apensado']], 'fks' => ['md_pen_processo_eletronico' => ['nome' => 'fk_md_pen_proc_eletr_apensado', 'cols' => ['numero_registro', 'numero_registro']]]]); + + $objMetaBD->criarTabela(['tabela' => 'md_pen_rel_serie_especie', 'cols' => ['codigo_especie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_serie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'sin_padrao' => [$objMetaBD->tipoTextoFixo(1), 'N']], 'pk' => ['cols' => ['id_serie']], 'uk' => ['codigo_especie', 'id_serie'], 'fks' => ['serie' => ['nome' => ' fk_md_pen_rel_serie_especie', 'cols' => ['id_serie', 'id_serie']]]]); + + $objMetaBD->criarTabela(['tabela' => 'md_pen_rel_tarefa_operacao', 'cols' => ['id_tarefa' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'codigo_operacao' => [$objMetaBD->tipoTextoFixo(2), PenMetaBD::NNULLO]], 'pk' => ['cols' => ['id_tarefa', 'codigo_operacao']], 'fks' => ['tarefa' => ['nome' => 'fk_md_pen_rel_operacao_tarefa', 'cols' => ['id_tarefa', 'id_tarefa']]]]); + + + $objMetaBD->criarTabela(['tabela' => 'md_pen_rel_tipo_doc_map_rec', 'cols' => ['codigo_especie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_serie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'sin_padrao' => [$objMetaBD->tipoTextoFixo(2), PenMetaBD::NNULLO]], 'pk' => ['cols' => ['codigo_especie', 'id_serie']], 'fks' => ['serie' => ['nome' => 'fk_md_pen_rel_tipo_doc_serie', 'cols' => ['id_serie', 'id_serie']]]]); + + $objMetaBD->criarTabela(['tabela' => 'md_pen_componente_digital', 'cols' => ['numero_registro' => [$objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO], 'id_procedimento' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'id_documento' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'id_tramite' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'id_anexo' => [$objMetaBD->tipoNumero(), PenMetaBD::SNULLO], 'protocolo' => [$objMetaBD->tipoTextoVariavel(50), PenMetaBD::NNULLO], 'nome' => [$objMetaBD->tipoTextoVariavel(100), PenMetaBD::NNULLO], 'hash_conteudo' => [$objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO], 'algoritmo_hash' => [$objMetaBD->tipoTextoVariavel(20), PenMetaBD::NNULLO], 'tipo_conteudo' => [$objMetaBD->tipoTextoFixo(3), PenMetaBD::NNULLO], 'mime_type' => [$objMetaBD->tipoTextoVariavel(100), PenMetaBD::NNULLO], 'dados_complementares' => [$objMetaBD->tipoTextoVariavel(1000), PenMetaBD::SNULLO], 'tamanho' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'ordem' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'sin_enviar' => [$objMetaBD->tipoTextoFixo(1), 'N']], 'pk' => ['cols' => ['numero_registro', 'id_procedimento', 'id_documento', 'id_tramite']], 'fks' => ['anexo' => ['nome' => 'fk_md_pen_comp_dig_anexo', 'cols' => ['id_anexo', 'id_anexo']], 'documento' => ['nome' => 'fk_md_pen_comp_dig_documento', 'cols' => ['id_documento', 'id_documento']], 'procedimento' => ['nome' => 'fk_md_pen_comp_dig_procediment', 'cols' => ['id_procedimento', 'id_procedimento']], 'md_pen_processo_eletronico' => ['nome' => 'fk_md_pen_comp_dig_proc_eletr', 'cols' => ['numero_registro', 'numero_registro']], 'md_pen_tramite' => ['nome' => 'fk_md_pen_comp_dig_tramite', 'cols' => [['numero_registro', 'id_tramite'], ['numero_registro', 'id_tramite']]]]]); + + $objMetaBD->criarTabela(['tabela' => 'md_pen_unidade', 'cols' => ['id_unidade' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_unidade_rh' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO]], 'pk' => ['cols' => ['id_unidade']], 'fks' => ['unidade' => ['id_unidade', 'id_unidade']]]); //---------------------------------------------------------------------- @@ -742,7 +532,7 @@ protected function instalarV100() $objBD = new EspecieDocumentalBD(BancoSEI::getInstance()); $objDTO = new EspecieDocumentalDTO(); - $fnCadastrar = function ($dblIdEspecie, $strNomeEspecie, $strDescricao) use ($objDTO, $objBD) { + $fnCadastrar = function ($dblIdEspecie, $strNomeEspecie, $strDescricao) use ($objDTO, $objBD): void { $objDTO->unSetTodos(); $objDTO->setStrNomeEspecie($strNomeEspecie); @@ -937,7 +727,7 @@ protected function instalarV100() //---------------------------------------------------------------------- $objDTO = new TarefaDTO(); - $fnCadastrar = function ($strNome = '', $strHistoricoResumido = 'N', $strHistoricoCompleto = 'N', $strFecharAndamentosAbertos = 'N', $strLancarAndamentoFechado = 'N', $strPermiteProcessoFechado = 'N', $strIdTarefaModulo = '', $strSinConsultaProcessual = 'N') use ($objDTO, $objBD) { + $fnCadastrar = function ($strNome = '', $strHistoricoResumido = 'N', $strHistoricoCompleto = 'N', $strFecharAndamentosAbertos = 'N', $strLancarAndamentoFechado = 'N', $strPermiteProcessoFechado = 'N', $strIdTarefaModulo = '', $strSinConsultaProcessual = 'N') use ($objDTO, $objBD): void { $objDTO->unSetTodos(); $objDTO->setStrIdTarefaModulo($strIdTarefaModulo); @@ -977,7 +767,7 @@ protected function instalarV100() //---------------------------------------------------------------------- $objDTO = new RelTarefaOperacaoDTO(); - $fnCadastrar = function ($strCodigoOperacao, $numIdTarefa) use ($objDTO, $objBD) { + $fnCadastrar = function ($strCodigoOperacao, $numIdTarefa) use ($objDTO, $objBD): void { $objDTO->unSetTodos(); $objDTO->setStrCodigoOperacao($strCodigoOperacao); @@ -1009,7 +799,7 @@ protected function instalarV100() $objDTO = new InfraAgendamentoTarefaDTO(); - $fnCadastrar = function ($strComando, $strDesc) use ($objDTO, $objBD, $objRN) { + $fnCadastrar = function ($strComando, $strDesc) use ($objDTO, $objBD, $objRN): void { $objDTO->unSetTodos(); $objDTO->setStrComando($strComando); @@ -1030,16 +820,7 @@ protected function instalarV100() /* ---------- antigo método (instalarV002R003S000US024) ---------- */ - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_tramite_processado', - 'cols' => array( - 'id_tramite' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'dth_ultimo_processamento' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO), - 'numero_tentativas' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'sin_recebimento_concluido' => array($objMetaBD->tipoTextoFixo(1), PenMetaBD::NNULLO) - ), - 'pk' => array('cols' => array('id_tramite')), - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_tramite_processado', 'cols' => ['id_tramite' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'dth_ultimo_processamento' => [$objMetaBD->tipoDataHora(), PenMetaBD::NNULLO], 'numero_tentativas' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'sin_recebimento_concluido' => [$objMetaBD->tipoTextoFixo(1), PenMetaBD::NNULLO]], 'pk' => ['cols' => ['id_tramite']]]); $objInfraParametro = new InfraParametro($objInfraBanco); $objInfraParametro->setValor('PEN_NUMERO_TENTATIVAS_TRAMITE_RECEBIMENTO', '3'); @@ -1050,7 +831,7 @@ protected function instalarV100() $objDTO = new TarefaDTO(); $objBD = new TarefaBD($objInfraBanco); - $fnAlterar = function ($strIdTarefaModulo, $strNome) use ($objDTO, $objBD) { + $fnAlterar = function ($strIdTarefaModulo, $strNome) use ($objDTO, $objBD): void { $objDTO->unSetTodos(); $objDTO->setStrIdTarefaModulo($strIdTarefaModulo); @@ -1084,7 +865,7 @@ protected function instalarV100() if ($objMetaBanco->isChaveExiste('md_pen_tramite_processado', 'pk_md_pen_tramite_processado')) { $objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance()); $this->excluirChavePrimariaComIndice("md_pen_tramite_processado", "pk_md_pen_tramite_processado"); - $objInfraMetaBD->adicionarChavePrimaria("md_pen_tramite_processado", "pk_md_pen_tramite_processado", array('id_tramite', 'tipo_tramite_processo')); + $objInfraMetaBD->adicionarChavePrimaria("md_pen_tramite_processado", "pk_md_pen_tramite_processado", ['id_tramite', 'tipo_tramite_processo']); } /* ---------- antigo método (instalarV003R003S003IW001) ---------- */ @@ -1102,40 +883,14 @@ protected function instalarV100() $objInfraSequencia->criarSequencia('md_pen_rel_doc_map_recebido', '1', '1', '9999999999'); } - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_rel_doc_map_enviado', - 'cols' => array( - 'id_mapeamento' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'codigo_especie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_serie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'sin_padrao' => array($objMetaBD->tipoTextoFixo(1), 'S') - ), - 'pk' => array('cols' => array('id_mapeamento')), - 'fks' => array( - 'serie' => array('nome' => 'fk_md_pen_rel_doc_map_env_seri', 'cols' => array('id_serie', 'id_serie')), - 'md_pen_especie_documental' => array('nome' => 'fk_md_pen_rel_doc_map_env_espe', 'cols' => array('id_especie', 'codigo_especie')), - ) - )); - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_rel_doc_map_recebido', - 'cols' => array( - 'id_mapeamento' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'codigo_especie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_serie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'sin_padrao' => array($objMetaBD->tipoTextoFixo(1), 'S') - ), - 'pk' => array('cols' => array('id_mapeamento')), - 'fks' => array( - 'serie' => array('nome' => 'fk_md_pen_rel_doc_map_rec_seri', 'cols' => array('id_serie', 'id_serie')), - 'md_pen_especie_documental' => array('nome' => 'fk_md_pen_rel_doc_map_rec_espe', 'cols' => array('id_especie', 'codigo_especie')), - ) - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_rel_doc_map_enviado', 'cols' => ['id_mapeamento' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'codigo_especie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_serie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'sin_padrao' => [$objMetaBD->tipoTextoFixo(1), 'S']], 'pk' => ['cols' => ['id_mapeamento']], 'fks' => ['serie' => ['nome' => 'fk_md_pen_rel_doc_map_env_seri', 'cols' => ['id_serie', 'id_serie']], 'md_pen_especie_documental' => ['nome' => 'fk_md_pen_rel_doc_map_env_espe', 'cols' => ['id_especie', 'codigo_especie']]]]); + + $objMetaBD->criarTabela(['tabela' => 'md_pen_rel_doc_map_recebido', 'cols' => ['id_mapeamento' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'codigo_especie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_serie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'sin_padrao' => [$objMetaBD->tipoTextoFixo(1), 'S']], 'pk' => ['cols' => ['id_mapeamento']], 'fks' => ['serie' => ['nome' => 'fk_md_pen_rel_doc_map_rec_seri', 'cols' => ['id_serie', 'id_serie']], 'md_pen_especie_documental' => ['nome' => 'fk_md_pen_rel_doc_map_rec_espe', 'cols' => ['id_especie', 'codigo_especie']]]]); $objBD = new PenRelTipoDocMapRecebidoBD($objInfraBanco); if ($objMetaBD->isTabelaExiste('md_pen_rel_tipo_documento_mapeamento_recebido')) { $objDTO = new PenRelTipoDocMapRecebidoDTO(); - $fnCadastrar = function ($numCodigoEspecie, $numIdSerie) use ($objDTO, $objBD) { + $fnCadastrar = function ($numCodigoEspecie, $numIdSerie) use ($objDTO, $objBD): void { $objDTO->unSetTodos(); $objDTO->setNumCodigoEspecie($numCodigoEspecie); $objDTO->setNumIdSerie($numIdSerie); @@ -1158,7 +913,7 @@ protected function instalarV100() if ($objMetaBD->isTabelaExiste('md_pen_rel_serie_especie')) { $objDTO = new PenRelTipoDocMapEnviadoDTO(); - $fnCadastrar = function ($numCodigoEspecie, $numIdSerie) use ($objDTO, $objBD) { + $fnCadastrar = function ($numCodigoEspecie, $numIdSerie) use ($objDTO, $objBD): void { $objDTO->unSetTodos(); $objDTO->setNumCodigoEspecie($numCodigoEspecie); @@ -1208,7 +963,7 @@ protected function instalarV100() $objBD = new TarefaBD(BancoSEI::getInstance()); $objDTO = new TarefaDTO(); - $fnCadastrar = function ($strNome = '', $strHistoricoResumido = 'N', $strHistoricoCompleto = 'N', $strFecharAndamentosAbertos = 'N', $strLancarAndamentoFechado = 'N', $strPermiteProcessoFechado = 'N', $strIdTarefaModulo = '', $strSinConsultaProcessual = 'N') use ($objDTO, $objBD) { + $fnCadastrar = function ($strNome = '', $strHistoricoResumido = 'N', $strHistoricoCompleto = 'N', $strFecharAndamentosAbertos = 'N', $strLancarAndamentoFechado = 'N', $strPermiteProcessoFechado = 'N', $strIdTarefaModulo = '', $strSinConsultaProcessual = 'N') use ($objDTO, $objBD): void { $objDTO->unSetTodos(); $objDTO->setStrIdTarefaModulo($strIdTarefaModulo); @@ -1244,7 +999,7 @@ protected function instalarV100() $objDTO->retNumIdTarefa(); $objDTO->retStrNome(); - $fnAtualizar = function ($strIdTarefaModulo, $strNome) use ($objDTO, $objBD) { + $fnAtualizar = function ($strIdTarefaModulo, $strNome) use ($objDTO, $objBD): void { $objDTO->unSetTodos(); $objDTO->setStrIdTarefaModulo($strIdTarefaModulo); @@ -1269,20 +1024,7 @@ protected function instalarV100() /* ---------- antigo método (instalarV007R004S005WI002) ---------- */ - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_recibo_tramite_hash', - 'cols' => array( - 'id_tramite_hash' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'numero_registro' => array($objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO), - 'id_tramite' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'tipo_recibo' => array($objMetaBD->tipoTextoFixo(1), PenMetaBD::NNULLO), - 'hash_componente_digital ' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO) - ), - 'pk' => array('cols' => array('id_tramite_hash')), - 'fks' => array( - 'md_pen_tramite' => array('nome' => 'fk_md_pen_rec_tram_hash_tram', 'cols' => array(array('numero_registro', 'id_tramite'), array('numero_registro', 'id_tramite'))) - ) - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_recibo_tramite_hash', 'cols' => ['id_tramite_hash' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'numero_registro' => [$objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO], 'id_tramite' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'tipo_recibo' => [$objMetaBD->tipoTextoFixo(1), PenMetaBD::NNULLO], 'hash_componente_digital ' => [$objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO]], 'pk' => ['cols' => ['id_tramite_hash']], 'fks' => ['md_pen_tramite' => ['nome' => 'fk_md_pen_rec_tram_hash_tram', 'cols' => [['numero_registro', 'id_tramite'], ['numero_registro', 'id_tramite']]]]]); $objMetaBD->adicionarColuna('md_pen_recibo_tramite_recebido', 'cadeia_certificado', $this->inicializarObjMetaBanco()->tipoTextoGrande(), PenMetaBD::SNULLO); @@ -1321,31 +1063,9 @@ protected function instalarV101() $objMetaBD = $this->inicializarObjMetaBanco(); $objInfraBanco = BancoSEI::getInstance(); - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_hipotese_legal', - 'cols' => array( - 'id_hipotese_legal' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'nome' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO), - 'sin_ativo' => array($objMetaBD->tipoTextoFixo(1), 'S'), - ), - 'pk' => array('cols' => array('id_hipotese_legal')), - )); - - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_rel_hipotese_legal', - 'cols' => array( - 'id_mapeamento' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'id_hipotese_legal' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_hipotese_legal_pen' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), - 'tipo' => array($objMetaBD->tipoTextoFixo(1), 'E'), - 'sin_ativo' => array($objMetaBD->tipoTextoFixo(1), 'S'), - ), - 'pk' => array('cols' => array('id_mapeamento')), - 'fks' => array( - 'hipotese_legal' => array('nome' => 'fk_md_pen_rel_hipotese_legal', 'cols' => array('id_hipotese_legal', 'id_hipotese_legal')), - 'md_pen_hipotese_legal' => array('nome' => 'fk_md_pen_rel_hipotese_pen', 'cols' => array('id_hipotese_legal', 'id_hipotese_legal_pen')) - ) - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_hipotese_legal', 'cols' => ['id_hipotese_legal' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'nome' => [$objMetaBD->tipoTextoVariavel(255), PenMetaBD::NNULLO], 'sin_ativo' => [$objMetaBD->tipoTextoFixo(1), 'S']], 'pk' => ['cols' => ['id_hipotese_legal']]]); + + $objMetaBD->criarTabela(['tabela' => 'md_pen_rel_hipotese_legal', 'cols' => ['id_mapeamento' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'id_hipotese_legal' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_hipotese_legal_pen' => [$objMetaBD->tipoNumero(), PenMetaBD::SNULLO], 'tipo' => [$objMetaBD->tipoTextoFixo(1), 'E'], 'sin_ativo' => [$objMetaBD->tipoTextoFixo(1), 'S']], 'pk' => ['cols' => ['id_mapeamento']], 'fks' => ['hipotese_legal' => ['nome' => 'fk_md_pen_rel_hipotese_legal', 'cols' => ['id_hipotese_legal', 'id_hipotese_legal']], 'md_pen_hipotese_legal' => ['nome' => 'fk_md_pen_rel_hipotese_pen', 'cols' => ['id_hipotese_legal', 'id_hipotese_legal_pen']]]]); $objInfraSequencia = new InfraSequencia($objInfraBanco); @@ -1366,19 +1086,12 @@ protected function instalarV101() $objMetaBD = $this->inicializarObjMetaBanco(); - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_parametro', - 'cols' => array( - 'nome' => array($objMetaBD->tipoTextoVariavel(100), PenMetaBD::NNULLO), - 'valor' => array($objMetaBD->tipoTextoGrande(), PenMetaBD::SNULLO) - ), - 'pk' => array('cols' => array('nome')), - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_parametro', 'cols' => ['nome' => [$objMetaBD->tipoTextoVariavel(100), PenMetaBD::NNULLO], 'valor' => [$objMetaBD->tipoTextoGrande(), PenMetaBD::SNULLO]], 'pk' => ['cols' => ['nome']]]); //Agendamento $objDTO = new InfraAgendamentoTarefaDTO(); - $fnCadastrar = function ($strComando, $strDesc) use ($objDTO, $objBD, $objRN) { + $fnCadastrar = function ($strComando, $strDesc) use ($objDTO, $objBD, $objRN): void { $objDTO->unSetTodos(); $objDTO->setStrComando($strComando); @@ -1473,7 +1186,7 @@ protected function instalarV117() $objEspecieDocumentalBD = new EspecieDocumentalBD(BancoSEI::getInstance()); $objEspecieDocumentalDTO = new EspecieDocumentalDTO(); - $fnCadastrar = function ($dblIdEspecie, $strNomeEspecie, $strDescricao) use ($objEspecieDocumentalDTO, $objEspecieDocumentalBD) { + $fnCadastrar = function ($dblIdEspecie, $strNomeEspecie, $strDescricao) use ($objEspecieDocumentalDTO, $objEspecieDocumentalBD): void { $objEspecieDocumentalDTO->unSetTodos(); $objEspecieDocumentalDTO->setDblIdEspecie($dblIdEspecie); if ($objEspecieDocumentalBD->contar($objEspecieDocumentalDTO) == 0) { @@ -1504,7 +1217,7 @@ protected function instalarV118() //Correção de chave primária para considerar campo de tipo de recibo $this->excluirChavePrimariaComIndice('md_pen_tramite_processado', 'pk_md_pen_tramite_processado'); - $objInfraMetaBD->adicionarChavePrimaria('md_pen_tramite_processado', 'pk_md_pen_tramite_processado', array('id_tramite', 'tipo_tramite_processo')); + $objInfraMetaBD->adicionarChavePrimaria('md_pen_tramite_processado', 'pk_md_pen_tramite_processado', ['id_tramite', 'tipo_tramite_processo']); //Atribuição de dados da unidade de origem e destino no trâmite $objInfraMetaBD->adicionarColuna('md_pen_tramite', 'id_repositorio_origem', $objInfraMetaBD->tipoNumero(16), 'null'); @@ -1588,15 +1301,15 @@ protected function instalarV1113() protected function instalarV1114() { $objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance()); - $objInfraSequencia = new InfraSequencia(BancoSEI::getInstance()); + new InfraSequencia(BancoSEI::getInstance()); SessaoSEI::getInstance(false)->simularLogin(SessaoSEI::$USUARIO_SEI, SessaoSEI::$UNIDADE_TESTE); SessaoInfra::setObjInfraSessao(SessaoSEI::getInstance()); BancoInfra::setObjInfraIBanco(BancoSEI::getInstance()); //[Fix-35] Correção de erro de integridade ao retornar mais de um elemento na consulta de mapeamento - $objInfraMetaBD->criarIndice('md_pen_rel_doc_map_enviado', 'ak1_rel_doc_map_enviado', array('id_serie'), true); - $objInfraMetaBD->criarIndice('md_pen_rel_doc_map_recebido', 'ak1_rel_doc_map_recebido', array('codigo_especie'), true); + $objInfraMetaBD->criarIndice('md_pen_rel_doc_map_enviado', 'ak1_rel_doc_map_enviado', ['id_serie'], true); + $objInfraMetaBD->criarIndice('md_pen_rel_doc_map_recebido', 'ak1_rel_doc_map_recebido', ['codigo_especie'], true); //30 - Correção de erros de chave duplicada devido a concorrência de transações $objInfraSequenciaRN = new InfraSequenciaRN(); @@ -1729,7 +1442,7 @@ protected function instalarV1117() // (3) Atualizar o id_tarefa de todas as atividades relacionadas // (4) Remover a tarefa anterior com ID inválido // (5) Atualizar o campo id_tarefa_modulo com o valor correspondente - $fnCadastrar = function ($numIdTarefa, $strIdTarefaModulo) { + $fnCadastrar = function ($numIdTarefa, $strIdTarefaModulo): void { // Identificar a tarefa com ID conflitante do SEI $objTarefaRN = new TarefaRN(); @@ -1892,7 +1605,7 @@ protected function instalarV1400() $objBD = new TarefaBD(BancoSEI::getInstance()); $objDTO = new TarefaDTO(); - $fnCadastrar = function ($strNome = '', $strHistoricoResumido = 'N', $strHistoricoCompleto = 'N', $strFecharAndamentosAbertos = 'N', $strLancarAndamentoFechado = 'N', $strPermiteProcessoFechado = 'N', $strIdTarefaModulo = '', $strSinConsultaProcessual = 'N') use ($objDTO, $objBD) { + $fnCadastrar = function ($strNome = '', $strHistoricoResumido = 'N', $strHistoricoCompleto = 'N', $strFecharAndamentosAbertos = 'N', $strLancarAndamentoFechado = 'N', $strPermiteProcessoFechado = 'N', $strIdTarefaModulo = '', $strSinConsultaProcessual = 'N') use ($objDTO, $objBD): void { $objDTO->unSetTodos(); $objDTO->setStrIdTarefaModulo($strIdTarefaModulo); @@ -1938,7 +1651,7 @@ protected function instalarV1400() // Adicionar Chave primaria $objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance()); $this->excluirChavePrimariaComIndice('md_pen_componente_digital', 'pk_md_pen_componente_digital'); - $objInfraMetaBD->adicionarChavePrimaria('md_pen_componente_digital', 'pk_md_pen_componente_digital', array('numero_registro', 'id_procedimento', 'id_documento', 'id_tramite', 'ordem')); + $objInfraMetaBD->adicionarChavePrimaria('md_pen_componente_digital', 'pk_md_pen_componente_digital', ['numero_registro', 'id_procedimento', 'id_documento', 'id_tramite', 'ordem']); // Definição de ordem em que os parâmetros aparecem na página $objMetaBD->adicionarColuna('md_pen_parametro', 'sequencia', $this->inicializarObjMetaBanco()->tipoNumero(), PenMetaBD::SNULLO); @@ -1964,7 +1677,7 @@ protected function instalarV1401() $objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance()); // Aumento de tamanho campo de armazenamento do hash dos recibos para contemplar os diferentes tamanhos de chaves criptográficas - $this->removerIndicesTabela($objInfraMetaBD, array("md_pen_recibo_tramite_recebido", "md_pen_recibo_tramite", "md_pen_tramite_recibo_envio", "md_pen_recibo_tramite_enviado")); + $this->removerIndicesTabela($objInfraMetaBD, ["md_pen_recibo_tramite_recebido", "md_pen_recibo_tramite", "md_pen_tramite_recibo_envio", "md_pen_recibo_tramite_enviado"]); // Remove chaves estrangeiras e primárias com supressão de mensagens de erro devido a incompatibilidade de nomes entre diferentes versões do sistema $bolSuprimirError = true; @@ -1973,8 +1686,8 @@ protected function instalarV1401() $this->excluirChavePrimariaComIndice("md_pen_recibo_tramite_recebido", "pk_md_pen_recibo_tramite_receb", $bolSuprimirError); $this->excluirChavePrimariaComIndice("md_pen_recibo_tramite_recebido", "pk_md_pen_recibo_tramite_recebido", $bolSuprimirError); - $objInfraMetaBD->adicionarChavePrimaria("md_pen_recibo_tramite_recebido", "pk_md_pen_recibo_tramite_receb", array("numero_registro", "id_tramite")); - $objInfraMetaBD->adicionarChaveEstrangeira("fk_md_pen_recibo_receb_tram", "md_pen_recibo_tramite_recebido", array('numero_registro', 'id_tramite'), "md_pen_tramite", array('numero_registro', 'id_tramite'), false); + $objInfraMetaBD->adicionarChavePrimaria("md_pen_recibo_tramite_recebido", "pk_md_pen_recibo_tramite_receb", ["numero_registro", "id_tramite"]); + $objInfraMetaBD->adicionarChaveEstrangeira("fk_md_pen_recibo_receb_tram", "md_pen_recibo_tramite_recebido", ['numero_registro', 'id_tramite'], "md_pen_tramite", ['numero_registro', 'id_tramite'], false); $objInfraMetaBD->alterarColuna("md_pen_recibo_tramite_recebido", "hash_assinatura", $objInfraMetaBD->tipoTextoVariavel(1000), "not null"); $objInfraMetaBD->alterarColuna("md_pen_recibo_tramite", "hash_assinatura", $objInfraMetaBD->tipoTextoVariavel(1000), "not null"); $objInfraMetaBD->alterarColuna("md_pen_tramite_recibo_envio", "hash_assinatura", $objInfraMetaBD->tipoTextoVariavel(1000), "not null"); @@ -1989,7 +1702,7 @@ protected function instalarV1402() $objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance()); // Aumento de tamanho campo de armazenamento do hash dos recibos para contemplar os diferentes tamanhos de chaves criptográficas - $this->removerIndicesTabela($objInfraMetaBD, array("md_pen_recibo_tramite_recebido", "md_pen_recibo_tramite", "md_pen_tramite_recibo_envio", "md_pen_recibo_tramite_enviado")); + $this->removerIndicesTabela($objInfraMetaBD, ["md_pen_recibo_tramite_recebido", "md_pen_recibo_tramite", "md_pen_tramite_recibo_envio", "md_pen_recibo_tramite_enviado"]); // Remove chaves estrangeiras e primárias com supressão de mensagens de erro devido a incompatibilidade de nomes entre diferentes versões do sistema $bolSuprimirError = true; @@ -1998,8 +1711,8 @@ protected function instalarV1402() $this->excluirChavePrimariaComIndice("md_pen_recibo_tramite_recebido", "pk_md_pen_recibo_tramite_receb", $bolSuprimirError); $this->excluirChavePrimariaComIndice("md_pen_recibo_tramite_recebido", "pk_md_pen_recibo_tramite_recebido", $bolSuprimirError); - $objInfraMetaBD->adicionarChavePrimaria("md_pen_recibo_tramite_recebido", "pk_md_pen_recibo_tramite_receb", array("numero_registro", "id_tramite")); - $objInfraMetaBD->adicionarChaveEstrangeira("fk_md_pen_recibo_receb_tram", "md_pen_recibo_tramite_recebido", array('numero_registro', 'id_tramite'), "md_pen_tramite", array('numero_registro', 'id_tramite'), false); + $objInfraMetaBD->adicionarChavePrimaria("md_pen_recibo_tramite_recebido", "pk_md_pen_recibo_tramite_receb", ["numero_registro", "id_tramite"]); + $objInfraMetaBD->adicionarChaveEstrangeira("fk_md_pen_recibo_receb_tram", "md_pen_recibo_tramite_recebido", ['numero_registro', 'id_tramite'], "md_pen_tramite", ['numero_registro', 'id_tramite'], false); $this->atualizarNumeroVersao("1.4.2"); } @@ -2119,59 +1832,21 @@ protected function instalarV2000_beta1() // Remoção de coluna sin_padrao da tabela md_pen_rel_doc_map_enviado $this->logar("REMOÇÃO DE COLUNAS DE DESATIVAÇÃO DE MAPEAMENTO DE ESPÉCIES NÃO MAIS UTILIZADOS"); - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_rel_doc_map_enviado_tmp', - 'cols' => array( - 'id_mapeamento' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'codigo_especie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_serie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO) - ) - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_rel_doc_map_enviado_tmp', 'cols' => ['id_mapeamento' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'codigo_especie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_serie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO]]]); BancoSEI::getInstance()->executarSql("insert into md_pen_rel_doc_map_enviado_tmp (id_mapeamento, codigo_especie, id_serie) select id_mapeamento, codigo_especie, id_serie from md_pen_rel_doc_map_enviado"); BancoSEI::getInstance()->executarSql("drop table md_pen_rel_doc_map_enviado"); - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_rel_doc_map_enviado', - 'cols' => array( - 'id_mapeamento' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'codigo_especie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_serie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - ), - 'pk' => array('cols' => array('id_mapeamento')), - 'fks' => array( - 'serie' => array('nome' => 'fk_md_pen_rel_doc_map_env_seri', 'cols' => array('id_serie', 'id_serie')), - 'md_pen_especie_documental' => array('nome' => 'fk_md_pen_rel_doc_map_env_espe', 'cols' => array('id_especie', 'codigo_especie')), - ) - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_rel_doc_map_enviado', 'cols' => ['id_mapeamento' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'codigo_especie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_serie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO]], 'pk' => ['cols' => ['id_mapeamento']], 'fks' => ['serie' => ['nome' => 'fk_md_pen_rel_doc_map_env_seri', 'cols' => ['id_serie', 'id_serie']], 'md_pen_especie_documental' => ['nome' => 'fk_md_pen_rel_doc_map_env_espe', 'cols' => ['id_especie', 'codigo_especie']]]]); BancoSEI::getInstance()->executarSql("insert into md_pen_rel_doc_map_enviado (id_mapeamento, codigo_especie, id_serie) select id_mapeamento, codigo_especie, id_serie from md_pen_rel_doc_map_enviado_tmp"); BancoSEI::getInstance()->executarSql("drop table md_pen_rel_doc_map_enviado_tmp"); // Remoção de coluna sin_padrao da tabela md_pen_rel_doc_map_enviado - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_rel_doc_map_recebido_tm', - 'cols' => array( - 'id_mapeamento' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'codigo_especie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_serie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - ) - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_rel_doc_map_recebido_tm', 'cols' => ['id_mapeamento' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'codigo_especie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_serie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO]]]); BancoSEI::getInstance()->executarSql("insert into md_pen_rel_doc_map_recebido_tm (id_mapeamento, codigo_especie, id_serie) select id_mapeamento, codigo_especie, id_serie from md_pen_rel_doc_map_recebido"); BancoSEI::getInstance()->executarSql("drop table md_pen_rel_doc_map_recebido"); - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_rel_doc_map_recebido', - 'cols' => array( - 'id_mapeamento' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'codigo_especie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_serie' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - ), - 'pk' => array('cols' => array('id_mapeamento')), - 'fks' => array( - 'serie' => array('nome' => 'fk_md_pen_rel_doc_map_rec_seri', 'cols' => array('id_serie', 'id_serie')), - 'md_pen_especie_documental' => array('nome' => 'fk_md_pen_rel_doc_map_rec_espe', 'cols' => array('id_especie', 'codigo_especie')), - ) - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_rel_doc_map_recebido', 'cols' => ['id_mapeamento' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'codigo_especie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_serie' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO]], 'pk' => ['cols' => ['id_mapeamento']], 'fks' => ['serie' => ['nome' => 'fk_md_pen_rel_doc_map_rec_seri', 'cols' => ['id_serie', 'id_serie']], 'md_pen_especie_documental' => ['nome' => 'fk_md_pen_rel_doc_map_rec_espe', 'cols' => ['id_especie', 'codigo_especie']]]]); BancoSEI::getInstance()->executarSql("insert into md_pen_rel_doc_map_recebido (id_mapeamento, codigo_especie, id_serie) select id_mapeamento, codigo_especie, id_serie from md_pen_rel_doc_map_recebido_tm"); BancoSEI::getInstance()->executarSql("drop table md_pen_rel_doc_map_recebido_tm"); @@ -2325,7 +2000,7 @@ protected function instalarV2106() protected function instalarV2107() { $objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance()); - $objInfraMetaBD->criarIndice('md_pen_rel_hipotese_legal', 'ak1_rel_hipotese_legal', array('id_hipotese_legal', 'id_hipotese_legal_pen', 'tipo'), true); + $objInfraMetaBD->criarIndice('md_pen_rel_hipotese_legal', 'ak1_rel_hipotese_legal', ['id_hipotese_legal', 'id_hipotese_legal_pen', 'tipo'], true); $this->atualizarNumeroVersao("2.1.7"); } protected function instalarV3000() @@ -2341,26 +2016,7 @@ protected function instalarV3010() $objInfraBanco = BancoSEI::getInstance(); $objMetaBD = $this->objMeta; - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_expedir_lote', - 'cols' => array( - 'id_lote' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_repositorio_destino' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'str_repositorio_destino' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO), - 'id_repositorio_origem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_unidade_origem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_unidade_destino' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'str_unidade_destino' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO), - 'id_usuario' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'dth_registro' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO) - ), - 'pk' => array('cols' => array('id_lote')), - 'fks' => array( - 'usuario' => array('nome' => 'fk_md_pen_expedir_lote_usuario', 'cols' => array('id_usuario', 'id_usuario')), - 'unidade' => array('nome' => 'fk_md_pen_expedir_lote_unidade', 'cols' => array('id_unidade', 'id_unidade')), - ) - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_expedir_lote', 'cols' => ['id_lote' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_repositorio_destino' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'str_repositorio_destino' => [$objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO], 'id_repositorio_origem' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_unidade_origem' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_unidade_destino' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'str_unidade_destino' => [$objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO], 'id_usuario' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_unidade' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'dth_registro' => [$objMetaBD->tipoDataHora(), PenMetaBD::NNULLO]], 'pk' => ['cols' => ['id_lote']], 'fks' => ['usuario' => ['nome' => 'fk_md_pen_expedir_lote_usuario', 'cols' => ['id_usuario', 'id_usuario']], 'unidade' => ['nome' => 'fk_md_pen_expedir_lote_unidade', 'cols' => ['id_unidade', 'id_unidade']]]]); //Sequência: md_pen_seq_lote $rs = BancoSEI::getInstance()->consultarSql('select max(id_lote) as total from md_pen_expedir_lote'); @@ -2370,20 +2026,7 @@ protected function instalarV3010() } $objInfraBanco->criarSequencialNativa('md_pen_seq_expedir_lote', $numMaxId + 1); - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_rel_expedir_lote', - 'cols' => array( - 'id_lote' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_procedimento' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'id_andamento' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_atividade_expedicao' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO) - ), - 'pk' => array('cols' => array('id_procedimento', 'id_lote')), - 'fks' => array( - 'md_pen_expedir_lote' => array('nome' => 'fk_md_pen_rel_expedir_lote', 'cols' => array('id_lote', 'id_lote')), - 'procedimento' => array('nome' => 'fk_md_pen_rel_expedir_lote', 'cols' => array('id_procedimento', 'id_procedimento')), - ) - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_rel_expedir_lote', 'cols' => ['id_lote' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_procedimento' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'id_andamento' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_atividade_expedicao' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO]], 'pk' => ['cols' => ['id_procedimento', 'id_lote']], 'fks' => ['md_pen_expedir_lote' => ['nome' => 'fk_md_pen_rel_expedir_lote', 'cols' => ['id_lote', 'id_lote']], 'procedimento' => ['nome' => 'fk_md_pen_rel_expedir_lote', 'cols' => ['id_procedimento', 'id_procedimento']]]]); $this->atualizarNumeroVersao("3.1.0"); } @@ -2555,7 +2198,7 @@ protected function instalarV3030() // Corrige chave primaria da tabela de componentes digitais $this->excluirChavePrimariaComIndice('md_pen_componente_digital', 'pk_md_pen_componente_digital'); - $objInfraMetaBD->adicionarChavePrimaria('md_pen_componente_digital', 'pk_md_pen_componente_digital', array('numero_registro', 'id_procedimento', 'id_documento', 'id_tramite', 'ordem_documento', 'ordem')); + $objInfraMetaBD->adicionarChavePrimaria('md_pen_componente_digital', 'pk_md_pen_componente_digital', ['numero_registro', 'id_procedimento', 'id_documento', 'id_tramite', 'ordem_documento', 'ordem']); $this->atualizarNumeroVersao("3.3.0"); } @@ -2582,25 +2225,7 @@ protected function instalarV3050() { $objMetaBD = $this->objMeta; - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_orgao_externo', - 'cols' => array( - 'id' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_orgao_origem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'str_orgao_origem' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO), - 'id_estrutura_origem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'str_estrutura_origem' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO), - 'id_orgao_destino' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'str_orgao_destino' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO), - 'sin_ativo' => array($objMetaBD->tipoTextoFixo(1), 'S'), - 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'dth_criacao' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO) - ), - 'pk' => array('cols' => array('id')), - 'fks' => array( - 'unidade' => array('nome' => 'fk_md_pen_orgao_externo', 'cols' => array('id_unidade', 'id_unidade')), - ) - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_orgao_externo', 'cols' => ['id' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_orgao_origem' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'str_orgao_origem' => [$objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO], 'id_estrutura_origem' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'str_estrutura_origem' => [$objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO], 'id_orgao_destino' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'str_orgao_destino' => [$objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO], 'sin_ativo' => [$objMetaBD->tipoTextoFixo(1), 'S'], 'id_unidade' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'dth_criacao' => [$objMetaBD->tipoDataHora(), PenMetaBD::NNULLO]], 'pk' => ['cols' => ['id']], 'fks' => ['unidade' => ['nome' => 'fk_md_pen_orgao_externo', 'cols' => ['id_unidade', 'id_unidade']]]]); # Criar sequencia para tramite em bloco $objInfraSequenciaRN = new InfraSequenciaRN(); @@ -2608,7 +2233,7 @@ protected function instalarV3050() //Sequência: md_pen_seq_tramita_em_bloco $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_orgao_externo'); - $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + $numMaxId = $rs[0]['total'] ?? 0; BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_orgao_externo', $numMaxId + 1); $objInfraSequenciaDTO->setStrNome('md_pen_orgao_externo'); @@ -2616,24 +2241,7 @@ protected function instalarV3050() $arrObjInfraSequenciaDTO = $objInfraSequenciaRN->listar($objInfraSequenciaDTO); $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO); - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_map_tipo_processo', - 'cols' => array( - 'id' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_map_orgao' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_tipo_processo_origem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_tipo_processo_destino' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), - 'nome_tipo_processo' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::SNULLO), - 'sin_ativo' => array($objMetaBD->tipoTextoFixo(1), 'S'), - 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'dth_criacao' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO) - ), - 'pk' => array('cols' => array('id')), - 'fks' => array( - 'unidade' => array('nome' => 'fk_md_pen_map_tipo_processo', 'cols' => array('id_unidade', 'id_unidade')), - 'md_pen_orgao_externo' => array('nome' => 'fk_md_pen_mapeamento_orgao', 'cols' => array('id', 'id_map_orgao')), - ) - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_map_tipo_processo', 'cols' => ['id' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_map_orgao' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_tipo_processo_origem' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_tipo_processo_destino' => [$objMetaBD->tipoNumero(), PenMetaBD::SNULLO], 'nome_tipo_processo' => [$objMetaBD->tipoTextoVariavel(250), PenMetaBD::SNULLO], 'sin_ativo' => [$objMetaBD->tipoTextoFixo(1), 'S'], 'id_unidade' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'dth_criacao' => [$objMetaBD->tipoDataHora(), PenMetaBD::NNULLO]], 'pk' => ['cols' => ['id']], 'fks' => ['unidade' => ['nome' => 'fk_md_pen_map_tipo_processo', 'cols' => ['id_unidade', 'id_unidade']], 'md_pen_orgao_externo' => ['nome' => 'fk_md_pen_mapeamento_orgao', 'cols' => ['id', 'id_map_orgao']]]]); # Criar sequencia $objInfraSequenciaRN = new InfraSequenciaRN(); @@ -2641,7 +2249,7 @@ protected function instalarV3050() //Sequência $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_orgao_externo'); - $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + $numMaxId = $rs[0]['total'] ?? 0; BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_map_tp_procedimento', $numMaxId + 1); $objInfraSequenciaDTO->setStrNome('md_pen_map_tipo_processo'); @@ -2655,27 +2263,10 @@ protected function instalarV3050() // novo tramite em bloco protected function instalarV3060() { - $objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance()); + new InfraMetaBD(BancoSEI::getInstance()); $objMetaBD = $this->objMeta; - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_bloco', - 'cols' => array( - 'id' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), - 'id_usuario' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), - 'descricao' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::SNULLO), - 'idx_bloco' => array($objMetaBD->tipoTextoVariavel(500), PenMetaBD::SNULLO), - 'sta_tipo' => array($objMetaBD->tipoTextoFixo(1), PenMetaBD::SNULLO), - 'sta_estado' => array($objMetaBD->tipoTextoFixo(1), PenMetaBD::SNULLO), - ), - 'pk' => array('cols' => array('id')), - 'uk' => array(), - 'fks' => array( - 'unidade' => array('nome' => 'fk_tramite_bloco_unidade', 'cols' => array('id_unidade', 'id_unidade')), - 'usuario' => array('nome' => 'fk_tramite_bloco_usuario', 'cols' => array('id_usuario', 'id_usuario')), - ) - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_bloco', 'cols' => ['id' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_unidade' => [$objMetaBD->tipoNumero(), PenMetaBD::SNULLO], 'id_usuario' => [$objMetaBD->tipoNumero(), PenMetaBD::SNULLO], 'descricao' => [$objMetaBD->tipoTextoVariavel(255), PenMetaBD::SNULLO], 'idx_bloco' => [$objMetaBD->tipoTextoVariavel(500), PenMetaBD::SNULLO], 'sta_tipo' => [$objMetaBD->tipoTextoFixo(1), PenMetaBD::SNULLO], 'sta_estado' => [$objMetaBD->tipoTextoFixo(1), PenMetaBD::SNULLO]], 'pk' => ['cols' => ['id']], 'uk' => [], 'fks' => ['unidade' => ['nome' => 'fk_tramite_bloco_unidade', 'cols' => ['id_unidade', 'id_unidade']], 'usuario' => ['nome' => 'fk_tramite_bloco_usuario', 'cols' => ['id_usuario', 'id_usuario']]]]); # Criar sequencia para tramite em bloco @@ -2684,7 +2275,7 @@ protected function instalarV3060() //Sequência: md_pen_seq_tramita_em_bloco $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_bloco'); - $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + $numMaxId = $rs[0]['total'] ?? 0; BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_bloco', $numMaxId + 1); $objInfraSequenciaDTO->setStrNome('md_pen_bloco'); @@ -2692,25 +2283,11 @@ protected function instalarV3060() $arrObjInfraSequenciaDTO = $objInfraSequenciaRN->listar($objInfraSequenciaDTO); $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO); - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_bloco_protocolo', - 'cols' => array( - 'id' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_protocolo' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'id_tramita_em_bloco' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'sequencia' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), - 'idx_rel_bloco_protocolo' => array($objMetaBD->tipoTextoVariavel(4000), PenMetaBD::SNULLO), - ), - 'pk' => array('cols' => array('id')), - 'uk' => array('id_protocolo', 'id_tramita_em_bloco', 'sequencia'), - 'fks' => array( - 'protocolo' => array('nome' => 'fk_bloco_protocolo', 'cols' => array('id_protocolo', 'id_protocolo')), - ) - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_bloco_protocolo', 'cols' => ['id' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'id_protocolo' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'id_tramita_em_bloco' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'sequencia' => [$objMetaBD->tipoNumero(), PenMetaBD::SNULLO], 'idx_rel_bloco_protocolo' => [$objMetaBD->tipoTextoVariavel(4000), PenMetaBD::SNULLO]], 'pk' => ['cols' => ['id']], 'uk' => ['id_protocolo', 'id_tramita_em_bloco', 'sequencia'], 'fks' => ['protocolo' => ['nome' => 'fk_bloco_protocolo', 'cols' => ['id_protocolo', 'id_protocolo']]]]); //Sequência: md_pen_bloco_protocolo $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_bloco_protocolo'); - $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + $numMaxId = $rs[0]['total'] ?? 0; BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_bloco_protocolo', $numMaxId + 1); $objInfraSequenciaDTO->setStrNome('md_pen_bloco_protocolo'); @@ -2719,21 +2296,10 @@ protected function instalarV3060() $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO); //Envio parcial - $objInfraBanco = BancoSEI::getInstance(); + BancoSEI::getInstance(); $objMetaBD = $this->objMeta; - $objMetaBD->criarTabela(array( - 'tabela' => 'md_pen_envio_comp_digitais', - 'cols' => array( - 'id_comp_digitais' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'id_estrutura' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), - 'str_estrutura' => array($objMetaBD->tipoTextoGrande(), PenMetaBD::NNULLO), - 'id_unidade_pen' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), - 'str_unidade_pen' => array($objMetaBD->tipoTextoGrande(), PenMetaBD::SNULLO), - ), - 'pk' => array('cols' => array('id_comp_digitais')), - 'uk' => array('id_estrutura', 'id_unidade_pen'), - )); + $objMetaBD->criarTabela(['tabela' => 'md_pen_envio_comp_digitais', 'cols' => ['id_comp_digitais' => [$objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'id_estrutura' => [$objMetaBD->tipoNumero(), PenMetaBD::NNULLO], 'str_estrutura' => [$objMetaBD->tipoTextoGrande(), PenMetaBD::NNULLO], 'id_unidade_pen' => [$objMetaBD->tipoNumero(), PenMetaBD::SNULLO], 'str_unidade_pen' => [$objMetaBD->tipoTextoGrande(), PenMetaBD::SNULLO]], 'pk' => ['cols' => ['id_comp_digitais']], 'uk' => ['id_estrutura', 'id_unidade_pen']]); # Criar sequencia para tramite em bloco @@ -2742,7 +2308,7 @@ protected function instalarV3060() //Sequência: md_pen_seq_tramita_em_bloco $rs = BancoSEI::getInstance()->consultarSql('select max(id_comp_digitais) as total from md_pen_envio_comp_digitais'); - $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + $numMaxId = $rs[0]['total'] ?? 0; BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_envio_comp_digitais', $numMaxId + 1); $objInfraSequenciaDTO->setStrNome('md_pen_envio_comp_digitais'); @@ -2753,7 +2319,7 @@ protected function instalarV3060() //Inserir Componentes Digitais no Banco de acordo com os parâmetros do ConfiguracaoModPEN.php $arrObjEnviarDocumentosPendentes = ConfiguracaoModPEN::getInstance()->getValor("PEN", "EnviarApenasComponentesDigitaisPendentes", false); $objParamEnviarDocumentosPendentes = !is_null($arrObjEnviarDocumentosPendentes) ? $arrObjEnviarDocumentosPendentes : false; - $objSessaoSEI = SessaoSEI::getInstance(); + SessaoSEI::getInstance(); $objPenRestricaoEnvioComponentesDigitaisRN = new PenRestricaoEnvioComponentesDigitaisRN(); $objRestricaoEnvioComponentesDigitaisDTO = new PenRestricaoEnvioComponentesDigitaisDTO(); @@ -2777,10 +2343,6 @@ protected function instalarV3060() } } catch (Exception $e) { throw new InfraException("Erro na parametrização EnviarApenasComponentesDigitaisPendentes em ConfiguraçãoModPEN.php"); - try { - LogSEI::getInstance()->gravar(InfraException::inspecionar($e)); - } catch (Exception $e) { - } } } } @@ -2805,22 +2367,7 @@ protected function instalarV3070() // Remoção de coluna sin_padrao da tabela md_pen_rel_doc_map_enviado $this->logar("CRIANDO TABELA DE CONFIGURACAO PARA RESTRICAO "); - $objMetaRestricaoBD->criarTabela(array( - 'tabela' => 'md_pen_uni_restr', - 'cols' => array( - 'id' => array($objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'id_unidade' => array($objMetaRestricaoBD->tipoNumero(), PenMetaBD::NNULLO), - 'id_unidade_rh' => array($objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'id_unidade_restricao' => array($objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::NNULLO), - 'nome_unidade_restricao' => array($objMetaRestricaoBD->tipoTextoVariavel(255), PenMetaBD::SNULLO), - 'id_unidade_rh_restricao' => array($objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::SNULLO), - 'nome_unidade_rh_restricao' => array($objMetaRestricaoBD->tipoTextoVariavel(255), PenMetaBD::SNULLO), - ), - 'pk' => array('cols' => array('id')), - 'fks' => array( - 'unidade' => array('id_unidade', 'id_unidade') - ) - )); + $objMetaRestricaoBD->criarTabela(['tabela' => 'md_pen_uni_restr', 'cols' => ['id' => [$objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'id_unidade' => [$objMetaRestricaoBD->tipoNumero(), PenMetaBD::NNULLO], 'id_unidade_rh' => [$objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'id_unidade_restricao' => [$objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::NNULLO], 'nome_unidade_restricao' => [$objMetaRestricaoBD->tipoTextoVariavel(255), PenMetaBD::SNULLO], 'id_unidade_rh_restricao' => [$objMetaRestricaoBD->tipoNumeroGrande(), PenMetaBD::SNULLO], 'nome_unidade_rh_restricao' => [$objMetaRestricaoBD->tipoTextoVariavel(255), PenMetaBD::SNULLO]], 'pk' => ['cols' => ['id']], 'fks' => ['unidade' => ['id_unidade', 'id_unidade']]]); // Criando nova sequência $objInfraSequenciaRestricaoRN = new InfraSequenciaRN(); @@ -2890,7 +2437,7 @@ protected function instalarV3070() //Sequência: md_pen_seq_lote $rs = BancoSEI::getInstance()->consultarSql('select max(id_bloco_processo) as total from md_pen_bloco_processo'); - $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + $numMaxId = $rs[0]['total'] ?? 0; $objInfraBanco->criarSequencialNativa('md_pen_seq_bloco_processo', $numMaxId + 1); $objInfraSequenciaDTO->setStrNome('md_pen_seq_bloco_processo'); $objInfraSequenciaDTO->retStrNome(); @@ -2915,8 +2462,8 @@ protected function instalarV3070() $objMetaBD->adicionarColuna('md_pen_bloco_processo', 'id_atividade_expedicao', $objMetaBD->tipoTextoVariavel(4000), $SNULLO); $objMetaBD->adicionarColuna('md_pen_bloco_processo', 'tentativas', $objMetaBD->tipoNumero(), $SNULLO); - $objMetaBD->adicionarChaveEstrangeira("fk_md_pen_bloco_proc_procedi", "md_pen_bloco_processo", array('id_protocolo'), "protocolo", array('id_protocolo'), false); - $objMetaBD->adicionarChaveEstrangeira("fk_md_pen_bloco_processo_bl", "md_pen_bloco_processo", array('id_bloco'), "md_pen_bloco", array('id'), false); + $objMetaBD->adicionarChaveEstrangeira("fk_md_pen_bloco_proc_procedi", "md_pen_bloco_processo", ['id_protocolo'], "protocolo", ['id_protocolo'], false); + $objMetaBD->adicionarChaveEstrangeira("fk_md_pen_bloco_processo_bl", "md_pen_bloco_processo", ['id_bloco'], "md_pen_bloco", ['id'], false); //Adicionar coluna para ordenar blocos por unidade $objMetaBD->adicionarColuna('md_pen_bloco', 'ordem', $objMetaBD->tipoNumero(10), PenMetaBD::NNULLO); @@ -3085,11 +2632,7 @@ private function removerTabelas($tabelas) $objVersaoSeiRN->setStrNome('Integração Tramita GOV.BR'); $objVersaoSeiRN->setStrVersaoAtual(PENIntegracao::VERSAO_MODULO); $objVersaoSeiRN->setStrParametroVersao($strNomeParametro); - $objVersaoSeiRN->setArrVersoes(array( - '0.0.0' => 'versao_0_0_0', - $strVersaoModuloPen => 'atualizarVersaoCompatibilidade', - PENIntegracao::VERSAO_MODULO => 'atualizarVersaoCompatibilidade', - )); + $objVersaoSeiRN->setArrVersoes(['0.0.0' => 'versao_0_0_0', $strVersaoModuloPen => 'atualizarVersaoCompatibilidade', PENIntegracao::VERSAO_MODULO => 'atualizarVersaoCompatibilidade']); $objVersaoSeiRN->setStrVersaoInfra("1.583.4"); diff --git a/src/scripts/sip_atualizar_versao_modulo_pen.php b/src/scripts/sip_atualizar_versao_modulo_pen.php index dc2692ba4..7b3d667c2 100755 --- a/src/scripts/sip_atualizar_versao_modulo_pen.php +++ b/src/scripts/sip_atualizar_versao_modulo_pen.php @@ -56,8 +56,8 @@ class PenAtualizarSipRN extends InfraRN const PARAMETRO_VERSAO_MODULO = 'VERSAO_MODULO_PEN'; protected $versaoMinRequirida = '1.30.0'; - private $arrRecurso = array(); - private $arrMenu = array(); + private $arrRecurso = []; + private $arrMenu = []; public function __construct() { @@ -70,10 +70,8 @@ protected function inicializarObjInfraIBanco() } /** - * Inicia o script criando um contator interno do tempo de execução - * - * @return null - */ + * Inicia o script criando um contator interno do tempo de execução + */ protected function inicializar($strTitulo) { InfraDebug::getInstance()->setBolLigado(true); @@ -322,10 +320,8 @@ protected function atualizarVersaoConectado() /** - * Finaliza o script informando o tempo de execução. - * - * @return null - */ + * Finaliza o script informando o tempo de execução. + */ protected function finalizar($strMsg = null, $bolErro = false) { if (!$bolErro) { @@ -346,10 +342,8 @@ protected function finalizar($strMsg = null, $bolErro = false) } /** - * Adiciona uma mensagem ao output para o usuário - * - * @return null - */ + * Adiciona uma mensagem ao output para o usuário + */ protected function logar($strMsg) { InfraDebug::getInstance()->gravar($strMsg); @@ -487,7 +481,7 @@ protected function consultarItemMenu($numIdSistema, $strNomeRecurso) throw new InfraException("Item de menu não pode ser localizado."); } - return array($objItemMenuDTO->getNumIdItemMenu(), $objItemMenuDTO->getNumIdMenu(), $numIdRecurso); + return [$objItemMenuDTO->getNumIdItemMenu(), $objItemMenuDTO->getNumIdMenu(), $numIdRecurso]; } /** * Cria um novo menu lateral para o sistema SEI @@ -525,7 +519,7 @@ protected function criarMenu($strRotulo, $numSequencia, $numIdItemMenuPai, $numI } if (!empty($numIdRecurso)) { - $this->arrMenu[] = array($objDTO->getNumIdItemMenu(), $numIdMenu, $numIdRecurso); + $this->arrMenu[] = [$objDTO->getNumIdItemMenu(), $numIdMenu, $numIdRecurso]; } return $objDTO->getNumIdItemMenu(); @@ -565,7 +559,7 @@ public function addMenusToPerfil($numIdPerfil, $numIdSistema) foreach ($this->arrMenu as $array) { - list($numIdItemMenu, $numIdMenu, $numIdRecurso) = $array; + [$numIdItemMenu, $numIdMenu, $numIdRecurso] = $array; $objDTO->setNumIdPerfil($numIdPerfil); $objDTO->setNumIdSistema($numIdSistema); @@ -587,7 +581,7 @@ public function atribuirPerfil($numIdSistema) $objRN = $this; // Vincula a um perfil os recursos e menus adicionados nos métodos criarMenu e criarReturso - $fnCadastrar = function ($strNome, $numIdSistema) use ($objDTO, $objBD, $objRN) { + $fnCadastrar = function ($strNome, $numIdSistema) use ($objDTO, $objBD, $objRN): void { $objDTO->unSetTodos(); $objDTO->setNumIdSistema($numIdSistema); @@ -616,7 +610,7 @@ public function atribuirPerfil($numIdSistema) private function atualizarNumeroVersao($parStrNumeroVersao) { $objInfraParametroDTO = new InfraParametroDTO(); - $objInfraParametroDTO->setStrNome(array(self::PARAMETRO_VERSAO_MODULO, self::PARAMETRO_VERSAO_MODULO_ANTIGO), InfraDTO::$OPER_IN); + $objInfraParametroDTO->setStrNome([self::PARAMETRO_VERSAO_MODULO, self::PARAMETRO_VERSAO_MODULO_ANTIGO], InfraDTO::$OPER_IN); $objInfraParametroDTO->retTodos(); $objInfraParametroBD = new InfraParametroBD(BancoSip::getInstance()); $arrObjInfraParametroDTO = $objInfraParametroBD->listar($objInfraParametroDTO); @@ -1163,14 +1157,7 @@ private function instalarV111() $this->renomearRecurso($numIdSistema, 'apensados_selecionar_expedir_procedimento', 'pen_apensados_selecionar_expedir_procedimento'); //Atualização com recursos não adicionados automaticamente em versões anteriores - $this->arrRecurso = array_merge($this->arrRecurso, array( - $this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_envio_alterar"), - $this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_envio_excluir"), - $this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_recebimento_alterar"), - $this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_recebimento_excluir"), - $this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_recebimento_visualizar"), - $this->consultarRecurso($numIdSistema, "pen_parametros_configuracao_alterar") - )); + $this->arrRecurso = array_merge($this->arrRecurso, [$this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_envio_alterar"), $this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_envio_excluir"), $this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_recebimento_alterar"), $this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_recebimento_excluir"), $this->consultarRecurso($numIdSistema, "pen_map_tipo_documento_recebimento_visualizar"), $this->consultarRecurso($numIdSistema, "pen_parametros_configuracao_alterar")]); $this->atribuirPerfil($numIdSistema); @@ -1190,10 +1177,7 @@ private function instalarV111() $objRelPerfilRecursoDTO->retTodos(); $objRelPerfilRecursoDTO->setNumIdSistema($numIdSistema); $objRelPerfilRecursoDTO->setNumIdPerfil($numIdPerfilSeiAdministrador); - $arrRecursosRemoverAdministrador = array( - $this->consultarRecurso($numIdSistema, "pen_procedimento_expedido_listar"), - $this->consultarRecurso($numIdSistema, "pen_procedimento_expedir"), - ); + $arrRecursosRemoverAdministrador = [$this->consultarRecurso($numIdSistema, "pen_procedimento_expedido_listar"), $this->consultarRecurso($numIdSistema, "pen_procedimento_expedir")]; $objRelPerfilRecursoDTO->setNumIdRecurso($arrRecursosRemoverAdministrador, InfraDTO::$OPER_IN); $objRelPerfilRecursoRN = new RelPerfilRecursoRN(); $objRelPerfilRecursoRN->excluir($objRelPerfilRecursoRN->listar($objRelPerfilRecursoDTO)); @@ -1209,7 +1193,7 @@ private function instalarV119() { /* Corrige nome de menu de trâmite de documentos */ $numIdSistema = $this->getNumIdSistema('SEI'); - $numIdMenuPai = $this->getNumIdMenu('Principal', $numIdSistema); + $this->getNumIdMenu('Principal', $numIdSistema); //Corrige nome do recurso $objRecursoDTO = new RecursoDTO(); @@ -1490,14 +1474,9 @@ private function instalarV2000_beta1() ScriptSip::adicionarItemMenu($numIdSistemaSei, $numIdPerfilSeiAdministrador, $numIdMenuSEI, $numIdItemMenuMapeamento, $numIdRecursoMapRecebimentoListar, "Recebimento", 20); // Redefinir ordem de apresentação dos menus de administração do módulo - $arrOrdemMenusAdministracaoPEN = array( - array("rotulo" => "Parâmetros de Configuração", "sequencia" => 10, "rotuloMenuSuperior" => "Processo Eletrônico Nacional"), - array("rotulo" => "Mapeamento de Tipos de Documentos", "sequencia" => 20, "rotuloMenuSuperior" => "Processo Eletrônico Nacional"), - array("rotulo" => "Mapeamento de Unidades", "sequencia" => 30, "rotuloMenuSuperior" => "Processo Eletrônico Nacional"), - array("rotulo" => "Mapeamento de Hipóteses Legais", "sequencia" => 40, "rotuloMenuSuperior" => "Processo Eletrônico Nacional"), - ); + $arrOrdemMenusAdministracaoPEN = [["rotulo" => "Parâmetros de Configuração", "sequencia" => 10, "rotuloMenuSuperior" => "Processo Eletrônico Nacional"], ["rotulo" => "Mapeamento de Tipos de Documentos", "sequencia" => 20, "rotuloMenuSuperior" => "Processo Eletrônico Nacional"], ["rotulo" => "Mapeamento de Unidades", "sequencia" => 30, "rotuloMenuSuperior" => "Processo Eletrônico Nacional"], ["rotulo" => "Mapeamento de Hipóteses Legais", "sequencia" => 40, "rotuloMenuSuperior" => "Processo Eletrônico Nacional"]]; - array_map(function ($item) use ($numIdSistemaSei, $numIdMenuSEI) { + array_map(function ($item) use ($numIdSistemaSei, $numIdMenuSEI): void { $objItemMenuRN = new ItemMenuRN(); $numIdItemMenuPai = ScriptSip::obterIdItemMenu($numIdSistemaSei, $numIdMenuSEI, $item["rotuloMenuSuperior"]); @@ -1740,7 +1719,7 @@ protected function instalarV30112() protected function instalarV30113() { - $atualizarIconeMenu = function ($numIdSistema, $numIdMenuPai, $strNomeRecurso, $strIcone, $numSequencia) { + $atualizarIconeMenu = function ($numIdSistema, $numIdMenuPai, $strNomeRecurso, $strIcone, $numSequencia): void { $objRecursoDTO = new RecursoDTO(); $objRecursoDTO->setNumIdSistema($numIdSistema); $objRecursoDTO->setStrNome($strNomeRecurso); @@ -1990,7 +1969,7 @@ protected function instalarV3060() $numIdRecurso1 = $this->criarRecurso('pen_procedimento_expedido_listar', 'Tramita GOV.BR', $numIdSistema); $numIdRecurso2 = $this->criarRecurso('md_pen_tramita_em_bloco', 'Blocos de Trâmite Externo', $numIdSistema); $numIdRecurso3 = $this->criarRecurso('pen_procedimento_expedido_listar', 'Processos Tramitados Externamente', $numIdSistema); - $numIdRecurso4 = $this->criarRecurso('pen_expedir_lote_listar', 'Processos Tramitados em Bloco', $numIdSistema); + $this->criarRecurso('pen_expedir_lote_listar', 'Processos Tramitados em Bloco', $numIdSistema); $this->criarRecurso('md_pen_tramita_em_bloco_cadastrar', 'Cadastrar Bloco de Tramite Externo', $numIdSistema); $this->criarRecurso('md_pen_tramita_em_bloco_alterar', 'Alterar Descrição do bloco de Tramite Externo', $numIdSistema); @@ -2237,11 +2216,7 @@ private function excluirRelPerfilItemMenu($numIdPerfil, $numIdRecurso, $numIdMen $objVersaoSipRN->setStrNome(PenAtualizarSipRN::NOME_MODULO); $objVersaoSipRN->setStrParametroVersao(PenAtualizarSipRN::PARAMETRO_VERSAO_MODULO); $objVersaoSipRN->setArrVersoes( - array( - '0.0.0' => 'versao_0_0_0', - $strVersaoModuloPen => 'atualizarVersaoCompatibilidade', - VERSAO_MODULO_PEN => 'atualizarVersaoCompatibilidade', - ) + ['0.0.0' => 'versao_0_0_0', $strVersaoModuloPen => 'atualizarVersaoCompatibilidade', VERSAO_MODULO_PEN => 'atualizarVersaoCompatibilidade'] ); $objVersaoSipRN->setStrVersaoAtual(VERSAO_MODULO_PEN); diff --git a/src/scripts/verifica_instalacao_modulo_pen.php b/src/scripts/verifica_instalacao_modulo_pen.php index 88acc8025..298e386ec 100755 --- a/src/scripts/verifica_instalacao_modulo_pen.php +++ b/src/scripts/verifica_instalacao_modulo_pen.php @@ -12,7 +12,7 @@ $resultado = 0; - $fnPrint = function($strMensagem, $numIdentacao = 0) { + $fnPrint = function($strMensagem, $numIdentacao = 0): void { DebugPen::getInstance()->gravar($strMensagem, $numIdentacao, false, false); }; diff --git a/src/sei_desbloquear_processo_manual.php b/src/sei_desbloquear_processo_manual.php index 40547b6ef..3a4f91fb5 100755 --- a/src/sei_desbloquear_processo_manual.php +++ b/src/sei_desbloquear_processo_manual.php @@ -14,29 +14,29 @@ try { require_once DIR_SEI_WEB.'/SEI.php'; - + $objPenConsoleRN = new PenConsoleRN(); $arrArgs = $objPenConsoleRN->getTokens(); - + $objAtualizarRN = new PenAtualizarSeiRN($arrArgs); $objAtualizarRN->atualizarVersao(); exit(0); } catch(InfraException $e){ - + print $e->getStrDescricao().PHP_EOL; } catch(Exception $e) { - + print InfraException::inspecionar($e); - + try { LogSEI::getInstance()->gravar(InfraException::inspecionar($e)); } catch (Exception $e) { - + } - + exit(1); } From 79f3e22950b8f6a43787787054055679305d1edf Mon Sep 17 00:00:00 2001 From: mateussbh Date: Wed, 22 Jan 2025 15:46:12 -0300 Subject: [PATCH 24/26] =?UTF-8?q?fix:=20Bloqueia=20tr=C3=A2mite=20de=20pro?= =?UTF-8?q?cessos=20no=20SEI=20Federa=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close #770 #758. --- src/rn/ExpedirProcedimentoRN.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/rn/ExpedirProcedimentoRN.php b/src/rn/ExpedirProcedimentoRN.php index 7e80ba3ec..18c9faf75 100755 --- a/src/rn/ExpedirProcedimentoRN.php +++ b/src/rn/ExpedirProcedimentoRN.php @@ -1799,6 +1799,7 @@ public function consultarProcedimento($numIdProcedimento) $objProcedimentoDTO->retDblIdProcedimento(); $objProcedimentoDTO->retNumIdHipoteseLegalProtocolo(); $objProcedimentoDTO->retStrProtocoloProcedimentoFormatadoPesquisa(); + $objProcedimentoDTO->retStrIdProtocoloFederacaoProtocolo(); return $this->objProcedimentoRN->consultarRN0201($objProcedimentoDTO); } @@ -2428,7 +2429,7 @@ private function validarAssinaturas(InfraException $objInfraException, $objProce private function validarProcedimentoCompartilhadoSeiFederacao(InfraException $objInfraException, $objProcedimentoDTO, $strAtributoValidacao) { $bolProcedimentoCompartilhado = false; $objProtocoloFederacaoDTO = new ProtocoloFederacaoDTO(); - $objProtocoloFederacaoDTO->setStrProtocoloFormatadoPesquisa($objProcedimentoDTO->getStrProtocoloProcedimentoFormatadoPesquisa()); + $objProtocoloFederacaoDTO->setStrIdProtocoloFederacao($objProcedimentoDTO->getStrIdProtocoloFederacaoProtocolo()); $objProtocoloFederacaoDTO->retStrProtocoloFormatado(); $objProtocoloFederacaoRN = new ProtocoloFederacaoRN(); From 0b1f2cee2126d4c3e306e5fdf71f258820765502 Mon Sep 17 00:00:00 2001 From: mateussbh Date: Wed, 22 Jan 2025 18:53:44 -0300 Subject: [PATCH 25/26] =?UTF-8?q?chore:=20prepara=C3=A7=C3=A3o=20para=20a?= =?UTF-8?q?=20release=204.0.0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 1 + composer.json | 13 ++--- docs/changelogs/CHANGELOG-4.0.0.md | 57 +++++++++++++++++++ src/PENIntegracao.php | 2 +- .../sei_atualizar_versao_modulo_pen.php | 12 ++++ .../sip_atualizar_versao_modulo_pen.php | 14 ++++- 6 files changed, 88 insertions(+), 11 deletions(-) create mode 100644 docs/changelogs/CHANGELOG-4.0.0.md diff --git a/Makefile b/Makefile index f2e2fd0d7..49e1608d8 100755 --- a/Makefile +++ b/Makefile @@ -101,6 +101,7 @@ dist: @mkdir -p $(SEI_BIN_DIR) @mkdir -p $(SEI_MODULO_DIR) @mkdir -p $(SIP_SCRIPTS_DIR) + @php composer.phar install --no-dev @cp -R src/* $(SEI_MODULO_DIR)/ @cp docs/INSTALL.md dist/INSTALACAO.md @cp docs/UPGRADE.md dist/ATUALIZACAO.md diff --git a/composer.json b/composer.json index ceeb72c6a..e4eaed80f 100755 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "config": { - "vendor-dir": "./vendor", + "vendor-dir": "./src/vendor", "platform": { "php": "7.3.12" } @@ -9,14 +9,9 @@ "psr-4": { "Tests\\": "sei/" } - }, - "require-dev": { + }, + "require": { "php": "7.3.12", - "phpunit/phpunit": "*", - "squizlabs/php_codesniffer": "*", - "mockery/mockery": "^1.5", - "phpcompatibility/php-compatibility": "^9.3", - "pheromone/phpcs-security-audit": "*", - "rector/rector": "^1.2" + "guzzlehttp/guzzle": "^7.0" } } \ No newline at end of file diff --git a/docs/changelogs/CHANGELOG-4.0.0.md b/docs/changelogs/CHANGELOG-4.0.0.md new file mode 100644 index 000000000..718bcf0e5 --- /dev/null +++ b/docs/changelogs/CHANGELOG-4.0.0.md @@ -0,0 +1,57 @@ +# NOTAS DE VERSÃO MOD-SEI-PEN (versão 4.0.0) + +Este documento descreve as principais mudanças aplicadas nesta versão do módulo de integração do SEI com o TRAMITA.GOV.BR. + +As melhorias entregues em cada uma das versões são cumulativas, ou seja, contêm todas as implementações realizadas em versões anteriores. + +## Compatibilidade de versões +* O módulo é compatível com a seguinte versão do **SEI**: + * SEI 5.0.0 + +Para maiores informações sobre os procedimentos de instalação ou atualização, acesse os seguintes documentos localizados no pacote de distribuição mod-sei-pen-VERSAO.zip: +> Atenção: É impreterível seguir rigorosamente o disposto no README.md do Módulo para instalação ou atualização com sucesso. +* **INSTALACAO.md** - Procedimento de instalação e configuração do módulo +* **ATUALIZACAO.md** - Procedimento específicos para atualização de uma versão anterior + +### Lista de melhorias e correções de problemas + +Todas as atualizações podem incluir itens referentes à segurança, requisito em permanente monitoramento e evolução, motivo pelo qual a atualização com a maior brevidade possível é sempre recomendada. + +#### **MELHORIAS** + +#### As melhorias implementadas nesta versão incluem: + +* **Compatibilidade com o SEI v.5.0.0:** Compatibilização do Tramita com o módulo SEI v. 5.0.0 [#764](https://github.com/pengovbr/mod-sei-pen/issues/764); + + +Para obter informações detalhadas sobre cada um dos passos de atualização, vide arquivo **ATUALIZACAO.md**. + +#### Instruções + +1. Baixar a última versão do módulo de instalação do sistema (arquivo `mod-sei-pen-[VERSÃO].zip`) localizado na página de [Releases do projeto MOD-SEI-PEN](https://github.com/spbgovbr/mod-sei-pen/releases), seção **Assets**. _Somente usuários autorizados previamente pela Coordenação-Geral do Processo Eletrônico Nacional podem ter acesso às versões._ + +2. Fazer backup dos diretórios "sei", "sip" e "infra" do servidor web; + +3. Descompactar o pacote de instalação `mod-sei-pen-[VERSÃO].zip`; + +4. Copiar os diretórios descompactados "sei", "sip" para os servidores, sobrescrevendo os arquivos existentes; + +5. Executar o script de instalação/atualização `sei_atualizar_versao_modulo_pen.php` do módulo para o SEI localizado no diretório `sei/scripts/mod-pen/` + +```bash +php -c /etc/php.ini /sei/scripts/mod-pen/sei_atualizar_versao_modulo_pen.php +``` + +6. Executar o script de instalação/atualização `sip_atualizar_versao_modulo_pen.php` do módulo para o SIP localizado no diretório `sip/scripts/mod-pen/` + +```bash +php -c /etc/php.ini /sip/scripts/mod-pen/sip_atualizar_versao_modulo_pen.php +``` + +7. Verificar a correta instalação e configuração do módulo + +Para executar a verificação, execute o script ```verifica_instalacao_modulo_pen.php``` localizado no diretório de scripts do SEI ```/sei/scripts/mod-pen/```. + +```bash +$ php -c /etc/php.ini /sei/scripts/mod-pen/verifica_instalacao_modulo_pen.php +``` diff --git a/src/PENIntegracao.php b/src/PENIntegracao.php index dbf24423c..cf6172c71 100755 --- a/src/PENIntegracao.php +++ b/src/PENIntegracao.php @@ -1,7 +1,7 @@ instalarV3062(); case '3.6.2': $this->instalarV3070(); + case '3.7.0': + $this->instalarV3080(); + case '3.8.0': + $this->instalarV4000(); break; // Ausência de [break;] proposital para realizar a atualização incremental de versões default: @@ -2535,6 +2539,14 @@ protected function instalarV3070() $this->atualizarNumeroVersao("3.7.0"); } + protected function instalarV3080(){ + $this->atualizarNumeroVersao("3.8.0"); + } + + protected function instalarV4000(){ + $this->atualizarNumeroVersao("4.0.0"); + } + /** * Remover blocos legados * diff --git a/src/scripts/sip_atualizar_versao_modulo_pen.php b/src/scripts/sip_atualizar_versao_modulo_pen.php index 7b3d667c2..6c31625c9 100755 --- a/src/scripts/sip_atualizar_versao_modulo_pen.php +++ b/src/scripts/sip_atualizar_versao_modulo_pen.php @@ -1,7 +1,7 @@ instalarV3062(); case '3.6.2': $this->instalarV3070(); + case '3.7.0': + $this->instalarV3080(); + case '3.8.0': + $this->instalarV4000(); break; // Ausência de [break;] proposital para realizar a atualização incremental de versões default: @@ -2150,6 +2154,14 @@ protected function instalarV3070() $this->atualizarNumeroVersao("3.7.0"); } + protected function instalarV3080(){ + $this->atualizarNumeroVersao("3.8.0"); + } + + protected function instalarV4000(){ + $this->atualizarNumeroVersao("4.0.0"); + } + /** * Cadastrar item do menu em um perfil expecifico * From af7e3982f35353b60a1e18911378c126dcefc7fc Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Wed, 22 Jan 2025 18:19:06 -0300 Subject: [PATCH 26/26] =?UTF-8?q?fix:=20corre=C3=A7=C3=A3o=20de=20msg=20qu?= =?UTF-8?q?e=20aparece=20quando=20o=20tipo=20de=20processo=20n=C3=A3o=20ex?= =?UTF-8?q?iste=20no=20sistema=20de=20destino.=20#781.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cherry-pick do commit 8ef34675872da766ce79fa651fd5d3ffa03d1c68 da master. --- src/rn/ReceberProcedimentoRN.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index c21546a97..f5a4ae484 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -1344,10 +1344,10 @@ private function atribuirParticipantes(ProtocoloDTO $objProtocoloDTO, $arrObjInt } - private function obterTipoProcessoPadrao($numIdTipoProcedimento) { + private function obterTipoProcessoPadrao($numIdTipoProcedimento, $strTipoProcedimento) { if(!isset($numIdTipoProcedimento)){ - throw new InfraException('Parâmetro $numIdTipoProcedimento não informado.'); + throw new InfraException("Módulo do Tramita: O Tipo de Processo '{$strTipoProcedimento}' não existe no sistema de destino. OBS: A recusa é uma das três formas de conclusão de trâmite. Portanto, não é um erro"); } $objTipoProcedimentoDTO = new TipoProcedimentoDTO(); @@ -1450,7 +1450,7 @@ private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $ if(is_null($objTipoProcedimentoDTO)){ // Verifica tipo de processo padrão cadastrado $dblAlterouTipoProcesso = true; - $objTipoProcedimentoDTO = $this->obterTipoProcessoPadrao($numIdTipoProcedimento); + $objTipoProcedimentoDTO = $this->obterTipoProcessoPadrao($numIdTipoProcedimento, $strProcessoNegocio); } if (is_null($objTipoProcedimentoDTO)){ @@ -1508,7 +1508,7 @@ public function obterMapeamentoTipoProcesso($remetente, $destinatario, $strProce $objMapeamentoTipoProcedimentoDTO->setNumIdMapOrgao($objPenOrgaoExternoDTO->getDblId()); $objMapeamentoTipoProcedimentoDTO->setStrNomeTipoProcesso($strProcessoNegocio); $objMapeamentoTipoProcedimentoDTO->setStrAtivo('S'); - + $objMapeamentoTipoProcedimentoDTO->retNumIdTipoProcessoDestino(); $objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); @@ -1517,7 +1517,7 @@ public function obterMapeamentoTipoProcesso($remetente, $destinatario, $strProce if (!is_null($objMapeamentoTipoProcedimentoDTO) && !is_null($objMapeamentoTipoProcedimentoDTO->getNumIdTipoProcessoDestino())) { $idTipoProcessoDestino = $objMapeamentoTipoProcedimentoDTO->getNumIdTipoProcessoDestino(); - return $this->obterTipoProcessoPadrao($idTipoProcessoDestino); + return $this->obterTipoProcessoPadrao($idTipoProcessoDestino, $strProcessoNegocio); } }