diff --git a/src/rn/ExpedirProcedimentoRN.php b/src/rn/ExpedirProcedimentoRN.php index 66ea7193f..56b1d498f 100755 --- a/src/rn/ExpedirProcedimentoRN.php +++ b/src/rn/ExpedirProcedimentoRN.php @@ -589,7 +589,7 @@ public function construirProcessoREST($dblIdProcedimento, $arrIdProcessoApensado $objProcesso = $this->atribuirDadosInteressadosREST($objProcesso, $dblIdProcedimento); - // $this->adicionarProcessosApensadosREST($objProcesso, $arrIdProcessoApensado); + $this->adicionarProcessosApensadosREST($objProcesso, $arrIdProcessoApensado); $objProcesso = $this->atribuirDadosHistoricoREST($objProcesso, $dblIdProcedimento); @@ -870,8 +870,6 @@ private function atribuirProdutorProcessoREST($objProcesso, $dblIdProcedimento, throw new InfraException('Parâmetro $objProcesso não informado.'); } - // $objProcesso = []; - $objUsuarioProdutor = $this->consultarUsuario($dblIdProcedimento); if (isset($objUsuarioProdutor)) { // Dados do produtor do processo @@ -908,7 +906,7 @@ private function atribuirDadosInteressadosREST($objProcesso, $dblIdProcedimento) $arrParticipantesDTO = $this->listarInteressados($dblIdProcedimento); if (isset($arrParticipantesDTO) && count($arrParticipantesDTO) > 0) { - $objProcesso['interessados'] = []; + $objProcesso['interessados'] = array(); foreach ($arrParticipantesDTO as $participanteDTO) { $interessado = [ @@ -979,13 +977,13 @@ private function atribuirDocumentosREST($objProcesso, $dblIdProcedimento, $parOb $documento['retirado'] = true; } if($documentoDTO->getStrStaNivelAcessoLocalProtocolo() == ProtocoloRN::$NA_RESTRITO){ - $documento['hipoteseLegal'] = []; // Inicializando a chave 'hipoteseLegal' como um array + $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['dataHoraDeRegistro'] = $this->objProcessoEletronicoRN->converterDataWebService($documentoDTO->getDtaGeracaoProtocolo()); - $documento['produtor'] = []; // Inicializando a chave 'produtor' como um array + $documento['produtor'] = array(); // Inicializando a chave 'produtor' como um array $usuarioDTO = $this->consultarUsuario($documentoDTO->getNumIdUsuarioGeradorProtocolo()); if(isset($usuarioDTO)) { $documento['produtor']['nome'] = utf8_encode($this->objProcessoEletronicoRN->reduzirCampoTexto($usuarioDTO->getStrNome(), 150)); @@ -1293,62 +1291,6 @@ private function atribuirAssinaturaEletronica($objComponenteDigital, AssinaturaD } } - private function atribuirComponentesDigitais($objDocumento, DocumentoDTO $objDocumentoDTO, $dblIdProcedimento = null) - { - if(!isset($objDocumento)){ - throw new InfraException('Parâmetro $objDocumento não informado.'); - } - - 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(); - foreach ($arrObjDadosArquivos as $numOrdemComponente => $objDadosArquivos) { - - if(!isset($objDadosArquivos) || count($objDadosArquivos) == 0){ - throw new InfraException('Erro durante obtenção de informações sobre o componente digital do documento {$objDocumentoDTO->getStrProtocoloDocumentoFormatado()}.'); - } - - $strAlgoritmoHash = self::ALGORITMO_HASH_DOCUMENTO; - $hashDoComponenteDigital = $objDadosArquivos['HASH_CONTEUDO']; - $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 = utf8_encode($objDadosArquivos["NOME"]); - $objComponenteDigital->hash = new SoapVar("{$hashDoComponenteDigital}", XSD_ANYXML); - $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); - - if($objDadosArquivos['MIME_TYPE'] == 'outro'){ - $objComponenteDigital->dadosComplementaresDoTipoDeArquivo = $objDadosArquivos['dadosComplementaresDoTipoDeArquivo']; - } - - //TODO: Preencher dados complementares do tipo de arquivo - //$objComponenteDigital->dadosComplementaresDoTipoDeArquivo = ''; - - //TODO: Carregar informações da assinatura digital - //$this->atribuirAssinaturaEletronica($objComponenteDigital, $objDocumentoDTO); - - $objComponenteDigital->idAnexo = $objDadosArquivos['ID_ANEXO']; - - $objDocumento->componenteDigital[] = $objComponenteDigital; - } - - return $objDocumento; - } - private function atribuirComponentesDigitaisREST($objDocumento, DocumentoDTO $objDocumentoDTO, $dblIdProcedimento = null) { if(!isset($objDocumento)){ @@ -2078,20 +2020,10 @@ private function atribuirNumeracaoDocumentoREST($objDocumento, DocumentoDTO $par return $objDocumento; } - private function adicionarProcessosApensados($objProcesso, $arrIdProcessoApensado) - { - if(isset($arrIdProcessoApensado) && is_array($arrIdProcessoApensado) && count($arrIdProcessoApensado) > 0) { - $objProcesso->processoApensado = array(); - foreach($arrIdProcessoApensado as $idProcedimentoApensado) { - $objProcesso->processoApensado[] = $this->construirProcesso($idProcedimentoApensado); - } - } - } - private function adicionarProcessosApensadosREST($objProcesso, $arrIdProcessoApensado) { if (isset($arrIdProcessoApensado) && is_array($arrIdProcessoApensado) && count($arrIdProcessoApensado) > 0) { - $objProcesso['processoApensado'] = []; + $objProcesso['processoApensado'] = array(); foreach ($arrIdProcessoApensado as $idProcedimentoApensado) { $objProcesso['processoApensado'][] = $this->construirProcesso($idProcedimentoApensado); diff --git a/src/rn/ProcessoEletronicoRN.php b/src/rn/ProcessoEletronicoRN.php index 1bd3f0060..be18b3bc6 100755 --- a/src/rn/ProcessoEletronicoRN.php +++ b/src/rn/ProcessoEletronicoRN.php @@ -120,7 +120,7 @@ public function __construct() $this->strEnderecoWebService = $strEnderecoWebService; $parsed_url = parse_url($strEnderecoWebService); $base_url = $parsed_url['scheme'] . '://' . $parsed_url['host'] . '/'; - $this->strComumXSD = $base_url . 'interoperabilidade/soap/v3/?xsd=comum.xsd';; + $this->strComumXSD = $base_url . 'interoperabilidade/soap/v3/?xsd=comum.xsd'; $this->strLocalCert = $strLocalizacaoCertificadoDigital; $this->strLocalCertPassword = $strSenhaCertificadoDigital; $this->numTentativasErro = $numTentativasErro; @@ -176,8 +176,6 @@ private function getObjPenWs() $mensagem = "Falha de comunicação com o Tramita GOV.BR: " . $detalhes; throw new \Exception($mensagem); } - - // return $this->objPenWs; } @@ -685,7 +683,7 @@ private function tratarFalhaWebService(Exception $fault) } - public function construirCabecalhoREST($strNumeroRegistro, $idRepositorioOrigem, $idUnidadeOrigem, $idRepositorioDestino, + public function construirCabecalho($strNumeroRegistro, $idRepositorioOrigem, $idUnidadeOrigem, $idRepositorioDestino, $idUnidadeDestino, $urgente = false, $motivoUrgencia = 0, $enviarTodosDocumentos = false, $dblIdProcedimento = null) { @@ -891,7 +889,7 @@ public function enviarComponenteDigital($parametros) $conteudoByte = fread($conteudo, filesize($conteudo)); - + $endpoint = "tickets-de-envio-de-componente/{$idTicketDeEnvio}/protocolos/componentes-a-enviar?hashDoComponenteDigital={$hashDoComponenteDigital}&protocolo={$protocolo}"; $objConfiguracaoModPEN = ConfiguracaoModPEN::getInstance(); @@ -902,23 +900,23 @@ public function enviarComponenteDigital($parametros) $strClientGuzzle = new GuzzleHttp\Client([ 'base_uri' => $strBaseUri, - 'timeout' => 5.0, - 'cert' => [$strLocalizacaoCertificadoDigital, $strSenhaCertificadoDigital], - ]); - + 'timeout' => 5.0, + 'cert' => [$strLocalizacaoCertificadoDigital, $strSenhaCertificadoDigital], + ]); + $arrOptions = [ 'multipart' => [ - [ - 'name' => 'conteudo', + [ + 'name' => 'conteudo', 'contents' => $conteudoByte, 'filename' => 'conteudo' ], - ], - ]; - + ], + ]; + $response = $strClientGuzzle->request('PUT', $endpoint, $arrOptions); - + } catch (\Exception $e) { @@ -1432,9 +1430,9 @@ public function receberComponenteDigital($parNumIdentificacaoTramite, $parStrHas 'protocolo' => $parStrProtocolo, ]; - // if (!is_null($parObjParteComponente)) { - // $endpoint = "tramites/{$parNumIdentificacaoTramite}/protocolos/componentes-digitais/partes/{$parObjParteComponente}"; - // } + if (!is_null($parObjParteComponente)) { + $endpoint = "tramites/{$parNumIdentificacaoTramite}/protocolos/componentes-digitais/partes/{$parObjParteComponente}"; + } $this->post($endpoint, $identificacaoDoComponenteDigital); @@ -1700,7 +1698,6 @@ public function enviarReciboDeTramite($parNumIdTramite, $parDthRecebimento, $par $envioDeReciboDeTramite = [ 'dataDeRecebimento' => $parDthRecebimento, 'hashDaAssinatura' => $strHashDaAssinaturaBase64, - // 'hashDaAssinaturaAsBytes' => $strHashDaAssinaturaBase64 ]; $this->post($endpoint, $envioDeReciboDeTramite); diff --git a/tests_sei4/unitario/assets/config/ConfiguracaoModPEN.php b/tests_sei4/unitario/assets/config/ConfiguracaoModPEN.php index fbbf00c0c..044cba185 100755 --- a/tests_sei4/unitario/assets/config/ConfiguracaoModPEN.php +++ b/tests_sei4/unitario/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/ConfiguracaoModPEN.php b/tests_sei41/funcional/assets/config/ConfiguracaoModPEN.php index 754596b53..5898b5adf 100644 --- a/tests_sei41/funcional/assets/config/ConfiguracaoModPEN.php +++ b/tests_sei41/funcional/assets/config/ConfiguracaoModPEN.php @@ -37,7 +37,7 @@ public function getArrConfiguracoes() // 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/rest/v3/ - // - Produção: https://api.conectagov.processoeletronico.gov.br/interoperabilidade/soap/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 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..0aa485f9c --- a/tests_super/funcional/assets/config/ConfiguracaoModPEN.php +++ b/tests_super/funcional/assets/config/ConfiguracaoModPEN.php @@ -38,7 +38,7 @@ public function getArrConfiguracoes() // 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/", + "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