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 9f0d53bf8..696ff9da5 100755
--- a/src/rn/ExpedirProcedimentoRN.php
+++ b/src/rn/ExpedirProcedimentoRN.php
@@ -1080,6 +1080,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');
}
@@ -1449,12 +1452,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 385fac31d..83971fc0c 100755
--- a/src/rn/ProcessoEletronicoRN.php
+++ b/src/rn/ProcessoEletronicoRN.php
@@ -1622,12 +1622,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);
@@ -1646,8 +1651,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);
@@ -1656,19 +1661,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);
@@ -1736,7 +1740,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']);
@@ -2413,6 +2417,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;
@@ -2420,6 +2433,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 1230bf31e..7e472623c 100755
--- a/src/rn/ReceberProcedimentoRN.php
+++ b/src/rn/ReceberProcedimentoRN.php
@@ -2960,10 +2960,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());
+ }
+ }
+
}