objProcessoEletronicoRN = new ProcessoEletronicoRN(); $this->objParticipanteRN = new ParticipanteRN(); $this->objProcedimentoRN = new ProcedimentoRN(); $this->objProtocoloRN = new ProtocoloRN(); $this->objDocumentoRN = new DocumentoRN(); $this->objAtividadeRN = new AtividadeRN(); $this->objUsuarioRN = new UsuarioRN(); $this->objUnidadeRN = new UnidadeRN(); $this->objOrgaoRN = new OrgaoRN(); $this->objSerieRN = new SerieRN(); $this->objAnexoRN = new AnexoRN(); $this->objProcedimentoAndamentoRN = new ProcedimentoAndamentoRN(); $this->barraProgresso = new InfraBarraProgresso(); $this->barraProgresso->setNumMin(0); $this->barraProgresso->setNumMax(ProcessoEletronicoINT::NEE_EXPEDICAO_ETAPA_CONCLUSAO); } protected function inicializarObjInfraIBanco() { return BancoSEI::getInstance(); } public function listarRepositoriosDeEstruturas() { $dadosArray = array(); $arrObjRepositorioDTO = $this->objProcessoEletronicoRN->listarRepositoriosDeEstruturas(); foreach ($arrObjRepositorioDTO as $repositorio) { $dadosArray[$repositorio->getNumId()] = $repositorio->getStrNome(); } return $dadosArray; } public function consultarMotivosUrgencia() { return $this->objProcessoEletronicoRN->consultarMotivosUrgencia(); } public function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpedirProcedimentoDTO) { try { //Valida Permissao SessaoSEI::getInstance()->validarAuditarPermissao('pen_procedimento_expedir',__METHOD__, $objExpedirProcedimentoDTO); $dblIdProcedimento = $objExpedirProcedimentoDTO->getDblIdProcedimento(); $this->barraProgresso->exibir(); //Valida regras de negócio $this->barraProgresso->mover(ProcessoEletronicoINT::NEE_EXPEDICAO_ETAPA_VALIDACAO); $this->barraProgresso->setStrRotulo(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_VALIDACAO); $objInfraException = new InfraException(); //Carregamento dos dados de processo e documento para validação e expedição $objProcedimentoDTO = $this->consultarProcedimento($dblIdProcedimento); $objProcedimentoDTO->setArrObjDocumentoDTO($this->listarDocumentos($dblIdProcedimento)); $objProcedimentoDTO->setArrObjParticipanteDTO($this->listarInteressados($dblIdProcedimento)); $this->validarPreCondicoesExpedirProcedimento($objInfraException, $objProcedimentoDTO); $this->validarParametrosExpedicao($objInfraException, $objExpedirProcedimentoDTO); //Apresentação da mensagens de validação na janela da barra de progresso if($objInfraException->contemValidacoes()){ $this->barraProgresso->mover(0); $this->barraProgresso->setStrRotulo('Erro durante validação dos dados do processo.'); $objInfraException->lancarValidacoes(); } $this->barraProgresso->mover(ProcessoEletronicoINT::NEE_EXPEDICAO_ETAPA_PROCEDIMENTO); $this->barraProgresso->setStrRotulo(sprintf(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_PROCEDIMENTO, $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado())); //Construção dos cabecalho para envio do processo $objCabecalho = $this->construirCabecalho($objExpedirProcedimentoDTO); //Construção do processo para envio $objProcesso = $this->construirProcesso($dblIdProcedimento, $objExpedirProcedimentoDTO->getArrIdProcessoApensado()); try { $param = new stdClass(); $param->novoTramiteDeProcesso = new stdClass(); $param->novoTramiteDeProcesso->cabecalho = $objCabecalho; $param->novoTramiteDeProcesso->processo = $objProcesso; $novoTramite = $this->objProcessoEletronicoRN->enviarProcesso($param); } catch (\Exception $e) { throw new InfraException("Error Processing Request", $e); } $this->atualizarPenProtocolo($dblIdProcedimento); if (isset($novoTramite->dadosTramiteDeProcessoCriado)) { $objTramite = $novoTramite->dadosTramiteDeProcessoCriado; $this->objProcedimentoAndamentoRN->setOpts($dblIdProcedimento, $objTramite->IDT, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO)); try { $this->objProcedimentoAndamentoRN->cadastrar('Envio do metadados do processo', 'S'); $idAtividadeExpedicao = $this->bloquearProcedimentoExpedicao($objExpedirProcedimentoDTO, $objProcesso->idProcedimentoSEI); //$this->registrarAndamentoExpedicaoProcesso($objExpedirProcedimentoDTO, $objProcesso); $this->objProcessoEletronicoRN->cadastrarTramiteDeProcesso( $objProcesso->idProcedimentoSEI, $objTramite->NRE, $objTramite->IDT, $objTramite->dataHoraDeRegistroDoTramite, $objProcesso, $objTramite->ticketParaEnvioDeComponentesDigitais, $objTramite->componentesDigitaisSolicitados); $this->objProcessoEletronicoRN->cadastrarTramitePendente($objTramite->IDT, $idAtividadeExpedicao); //error_log('TRAMITE: ' . print_r($objTramite, true)); //error_log('before enviarComponentesDigitais'); //TODO: Erro no BARRAMENTO: Processo não pode ser enviado se possuir 2 documentos iguais(mesmo hash) //TODO: Melhoria no barramento de serviços. O método solicitar metadados não deixa claro quais os componentes digitais que //precisam ser baixados. No cenário de retorno de um processo existente, a única forma é consultar o status do trâmite para //saber quais precisam ser baixados. O processo poderia ser mais otimizado se o retorno nos metadados já informasse quais os //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); //error_log('after enviarComponentesDigitais'); //$strNumeroRegistro, $numIdTramite, $strProtocolo //error_log('==========================>>>>' . print_r($objTramite, true)); //TODO: Ao enviar o processo e seus documentos, necessário bloquear os documentos para alteração //pois eles já foram visualizados //$objDocumentoRN = new DocumentoRN(); //$objDocumentoRN->bloquearConsultado($objDocumentoRN->consultarRN0005($objDocumentoDTO)); //TODO: Implementar o registro de auditoria, armazenando os metadados xml enviados para o PEN //return ; # $this->enviarDocProdimentoTramite(); // $this->gravarAuditoria(__METHOD__ , $objExpedirProcedimentoDTO->getDblIdProcedimento()); //$this->bloquearProcesso($objExpedirProcedimentoDTO->getDblIdProcedimento()); #$this->enviarDocProdimentoTramite(); //return array('mensagem' => 'Processo em expedição!', 'retorno' => 1); //TODO: Alterar atualização para somente apresentar ao final de todo o trâmite $this->barraProgresso->mover(ProcessoEletronicoINT::NEE_EXPEDICAO_ETAPA_CONCLUSAO); $this->barraProgresso->setStrRotulo(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_CONCLUSAO); // @join_tec US008.06 (#23092) $this->objProcedimentoAndamentoRN->cadastrar('Concluído envio dos componentes do processo', 'S'); $this->receberReciboDeEnvio($objTramite->IDT); } catch (\Exception $e) { echo "
";
            var_dump($e);
            die("
"); $this->desbloquearProcessoExpedicao($objProcesso->idProcedimentoSEI); $this->registrarAndamentoExpedicaoAbortada($objProtocolo->idProcedimentoSEI); // @join_tec US008.06 (#23092) $this->objProcedimentoAndamentoRN->cadastrar('Concluído envio dos componentes do processo', 'N'); throw $e; } } } catch (\Exception $e) { throw new InfraException('Falha de comunicação com o Barramento de Serviços. Por favor, tente novamente mais tarde.', $e); } } private function registrarAndamentoExpedicaoProcesso($objExpedirProcedimentoDTO, $objProcesso) { //Processo expedido para a entidade @ENTIDADE_DESTINO@ - @REPOSITORIO_ESTRUTURA@ (@PROCESSO@, @UNIDADE@, @USUARIO@) //TODO: Atribuir atributos necessários para formação da mensagem do andamento //TODO: Especificar quais andamentos serão registrados $arrObjAtributoAndamentoDTO = array(); $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('REPOSITORIO_DESTINO'); $objAtributoAndamentoDTO->setStrValor($objExpedirProcedimentoDTO->getStrRepositorioDestino()); $objAtributoAndamentoDTO->setStrIdOrigem($objExpedirProcedimentoDTO->getNumIdRepositorioOrigem()); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO'); $objAtributoAndamentoDTO->setStrValor($objExpedirProcedimentoDTO->getStrUnidadeDestino()); $objAtributoAndamentoDTO->setStrIdOrigem($objExpedirProcedimentoDTO->getNumIdUnidadeDestino()); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('PROCESSO'); $objAtributoAndamentoDTO->setStrValor($objProcesso->protocolo); $objAtributoAndamentoDTO->setStrIdOrigem($objProcesso->idProcedimentoSEI); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; $objUnidadeDTO = new UnidadeDTO(); $objUnidadeDTO->retStrSigla(); $objUnidadeDTO->retStrDescricao(); $objUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objUnidadeDTO = $this->objUnidadeRN->consultarRN0125($objUnidadeDTO); $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('UNIDADE'); $objAtributoAndamentoDTO->setStrValor($objUnidadeDTO->getStrSigla().'¥'.$objUnidadeDTO->getStrDescricao()); $objAtributoAndamentoDTO->setStrIdOrigem(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; //TODO: Avaliar qual o usuário que deveria ser registrado no atributo andamento abaixo $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('USUARIO'); $objAtributoAndamentoDTO->setStrValor(SessaoSEI::getInstance()->getStrSiglaUsuario() . '¥' . SessaoSEI::getInstance()->getStrNomeUsuario()); $objAtributoAndamentoDTO->setStrIdOrigem(SessaoSEI::getInstance()->getNumIdUsuario()); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setDblIdProtocolo($objProcesso->idProcedimentoSEI); $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objAtividadeDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO); $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO); $objAtividadeRN = new AtividadeRN(); $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); //Registra andamento para processos apensados que foram expedidos if(isset($objProcesso->processoApensado) && is_array($objProcesso->processoApensado)) { foreach($objProcesso->processoApensado as $objProcessoApensado) { $this->registrarAndamentoExpedicaoProcesso($objExpedirProcedimentoDTO, $objProcessoApensado); } } } private function construirCabecalho(ExpedirProcedimentoDTO $objExpedirProcedimentoDTO) { if(!isset($objExpedirProcedimentoDTO)){ throw new InfraException('Parâmetro $objExpedirProcedimentoDTO não informado.'); } //Obtenção do número de registro eletrônico do processo $strNumeroRegistro = null; $objProcessoEletronicoBD = new ProcessoEletronicoBD($this->getObjInfraIBanco()); $objProcessoEletronicoDTO = new ProcessoEletronicoDTO(); $objProcessoEletronicoDTO->setDblIdProcedimento($objExpedirProcedimentoDTO->getDblIdProcedimento()); //TODO: Tratar situação de quando é localizado dois registros para o mesmo processo $objProcessoEletronicoDTO->setNumMaxRegistrosRetorno(1); $objProcessoEletronicoDTO->setOrd('IdProcedimento', InfraDTO::$TIPO_ORDENACAO_DESC); $objProcessoEletronicoDTO->retStrNumeroRegistro(); $objProcessoEletronicoDTO = $objProcessoEletronicoBD->consultar($objProcessoEletronicoDTO); if(isset($objProcessoEletronicoDTO)) { $strNumeroRegistro = $objProcessoEletronicoDTO->getStrNumeroRegistro(); } // Consultar se processo eletrônico existe no PEN algum trâmite CANCELADO, caso // sim deve ser gerada uma nova NRE, pois a atual será recusada pelo PEN quando // for enviado if(!InfraString::isBolVazia($strNumeroRegistro)) { $arrObjTramite = $this->objProcessoEletronicoRN->consultarTramites(null, $strNumeroRegistro); if(!empty($arrObjTramite) && is_array($arrObjTramite) && count($arrObjTramite) === 1) { $objTramite = current($arrObjTramite); if($objTramite->situacaoAtual == ProcessoeletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO || $objTramite->situacaoAtual == ProcessoeletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO){ $strNumeroRegistro = null; } } } return $this->objProcessoEletronicoRN->construirCabecalho( //TODO: Desabilitado consulta do NRE para questões de teste $strNumeroRegistro, $objExpedirProcedimentoDTO->getNumIdRepositorioOrigem(), $objExpedirProcedimentoDTO->getNumIdUnidadeOrigem(), $objExpedirProcedimentoDTO->getNumIdRepositorioDestino(), $objExpedirProcedimentoDTO->getNumIdUnidadeDestino(), $objExpedirProcedimentoDTO->getBolSinUrgente(), $objExpedirProcedimentoDTO->getNumIdMotivoUrgencia(), false /*obrigarEnvioDeTodosOsComponentesDigitais*/); } private function construirProcesso($dblIdProcedimento, $arrIdProcessoApensado = null) { if(!isset($dblIdProcedimento)){ throw new InfraException('Parâmetro $dblIdProcedimento não informado.'); } //TODO: Passar dados do ProcedimentoDTO via parâmetro já carregado anteriormente $objProcedimentoDTO = $this->consultarProcedimento($dblIdProcedimento); $objProcesso = new stdClass(); $objProcesso->protocolo = utf8_encode($objProcedimentoDTO->getStrProtocoloProcedimentoFormatado()); $objProcesso->nivelDeSigilo = $this->obterNivelSigiloPEN($objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo()); $objProcesso->processoDeNegocio = utf8_encode($objProcedimentoDTO->getStrNomeTipoProcedimento()); $objProcesso->descricao = utf8_encode($objProcedimentoDTO->getStrDescricaoProtocolo()); $objProcesso->dataHoraDeProducao = $this->objProcessoEletronicoRN->converterDataWebService($objProcedimentoDTO->getDtaGeracaoProtocolo()); $this->atribuirProdutorProcesso($objProcesso, $objProcedimentoDTO->getNumIdUsuarioGeradorProtocolo(), $objProcedimentoDTO->getNumIdUnidadeGeradoraProtocolo()); $this->atribuirDataHoraDeRegistro($objProcesso, $objProcedimentoDTO->getDblIdProcedimento()); $this->atribuirDocumentos($objProcesso, $dblIdProcedimento); $this->atribuirDadosInteressados($objProcesso, $dblIdProcedimento); $this->adicionarProcessosApensados($objProcesso, $arrIdProcessoApensado); //TODO:Adicionar demais informações do processo // $this->atribuirDadosHistorico($objProcesso, $dblIdProcedimento); $objProcesso->idProcedimentoSEI = $dblIdProcedimento; return $objProcesso; } //TODO: Implementar mapeamento de atividades que serão enviadas para barramento (semelhante Protocolo Integrado) private function atribuirDadosHistorico($objProcesso, $dblIdProcedimento) { $objProcedimentoHistoricoDTO = new ProcedimentoHistoricoDTO(); $objProcedimentoHistoricoDTO->setDblIdProcedimento($dblIdProcedimento); $objProcedimentoHistoricoDTO->setStrStaHistorico(ProcedimentoRN::$TH_TOTAL); $objProcedimentoRN = new ProcedimentoRN(); $objProcedimentoDTO = $objProcedimentoRN->consultarHistoricoRN1025($objProcedimentoHistoricoDTO); $arrObjAtividadeDTO = $objProcedimentoDTO->getArrObjAtividadeDTO(); if($arrObjAtividadeDTO == null || count($arrObjAtividadeDTO) == 0) { throw new InfraException("Não foi possível obter andamentos do processo {$objProcesso->protocolo}"); } $arrObjOperacao = array(); foreach ($arrObjAtividadeDTO as $objAtividadeDTO) { //TODO: Avaliar necessidade de repassar dados da pessoa que realizou a operação $objOperacao = new stdClass(); //TODO: Adicionar demais informações da pessoa e sua unidade $objOperacao->pessoa = new stdClass(); $objOperacao->pessoa->nome = utf8_encode($objAtividadeDTO->getStrNomeUsuarioOrigem()); $objOperacao->codigo = $this->objProcessoEletronicoRN->obterCodigoOperacaoPENMapeado($objAtividadeDTO->getNumIdTarefa()); $objOperacao->dataHora = $this->objProcessoEletronicoRN->converterDataWebService($objAtividadeDTO->getDthAbertura()); $strComplemento = strip_tags($objAtividadeDTO->getStrNomeTarefa()); $objOperacao->complemento = utf8_encode($strComplemento); $arrObjOperacao[] = $objOperacao; } $objProcesso->historico = new stdClass(); $objProcesso->historico->operacao = $arrObjOperacao; } /** * Muda o estado de um procedimento * * @param object $objProcesso * @param string $strStaEstado * @throws InfraException * @return null */ public static function mudarEstadoProcedimento($objProcesso, $strStaEstado){ if(!isset($objProcesso)) { throw new InfraException('Parâmetro $objProcesso não informado.'); } try { //muda estado do protocolo $objProtocoloDTO = new ProtocoloDTO(); $objProtocoloDTO->setStrStaEstado($strStaEstado); $objProtocoloDTO->setDblIdProtocolo($objProcesso->idProcedimentoSEI); $objProtocoloRN = new ProtocoloRN(); $objProtocoloRN->alterarRN0203($objProtocoloDTO); $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setDblIdProtocolo($objProcesso->idProcedimentoSEI); $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO); $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('MOTIVO'); $objAtributoAndamentoDTO->setStrIdOrigem(null); $objAtributoAndamentoDTO->setStrValor('Processo esta em processamento devido sua expedição para outra entidade.'); $objAtividadeDTO->setArrObjAtributoAndamentoDTO(array($objAtributoAndamentoDTO)); $objAtividadeRN = new AtividadeRN(); $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); } catch(Exception $e){ throw new InfraException('Erro ao mudar o estado do processo.',$e); } if (isset($objProcesso->processoApensado) && is_array($objProcesso->processoApensado)) { foreach ($objProcesso->processoApensado as $objProcessoApensado) { static::mudarEstadoProcedimento($objProcessoApensado, $strStaEstado); } } } /** * Muda o estado de um procedimento * * @param object $objProcesso * @param string $strStaEstado * @throws InfraException * @return null */ public static function mudarEstadoProcedimentoNormal($objProcesso, $strStaEstado){ //Muda o estado do Protocolo para normal $objProtocoloDTO = new ProtocoloDTO(); $objProtocoloDTO->setStrStaEstado($strStaEstado); $objProtocoloDTO->setDblIdProtocolo($objProcesso->idProcedimentoSEI); $objProtocoloRN = new ProtocoloRN(); $objProtocoloRN->alterarRN0203($objProtocoloDTO); } public function bloquearProcedimentoExpedicao($objExpedirProcedimentoDTO, $numIdProcedimento) { //Instancia a API do SEI para bloquei do processo $objEntradaBloquearProcessoAPI = new EntradaBloquearProcessoAPI(); $objEntradaBloquearProcessoAPI->setIdProcedimento($numIdProcedimento); //Realiza o bloquei do processo $objSeiRN = new SeiRN(); $objSeiRN->bloquearProcesso($objEntradaBloquearProcessoAPI); $arrObjAtributoAndamentoDTO = array(); //Seta o repositório de destino para constar no histórico $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('REPOSITORIO_DESTINO'); $objAtributoAndamentoDTO->setStrValor($objExpedirProcedimentoDTO->getStrRepositorioDestino()); $objAtributoAndamentoDTO->setStrIdOrigem($objExpedirProcedimentoDTO->getNumIdRepositorioOrigem()); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; //Compõe o atributo que irá compor a estrutura $objEstrutura = $this->objProcessoEletronicoRN->consultarEstrutura( $objExpedirProcedimentoDTO->getNumIdRepositorioDestino(), $objExpedirProcedimentoDTO->getNumIdUnidadeDestino(), true ); if (isset($objEstrutura->hierarquia)) { $arrObjNivel = $objEstrutura->hierarquia->nivel; $nome = ""; $siglasUnidades = array(); $siglasUnidades[] = $objEstrutura->sigla; foreach ($arrObjNivel as $key => $objNivel) { $siglasUnidades[] = $objNivel->sigla; } for ($i = 1; $i <= 3; $i++) { if (isset($siglasUnidades[count($siglasUnidades) - 1])) { unset($siglasUnidades[count($siglasUnidades) - 1]); } } foreach ($siglasUnidades as $key => $nomeUnidade) { if ($key == (count($siglasUnidades) - 1)) { $nome .= $nomeUnidade . " "; } else { $nome .= $nomeUnidade . " / "; } } $objNivel = current($arrObjNivel); $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO_HIRARQUIA'); $objAtributoAndamentoDTO->setStrValor($nome); $objAtributoAndamentoDTO->setStrIdOrigem($objNivel->numeroDeIdentificacaoDaEstrutura); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; } //Seta a unidade de destino $arrUnidadeDestino = preg_split('/\s?\/\s?/', $objExpedirProcedimentoDTO->getStrUnidadeDestino()); $arrUnidadeDestino = preg_split('/\s+\-\s+/', current($arrUnidadeDestino)); $strUnidadeDestino = array_shift($arrUnidadeDestino); $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO'); $objAtributoAndamentoDTO->setStrValor($strUnidadeDestino); $objAtributoAndamentoDTO->setStrIdOrigem($objExpedirProcedimentoDTO->getNumIdUnidadeDestino()); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setDblIdProtocolo($numIdProcedimento); $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objAtividadeDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO)); $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO); //Registra o andamento no histórico e $objAtividadeRN = new AtividadeRN(); $atividade = $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); return $atividade->getNumIdAtividade(); } public function desbloquearProcessoExpedicao($numIdProcedimento){ //Intancia o objeto de desbloqueio da API do SEI $objEntradaDesbloquearProcessoAPI = new EntradaDesbloquearProcessoAPI(); $objEntradaDesbloquearProcessoAPI->setIdProcedimento($numIdProcedimento); //Solicita o Desbloqueio do Processo $objSeiRN = new SeiRN(); $objSeiRN->desbloquearProcesso($objEntradaDesbloquearProcessoAPI); } public function registrarAndamentoExpedicaoAbortada($dblIdProtocolo) { //Seta todos os atributos do histórico de aborto da expedição $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setDblIdProtocolo($dblIdProtocolo); $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objAtividadeDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO)); $objAtividadeDTO->setArrObjAtributoAndamentoDTO(array()); //Gera o andamento de expedição abortada $objAtividadeRN = new AtividadeRN(); $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); } public static function receberRecusaProcedimento($motivo, $unidade_destino, $numUnidadeDestino = null, $idProtocolo) { try{ //Muda o status do protocolo para "Normal" $arrObjAtributoAndamentoDTO = array(); $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('MOTIVO'); $objAtributoAndamentoDTO->setStrValor($motivo); $objAtributoAndamentoDTO->setStrIdOrigem($numUnidadeDestino); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO'); $objAtributoAndamentoDTO->setStrValor($unidade_destino); $objAtributoAndamentoDTO->setStrIdOrigem($numUnidadeDestino); $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setDblIdProtocolo($idProtocolo); $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO); $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO); $objAtividadeRN = new AtividadeRN(); $atividade = $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); $objProtocoloDTO = new ProtocoloDTO(); $objProtocoloDTO->setStrStaEstado(ProtocoloRN::$TE_NORMAL); $objProtocoloDTO->setDblIdProtocolo($idProtocolo); $objProtocoloRN = new ProtocoloRN(); $objProtocoloRN->alterarRN0203($objProtocoloDTO); }catch (InfraException $e){ throw new InfraException($e->getStrDescricao()); } catch(Exception $e){ throw new InfraException($e->getMessage()); } } private function bloquearProcedimento($objProcesso) { if(!isset($objProcesso)) { throw new InfraException('Parâmetro $objProcesso não informado.'); } //TODO: Solicitar ao TRF4 um meio de bloquear o processo, indicando que ele encontra-se em //expedição e possui tratamento diferenciado $objRelProtocoloProtocoloDTO = new RelProtocoloProtocoloDTO(); //$objRelProtocoloProtocoloDTO->setDblIdProtocolo1($dblIdProcedimentoApensado); $objRelProtocoloProtocoloDTO->setDblIdProtocolo1(null); $objRelProtocoloProtocoloDTO->setDblIdProtocolo2($objProcesso->idProcedimentoSEI); $objRelProtocoloProtocoloDTO->setStrMotivo("Processo sobrestado devido sua expedição para outra entidade."); $this->objProcedimentoRN->sobrestarRN1014(array($objRelProtocoloProtocoloDTO)); if(isset($objProcesso->processoApensado) && is_array($objProcesso->processoApensado)) { foreach($objProcesso->processoApensado as $objProcessoApensado) { $this->bloquearProcedimento($objProcessoApensado); } } } private function atribuirDataHoraDeRegistro($objContexto, $dblIdProcedimento, $dblIdDocumento = null) { //Validar parâmetro $objContexto if(!isset($objContexto)) { throw new InfraException('Parâmetro $objContexto não informado.'); } //Validar parâmetro $dbIdProcedimento if(!isset($dblIdProcedimento)) { throw new InfraException('Parâmetro $dbIdProcedimento não informado.'); } $objProcedimentoHistoricoDTO = new ProcedimentoHistoricoDTO(); $objProcedimentoHistoricoDTO->setDblIdProcedimento($dblIdProcedimento); $objProcedimentoHistoricoDTO->setStrStaHistorico(ProcedimentoRN::$TH_PERSONALIZADO); $objProcedimentoHistoricoDTO->adicionarCriterio(array('IdTarefa','IdTarefa'), array(InfraDTO::$OPER_IGUAL,InfraDTO::$OPER_IGUAL), array(TarefaRN::$TI_GERACAO_PROCEDIMENTO, ProcessoeletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), InfraDTO::$OPER_LOGICO_OR); $objProcedimentoHistoricoDTO->setStrSinGerarLinksHistorico('N'); $objProcedimentoHistoricoDTO->setNumMaxRegistrosRetorno(1); $objProcedimentoHistoricoDTO->setOrdNumIdTarefa(InfraDTO::$TIPO_ORDENACAO_ASC); if(isset($dblIdDocumento)){ $objProcedimentoHistoricoDTO->setDblIdDocumento($dblIdDocumento); $objProcedimentoHistoricoDTO->setNumIdTarefa(array(TarefaRN::$TI_GERACAO_DOCUMENTO, TarefaRN::$TI_RECEBIMENTO_DOCUMENTO), InfraDTO::$OPER_IN); } $objProcedimentoDTOHistorico = $this->objProcedimentoRN->consultarHistoricoRN1025($objProcedimentoHistoricoDTO); $arrObjAtividadeDTOHistorico = $objProcedimentoDTOHistorico->getArrObjAtividadeDTO(); if(isset($arrObjAtividadeDTOHistorico) && count($arrObjAtividadeDTOHistorico) == 1){ $objContexto->dataHoraDeRegistro = $this->objProcessoEletronicoRN->converterDataWebService($arrObjAtividadeDTOHistorico[0]->getDthAbertura()); } } private function atribuirProdutorProcesso($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 = utf8_encode($objUsuarioProdutor->getStrNome()); //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) } $objUnidadeGeradora = $this->consultarUnidade($dblIdProcedimento); if(isset($objUnidadeGeradora)){ $objProcesso->produtor->unidade = new stdClass(); $objProcesso->produtor->unidade->nome = utf8_encode($objUnidadeGeradora->getStrDescricao()); $objProcesso->produtor->unidade->tipo = self::STA_TIPO_PESSOA_ORGAOPUBLICO; //TODO: Informar dados da estrutura organizacional (estruturaOrganizacional) } } private function atribuirDadosInteressados($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(); foreach ($arrParticipantesDTO as $participanteDTO) { $interessado = new stdClass(); $interessado->nome = utf8_encode($participanteDTO->getStrNomeContato()); $objProcesso->interessado[] = $interessado; } } } private function atribuirDocumentos($objProcesso, $dblIdProcedimento) { if(!isset($objProcesso)) { throw new InfraException('Parâmetro $objProcesso não informado.'); } //TODO: Passar dados do ProcedimentoDTO via parâmetro já carregado anteriormente $arrDocumentosDTO = $this->listarDocumentos($dblIdProcedimento); if(!isset($arrDocumentosDTO)) { throw new InfraException('Documentos não encontrados.'); } $ordemDocumento = 1; $objProcesso->documento = array(); foreach ($arrDocumentosDTO as $documentoDTO) { //$protocoloDocumentoDTO = $this->consultarProtocoloDocumento($documeto->getDblIdProcedimento()); $documento = new stdClass(); //TODO: Atribuir das informações abaixo ao documento //123 //456 //Retirado //Considera o número/nome do documento externo para descrição do documento if($documentoDTO->getStrStaProtocoloProtocolo() == ProtocoloRN::$TP_DOCUMENTO_RECEBIDO && $documentoDTO->getStrNumero() != null) { $strDescricaoDocumento = $documentoDTO->getStrNumero(); }else{ $strDescricaoDocumento = "***"; } // Não é um documento externo /*elseif($documentoDTO->isSetNumIdTipoConferencia()){ $objTipoProcedimentoDTO = new PenTipoProcedimentoDTO(true); $objTipoProcedimentoDTO->retStrNome(); $objTipoProcedimentoDTO->setBolExclusaoLogica(false); $objTipoProcedimentoDTO->setDblIdProcedimento($dblIdProcedimento); $objTipoProcedimentoBD = new TipoProcedimentoBD(BancoSEI::getInstance()); $objTipoProcedimentoDTO = $objTipoProcedimentoBD->consultar($objTipoProcedimentoDTO); $strDescricaoDocumento = $objTipoProcedimentoDTO->getStrNome(); }*/ $documento->retirado = ($documentoDTO->getStrStaEstadoProtocolo() == ProtocoloRN::$TE_DOCUMENTO_CANCELADO) ? true : false; $documento->ordem = $ordemDocumento++; $documento->descricao = utf8_encode($strDescricaoDocumento); $documento->nivelDeSigilo = $this->obterNivelSigiloPEN($documentoDTO->getStrStaNivelAcessoLocalProtocolo()); $documento->dataHoraDeProducao = $this->objProcessoEletronicoRN->converterDataWebService($documentoDTO->getDtaGeracaoProtocolo()); $usuarioDTO = $this->consultarUsuario($documentoDTO->getNumIdUsuarioGeradorProtocolo()); if(isset($usuarioDTO)) { $documento->produtor = new stdClass(); $documento->produtor->nome = utf8_encode($usuarioDTO->getStrNome()); $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 = utf8_encode($unidadeDTO->getStrDescricao()); $documento->produtor->unidade->tipo = self::STA_TIPO_PESSOA_ORGAOPUBLICO; //TODO: Informar dados da estrutura organizacional (estruturaOrganizacional) } $documento->produtor->numeroDeIdentificacao = $documentoDTO->getStrProtocoloDocumentoFormatado(); $this->atribuirDataHoraDeRegistro($documento, $documentoDTO->getDblIdProcedimento(), $documentoDTO->getDblIdDocumento()); //TODO: Implementar mapeamento de espécies documentais $documento->especie = new stdClass(); $documento->especie->codigo = $this->obterEspecieMapeada($documentoDTO->getNumIdSerie()); $documento->especie->nomeNoProdutor = utf8_encode($documentoDTO->getStrNomeSerie()); //TODO: Tratar campos adicionais do documento //Identificação do documento $this->atribuirNumeracaoDocumento($documento, $documentoDTO); if($documento->retirado === true){ $penComponenteDigitalDTO = new ComponenteDigitalDTO(); $penComponenteDigitalDTO->retTodos(); $penComponenteDigitalDTO->setDblIdDocumento($documentoDTO->getDblIdDocumento()); $penComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); if($penComponenteDigitalBD->contar($penComponenteDigitalDTO) > 0){ $arrPenComponenteDigitalDTO = $penComponenteDigitalBD->listar($penComponenteDigitalDTO); $componenteDigital = $arrPenComponenteDigitalDTO[0]; $documento->componenteDigital = new stdClass(); $documento->componenteDigital->ordem = 1; $documento->componenteDigital->nome = utf8_encode($componenteDigital->getStrNome()); $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(); if($componenteDigital->getStrMimeType() == 'outro'){ $documento->componenteDigital->dadosComplementaresDoTipoDeArquivo = 'outro'; } }else{ $this->atribuirComponentesDigitais($documento, $documentoDTO); } }else{ $this->atribuirComponentesDigitais($documento, $documentoDTO); } //TODO: Necessário tratar informações abaixo //protocoloDoDocumentoAnexado //protocoloDoProcessoAnexado //retirado //protocoloAnterior //historico $documento->idDocumentoSEI = $documentoDTO->getDblIdDocumento(); $objProcesso->documento[] = $documento; } } public function atribuirComponentesDigitaisRetirados($documentoDTO){ } private function obterEspecieMapeada($parNumIdSerie) { if(!isset($parNumIdSerie) || $parNumIdSerie == 0) { throw new InfraException('Parâmetro $parNumIdSerie não informado.'); } $objPenRelTipoDocMapEnviadoDTO = new PenRelTipoDocMapEnviadoDTO(); $objPenRelTipoDocMapEnviadoDTO->setNumIdSerie($parNumIdSerie); $objPenRelTipoDocMapEnviadoDTO->retNumCodigoEspecie(); $objGenericoBD = new GenericoBD($this->getObjInfraIBanco()); $objPenRelTipoDocMapEnviadoDTO = $objGenericoBD->consultar($objPenRelTipoDocMapEnviadoDTO); if($objPenRelTipoDocMapEnviadoDTO == null) { $objPenRelTipoDocMapEnviadoDTO = new PenRelTipoDocMapEnviadoDTO(); $objPenRelTipoDocMapEnviadoDTO->retNumCodigoEspecie(); $objPenRelTipoDocMapEnviadoDTO->setStrPadrao('S'); $objPenRelTipoDocMapEnviadoDTO->setNumMaxRegistrosRetorno(1); $objPenRelTipoDocMapEnviadoDTO = $objGenericoBD->consultar($objPenRelTipoDocMapEnviadoDTO); } if($objPenRelTipoDocMapEnviadoDTO == null) { throw new InfraException("Código de identificação da espécie documental não pode ser localizada para o tipo de documento {$parNumIdSerie}."); } return $objPenRelTipoDocMapEnviadoDTO->getNumCodigoEspecie(); } private function atribuirAssinaturaEletronica($objComponenteDigital, AssinaturaDTO $objAssinaturaDTO) { if(!isset($objComponenteDigital)){ throw new InfraException('Parâmetro $objComponenteDigital não informado.'); } if(isset($objAssinaturaDTO)) { $objComponenteDigital->assinaturaDigital = new stdClass(); //TODO: Obter as informações corretas dos metadados da assinatura digital $objComponenteDigital->assinaturaDigital->dataHora = $this->objProcessoEletronicoRN->converterDataWebService($objComponenteDigital->getDthAberturaAtividade()); $objComponenteDigital->assinaturaDigital->cadeiaDoCertificado = new SoapVar('', XSD_ANYXML); $objComponenteDigital->assinaturaDigital->hash = new SoapVar("{$objAssinaturaDTO->getStrP7sBase64()}", XSD_ANYXML); } } private function atribuirComponentesDigitais($objDocumento, DocumentoDTO $objDocumentoDTO) { if(!isset($objDocumento)){ throw new InfraException('Parâmetro $objDocumento não informado.'); } if(!isset($objDocumentoDTO)){ throw new InfraException('Parâmetro $objDocumentoDTO não informado.'); } $arrInformacaoArquivo = $this->obterDadosArquivo($objDocumentoDTO); if(!isset($arrInformacaoArquivo) || count($arrInformacaoArquivo) == 0){ throw new InfraException('Erro durante obtenção de informações sobre o componente digital do documento {$objDocumentoDTO->getStrProtocoloDocumentoFormatado()}.'); } //TODO: Revisar tal implementação para atender a geração de hash de arquivos grandes $strAlgoritmoHash = self::ALGORITMO_HASH_DOCUMENTO; $strConteudoAssinatura = $arrInformacaoArquivo['CONTEUDO']; $hashDoComponenteDigital = hash($strAlgoritmoHash, $strConteudoAssinatura, true); $hashDoComponenteDigital = base64_encode($hashDoComponenteDigital); $objDocumento->componenteDigital = new stdClass(); $objDocumento->componenteDigital->ordem = 1; $objDocumento->componenteDigital->nome = utf8_encode($arrInformacaoArquivo["NOME"]); $objDocumento->componenteDigital->hash = new SoapVar("{$hashDoComponenteDigital}", XSD_ANYXML); $objDocumento->componenteDigital->tamanhoEmBytes = $arrInformacaoArquivo['TAMANHO']; //TODO: Validar os tipos de mimetype de acordo com o WSDL do SEI //Caso não identifique o tipo correto, informar o valor [outro] $objDocumento->componenteDigital->mimeType = $arrInformacaoArquivo['MIME_TYPE']; $objDocumento->componenteDigital->tipoDeConteudo = $this->obterTipoDeConteudo($arrInformacaoArquivo['MIME_TYPE']); if($arrInformacaoArquivo['MIME_TYPE'] == 'outro'){ $objDocumento->componenteDigital->dadosComplementaresDoTipoDeArquivo = $arrInformacaoArquivo['dadosComplementaresDoTipoDeArquivo']; } //TODO: Preencher dados complementares do tipo de arquivo //$objDocumento->componenteDigital->dadosComplementaresDoTipoDeArquivo = ''; //TODO: Carregar informações da assinatura digital //$this->atribuirAssinaturaEletronica($objDocumento->componenteDigital, $objDocumentoDTO); $objDocumento->componenteDigital->idAnexo = $arrInformacaoArquivo['ID_ANEXO']; return $objDocumento; } private function obterDadosArquivo(DocumentoDTO $objDocumentoDTO) { if(!isset($objDocumentoDTO)){ throw new InfraException('Parâmetro $objDocumentoDTO não informado.'); } $arrInformacaoArquivo = array(); $strProtocoloDocumentoFormatado = $objDocumentoDTO->getStrProtocoloDocumentoFormatado(); if($objDocumentoDTO->getStrStaProtocoloProtocolo() == ProtocoloRN::$TP_DOCUMENTO_GERADO) { $objEditorDTO = new EditorDTO(); $objEditorDTO->setDblIdDocumento($objDocumentoDTO->getDblIdDocumento()); $objEditorDTO->setNumIdBaseConhecimento(null); $objEditorDTO->setStrSinCabecalho('S'); $objEditorDTO->setStrSinRodape('S'); $objEditorDTO->setStrSinIdentificacaoVersao('S'); $objEditorDTO->setStrSinProcessarLinks('S'); $objEditorRN = new EditorRN(); $strConteudoAssinatura = $objEditorRN->consultarHtmlVersao($objEditorDTO); //$strConteudoAssinatura = $objDocumentoDTO->getStrConteudoAssinatura(); $arrInformacaoArquivo['NOME'] = $strProtocoloDocumentoFormatado . ".html"; $arrInformacaoArquivo['CONTEUDO'] = $strConteudoAssinatura; $arrInformacaoArquivo['TAMANHO'] = strlen($strConteudoAssinatura); $arrInformacaoArquivo['MIME_TYPE'] = 'text/html'; $arrInformacaoArquivo['ID_ANEXO'] = null; } else if($objDocumentoDTO->getStrStaProtocoloProtocolo() == ProtocoloRN::$TP_DOCUMENTO_RECEBIDO) { $objAnexoDTO = $this->consultarAnexo($objDocumentoDTO->getDblIdDocumento()); if(!isset($objAnexoDTO)){ throw new InfraException("Componente digital do documento {$strProtocoloDocumentoFormatado} não pode ser localizado."); } //Obtenção do conteudo do documento externo //TODO: Particionar o documento em tamanho menor caso ultrapasse XX megabytes $strCaminhoAnexo = $this->objAnexoRN->obterLocalizacao($objAnexoDTO); $fp = fopen($strCaminhoAnexo, "rb"); try { $strConteudoAssinatura = fread($fp, filesize($strCaminhoAnexo)); fclose($fp); } catch(Exception $e) { fclose($fp); throw new InfraException("Erro obtendo conteudo do anexo do documento {$strProtocoloDocumentoFormatado}", $e); } $finfo = finfo_open(FILEINFO_MIME_TYPE); try { $strMimeType = finfo_file($finfo, $strCaminhoAnexo); $strDadosComplementaresDoTipoDeArquivo = ""; if(!array_search($strMimeType, $this->arrPenMimeTypes)){ $strDadosComplementaresDoTipoDeArquivo = $strMimeType; $strMimeType = 'outro'; } finfo_close($finfo); } catch(Exception $e) { finfo_close($finfo); throw new InfraException("Erro obtendo informações do anexo do documento {$strProtocoloDocumentoFormatado}", $e); } $arrInformacaoArquivo['NOME'] = $objAnexoDTO->getStrNome(); $arrInformacaoArquivo['CONTEUDO'] = $strConteudoAssinatura; $arrInformacaoArquivo['TAMANHO'] = $objAnexoDTO->getNumTamanho(); $arrInformacaoArquivo['MIME_TYPE'] = $strMimeType; $arrInformacaoArquivo['ID_ANEXO'] = $objAnexoDTO->getNumIdAnexo(); $arrInformacaoArquivo['dadosComplementaresDoTipoDeArquivo'] = $strDadosComplementaresDoTipoDeArquivo; } else { throw new InfraException('Procedência do documento inválida.'); } return $arrInformacaoArquivo; } private function obterTipoDeConteudo($strMimeType) { if(!isset($strMimeType)){ throw new InfraException('Parâmetro $strMimeType não informado.'); } $resultado = self::TC_TIPO_CONTEUDO_OUTROS; if(preg_match(self::REGEX_ARQUIVO_TEXTO, $strMimeType)){ $resultado = self::TC_TIPO_CONTEUDO_TEXTO; } else if(preg_match(self::REGEX_ARQUIVO_IMAGEM, $strMimeType)){ $resultado = self::TC_TIPO_CONTEUDO_IMAGEM; } else if(preg_match(self::REGEX_ARQUIVO_AUDIO, $strMimeType)){ $resultado = self::TC_TIPO_CONTEUDO_AUDIO; } else if(preg_match(self::REGEX_ARQUIVO_VIDEO, $strMimeType)){ $resultado = self::TC_TIPO_CONTEUDO_VIDEO; } return $resultado; } private function atribuirNumeracaoDocumento($objDocumento, DocumentoDTO $parObjDocumentoDTO) { $objSerieDTO = $this->consultarSerie($parObjDocumentoDTO->getNumIdSerie()); $strStaNumeracao = $objSerieDTO->getStrStaNumeracao(); if($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_UNIDADE) { $objDocumento->identificacao = new stdClass(); $objDocumento->identificacao->numero = $parObjDocumentoDTO->getStrNumero(); $objDocumento->identificacao->siglaDaUnidadeProdutora = $parObjDocumentoDTO->getStrSiglaUnidadeGeradoraProtocolo(); $objDocumento->identificacao->complemento = utf8_encode($parObjDocumentoDTO->getStrDescricaoUnidadeGeradoraProtocolo()); }else if($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_ORGAO){ $objOrgaoDTO = $this->consultarOrgao($parObjDocumentoDTO->getNumIdOrgaoUnidadeGeradoraProtocolo()); $objDocumento->identificacao = new stdClass(); $objDocumento->identificacao->numero = $parObjDocumentoDTO->getStrNumero(); $objDocumento->identificacao->siglaDaUnidadeProdutora = $objOrgaoDTO->getStrSigla(); $objDocumento->identificacao->complemento = utf8_encode($objOrgaoDTO->getStrDescricao()); }else if($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_ANUAL_UNIDADE){ $objDocumento->identificacao = new stdClass(); $objDocumento->identificacao->siglaDaUnidadeProdutora = $parObjDocumentoDTO->getStrSiglaUnidadeGeradoraProtocolo(); $objDocumento->identificacao->complemento = utf8_encode($parObjDocumentoDTO->getStrDescricaoUnidadeGeradoraProtocolo()); $objDocumento->identificacao->numero = $parObjDocumentoDTO->getStrNumero(); $objDocumento->identificacao->ano = substr($parObjDocumentoDTO->getDtaGeracaoProtocolo(),6,4); }else if($strStaNumeracao == SerieRN::$TN_SEQUENCIAL_ANUAL_ORGAO){ $objOrgaoDTO = $this->consultarOrgao($parObjDocumentoDTO->getNumIdOrgaoUnidadeGeradoraProtocolo()); $objDocumento->identificacao = new stdClass(); $objDocumento->identificacao->numero = $parObjDocumentoDTO->getStrNumero(); $objDocumento->identificacao->siglaDaUnidadeProdutora = $objOrgaoDTO->getStrSigla(); $objDocumento->identificacao->complemento = utf8_encode($objOrgaoDTO->getStrDescricao()); $objDocumento->identificacao->ano = substr($parObjDocumentoDTO->getDtaGeracaoProtocolo(),6,4); } } private function adicionarProcessosApensados($objProcesso, $arrIdProcessoApensado) { if(isset($arrIdProcessoApensado) && is_array($arrIdProcessoApensado) && count($arrIdProcessoApensado) > 0) { $objProcesso->processoApensado = array(); foreach($arrIdProcessoApensado as $idProcedimentoApensado) { $objProcesso->processoApensado[] = $this->construirProcesso($idProcedimentoApensado); } } } private function consultarUnidade($numIdUnidade) { if(!isset($numIdUnidade)){ throw new InfraException('Parâmetro $numIdUnidade não informado.'); } $objUnidadeDTO = new UnidadeDTO(); $objUnidadeDTO->setNumIdUnidade($numIdUnidade); $objUnidadeDTO->retStrDescricao(); return $this->objUnidadeRN->consultarRN0125($objUnidadeDTO); } private function consultarSerie($numIdSerie) { if(!isset($numIdSerie)){ throw new InfraException('Parâmetro $numIdSerie não informado.'); } $objSerieDTO = new SerieDTO(); $objSerieDTO->setNumIdSerie($numIdSerie); $objSerieDTO->retStrStaNumeracao(); return $this->objSerieRN->consultarRN0644($objSerieDTO); } private function consultarOrgao($numIdOrgao) { $objOrgaoDTO = new OrgaoDTO(); $objOrgaoDTO->setNumIdOrgao($numIdOrgao); $objOrgaoDTO->retStrSigla(); $objOrgaoDTO->retStrDescricao(); return $this->objOrgaoRN->consultarRN1352($objOrgaoDTO); } public function consultarProcedimento($numIdProcedimento) { if(!isset($numIdProcedimento)){ throw new InfraException('Parâmetro $numIdProcedimento não informado.'); } $objProcedimentoDTO = new ProcedimentoDTO(); $objProcedimentoDTO->setDblIdProcedimento($numIdProcedimento); $objProcedimentoDTO->retStrProtocoloProcedimentoFormatado(); $objProcedimentoDTO->retStrStaNivelAcessoGlobalProtocolo(); $objProcedimentoDTO->retNumIdUnidadeGeradoraProtocolo(); $objProcedimentoDTO->retNumIdUsuarioGeradorProtocolo(); $objProcedimentoDTO->retStrNomeTipoProcedimento(); $objProcedimentoDTO->retStrDescricaoProtocolo(); $objProcedimentoDTO->retDtaGeracaoProtocolo(); $objProcedimentoDTO->retStrStaEstadoProtocolo(); $objProcedimentoDTO->retDblIdProcedimento(); return $this->objProcedimentoRN->consultarRN0201($objProcedimentoDTO); } public function listarInteressados($numIdProtocolo) { if(!isset($numIdProtocolo)){ throw new InfraException('Parâmetro $numIdProtocolo não informado.'); } $objParticipanteDTO = new ParticipanteDTO(); $objParticipanteDTO->retNumIdContato(); $objParticipanteDTO->retStrNomeContato(); $objParticipanteDTO->setDblIdProtocolo($numIdProtocolo); $objParticipanteDTO->setStrStaParticipacao(ParticipanteRN::$TP_INTERESSADO); return $this->objParticipanteRN->listarRN0189($objParticipanteDTO); } private function consultarProtocoloDocumento($numIdProcedimento) { $objProtocoloDTO = new ProtocoloDTO(); $objProtocoloDTO->setStrStaProtocolo(array(ProtocoloRN::$TP_DOCUMENTO_GERADO,ProtocoloRN::$TP_DOCUMENTO_RECEBIDO),InfraDTO::$OPER_IN); $objProtocoloDTO->setStrStaProtocolo($staProtocolo); $objProtocoloDTO->setDblIdProtocolo($numIdProcedimento); $objProtocoloDTO->retTodos(); $objProtocoloDTO->retNumIdSerie(); return $this->objProtocoloRN->consultarRN0186($objProtocoloDTO); //TODO: Verificar regra de busca } private function consultarAnexo($dblIdDocumento) { if(!isset($dblIdDocumento)){ throw new InfraException('Parâmetro $dblIdDocumento não informado.'); } $objAnexoDTO = new AnexoDTO(); $objAnexoDTO->retNumIdAnexo(); $objAnexoDTO->retStrNome(); $objAnexoDTO->retDblIdProtocolo(); $objAnexoDTO->retDthInclusao(); $objAnexoDTO->retNumTamanho(); $objAnexoDTO->setDblIdProtocolo($dblIdDocumento); return $this->objAnexoRN->consultarRN0736($objAnexoDTO); } private function consultarUsuario($numIdUsuario) { if(!isset($numIdUsuario)){ throw new InfraException('Parâmetro $numIdUsuario não informado.'); } $objUsuarioDTO = new UsuarioDTO(); $objUsuarioDTO->setNumIdUsuario($numIdUsuario); $objUsuarioDTO->retStrNome(); $objUsuarioDTO->retDblCpfContato(); return $this->objUsuarioRN->consultarRN0489($objUsuarioDTO); } public function listarDocumentos($idProcedimento) { if(!isset($idProcedimento)){ throw new InfraException('Parâmetro $idProcedimento não informado.'); } $documentoDTO = new DocumentoDTO(); $documentoDTO->setDblIdProcedimento($idProcedimento); $documentoDTO->retStrDescricaoUnidadeGeradoraProtocolo(); $documentoDTO->retNumIdOrgaoUnidadeGeradoraProtocolo(); $documentoDTO->retStrSiglaUnidadeGeradoraProtocolo(); $documentoDTO->retStrStaNivelAcessoLocalProtocolo(); $documentoDTO->retStrProtocoloDocumentoFormatado(); $documentoDTO->retStrStaEstadoProtocolo(); $documentoDTO->retNumIdUsuarioGeradorProtocolo(); $documentoDTO->retStrStaProtocoloProtocolo(); $documentoDTO->retNumIdUnidadeResponsavel(); $documentoDTO->retStrDescricaoProtocolo(); $documentoDTO->retDtaGeracaoProtocolo(); $documentoDTO->retDblIdProcedimento(); $documentoDTO->retDblIdDocumento(); $documentoDTO->retStrNomeSerie(); $documentoDTO->retNumIdSerie(); $documentoDTO->retStrConteudoAssinatura(); $documentoDTO->retStrNumero(); $documentoDTO->retNumIdTipoConferencia(); $documentoDTO->setOrdStrProtocoloDocumentoFormatado(InfraDTO::$TIPO_ORDENACAO_ASC); return $this->objDocumentoRN->listarRN0008($documentoDTO); } /** * Retorna o nome do documento no PEN * * @param int * @return string */ private function consultarNomeDocumentoPEN(DocumentoDTO $objDocumentoDTO){ $objMapDTO = new PenRelTipoDocMapEnviadoDTO(true); $objMapDTO->setNumMaxRegistrosRetorno(1); $objMapDTO->setNumIdSerie($objDocumentoDTO->getNumIdSerie()); $objMapDTO->retStrNomeSerie(); $objMapBD = new GenericoBD($this->getObjInfraIBanco()); $objMapDTO = $objMapBD->consultar($objMapDTO); if(empty($objMapDTO)) { $strNome = '[ref '.$objDocumentoDTO->getStrNomeSerie().']'; } else { $strNome = $objMapDTO->getStrNomeSerie(); } return $strNome; } private function consultarDocumento($dblIdDocumento) { if(!isset($dblIdDocumento)){ throw new InfraException('Parâmetro $dblIdDocumento não informado.'); } $documentoDTO = new DocumentoDTO(); $documentoDTO->setDblIdDocumento($dblIdDocumento); $documentoDTO->retStrDescricaoUnidadeGeradoraProtocolo(); //$documentoDTO->retNumIdOrgaoUnidadeGeradoraProtocolo(); //$documentoDTO->retStrSiglaUnidadeGeradoraProtocolo(); //$documentoDTO->retStrStaNivelAcessoLocalProtocolo(); $documentoDTO->retStrProtocoloDocumentoFormatado(); //$documentoDTO->retNumIdUsuarioGeradorProtocolo(); $documentoDTO->retStrStaProtocoloProtocolo(); //$documentoDTO->retNumIdUnidadeResponsavel(); $documentoDTO->retStrDescricaoProtocolo(); //$documentoDTO->retDtaGeracaoProtocolo(); //$documentoDTO->retDblIdProcedimento(); $documentoDTO->retDblIdDocumento(); $documentoDTO->retStrNomeSerie(); $documentoDTO->retNumIdSerie(); $documentoDTO->retStrConteudoAssinatura(); //$documentoDTO->retStrNumero(); return $this->objDocumentoRN->consultarRN0005($documentoDTO); } private function enviarComponentesDigitais($strNumeroRegistro, $numIdTramite, $strProtocolo) { if(!isset($strNumeroRegistro)){ throw new InfraException('Parâmetro $strNumeroRegistro não informado.'); } if(!isset($numIdTramite)){ throw new InfraException('Parâmetro $numIdTramite não informado.'); } if(!isset($strProtocolo)){ throw new InfraException('Parâmetro $strProtocolo não informado.'); } //Obter dados dos componetes digitais $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); $objComponenteDigitalDTO = new ComponenteDigitalDTO(); $objComponenteDigitalDTO->setStrNumeroRegistro($strNumeroRegistro); $objComponenteDigitalDTO->setNumIdTramite($numIdTramite); $objComponenteDigitalDTO->setStrSinEnviar("S"); $objComponenteDigitalDTO->setOrdNumOrdem(InfraDTO::$TIPO_ORDENACAO_ASC); $objComponenteDigitalDTO->retDblIdDocumento(); $objComponenteDigitalDTO->retNumTicketEnvioComponentes(); $objComponenteDigitalDTO->retStrConteudoAssinaturaDocumento(); $objComponenteDigitalDTO->retStrProtocoloDocumentoFormatado(); $objComponenteDigitalDTO->retStrHashConteudo(); $objComponenteDigitalDTO->retStrProtocolo(); $objComponenteDigitalDTO->retStrNome(); $objComponenteDigitalDTO->retDblIdProcedimento(); $arrComponentesDigitaisDTO = $objComponenteDigitalBD->listar($objComponenteDigitalDTO); if (isset($arrComponentesDigitaisDTO) && count($arrComponentesDigitaisDTO) > 0) { //TODO: Valida inconsistência da quantidade de documentos solicitados e aqueles cadastrados no SEI //Construir objeto Componentes digitais foreach ($arrComponentesDigitaisDTO as $objComponenteDigitalDTO) { $this->barraProgresso->mover(ProcessoEletronicoINT::NEE_EXPEDICAO_ETAPA_DOCUMENTO); $this->barraProgresso->setStrRotulo(sprintf(ProcessoEletronicoINT::TEE_EXPEDICAO_ETAPA_DOCUMENTO, $objComponenteDigitalDTO->getStrProtocoloDocumentoFormatado())); $dadosDoComponenteDigital = new stdClass(); $dadosDoComponenteDigital->ticketParaEnvioDeComponentesDigitais = $objComponenteDigitalDTO->getNumTicketEnvioComponentes(); //TODO: Problema no barramento de serviços quando um mesmo arquivo está contido em dois diferentes //processos apensados. Mesmo erro relatado com dois arquivos iguais em docs diferentes no mesmo processo $dadosDoComponenteDigital->protocolo = $objComponenteDigitalDTO->getStrProtocolo(); $dadosDoComponenteDigital->hashDoComponenteDigital = $objComponenteDigitalDTO->getStrHashConteudo(); //TODO: Particionar o arquivo em várias partes caso for muito grande seu tamanho //TODO: Obter dados do conteudo do documento, sendo Interno ou Externo //$strConteudoDocumento = $this->consultarConteudoDocumento($objComponenteDigitalDTO->getDblIdDocumento()); //$strConteudoAssinatura = $objComponenteDigitalDTO->getStrConteudoAssinaturaDocumento(); $objDocumentoDTO = $this->consultarDocumento($objComponenteDigitalDTO->getDblIdDocumento()); $strNomeDocumento = $this->consultarNomeDocumentoPEN($objDocumentoDTO); $arrInformacaoArquivo = $this->obterDadosArquivo($objDocumentoDTO); $dadosDoComponenteDigital->conteudoDoComponenteDigital = new SoapVar($arrInformacaoArquivo['CONTEUDO'], XSD_BASE64BINARY); try { //Enviar componentes digitais $parametros = new stdClass(); $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; $result = $this->objProcessoEletronicoRN->enviarComponenteDigital($parametros); //Bloquea documento para atualização, já que ele foi visualizado $this->objDocumentoRN->bloquearConteudo($objDocumentoDTO); // @join_tec US008.05 (#23092) $this->objProcedimentoAndamentoRN->cadastrar(sprintf('Enviando %s %s', $strNomeDocumento, $objComponenteDigitalDTO->getStrProtocoloDocumentoFormatado()), 'S'); } catch (Exception $e) { // @join_tec US008.05 (#23092) $this->objProcedimentoAndamentoRN->cadastrar(sprintf('Enviando %s %s', $strNomeDocumento, $objComponenteDigitalDTO->getStrProtocoloDocumentoFormatado()), 'N'); throw new InfraException("Error Processing Request", $e); } } } } private function validarParametrosExpedicao(InfraException $objInfraException, ExpedirProcedimentoDTO $objExpedirProcedimentoDTO) { if(!isset($objExpedirProcedimentoDTO)){ $objInfraException->adicionarValidacao('Parâmetro $objExpedirProcedimentoDTO não informado.'); } //TODO: Validar se repositório de origem foi informado if (InfraString::isBolVazia($objExpedirProcedimentoDTO->getNumIdRepositorioOrigem())){ $objInfraException->adicionarValidacao('Identificação do Repositório de Estruturas da unidade atual não informado.'); } //TODO: Validar se unidade de origem foi informado if (InfraString::isBolVazia($objExpedirProcedimentoDTO->getNumIdUnidadeOrigem())){ $objInfraException->adicionarValidacao('Identificação da unidade atual no Repositório de Estruturas Organizacionais não informado.'); } //TODO: Validar se repositório foi devidamente informado if (InfraString::isBolVazia($objExpedirProcedimentoDTO->getNumIdRepositorioDestino())){ $objInfraException->adicionarValidacao('Repositório de Estruturas Organizacionais não informado.'); } //TODO: Validar se unidade foi devidamente informada if (InfraString::isBolVazia($objExpedirProcedimentoDTO->getNumIdUnidadeDestino())){ $objInfraException->adicionarValidacao('Unidade de destino não informado.'); } //TODO: Validar se motivo de urgência foi devidamente informado, caso expedição urgente if ($objExpedirProcedimentoDTO->getBolSinUrgente() && InfraString::isBolVazia($objExpedirProcedimentoDTO->getNumIdMotivoUrgencia())){ $objInfraException->adicionarValidacao('Motivo de urgência da expedição do processo não informado .'); } } private function validarDocumentacaoExistende(InfraException $objInfraException, ProcedimentoDTO $objProcedimentoDTO, $strAtributoValidacao = null) { $arrObjDocumentoDTO = $objProcedimentoDTO->getArrObjDocumentoDTO(); if(!isset($arrObjDocumentoDTO) || count($arrObjDocumentoDTO) == 0) { $objInfraException->adicionarValidacao('Não é possível expedir um processo sem documentos!', $strAtributoValidacao); } } private function validarDadosProcedimento(InfraException $objInfraException, ProcedimentoDTO $objProcedimentoDTO, $strAtributoValidacao = null) { if($objProcedimentoDTO->isSetStrDescricaoProtocolo() && InfraString::isBolVazia($objProcedimentoDTO->getStrDescricaoProtocolo())) { $objInfraException->adicionarValidacao("Descrição do processo {$objProcedimentoDTO->getStrProtocoloProcedimentoFormatado()} não informado.", $strAtributoValidacao); } if(!$objProcedimentoDTO->isSetArrObjParticipanteDTO() || count($objProcedimentoDTO->getArrObjParticipanteDTO()) == 0) { $objInfraException->adicionarValidacao("Interessados do processo {$objProcedimentoDTO->getStrProtocoloProcedimentoFormatado()} não informados.", $strAtributoValidacao); } } private function validarDadosDocumentos(InfraException $objInfraException, $arrDocumentoDTO, $strAtributoValidacao = null) { if(!empty($arrDocumentoDTO)) { $objDocMapDTO = new PenRelTipoDocMapEnviadoDTO(); $objGenericoBD = new GenericoBD($this->inicializarObjInfraIBanco()); foreach($arrDocumentoDTO as $objDocumentoDTO) { $objDocMapDTO->unSetTodos(); $objDocMapDTO->setNumIdSerie($objDocumentoDTO->getNumIdSerie()); if($objGenericoBD->contar($objDocMapDTO) == 0) { $strDescricao = sprintf( 'Não existe mapeamento de envio para %s no documento %s', $objDocumentoDTO->getStrNomeSerie(), $objDocumentoDTO->getStrProtocoloDocumentoFormatado() ); $objInfraException->adicionarValidacao($strDescricao, $strAtributoValidacao); } } } } private function validarProcessoAbertoUnidade(InfraException $objInfraException, ProcedimentoDTO $objProcedimentoDTO, $strAtributoValidacao = null) { $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setDistinct(true); $objAtividadeDTO->retStrSiglaUnidade(); $objAtividadeDTO->setOrdStrSiglaUnidade(InfraDTO::$TIPO_ORDENACAO_ASC); $objAtividadeDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento()); $objAtividadeDTO->setDthConclusao(null); $arrObjAtividadeDTO = $this->objAtividadeRN->listarRN0036($objAtividadeDTO); if(isset($arrObjAtividadeDTO) && count($arrObjAtividadeDTO) > 1) { $strSiglaUnidade = implode(', ', InfraArray::converterArrInfraDTO($arrObjAtividadeDTO, 'SiglaUnidade')); $objInfraException->adicionarValidacao("Não é possível expedir processo aberto em mais de uma unidades. ($strSiglaUnidade)", $strAtributoValidacao); } } private function validarNivelAcessoProcesso(InfraException $objInfraException, ProcedimentoDTO $objProcedimentoDTO, $strAtributoValidacao = null) { // $objProcedimentoDTO = new ProcedimentoDTO(); // $objProcedimentoDTO->setDblIdProcedimento($idProcedimento); // $objProcedimentoDTO->retStrStaNivelAcessoGlobalProtocolo(); // $objProcedimentoDTO = $this->objProcedimentoRN->consultarRN0201($objProcedimentoDTO); if ($objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo() != ProtocoloRN::$NA_PUBLICO) { $objInfraException->adicionarValidacao('Não é possível expedir processo com informações restritas ou sigilosas.', $strAtributoValidacao); } } private function validarAssinaturas(InfraException $objInfraException, $objProcedimentoDTO, $strAtributoValidacao = null) { $bolAssinaturaCorretas = true; $objDocumentoDTO = new DocumentoDTO(); $objDocumentoDTO->setDblIdProcedimento($objProcedimentoDTO->getDblIdProcedimento()); // $objDocumentoDTO->setStrStaEditor(array(EditorRN::$TE_EDOC, EditorRN::$TE_INTERNO), InfraDTO::$OPER_IN); $objDocumentoDTO->retDblIdDocumento(); $objDocumentoDTO->retStrStaEstadoProtocolo(); $objDocumentoRN = new DocumentoRN(); $arrObjDocumentoDTO = (array)$objDocumentoRN->listarRN0008($objDocumentoDTO); if(!empty($arrObjDocumentoDTO)) { $objAssinaturaDTO = new AssinaturaDTO(); $objAssinaturaDTO->setDistinct(true); $objAssinaturaDTO->retDblIdDocumento(); $objAssinaturaRN = new AssinaturaRN(); foreach($arrObjDocumentoDTO as $objDocumentoDTO) { $objAssinaturaDTO->setDblIdDocumento($objDocumentoDTO->getDblIdDocumento()); // Se o documento não tem assinatura e não foi cancelado então // cai na regra de validação if($objAssinaturaRN->contarRN1324($objAssinaturaDTO) == 0 && $objDocumentoDTO->getStrStaEstadoProtocolo() != ProtocoloRN::$TE_CANCELADO){ //$bolAssinaturaCorretas = false; } } } if($bolAssinaturaCorretas !== true) { $objInfraException->adicionarValidacao('Não é possível expedir processos com documentos gerados e não assinados!', $strAtributoValidacao); } } /** * Validação das pré-conidições necessárias para que um processo e seus documentos possam ser expedidos para outra entidade * @param InfraException $objInfraException Instância da classe de exceção para registro dos erros * @param ProcedimentoDTO $objProcedimentoDTO Informações sobre o procedimento a ser expedido * @param string $strAtributoValidacao indice para o InfraException separar os processos */ public function validarPreCondicoesExpedirProcedimento(InfraException $objInfraException, ProcedimentoDTO $objProcedimentoDTO, $strAtributoValidacao = null) { //TODO: Validar pré-condições dos processos e documentos apensados $this->validarDadosProcedimento($objInfraException, $objProcedimentoDTO, $strAtributoValidacao); $this->validarDadosDocumentos($objInfraException, $objProcedimentoDTO->getArrObjDocumentoDTO(), $strAtributoValidacao); $this->validarDocumentacaoExistende($objInfraException, $objProcedimentoDTO, $strAtributoValidacao); $this->validarProcessoAbertoUnidade($objInfraException, $objProcedimentoDTO, $strAtributoValidacao); $this->validarNivelAcessoProcesso($objInfraException, $objProcedimentoDTO, $strAtributoValidacao); $this->validarAssinaturas($objInfraException, $objProcedimentoDTO, $strAtributoValidacao); } private function obterNivelSigiloPEN($strNivelSigilo) { switch ($strNivelSigilo) { case ProtocoloRN::$NA_PUBLICO: return self::STA_SIGILO_PUBLICO; break; case ProtocoloRN::$NA_RESTRITO: return self::STA_SIGILO_RESTRITO; break; case ProtocoloRN::$NA_SIGILOSO: return self::STA_SIGILO_SIGILOSO; break; default: break; } } public function listarProcessosApensados($dblIdProcedimentoAtual, $idUnidadeAtual, $strPalavrasPesquisa = '', $numRegistros = 15) { $arrObjProcessosApensados = array(); try{ $objInfraException = new InfraException(); $idUnidadeAtual = filter_var($idUnidadeAtual, FILTER_SANITIZE_NUMBER_INT); if(!$idUnidadeAtual){ $objInfraException->adicionarValidacao('Processo inválido.'); } $objInfraException->lancarValidacoes(); //Pesquisar procedimentos que estão abertos na unidade atual $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setDistinct(true); $objAtividadeDTO->retDblIdProtocolo(); $objAtividadeDTO->retStrProtocoloFormatadoProtocolo(); $objAtividadeDTO->retNumIdUnidade(); $objAtividadeDTO->retStrDescricaoUnidadeOrigem(); $objAtividadeDTO->setNumIdUnidade($idUnidadeAtual); $objAtividadeDTO->setDblIdProtocolo($dblIdProcedimentoAtual, InfraDTO::$OPER_DIFERENTE); $objAtividadeDTO->setDthConclusao(null); $objAtividadeDTO->setStrStaEstadoProtocolo(ProtocoloRN::$TE_NORMAL); $arrPalavrasPesquisa = explode(' ',$strPalavrasPesquisa); for($i=0; $isetStrProtocoloFormatadoProtocolo($arrPalavrasPesquisa[0],InfraDTO::$OPER_LIKE); }else{ $objAtividadeDTO->unSetStrProtocoloFormatadoProtocolo(); $a = array_fill(0,count($arrPalavrasPesquisa),'ProtocoloFormatadoProtocolo'); $b = array_fill(0,count($arrPalavrasPesquisa),InfraDTO::$OPER_LIKE); $d = array_fill(0,count($arrPalavrasPesquisa)-1,InfraDTO::$OPER_LOGICO_AND); $objAtividadeDTO->adicionarCriterio($a,$b,$arrPalavrasPesquisa,$d); } $arrResultado = array(); $arrObjAtividadeDTO = $this->objAtividadeRN->listarRN0036($objAtividadeDTO); //$arrObjAtividadeDTOIndexado = $arrObjAtividadeDTO; $arrObjAtividadeDTOIndexado = InfraArray::indexarArrInfraDTO($arrObjAtividadeDTO, 'ProtocoloFormatadoProtocolo', true); foreach ($arrObjAtividadeDTOIndexado as $key => $value) { if(is_array($value) && count($value) == 1) { $arrResultado[] = $value[0]; } } $arrObjProcessosApensados = array_slice($arrResultado, 0, $numRegistros); } catch(Exception $e) { throw new InfraException("Error Processing Request", $e); } return $arrObjProcessosApensados; } public function listarProcessosAbertos($dblIdProcedimentoAtual, $idUnidadeAtual){ $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setDistinct(true); $objAtividadeDTO->retDblIdProtocolo(); $objAtividadeDTO->retNumIdUnidade(); //$objAtividadeDTO->setNumIdUnidade($idUnidadeAtual); $objAtividadeDTO->setDblIdProtocolo($dblIdProcedimentoAtual, InfraDTO::$OPER_DIFERENTE); $objAtividadeDTO->setDthConclusao(null); $objAtividadeDTO->setStrStaEstadoProtocolo(ProtocoloRN::$TE_NORMAL); $arrObjAtividadeDTO = $this->objAtividadeRN->listarRN0036($objAtividadeDTO); $arrayProcedimentos = array(); foreach($arrObjAtividadeDTO as $atividade){ $arrayProcedimentos[$atividade->getDblIdProtocolo()][$atividade->getNumIdUnidade()] = 1; } return $arrayProcedimentos; } public function listarProcessosApensadosAvancado(AtividadeDTO $objAtividadeDTO, $dblIdProcedimentoAtual, $idUnidadeAtual, $strPalavrasPesquisa = '', $strDescricaoPesquisa = '', $numRegistros = 15) { $arrObjProcessosApensados = array(); try{ $objInfraException = new InfraException(); $idUnidadeAtual = filter_var($idUnidadeAtual, FILTER_SANITIZE_NUMBER_INT); if(!$idUnidadeAtual){ $objInfraException->adicionarValidacao('Processo inválido.'); } $objInfraException->lancarValidacoes(); //Pesquisar procedimentos que estão abertos na unidade atual $objAtividadeDTO->setDistinct(true); $objAtividadeDTO->retDblIdProtocolo(); $objAtividadeDTO->retStrProtocoloFormatadoProtocolo(); $objAtividadeDTO->retNumIdUnidade(); $objAtividadeDTO->retStrDescricaoUnidadeOrigem(); $objAtividadeDTO->setNumIdUnidade($idUnidadeAtual); $objAtividadeDTO->setDblIdProtocolo($dblIdProcedimentoAtual, InfraDTO::$OPER_DIFERENTE); $objAtividadeDTO->setDthConclusao(null); $objAtividadeDTO->setStrStaEstadoProtocolo(ProtocoloRN::$TE_NORMAL); ///$objAtividadeDTO->setStrDescricaoProtocolo('%'.$strDescricaoPesquisa.'%',InfraDTO::$OPER_LIKE); $arrPalavrasPesquisa = explode(' ',$strPalavrasPesquisa); for($i=0; $isetStrProtocoloFormatadoProtocolo($arrPalavrasPesquisa[0],InfraDTO::$OPER_LIKE); }else{ $objAtividadeDTO->unSetStrProtocoloFormatadoProtocolo(); $a = array_fill(0,count($arrPalavrasPesquisa),'ProtocoloFormatadoProtocolo'); $b = array_fill(0,count($arrPalavrasPesquisa),InfraDTO::$OPER_LIKE); $d = array_fill(0,count($arrPalavrasPesquisa)-1,InfraDTO::$OPER_LOGICO_AND); $objAtividadeDTO->adicionarCriterio($a,$b,$arrPalavrasPesquisa,$d); } $arrResultado = array(); $arrObjAtividadeDTO = $this->objAtividadeRN->listarRN0036($objAtividadeDTO); //$arrObjAtividadeDTOIndexado = $arrObjAtividadeDTO; $arrObjAtividadeDTOIndexado = InfraArray::indexarArrInfraDTO($arrObjAtividadeDTO, 'ProtocoloFormatadoProtocolo', true); foreach ($arrObjAtividadeDTOIndexado as $key => $value) { if(is_array($value) && count($value) == 1) { $arrResultado[] = $value[0]; } } $arrObjProcessosApensados = array_slice($arrResultado, 0, $numRegistros); } catch(Exception $e) { throw new InfraException("Error Processing Request", $e); } return $arrObjProcessosApensados; } /** * Recebe o recibo de tramite do procedimento do barramento * * @param int $parNumIdTramite * @return bool */ private function receberReciboDeEnvio($parNumIdTramite){ if (empty($parNumIdTramite)) { return false; } $objReciboTramiteEnviadoDTO = new ReciboTramiteEnviadoDTO(); $objReciboTramiteEnviadoDTO->setNumIdTramite($parNumIdTramite); $objGenericoBD = new GenericoBD(BancoSEI::getInstance()); if ($objGenericoBD->contar($objReciboTramiteEnviadoDTO) > 0) { return false; } $objReciboTramiteEnviadoDTO = $this->objProcessoEletronicoRN->receberReciboDeEnvio($parNumIdTramite); if (empty($objReciboTramiteEnviadoDTO)) { return false; } $objGenericoBD->cadastrar($objReciboTramiteEnviadoDTO); return true; } /** * Atualiza os dados do protocolo somente para o modulo PEN * * @param int $dblIdProtocolo * @return null */ private function atualizarPenProtocolo($dblIdProtocolo = 0){ $objProtocoloDTO = new PenProtocoloDTO(); $objProtocoloDTO->setDblIdProtocolo($dblIdProtocolo); $objProtocoloDTO->retTodos(); $objProtocoloDTO->getNumMaxRegistrosRetorno(1); $objProtocoloBD = new ProtocoloBD($this->getObjInfraIBanco()); $objProtocoloDTO = $objProtocoloBD->consultar($objProtocoloDTO); if(empty($objProtocoloDTO)) { $objProtocoloDTO = new PenProtocoloDTO(); $objProtocoloDTO->setDblIdProtocolo($dblIdProtocolo); $objProtocoloDTO->setStrSinObteveRecusa('N'); $objProtocoloBD->cadastrar($objProtocoloDTO); } else { $objProtocoloDTO->setStrSinObteveRecusa('N'); $objProtocoloBD->alterar($objProtocoloDTO); } } // //---------------------------------------------------------------------------------------------// // // IMPLEMENTAÇÃO SOFTMAIS // // //---------------------------------------------------------------------------------------------// // public function consultarUnidadesHierarquia() { // $selRepositorioEstruturas = (int) $_POST['selRepositorioEstruturas']; // $i = 0; // $dadosArray = array(); // $dadosArrayHierarquia = array(); // $result = $this->objProcessoEletronicoRN->serviceConsultarEstruturas($selRepositorioEstruturas); // if (is_object($result->estruturasEncontradas->estrutura)) // $result->estruturasEncontradas->estrutura = array($result->estruturasEncontradas->estrutura); // foreach ($result->estruturasEncontradas->estrutura as $estrutura) { // $j = 0; // if (isset($estrutura->nome)) // $dadosArray[$i]['estrutura'] = array('nome' => $estrutura->nome, 'numeroDeIdentificacaoDaEstrutura' => $estrutura->numeroDeIdentificacaoDaEstrutura); // if (isset($estrutura->hierarquia)) { // if (is_object($estrutura->hierarquia->nivel)) // $estrutura->hierarquia->nivel = array($estrutura->hierarquia->nivel); // foreach ($estrutura->hierarquia->nivel as $key => $nivel) { // $dadosArrayHierarquia[$j] = array('nome' => $nivel->nome, 'numeroDeIdentificacaoDaEstrutura' => $nivel->numeroDeIdentificacaoDaEstrutura); // $j++; // } // } // $dadosArray[$i]['hierarquia'] = $dadosArrayHierarquia; // $i++; // } // echo json_encode($dadosArray); // } // /** // * @author Fabio.braga@softimais.com.br // * @deprecated enviar docTramites // * data : 28/05/2015 // * @return 1 // */ // public function enviarDocProdimentoTramite() // { // $resultListaPendencia = $this->consultarListarPendencias(); // // echo "
";
// //           var_dump($resultListaPendencia);
// //           exit;

//             foreach ($resultListaPendencia->listaDePendencias->IDT as $listaPendencia)
//             {  

//                 if($listaPendencia->status == 1  )
//                 {

//                  $resultTramite  = $this->objProcessoEletronicoRN->serviceConsultarTramitesComFiltros( $listaPendencia->_  );

//                  $resultDocumentos = $this->consultarProtocoloNumeroProtocolo($resultTramite->tramitesEncontrados->tramite->protocolo);

//                  foreach ($resultDocumentos->Documentos as  $key => $documentos)
//                  {

//                     $fp = fopen( 'modulos/pen/binario1.txt', "w+");
//                     fwrite($fp, $documentos->getStrConteudo() );
//                     fclose($fp);

//                   $caminhoRelativoArquivo = 'modulos/pen/binario1.txt';
//                   $conteudoComponenteDigital = file_get_contents($caminhoRelativoArquivo);


//                   $hashDoComponenteDigitalEmBytes = hash('sha256', $conteudoComponenteDigital, true);
//                   $hashDoComponenteDigital = base64_encode($hashDoComponenteDigitalEmBytes);

//                   $param = new stdClass();
//                   $param->dadosDoComponenteDigital = new stdClass();
//                   $param->dadosDoComponenteDigital->ticketParaEnvioDeComponentesDigitais = $listaPendencia->_ ;
//                   $param->dadosDoComponenteDigital->protocolo = $resultTramite->tramitesEncontrados->tramite->protocolo;

//                   $param->dadosDoComponenteDigital->hashDoComponenteDigital = $hashDoComponenteDigital;
//                   $param->dadosDoComponenteDigital->conteudoDoComponenteDigital = new SoapVar($conteudoComponenteDigital, XSD_BASE64BINARY);
//                   $this->objProcessoEletronicoRN->serviceEnviarComponenteDigital($param);


//                   $param = new stdClass();
//                   $param->IDT =$listaPendencia->_  ;

//                  $metadados = $this->objProcessoEletronicoRN->serviceSolicitarMetadados($param);

//                  }


//                 }


//             }





//     }
    
    
    
//     /**
//      * @author Fabio.braga@softimais.com.br
//      * @deprecated  consulta  processo  
//      * data : 28/05/2015
//      * @return objet 
//      */
    
//     public function consultarListarPendencias()
//     {

//      $result =  $this->objProcessoEletronicoRN->serviceListarTodasPendencias( );

//      return $result; 
//     }


//     /**
//      * @author Fabio.braga@softimais.com.br
//      * @deprecated  consulta  processo  
//      * data : 28/05/2015
//      * @return objet 
//      */
    
//     public function consultarListaPendenciasFiltro( $IDT )
//     {

//      $result =  $this->objProcessoEletronicoRN->serviceListarTodasPendencias( );

//      return $result; 
//     }

     /**
      * @author Fabio.braga@softimais.com.br
      * @deprecated  consulta  processo  
      * data : 28/05/2015
      * @return objet 
      */
     public function listarTramiteParaCancelar($idProcedimento) {
         $objProtocoloDTO  = $this->consultarProtocoloPk($idProcedimento);
         
         echo "DEBUG protocolo 
";
         var_dump($objProtocoloDTO);
         die("
"); $result = $this->objProcessoEletronicoRN->serviceConsultarTramitesProtocolo( $objProtocoloDTO->getStrProtocoloFormatado( ) ); return $result; } // /** // * @author Fabio.braga@softimais.com.br // * @deprecated consulta processo // * data : 28/05/2015 // * @return objet // */ // public function listarTramiteIDT($iIDT) { // $result = $this->objProcessoEletronicoRN->serviceConsultarTramitesIDT( $iIDT ); // return $result; // } /** * Cancela uma expedição de um Procedimento para outra unidade * * @param int $dblIdProcedimento * @throws InfraException */ public function cancelarTramite($dblIdProcedimento) { $objDTOFiltro = new ProcessoEletronicoDTO(); $objDTOFiltro->setDblIdProcedimento($dblIdProcedimento); $objDTOFiltro->retStrNumeroRegistro(); $objDTOFiltro->setNumMaxRegistrosRetorno(1); $objBD = new ProcessoEletronicoBD($this->getObjInfraIBanco()); $objProcessoEletronicoDTO = $objBD->consultar($objDTOFiltro); if(empty($objProcessoEletronicoDTO)) { throw new InfraException('Não foi Encontrado o Processo pelo ID '. $dblIdProcedimento); } $objDtoProtocolo = new ProtocoloDTO(); $objDtoProtocolo->retStrProtocoloFormatado(); $objDtoProtocolo->setDblIdProtocolo($dblIdProcedimento); $objProtocoloBD = new ProtocoloBD($this->getObjInfraIBanco()); $objDtoProtocolo = $objProtocoloBD->consultar($objDtoProtocolo); // $objDTOFiltro = new TramiteDTO(); // $objDTOFiltro->setStrNumeroRegistro($objProcessoEletronicoDTO->getStrNumeroRegistro()); // $objDTOFiltro->setNumMaxRegistrosRetorno(1); // $objDTOFiltro->setOrdNumIdTramite(InfraDTO::$TIPO_ORDENACAO_DESC); // $objDTOFiltro->retTodos(); // // $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); // $objTramiteDTO = $objTramiteBD->consultar($objDTOFiltro); // // if(empty($objTramiteDTO)) { // throw new InfraException('Não foi Encontrado Trâmite para Esse Processo!'); // } $arrObjMetaTramite = $this->objProcessoEletronicoRN->consultarTramitesProtocolo($objDtoProtocolo->getStrProtocoloFormatado()); if(empty($arrObjMetaTramite)) { throw new InfraException('Não foi Encontrado Trâmite para Esse Processo!'); } $numSituacaoAtual = 0; // Se o barramento possui alguma situação do tramite verificamos se o precedimento // já esta em recebimento if(!empty($arrObjMetaTramite)) { $objMetaTramite = array_pop($arrObjMetaTramite); switch($objMetaTramite->situacaoAtual) { case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO: throw new InfraException("O sistema destinatário já iniciou o recebimento desse processo, portanto não é possivel realizar o cancelamento"); break; case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE: throw new InfraException("O sistema destinatário já recebeu esse processo, portanto não é possivel realizar o cancelamento"); break; case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO: throw new InfraException("O processo já se encontra cancelado"); break; case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO: throw new InfraException("O processo se encontra recusado"); break; } $numSituacaoAtual = $objMetaTramite->situacaoAtual; } $this->objProcessoEletronicoRN->cancelarTramite($objMetaTramite->IDT); // Muda o Status o procedimento para NORMAL $objProcesso = (object)array('idProcedimentoSEI' => $dblIdProcedimento); ExpedirProcedimentoRN::mudarEstadoProcedimentoNormal($objProcesso, ProtocoloRN::$TE_NORMAL); $objDTOFiltro = new TramiteDTO(); $objDTOFiltro->setNumIdTramite($objMetaTramite->IDT); $objDTOFiltro->setNumMaxRegistrosRetorno(1); $objDTOFiltro->setOrdNumIdTramite(InfraDTO::$TIPO_ORDENACAO_DESC); $objDTOFiltro->retTodos(); $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); $objTramiteDTO = $objTramiteBD->consultar($objDTOFiltro); $objTramiteDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO); $objTramiteBD->alterar($objTramiteDTO); //Cria o Objeto que registrará a Atividade de cancelamento $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setDblIdProtocolo($objProcesso->idProcedimentoSEI); $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO); //Seta os atributos do tamplate de descrição dessa atividade $objAtributoAndamentoDTOHora = new AtributoAndamentoDTO(); $objAtributoAndamentoDTOHora->setStrNome('DATA_HORA'); $objAtributoAndamentoDTOHora->setStrIdOrigem(null); $objAtributoAndamentoDTOHora->setStrValor(date('d/m/Y H:i')); $objAtributoAndamentoDTOUser = new AtributoAndamentoDTO(); $objAtributoAndamentoDTOUser->setStrNome('USUARIO'); $objAtributoAndamentoDTOUser->setStrIdOrigem(null); $objAtributoAndamentoDTOUser->setStrValor(SessaoSEI::getInstance()->getStrNomeUsuario()); $objAtividadeDTO->setArrObjAtributoAndamentoDTO(array($objAtributoAndamentoDTOHora, $objAtributoAndamentoDTOUser)); $objAtividadeRN = new AtividadeRN(); $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); } // // private function validarStrSinGerarPendenciaRN0901(ProcedimentoDTO $objProcedimentoDTO, InfraException $objInfraException){ // // if (InfraString::isBolVazia($objProcedimentoDTO->getStrSinGerarPendencia())){ // // $objInfraException->adicionarValidacao('Sinalizador de geração de andamento automático não informado.'); // // }else{ // // if (!InfraUtil::isBolSinalizadorValido($objProcedimentoDTO->getStrSinGerarPendencia())){ // // $objInfraException->adicionarValidacao('Sinalizador de geração de andamento automático inválido.'); // // } // // } // // } // // public function consultarProcessosApensados($idProcedimento) { // // $protocolosArray = array(); // // $idProcedimento = filter_var($idProcedimento, FILTER_SANITIZE_NUMBER_INT); // // $objExpedirProcedimenroBD = new ExpedirProcedimentoBD($this->inicializarObjInfraIBanco()); // // $valoresProtocolo = $objExpedirProcedimenroBD->buscarProcessosAnexados($idProcedimento); // // foreach ($valoresProtocolo as $protocolos) { // // $resultProtocolo = $this->validarProcessoAbertoUnidade($protocolos->id_protocolo); // // if ($resultProtocolo['retorno'] == 1) // // $protocolosArray[] = $protocolos; // // } // // return $protocolosArray; // // } // public function consultarProcessosApensadosDetalahar($idPrtocedimento) { // $idPrtocedimento = (int) $idPrtocedimento[0]; // $objProtocoloDTO = new ProtocoloDTO(); // $objProtocoloDTO->setDblIdProtocolo($idPrtocedimento); // $objProtocoloDTO->retTodos(); // $objProtocoloDTO = $this->objProtocoloRN->consultarRN0186($objProtocoloDTO); // $objProtocoloDTO->UnidadeGeradora = $this->consultaUnidadePk($objProtocoloDTO->getNumIdUnidadeGeradora()); // $objProtocoloDTO->UsuarioCriador = $this->consultaUsuarioPk($objProtocoloDTO->getNumIdUsuarioGerador()); // return $objProtocoloDTO; // } public function consultaUnidadePk($idUnidade) { $objUnidadeDTO = new UnidadeDTO(); $objUnidadeDTO->setNumIdUnidade($idUnidade); $objUnidadeDTO->retTodos(); $objUnidadeDTO = $this->objUnidadeRN->consultarRN0125($objUnidadeDTO); return $objUnidadeDTO; } public function consultaUsuarioPk($idUsuario) { $objUsuarioDTO = new UsuarioDTO(); $objUsuarioDTO->setNumIdUsuario($idUsuario); $objUsuarioDTO->retTodos(); $objUsuarioDTO = $this->objUsuarioRN->consultarRN0489($objUsuarioDTO); return $objUsuarioDTO; } // public function setValoresModal() { // session_start(); // $this->limparValoresModal(); // $_SESSION['param'] = (array) $_POST['param']; // } // public function getValoresModal() { // if (isset($_SESSION['param'])) // return $_SESSION['param']; // } // public function limparValoresModal() { // unset($_SESSION["param"]); // } public function consultarProtocoloPk($idPrtocedimento) { $idPrtocedimento = (int)$idPrtocedimento; $objProtocoloDTO = new ProtocoloDTO(); $objProtocoloDTO->setDblIdProtocolo($idPrtocedimento); $objProtocoloDTO->retTodos(); $objProtocoloDTO = $this->objProtocoloRN->consultarRN0186($objProtocoloDTO); $objProtocoloDTO->UnidadeGeradora = $this->consultaUnidadePk($objProtocoloDTO->getNumIdUnidadeGeradora()); $objProtocoloDTO->UsuarioCriador = $this->consultaUsuarioPk($objProtocoloDTO->getNumIdUsuarioGerador()); $objProtocoloDTO->Documentos = $this->consultaDocumentosProcesso($idPrtocedimento); return $objProtocoloDTO; } // /** // * @author Fabio.braga@softimais.com.br // * @deprecated consulta processo // * data : 28/05/2015 // * @return objet // */ // public function consultarProtocoloNumeroProtocolo($protocolo) // { // $objProtocoloDTO = new ProtocoloDTO(); // $objProtocoloDTO->setStrProtocoloFormatado($protocolo); // $objProtocoloDTO->retTodos(); // $objProtocoloDTO = $this->objProtocoloRN->consultarRN0186($objProtocoloDTO); // $objProtocoloDTO->UnidadeGeradora = $this->consultaUnidadePk($objProtocoloDTO->getNumIdUnidadeGeradora()); // $objProtocoloDTO->UsuarioCriador = $this->consultaUsuarioPk($objProtocoloDTO->getNumIdUsuarioGerador()); // $objProtocoloDTO->Documentos = $this->consultaDocumentosProcesso($objProtocoloDTO->getDblIdProtocolo()); // return $objProtocoloDTO; // } public function consultaDocumentosProcesso($idPrtocedimento) { $documentoRespArray = array(); $documentoDTO = new DocumentoDTO(); $documentoDTO->setDblIdProcedimento($idPrtocedimento); $documentoDTO->retTodos(); $documentoDTO = $this->objDocumentoRN->listarRN0008($documentoDTO); return $documentoDTO; } // // public function consultaProcessoStatus($idProcedimento) { // // $objProtocoloDTO = new ProtocoloDTO(); // // $objProtocoloDTO->setDblIdProtocolo($idProcedimento); // // $objProtocoloDTO->retTodos(); // // $objProtocoloDTO = $this->objProtocoloRN->consultarRN0186($objProtocoloDTO); // // if($objProtocoloDTO->getStrStaNivelAcessoLocal( ) != 0 ) // // { // // return array('retorno'=>0); // // } // // return array('retorno'=>1); // // } // public function converterDataWebService($dataHora) // { // $resultado = ''; // if(isset($dataHora)){ // $resultado = InfraData::getTimestamp($dataHora); // $resultado = date(DateTime::W3C, $resultado); // } // return $resultado; // } // public function converterDataSEI($dataHoraWebService) // { // $resultado = ''; // if(isset($dataHoraWebService)){ // $resultado = strtotime($dataHoraWebService); // $resultado = date('d/m/Y H:i:s', $resultado); // } // return $resultado; // } // /** // * @deprecated Processo deve ser bloqueado após expedição // * data 28/05/2015 // * @author Fabiol Braga // * // */ // public function bloquearProcesso($idProcedimento) { // $idProcedimento = filter_var($idProcedimento, FILTER_SANITIZE_NUMBER_INT); // $objExpedirProcedimenroBD = new ExpedirProcedimentoBD($this->inicializarObjInfraIBanco()); // $resultProtocolo = $objExpedirProcedimenroBD->alterarProcesso(" sta_estado = 1 ", $idProcedimento); // return $resultProtocolo; // } // /** // * @deprecated valida se o processo se encontra em expedição // * @author Fabio Braga // * data 01/06/2015 // * // */ // public function validarSeProcessoExpedicao($idPrtocedimento) // { // $menssagem = ' '; // $retorno = 1; // $resultListaTramiter = $this->listarTramiteParaCancelar($idPrtocedimento); // if(is_object($resultListaTramiter->tramitesEncontrados->tramite)) // $resultListaTramiter->tramitesEncontrados->tramite = array($resultListaTramiter->tramitesEncontrados->tramite); // $resultTodasPendencias = $this->objProcessoEletronicoRN->serviceListarTodasPendencias(); // foreach ($resultListaTramiter->tramitesEncontrados->tramite as $tramite) // { // foreach ($resultTodasPendencias->listaDePendencias as $lista) // { // if( $lista->IDT == $tramite->IDT) // { // $menssagem = 'Esse processo ja foi expedido ! '; // $retorno = 0; // break; // } // } // if($retorno === 0) // break; // } // return array ('mensagem'=>$menssagem,'retorno'=>$retorno) ; // } // public function gravarAuditoria($metodo, $idPrtocedimento) { // $objExpedirProcedimentoBD = new ExpedirProcedimentoBD($this->inicializarObjInfraIBanco()); // $result = $this->consultarProtocoloPk($idPrtocedimento); // $resultUltimaAuditoria = $objExpedirProcedimentoBD->consultaUltmaAuditoria(); // $dados = array // ( // 'id_infra_auditoria' => $resultUltimaAuditoria->id_infra_auditoria + 1, // 'recurso' => 'pen_procedimento_expedir', // 'dth_acesso' => date('Y-m-d H:m:i'), // 'ip' => $_SERVER['REMOTE_ADDR'], // 'id_usuario' => SessaoSEI::getInstance()->getNumIdUsuario(), // 'sigla_usuario' => SessaoSEI::getInstance()->getStrSiglaUsuario(), // 'nome_usuario' => SessaoSEI::getInstance()->getStrNomeUsuario(), // 'id_orgao_usuario' => SessaoSEI::getInstance()->getNumIdOrgaoUsuario(), // 'sigla_orgao_usuario' => SessaoSEI::getInstance()->getStrSiglaOrgaoUsuario(), // 'id_unidade' => SessaoSEI::getInstance()->getNumIdUnidadeAtual(), // 'sigla_unidade' => SessaoSEI::getInstance()->getStrSiglaUnidadeAtual(), // 'servidor' => $_SERVER['REMOTE_ADDR'], // 'user_agent' => $_SERVER['HTTP_USER_AGENT'], // 'requisicao' => $metodo, // 'operacao' => 'Expedir Processo', // ); // $objExpedirProcedimentoBD->gravarAuditoria($dados); // } // public function cadeiaDoCertificado() { // return $cadeiaDoCertificadoPEM = "-----BEGIN CERTIFICATE----- // MIIHZTCCBU2gAwIBAgIQMjAxMjA5MDQxODEzNTI1MTANBgkqhkiG9w0BAQsFADCB // pjELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxOzA5BgNVBAsTMlNl // cnZpY28gRmVkZXJhbCBkZSBQcm9jZXNzYW1lbnRvIGRlIERhZG9zIC0gU0VSUFJP // MQ8wDQYDVQQLEwZDU1BCLTExNDAyBgNVBAMTK0F1dG9yaWRhZGUgQ2VydGlmaWNh // ZG9yYSBkbyBTRVJQUk8gRmluYWwgdjMwHhcNMTIwOTA0MTgyNTIzWhcNMTUwOTA0 // MTgxNzIzWjCBnjELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxKzAp // BgNVBAsTIkF1dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBTRVJQUk9BQ0YxETAPBgNV // BAsTCE1QLVNJQVBFMRkwFwYDVQQLExBQZXNzb2EgRmlzaWNhIEEzMR8wHQYDVQQD // ExZXQUdORUwgQUxWRVMgUk9EUklHVUVTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A // MIIBCgKCAQEAu9ixyMUZZDbZ27js6bv2PgRr+XFgMYgzIJOnX7X3bx/5h3niBD5s // YUiCFrGwO+DxonhNRFHwp6YLZfEIZC7xaC94SXqYijeJxlPfCzLWwh87AqFv+qmc // HvyK0j5g3EeiDnWDk3M/PMQmKiI2qehhP0P+f8J75QqGvZHUfIUy18QCsi47+6zJ // 04AbzJPPSCJohlrLgSTs49ju6HIbpxojCn0Je3oIVRumn7Gl3eTJuxGdjUwn9wQB // fUV4D7AuD6eKdRfpoqZwiEDvga9/OtCd9Nk/4kCt+3+C7xNDt2gH0Uq79dibGbjv // xKsfSjTE0WM/xcyNEHGuLFxPfpt0QMuK2QIDAQABo4ICkzCCAo8wDAYDVR0TAQH/ // BAIwADAfBgNVHSMEGDAWgBTafg+Cizblsgaq9mtG4adzriNffTAOBgNVHQ8BAf8E // BAMCBeAwXAYDVR0gBFUwUzBRBgZgTAECAw0wRzBFBggrBgEFBQcCARY5aHR0cHM6 // Ly9jY2Quc2VycHJvLmdvdi5ici9zZXJwcm9hY2YvZG9jcy9kcGNzZXJwcm9hY2Yu // cGRmMIG2BgNVHREEga4wgaugPQYFYEwBAwGgNAQyMTAwODE5NzQ2NDYwNzc2MzE4 // NzEyMzQ4NTUyOTc1MDAwMDAwMDAxNTM2NjcwU1NQREagNAYFYEwBAwWgKwQpMDEx // MDI5MzQyMDAzMDI4MDE0MkFHVUFTIExJTkRBUyBERSBHT0lBR0+gFwYFYEwBAwag // DgQMMDAwMDAwMDAwMDAwgRt3YWduZWwucm9kcmlndWVzQGFndS5nb3YuYnIwLAYD // VR0lAQH/BCIwIAYIKwYBBQUHAwIGCCsGAQUFBwMEBgorBgEEAYI3FAICMIG6BgNV // HR8EgbIwga8wMqAwoC6GLGh0dHA6Ly9jY2Quc2VycHJvLmdvdi5ici9sY3Ivc2Vy // cHJvYWNmdjMuY3JsMDOgMaAvhi1odHRwOi8vY2NkMi5zZXJwcm8uZ292LmJyL2xj // ci9zZXJwcm9hY2Z2My5jcmwwRKBCoECGPmh0dHA6Ly9yZXBvc2l0b3Jpby5pY3Bi // cmFzaWwuZ292LmJyL2xjci9zZXJwcm8vc2VycHJvYWNmdjMuY3JsMEwGCCsGAQUF // BwEBBEAwPjA8BggrBgEFBQcwAoYwaHR0cDovL2NjZC5zZXJwcm8uZ292LmJyL2Nh // ZGVpYXMvc2VycHJvYWNmdjMucDdiMA0GCSqGSIb3DQEBCwUAA4ICAQAYReCBluZ2 // Nb9kALBGGIZMlefk2s1G0q/MBoMnp58xjLf9qQneHWww/fNeXhVAJPvbDJgZB+Fx // mJTINU1Fk7NvqUZqEkL5rmTIyPcORcNHQ70ityDdlx/xCGXtFpPQGo8JlAPNOj2S // /nnn6wovElwGzLUTliejSdo4VadfBrJ7T0ZomcX5Mag7VBuoAfWo5QH9CrUZ/ryC // XlAmPEUqfAqt4IrT4phTybVozsPm3FoJgD52p2FN127gKmZBugt5wUvx6ulDTd/s // 1zqTRL/c135SKt1e2kSR0K4zmCNpXRJmYd8kWTHbj9MP4NhAmfMSKJaqDVrGU3pH // ei899F15H+Q/Nr3jECfn81XvwRupVq9INWB8Y55Ev6nrh7/oLtI5sjhl71IEP5aw // AFGOq0M6+R6iFMi26SfccalgmhQ92+7Vh04j64SsycOPl+ryiVUZbkpf6QCm8cmT // vLn6GTezCafazuTn3mEIIJSZ8kNqh3j3uT70fvPAnBSCbhceo6NLkVFDYvJ4sS/I // BOuAozQzb+pZfKKAyIyIpAKxxXNWArYLzam905xyFKy7tacDZDb1nkRodoENJxIY // V93cG4m1xG4ihstkquxG4R7aUdPxAuZsWp5evFdTJU4JSawZGsKzuD1jxQwz9zPD // eZhzZfrZ5dG0GvQcM8XCJ6u1TXYRrZakUg== // -----END CERTIFICATE----- // -----BEGIN CERTIFICATE----- // MIIIdjCCBl6gAwIBAgIBATANBgkqhkiG9w0BAQ0FADCBhTELMAkGA1UEBhMCQlIx // EzARBgNVBAoTCklDUC1CcmFzaWwxNDAyBgNVBAsTK0F1dG9yaWRhZGUgQ2VydGlm // aWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjIxKzApBgNVBAMTIkF1dG9yaWRhZGUg // Q2VydGlmaWNhZG9yYSBTRVJQUk8gdjMwHhcNMTExMTE2MTMzNzI3WhcNMTkxMTE2 // MTMzNzI3WjCBpjELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxOzA5 // BgNVBAsTMlNlcnZpY28gRmVkZXJhbCBkZSBQcm9jZXNzYW1lbnRvIGRlIERhZG9z // IC0gU0VSUFJPMQ8wDQYDVQQLEwZDU1BCLTExNDAyBgNVBAMTK0F1dG9yaWRhZGUg // Q2VydGlmaWNhZG9yYSBkbyBTRVJQUk8gRmluYWwgdjMwggIiMA0GCSqGSIb3DQEB // AQUAA4ICDwAwggIKAoICAQDm66/6/+CW5eKxXP0KUXdRBpKzcOY0MF4O4bV2bi+N // a7dcCRSJW7AZ9Vt3+iqRokfFa55mvNvZobWXrybvbY9nj1GJ//nGFaqRQLUFqOuj // l9gH4QTQPWLfiUGg229KYWAwzjEZs/kC87RNZPGlz5Wf1B4KpUo3YpN2VSJgj3h/ // qDDKp0ONBQGtZZLcf2BP+f0xpbLUIJJ+/RAEuAyiCK9Xs/lx87wWa6lOrunh/PIY // EH5XP4ai7oB/JUtnEs0Q3Ud66ygRrpHo7QozEVzwE7Ujib9vKFWteCpYgavgemPU // btLvUtk6lMMvFCxEjNyqq5tZHACw71ppOv4jvkPBvS4Rm2Fn01glCAZau3EO44N+ // G6oSkx2C22+VPPQsTvYfzz/CHw6f8C5Mkx6bnysC+KoY0NhZgIlsZVgr/fLtgETs // 8Z56tUU2/U6o+5pIKfhjHgbFN5Cy9jk5I3tW/Dvj6wFYNLBZ7YMMPMNCBufPVobP // 7TOGVRI9UNMvbgD3fFHgLKRWjs+oXxzs51FufhwM9yDmFUe2U1xh2WLNDROSJaaK // chbk9cLfmukEvjwllwXWwd9NVd3s8+WpOG/s0dOsJHVOMOJh+Jq2SeNrfcizfEyF // 4wfZ8dflOHra2Rrc4FBl2kyF84Y9gLRxv6RaEgE6mtfoubppxyZ/z8ZiRrH0q5AF // dQIDAQABo4ICzDCCAsgwDgYDVR0PAQH/BAQDAgEGMIIB7gYDVR0gBIIB5TCCAeEw // TgYGYEwBAgEQMEQwQgYIKwYBBQUHAgEWNmh0dHA6Ly9jY2Quc2VycHJvLmdvdi5i // ci9hY3NlcnByby9kb2NzL2RwY2Fjc2VycHJvLnBkZjBOBgZgTAECAw0wRDBCBggr // BgEFBQcCARY2aHR0cDovL2NjZC5zZXJwcm8uZ292LmJyL2Fjc2VycHJvL2RvY3Mv // ZHBjYWNzZXJwcm8ucGRmME4GBmBMAQIBETBEMEIGCCsGAQUFBwIBFjZodHRwOi8v // Y2NkLnNlcnByby5nb3YuYnIvYWNzZXJwcm8vZG9jcy9kcGNhY3NlcnByby5wZGYw // TgYGYEwBAmUMMEQwQgYIKwYBBQUHAgEWNmh0dHA6Ly9jY2Quc2VycHJvLmdvdi5i // ci9hY3NlcnByby9kb2NzL2RwY2Fjc2VycHJvLnBkZjBOBgZgTAECZwowRDBCBggr // BgEFBQcCARY2aHR0cDovL2NjZC5zZXJwcm8uZ292LmJyL2Fjc2VycHJvL2RvY3Mv // ZHBjYWNzZXJwcm8ucGRmME8GB2BMAQKCLwMwRDBCBggrBgEFBQcCARY2aHR0cDov // L2NjZC5zZXJwcm8uZ292LmJyL2Fjc2VycHJvL2RvY3MvZHBjYWNzZXJwcm8ucGRm // MHAGA1UdHwRpMGcwMaAvoC2GK2h0dHA6Ly9jY2Quc2VycHJvLmdvdi5ici9sY3Iv // YWNzZXJwcm92My5jcmwwMqAwoC6GLGh0dHA6Ly9jY2QyLnNlcnByby5nb3YuYnIv // bGNyL2Fjc2VycHJvdjMuY3JsMB8GA1UdIwQYMBaAFMjW6vmDj0xYOxzZi5uZd2Wv // yVjaMB0GA1UdDgQWBBTafg+Cizblsgaq9mtG4adzriNffTASBgNVHRMBAf8ECDAG // AQH/AgEAMA0GCSqGSIb3DQEBDQUAA4ICAQBdidAAyIUZigjF5ohrws487tcL6a6H // h/nMOoY/bKjxHu4vkcfinfkvN1kIxV5mDqjQvVWG5TOZeazcit7UcbySvwH+eErm // gmh1WlId2hCjfkRFRiQMzjN1zuLZkYY02hr0TtFvi604ZS6AGecOuMZBRJIgfDv6 // lWHMxaH+3VFy7GGgW4DdHvqjNWKLVU95weqpdOWBY5gkVB4NaxOXd4l0652y3Znw // mIf0QP2ZsAG9OBzdexBDOzSbH8460X1ueIQ5SpK3CPCo3H1qn9Z9PM9X0HPoopKh // iSPSxAa7tYGO3i/2YW0/Y+oLdtGjyZo4/tuQtrWmmvHw3ckr4V/uOHbdGV6f+etX // lQeXOvhKDEZUhdjRCtPZLlASrsSWSk9BIWDcBEdNVww19RX9QsOFOyS06syqb8DF // j3jn5envTgrTBloeuby2/nm62gqGSgszpqaNYeEc3oQsMdTdZgy/k4OqYMQbUShs // ogJOOw4i3dY7cz+Ub22XVM65c5DrjOmXpQTUqw+i4QpK008weXRmLE3W0ujDulDO // QkGSwk4q1JNibx2zbgfjzqTG9mj0XfIIMSnnhsg0Xl0IZjIIEPGSqmShV5zmIyrC // rH/+BkKPFZa4AZFu+QNhZGFJlTkM27nJG4/6gjIgXveLKs4boE2KuMIK5L9M75pF // xn7r9ET0CLYOZg== // -----END CERTIFICATE----- // -----BEGIN CERTIFICATE----- // MIIGVTCCBD2gAwIBAgIBBzANBgkqhkiG9w0BAQ0FADCBlzELMAkGA1UEBhMCQlIx // EzARBgNVBAoTCklDUC1CcmFzaWwxPTA7BgNVBAsTNEluc3RpdHV0byBOYWNpb25h // bCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNDAyBgNVBAMTK0F1 // dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjIwHhcNMTEx // MDIxMTIwMjQ3WhcNMjExMDIxMTIwMjQ3WjCBhTELMAkGA1UEBhMCQlIxEzARBgNV // BAoTCklDUC1CcmFzaWwxNDAyBgNVBAsTK0F1dG9yaWRhZGUgQ2VydGlmaWNhZG9y // YSBSYWl6IEJyYXNpbGVpcmEgdjIxKzApBgNVBAMTIkF1dG9yaWRhZGUgQ2VydGlm // aWNhZG9yYSBTRVJQUk8gdjMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC // AQDxb+z1eCFkAqtiDxv/Qyh/kyuyjnAWQKG47bumr+CvI6XYU9i3rgJCrsh3qh1Q // aANDTxMi2IjUOsGop5rd1hvMS20KaBNgz8JKmsoaeJxtk2lQNX5jQMeJPXbW+qHg // LpIHBe5UWAmkhNSg01RejukOndR13KpKXBRjfD1EuT8YrbVHItUKFacGUQdP3ud7 // ds6jGeDdVMywmKUIMbREnZQukMtN0COFiHMI+DeEhwupp1+8xRyCbOtD/yw7/Xea // hGpDnpQPqpbkb9hT7cjAtjVsZZt/CwlqAUSgO2/fsFb4NWd5s76edq0qvfLv4AKj // hzzB8LHAb0R+DMEDSfseJ/BDFkg9+EqWMDROSnVakQegUmx8sfOMF7aF66uNf7r6 // 8rwVpch01UGPQqVFvJTLLUpOKPAHYMZ1zT9V39+X2NwmAFfjw5yjDQZ5rBYkm3V9 // /i65/nI4XKAEL6+a3kcEbZjTmX2EwCzvpTKWt6dE2L5LvdMHkp8jPpC72/25zPSM // 3xGQAGnQ9wkL3wQLu+ya2xHi4xDkP6T7ELTBZEN2Kqfk2/2ZKhjrs6ImjbI5KOqs // //qqLQLkf9ij0AUiOIozbrWbHQmpOXI6SZzm32C8ES5+4HebILB9d6GVJva09hyG // gesuaIWZe4tGnXm7QIqHBDu+iHOgVA7hWG9/K/meA+MqvQIDAQABo4G7MIG4MB0G // A1UdDgQWBBTI1ur5g49MWDsc2YubmXdlr8lY2jAPBgNVHRMBAf8EBTADAQH/MA4G // A1UdDwEB/wQEAwIBBjAUBgNVHSAEDTALMAkGBWBMAQECMAAwPwYDVR0fBDgwNjA0 // oDKgMIYuaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0xDUmFjcmFpenYy // LmNybDAfBgNVHSMEGDAWgBQMOSA6twEfy9cofUGgx/pKrTIkvjANBgkqhkiG9w0B // AQ0FAAOCAgEAIybRY3G1KgJb33HvcDnNPEdFpC1J88C+hTWZuQyqamb85Eaiwl3Q // tiw59W+7u4LMrZdJJuur4NYHUNzeHfs3Ce/sVULf2Ord1d7VvQPKSwrOdPIDuMbB // vQRyZgSPy9kpPSQZ+h60+kqG8er39eNnqcCj1J17TpQZpWjKJn8hocqGCGeY7Tu8 // XaPKhzshDqPCwWEvQB0uj8Mt/OSKcarvzBpmPlcotH7dcdKP0Ur0UNfQLqD7Yu/E // DSGQ/WqQ2nS3vIxeRL2ULn3Lq27EWaWmRD2mfQHyE5yCUUoWwDrJJrkE5u8dGG61 // VcNaKtZYwaHHTQuf8LiV7pK4NqcjCNXX9SvKvz1DydFAJheBlPaJ1xnzSbD4tPeR // VqkXC6WlJBGXcREYt1EUpJ+LESkQy1j9ooerXUcNnZKipBYxFyB3WTKaGjrJ1JDx // zHe7x402F3jQKDIILRekN0UrRjygDUaMmH/RikTVPFt2+f2c4FqdvVTdXJ7zjAgO // 92z0QzjSEZBSLaVvQSr2kEV9C2n0CsCuztHu6PycpwZeZS/eH/yk8LMZAH76TG0l // Et+CKwNUUPgjK+fIedCs87sxU2QQ09pDptAkKQWm3fPotWaVD4NrHivZj4tX8W/I // soDk7v6OV+H2B9eJ2Rsdszr0abUOIrf8cMtPG2wvDZ5wXAxy5jL73VM= // -----END CERTIFICATE----- // -----BEGIN CERTIFICATE----- // MIIGoTCCBImgAwIBAgIBATANBgkqhkiG9w0BAQ0FADCBlzELMAkGA1UEBhMCQlIx // EzARBgNVBAoTCklDUC1CcmFzaWwxPTA7BgNVBAsTNEluc3RpdHV0byBOYWNpb25h // bCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNDAyBgNVBAMTK0F1 // dG9yaWRhZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjIwHhcNMTAw // NjIxMTkwNDU3WhcNMjMwNjIxMTkwNDU3WjCBlzELMAkGA1UEBhMCQlIxEzARBgNV // BAoTCklDUC1CcmFzaWwxPTA7BgNVBAsTNEluc3RpdHV0byBOYWNpb25hbCBkZSBU // ZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxNDAyBgNVBAMTK0F1dG9yaWRh // ZGUgQ2VydGlmaWNhZG9yYSBSYWl6IEJyYXNpbGVpcmEgdjIwggIiMA0GCSqGSIb3 // DQEBAQUAA4ICDwAwggIKAoICAQC6RqQO3edA8rWgfFKVV0X8bYTzhgHJhQOtmKvS // 8l4Fmcm7b2Jn/XdEuQMHPNIbAGLUcCxCg3lmq5lWroG8akm983QPYrfrWwdmlEIk // nUasmkIYMPAkqFFB6quV8agrAnhptSknXpwuc8b+I6Xjps79bBtrAFTrAK1POkw8 // 5wqIW9pemgtW5LVUOB3yCpNkTsNBklMgKs/8dG7U2zM4YuT+jkxYHPePKk3/xZLZ // CVK9z3AAnWmaM2qIh0UhmRZRDTTfgr20aah8fNTd0/IVXEvFWBDqhRnLNiJYKnIM // mpbeys8IUWG/tAUpBiuGkP7pTcMEBUfLz3bZf3Gmh3sVQOQzgHgHHaTyjptAO8ly // UN9pvvAslh+QtdWudONltIwa6Wob+3JcxYJU6uBTB8TMEun33tcv1EgvRz8mYQSx // Epoza7WGSxMr0IadR+1p+/yEEmb4VuUOimx2xGsaesKgWhLRI4lYAXwIWNoVjhXZ // fn03tqRF9QOFzEf6i3lFuGZiM9MmSt4c6dR/5m0muTx9zQ8oCikPm91jq7mmRxqE // 14WkA2UGBEtSjYM0Qn8xjhEu5rNnlUB+l3pAAPkRbIM4WK0DM1umxMHFsKwNqQbw // pmkBNLbp+JRITz6mdQnsSsU74MlesDL/n2lZzzwwbw3OJ1fsWhto/+xPb3gyPnnF // tF2VfwIDAQABo4H1MIHyME4GA1UdIARHMEUwQwYFYEwBAQAwOjA4BggrBgEFBQcC // ARYsaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0RQQ2FjcmFpei5wZGYw // PwYDVR0fBDgwNjA0oDKgMIYuaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJy // L0xDUmFjcmFpenYyLmNybDAfBgNVHSMEGDAWgBQMOSA6twEfy9cofUGgx/pKrTIk // vjAdBgNVHQ4EFgQUDDkgOrcBH8vXKH1BoMf6Sq0yJL4wDwYDVR0TAQH/BAUwAwEB // /zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQADggIBAFmaFGkYbX0pQ3B9 // dpth33eOGnbkqdbLdqQWDEyUEsaQ0YEDxa0G2S1EvLIJdgmAOWcAGDRtBgrmtRBZ // SLp1YPw/jh0YVXArnkuVrImrCncke2HEx5EmjkYTUTe2jCcK0w3wmisig4OzvYM1 // rZs8vHiDKTVhNvgRcTMgVGNTRQHYE1qEO9dmEyS3xEbFIthzJO4cExeWyCXoGx7P // 34VQbTzq91CeG5fep2vb1nPSz3xQwLCM5VMSeoY5rDVbZ8fq1PvRwl3qDpdzmK4p // v+Q68wQ2UCzt3h7bhegdhAnu86aDM1tvR3lPSLX8uCYTq6qz9GER+0Vn8x0+bv4q // SyZEGp+xouA82uDkBTp4rPuooU2/XSx3KZDNEx3vBijYtxTzW8jJnqd+MRKKeGLE // 0QW8BgJjBCsNid3kXFsygETUQuwq8/JAhzHVPuIKMgwUjdVybQvm/Y3kqPMFjXUX // d5sKufqQkplliDJnQwWOLQsVuzXxYejZZ3ftFuXoAS1rND+Og7P36g9KHj41hJ2M // gDQ/qZXow63EzZ7KFBYsGZ7kNou5uaNCJQc+w+XVaE+gZhyms7ZzHJAaP0C5GlZC // cIf/by0PEf0e//eFMBUO4xcx7ieVzMnpmR6Xx21bB7UFaj3yRd+6gnkkcC6bgh9m // qaVtJ8z2KqLRX4Vv4EadqtKlTlUO // -----END CERTIFICATE-----"; // } }