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 092088184..d3ffeeaa4 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 @@
-
-
-/**
- * Arquivo de configuração do Módulo de Integração do SEI com o Processo Eletrônico Nacional
- *
- * Seu desenvolvimento seguiu os mesmos padrões de configuração implementado pelo SEI e SIP e este
- * arquivo precisa ser adicionado à pasta de configurações do SEI para seu correto carregamento pelo módulo.
- */
-
-class ConfiguracaoModPEN extends InfraConfiguracao {
-
- private static $instance = null;
-
- /**
- * Obtém instância única (singleton) dos dados de configuração do módulo de integração com Barramento PEN
- *
- *
- * @return ConfiguracaoModPEN
- */
- public static function getInstance()
- {
- if (ConfiguracaoModPEN::$instance == null) {
- ConfiguracaoModPEN::$instance = new ConfiguracaoModPEN();
- }
- return ConfiguracaoModPEN::$instance;
- }
-
- /**
- * Definição dos parâmetros de configuração do módulo
- *
- * @return array
- */
- public function getArrConfiguracoes()
- {
- return array(
- "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/",
-
- // 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 @@
-
-
-/**
- * Arquivo de configuração do Módulo de Integração do SEI com o Processo Eletrônico Nacional
- *
- * Seu desenvolvimento seguiu os mesmos padrões de configuração implementado pelo SEI e SIP e este
- * arquivo precisa ser adicionado à pasta de configurações do SEI para seu correto carregamento pelo módulo.
- */
-
-class ConfiguracaoModPEN extends InfraConfiguracao {
-
- private static $instance = null;
-
- /**
- * Obtém instância única (singleton) dos dados de configuração do módulo de integração com Barramento PEN
- *
- *
- * @return ConfiguracaoModPEN
- */
- public static function getInstance()
- {
- if (ConfiguracaoModPEN::$instance == null) {
- ConfiguracaoModPEN::$instance = new ConfiguracaoModPEN();
- }
- return ConfiguracaoModPEN::$instance;
- }
-
- /**
- * Definição dos parâmetros de configuração do módulo
- *
- * @return array
- */
- public function getArrConfiguracoes()
- {
- return array(
- "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/",
-
- // 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 @@
-
-
-/**
- * Arquivo de configuração do Módulo de Integração do SEI com o Processo Eletrônico Nacional
- *
- * Seu desenvolvimento seguiu os mesmos padrões de configuração implementado pelo SEI e SIP e este
- * arquivo precisa ser adicionado à pasta de configurações do SEI para seu correto carregamento pelo módulo.
- */
-
-class ConfiguracaoModPEN extends InfraConfiguracao {
-
- private static $instance = null;
-
- /**
- * Obtém instância única (singleton) dos dados de configuração do módulo de integração com Barramento PEN
- *
- *
- * @return ConfiguracaoModPEN
- */
- public static function getInstance()
- {
- if (ConfiguracaoModPEN::$instance == null) {
- ConfiguracaoModPEN::$instance = new ConfiguracaoModPEN();
- }
- return ConfiguracaoModPEN::$instance;
- }
-
- /**
- * Definição dos parâmetros de configuração do módulo
- *
- * @return array
- */
- public function getArrConfiguracoes()
- {
- return array(
- "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/",
-
- // 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);
- }
-}