From 11c8db6a248007fbddba41fcb103b44652b74223 Mon Sep 17 00:00:00 2001 From: Rafael Viva <02077014075> Date: Mon, 29 Jan 2018 14:11:17 -0200 Subject: [PATCH] primeiro commit --- MdWsSeiRest.php | 354 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ codigo-fonte/mod-wssei/dto/MdWsSeiAssuntoDTO.php | 21 +++++++++++++++++++++ codigo-fonte/mod-wssei/dto/MdWsSeiContatoDTO.php | 21 +++++++++++++++++++++ codigo-fonte/mod-wssei/dto/MdWsSeiDocumentoDTO.php | 21 +++++++++++++++++++++ codigo-fonte/mod-wssei/dto/MdWsSeiHipoteseLegalDTO.php | 21 +++++++++++++++++++++ codigo-fonte/mod-wssei/dto/MdWsSeiProcedimentoDTO.php | 21 +++++++++++++++++++++ codigo-fonte/mod-wssei/dto/MdWsSeiTipoProcedimentoDTO.php | 21 +++++++++++++++++++++ codigo-fonte/mod-wssei/rn/MdWsSeiContatoRN.php | 1321 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ codigo-fonte/mod-wssei/rn/MdWsSeiHipoteseLegalRN.php | 1321 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ controlador_ws.php | 1089 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 4211 insertions(+), 0 deletions(-) create mode 100644 MdWsSeiRest.php create mode 100644 codigo-fonte/mod-wssei/dto/MdWsSeiAssuntoDTO.php create mode 100644 codigo-fonte/mod-wssei/dto/MdWsSeiContatoDTO.php create mode 100644 codigo-fonte/mod-wssei/dto/MdWsSeiDocumentoDTO.php create mode 100644 codigo-fonte/mod-wssei/dto/MdWsSeiHipoteseLegalDTO.php create mode 100644 codigo-fonte/mod-wssei/dto/MdWsSeiProcedimentoDTO.php create mode 100644 codigo-fonte/mod-wssei/dto/MdWsSeiTipoProcedimentoDTO.php create mode 100644 codigo-fonte/mod-wssei/rn/MdWsSeiContatoRN.php create mode 100644 codigo-fonte/mod-wssei/rn/MdWsSeiHipoteseLegalRN.php create mode 100644 controlador_ws.php diff --git a/MdWsSeiRest.php b/MdWsSeiRest.php new file mode 100644 index 0000000..95aedbf --- /dev/null +++ b/MdWsSeiRest.php @@ -0,0 +1,354 @@ + $val) { + $response[$key] = MdWsSeiRest::dataToUtf8($val); + } + return $response; + } + + public static function dataToIso88591($item) + { + if (is_array($item)) { + $itemArr = $item; + } else if (is_object($item)) { + $itemArr = get_object_vars($item); + } else if (is_bool($item)) { + return $item; + } else { + return mb_convert_encoding($item, 'ISO-8859-1'); + } + $response = array(); + foreach ($itemArr as $key => $val) { + $response[$key] = MdWsSeiRest::dataToIso88591($val); + } + return $response; + } + + /** + * Formata o retorno da mensagem para o padrão do controlador de serviços REST + * @param null $mensagem + * @param null $result + * @param null $total + * @param bool $jsonEncode - Se alterado para true retornará como json_encode + * @return array + */ + public static function formataRetornoSucessoREST($mensagem = null, $result = null, $total = null, $jsonEncode = false) + { + $data = array(); + $data['sucesso'] = true; + if ($mensagem) { + $data['mensagem'] = $mensagem; + } + if ($result) { + $data['data'] = $result; + } + if (!is_null($total)) { + $data['total'] = $total; + } + $retorno = MdWsSeiRest::dataToUtf8($data); + + return !$jsonEncode ? $retorno : json_encode($retorno); + } + + /** + * Formata o retorno da mensagem para o padrão do controlador de serviços REST + * @param Exception $e + * @return array + */ + public static function formataRetornoErroREST(Exception $e) + { + $mensagem = $e->getMessage(); + if ($e instanceof InfraException) { + if (!$e->getStrDescricao()) { + /** @var InfraValidacaoDTO $validacaoDTO */ + if (count($e->getArrObjInfraValidacao()) == 1) { + $mensagem = $e->getArrObjInfraValidacao()[0]->getStrDescricao(); + } else { + foreach ($e->getArrObjInfraValidacao() as $validacaoDTO) { + $mensagem[] = $validacaoDTO->getStrDescricao(); + } + } + } else { + $mensagem = $e->getStrDescricao(); + } + + } + return MdWsSeiRest::dataToUtf8( + array( + "sucesso" => false, + "mensagem" => $mensagem, + "exception" => $e + ) + ); + } + + public function __construct() + { + } + + /** + * Método que verifica se o módulo esta ativo nas configurações do SEI + */ + public static function moduloAtivo() + { + global $SEI_MODULOS; + $ativo = false; + foreach ($SEI_MODULOS as $modulo) { + if ($modulo instanceof self) { + $ativo = true; + break; + } + } + return $ativo; + } + + /** + * Retorna se é compativel com a versão atual do SEI instalado + * @param $strVersaoSEI + * @return bool + */ + public function verificaCompatibilidade($strVersaoSEI) + { + if (substr($strVersaoSEI, 0, 2) != '3.') { + return false; + } + return true; + } + + public function getNome() + { + return 'Módulo de provisionamento de serviços REST do SEI'; + } + + public function getVersao() + { + return '0.7.10'; + } + + public function getInstituicao() + { + return 'wssei'; + } + + public function inicializar($strVersaoSEI) + { + if (!$this->verificaCompatibilidade($strVersaoSEI)) { + die('Módulo "' . $this->getNome() . '" (' . $this->getVersao() . ') não e compatível com esta versão do SEI (' . $strVersaoSEI . ').'); + } + } + + public function montarBotaoControleProcessos() + { + return array(); + } + + public function montarIconeControleProcessos($arrObjProcedimentoAPI) + { + return array(); + } + + public function montarIconeAcompanhamentoEspecial($arrObjProcedimentoAPI) + { + return array(); + } + + public function montarIconeProcesso(ProcedimentoAPI $objProcedimentoAPI) + { + return array(); + } + + public function montarBotaoProcesso(ProcedimentoAPI $objProcedimentoAPI) + { + return array(); + } + + public function montarIconeDocumento(ProcedimentoAPI $objProcedimentoAPI, $arrObjDocumentoAPI) + { + return array(); + } + + public function montarBotaoDocumento(ProcedimentoAPI $objProcedimentoAPI, $arrObjDocumentoAPI) + { + return array(); + } + + public function alterarIconeArvoreDocumento(ProcedimentoAPI $objProcedimentoAPI, $arrObjDocumentoAPI) + { + return array(); + } + + public function montarMenuPublicacoes() + { + return array(); + } + + public function montarMenuUsuarioExterno() + { + return array(); + } + + public function montarAcaoControleAcessoExterno($arrObjAcessoExternoAPI) + { + return array(); + } + + public function montarAcaoDocumentoAcessoExternoAutorizado($arrObjDocumentoAPI) + { + return array(); + } + + public function montarAcaoProcessoAnexadoAcessoExternoAutorizado($arrObjProcedimentoAPI) + { + return array(); + } + + public function montarBotaoAcessoExternoAutorizado(ProcedimentoAPI $objProcedimentoAPI) + { + return array(); + } + + public function montarBotaoControleAcessoExterno() + { + return array(); + } + + public function processarControlador($strAcao) + { + return false; + } + + public function processarControladorAjax($strAcao) + { + return null; + } + + public function processarControladorPublicacoes($strAcao) + { + return false; + } + + public function processarControladorExterno($strAcao) + { + return false; + } + + public function verificarAcessoProtocolo($arrObjProcedimentoAPI, $arrObjDocumentoAPI) + { + return null; + } + + public function verificarAcessoProtocoloExterno($arrObjProcedimentoAPI, $arrObjDocumentoAPI) + { + return null; + } + + public function montarMensagemProcesso(ProcedimentoAPI $objProcedimentoAPI) + { + return null; + } + + public function adicionarElementoMenu() + { + $nomeArquivo = 'QRCODE_' + . self::NOME_MODULO + . "_" + . SessaoSEI::getInstance()->getNumIdOrgaoUsuario() + . "_" + . SessaoSEI::getInstance()->getNumIdContextoUsuario() + . "_" + . self::getVersao(); + $html = CacheSEI::getInstance()->getAtributo($nomeArquivo); + + if ($html) { + return $html; + } + + $html = $this->montaCorpoHTMLQRCode($nomeArquivo); + CacheSEI::getInstance()->setAtributo($nomeArquivo, $html, CacheSEI::getInstance()->getNumTempo()); + + return $html; + } + + /** + * Função que monta o html do QRCode para o menu lateral do SEI + * @param $nomeArquivo + * @return string + */ + private function montaCorpoHTMLQRCode($nomeArquivo) + { + $htmlQrCode = ''; + $caminhoAtual = explode("/sei/web", __DIR__); + $urlSEI = ConfiguracaoSEI::getInstance()->getValor('SEI', 'URL') + . $caminhoAtual[1] + . '/controlador_ws.php/api/v1'; + $conteudoQrCode = 'url: ' . $urlSEI + . ';' + . 'siglaorgao: ' . SessaoSEI::getInstance()->getStrSiglaOrgaoUsuario() + . ';' + . 'orgao: ' . SessaoSEI::getInstance()->getNumIdOrgaoUsuario() + . ';' + . 'contexto: ' . SessaoSEI::getInstance()->getNumIdContextoUsuario(); + $caminhoFisicoQrCode = DIR_SEI_TEMP . '/' . $nomeArquivo; + + InfraQRCode::gerar($conteudoQrCode, $caminhoFisicoQrCode, 'L', 2, 1); + + $infraException = new InfraException(); + if (!file_exists($caminhoFisicoQrCode)) { + $infraException->lancarValidacao('Arquivo do QRCode não encontrado.'); + } + if (filesize($caminhoFisicoQrCode) == 0) { + $infraException->lancarValidacao('Arquivo do QRCode vazio.'); + } + if (($binQrCode = file_get_contents($caminhoFisicoQrCode)) === false) { + $infraException->lancarValidacao('Não foi possível ler o arquivo do QRCode.'); + } + + $htmlQrCode .= '
'; + $htmlQrCode .= '
'; + $htmlQrCode .= '

'; + $htmlQrCode .= ''; + $htmlQrCode .= 'Acesse as lojas App Store ou Google Play e instale o aplicativo do SEI! no seu celular.'; + $htmlQrCode .= ''; + $htmlQrCode .= '

'; + $htmlQrCode .= '

'; + $htmlQrCode .= ''; + $htmlQrCode .= 'Abra o aplicativo do SEI! e faça a leitura do código abaixo para sincronizá-lo com sua conta.'; + $htmlQrCode .= ''; + $htmlQrCode .= '

'; + $htmlQrCode .= ''; + $htmlQrCode .= '
'; + + return $htmlQrCode; + } +} + +?> \ No newline at end of file diff --git a/codigo-fonte/mod-wssei/dto/MdWsSeiAssuntoDTO.php b/codigo-fonte/mod-wssei/dto/MdWsSeiAssuntoDTO.php new file mode 100644 index 0000000..903855d --- /dev/null +++ b/codigo-fonte/mod-wssei/dto/MdWsSeiAssuntoDTO.php @@ -0,0 +1,21 @@ +adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Template'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdAtividade'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Valor'); + } + +} diff --git a/codigo-fonte/mod-wssei/dto/MdWsSeiContatoDTO.php b/codigo-fonte/mod-wssei/dto/MdWsSeiContatoDTO.php new file mode 100644 index 0000000..903855d --- /dev/null +++ b/codigo-fonte/mod-wssei/dto/MdWsSeiContatoDTO.php @@ -0,0 +1,21 @@ +adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Template'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdAtividade'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Valor'); + } + +} diff --git a/codigo-fonte/mod-wssei/dto/MdWsSeiDocumentoDTO.php b/codigo-fonte/mod-wssei/dto/MdWsSeiDocumentoDTO.php new file mode 100644 index 0000000..903855d --- /dev/null +++ b/codigo-fonte/mod-wssei/dto/MdWsSeiDocumentoDTO.php @@ -0,0 +1,21 @@ +adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Template'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdAtividade'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Valor'); + } + +} diff --git a/codigo-fonte/mod-wssei/dto/MdWsSeiHipoteseLegalDTO.php b/codigo-fonte/mod-wssei/dto/MdWsSeiHipoteseLegalDTO.php new file mode 100644 index 0000000..903855d --- /dev/null +++ b/codigo-fonte/mod-wssei/dto/MdWsSeiHipoteseLegalDTO.php @@ -0,0 +1,21 @@ +adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Template'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdAtividade'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Valor'); + } + +} diff --git a/codigo-fonte/mod-wssei/dto/MdWsSeiProcedimentoDTO.php b/codigo-fonte/mod-wssei/dto/MdWsSeiProcedimentoDTO.php new file mode 100644 index 0000000..903855d --- /dev/null +++ b/codigo-fonte/mod-wssei/dto/MdWsSeiProcedimentoDTO.php @@ -0,0 +1,21 @@ +adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Template'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdAtividade'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Valor'); + } + +} diff --git a/codigo-fonte/mod-wssei/dto/MdWsSeiTipoProcedimentoDTO.php b/codigo-fonte/mod-wssei/dto/MdWsSeiTipoProcedimentoDTO.php new file mode 100644 index 0000000..903855d --- /dev/null +++ b/codigo-fonte/mod-wssei/dto/MdWsSeiTipoProcedimentoDTO.php @@ -0,0 +1,21 @@ +adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Template'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdAtividade'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Valor'); + } + +} diff --git a/codigo-fonte/mod-wssei/rn/MdWsSeiContatoRN.php b/codigo-fonte/mod-wssei/rn/MdWsSeiContatoRN.php new file mode 100644 index 0000000..151a3fb --- /dev/null +++ b/codigo-fonte/mod-wssei/rn/MdWsSeiContatoRN.php @@ -0,0 +1,1321 @@ +getDblIdProtocolo()) { + throw new InfraException('Protocolo não informado.'); + } + $result = array(); + + $relProtocoloProtocoloDTOConsulta = new RelProtocoloProtocoloDTO(); + $relProtocoloProtocoloDTOConsulta->setDblIdProtocolo1($protocoloDTO->getDblIdProtocolo()); + $relProtocoloProtocoloDTOConsulta->retDblIdProtocolo1(); + $relProtocoloProtocoloDTOConsulta->setNumMaxRegistrosRetorno(1); + $relProtocoloProtocoloDTOConsulta->setNumPaginaAtual(0); + $relProtocoloProtocoloRN = new RelProtocoloProtocoloRN(); + $ret = $relProtocoloProtocoloRN->listarRN0187($relProtocoloProtocoloDTOConsulta); + if ($ret) { + /** @var RelProtocoloProtocoloDTO $relProtocoloProtocoloDTO */ + $relProtocoloProtocoloDTO = $ret[0]; + $result['processo'] = $relProtocoloProtocoloDTO->getDblIdProtocolo1(); + $result['unidades'] = $relProtocoloProtocoloDTOConsulta->getNumTotalRegistros(); + } + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Método que lista o sobrestamento de um processo + * @param AtividadeDTO $atividadeDTOParam + * @return array + */ + protected function listarSobrestamentoProcessoConectado(AtividadeDTO $atividadeDTOParam) + { + try { + if (!$atividadeDTOParam->isSetDblIdProtocolo()) { + throw new InfraException('Protocolo não informado.'); + } + if (!$atividadeDTOParam->isSetNumIdUnidade()) { + $atividadeDTOParam->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + } + + $result = array(); + $atividadeDTOConsulta = new AtividadeDTO(); + $atividadeDTOConsulta->retTodos(); + $atividadeDTOConsulta->setDblIdProtocolo($atividadeDTOParam->getDblIdProtocolo()); + $atividadeDTOConsulta->setDthConclusao(null); + $atividadeDTOConsulta->setNumIdTarefa(TarefaRN::$TI_SOBRESTAMENTO); + $atividadeDTOConsulta->setNumMaxRegistrosRetorno(1); + $atividadeRN = new AtividadeRN(); + $ret = $atividadeRN->listarRN0036($atividadeDTOConsulta); + + /** @var AtividadeDTO $atividadeDTO */ + foreach ($ret as $atividadeDTO) { + $result[] = array( + 'idAtividade' => $atividadeDTO->getNumIdAtividade(), + 'idProtocolo' => $atividadeDTO->getDblIdProtocolo(), + 'dthAbertura' => $atividadeDTO->getDthAbertura(), + 'sinInicial' => $atividadeDTO->getStrSinInicial(), + 'dtaPrazo' => $atividadeDTO->getDtaPrazo(), + 'tipoVisualizacao' => $atividadeDTO->getNumTipoVisualizacao(), + 'dthConclusao' => $atividadeDTO->getDthConclusao(), + ); + } + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Metodo de sobrestamento de processo + * @param RelProtocoloProtocoloDTO $relProtocoloProtocoloDTO + * @return array + */ + protected function sobrestamentoProcessoControlado(RelProtocoloProtocoloDTO $relProtocoloProtocoloDTO) + { + try { + if(!$relProtocoloProtocoloDTO->isSetDblIdProtocolo2()){ + throw new Exception('Processo não informado!'); + } + if(!$relProtocoloProtocoloDTO->isSetStrMotivo()){ + throw new Exception('Informe o motivo!'); + } + $procedimentoRN = new ProcedimentoRN(); + $procedimentoRN->sobrestarRN1014(array($relProtocoloProtocoloDTO)); + + return MdWsSeiRest::formataRetornoSucessoREST('Processo sobrestado com sucesso'); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * @param $protocolo + * @return array + */ + protected function removerSobrestamentoProcessoControlado(ProcedimentoDTO $procedimentoDTOParam) + { + try { + if (!$procedimentoDTOParam->getDblIdProcedimento()) { + throw new InfraException('Procedimento não informado.'); + } + $seiRN = new SeiRN(); + $entradaRemoverSobrestamentoProcessoAPI = new EntradaRemoverSobrestamentoProcessoAPI(); + $entradaRemoverSobrestamentoProcessoAPI->setIdProcedimento($procedimentoDTOParam->getDblIdProcedimento()); + + $seiRN->removerSobrestamentoProcesso($entradaRemoverSobrestamentoProcessoAPI); + + return MdWsSeiRest::formataRetornoSucessoREST('Sobrestar cancelado com sucesso.'); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Método que retorna os procedimentos com acompanhamento do usuário + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOConsulta + * @return array + */ + protected function listarProcedimentoAcompanhamentoUsuarioConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam) + { + try { + $usuarioAtribuicaoAtividade = null; + $mdWsSeiProtocoloDTOConsulta = new MdWsSeiProtocoloDTO(); + if ($mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()) { + $mdWsSeiProtocoloDTOConsulta->setNumIdGrupoAcompanhamentoProcedimento($mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento()); + } + + if (!$mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioGeradorAcompanhamento()) { + $mdWsSeiProtocoloDTOConsulta->setNumIdUsuarioGeradorAcompanhamento(SessaoSEI::getInstance()->getNumIdUsuario()); + } else { + $mdWsSeiProtocoloDTOConsulta->setNumIdUsuarioGeradorAcompanhamento($mdWsSeiProtocoloDTOParam->getNumIdUsuarioGeradorAcompanhamento()); + } + + if (is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) { + $mdWsSeiProtocoloDTOConsulta->setNumPaginaAtual(0); + } else { + $mdWsSeiProtocoloDTOConsulta->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual()); + } + + if (!$mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) { + $mdWsSeiProtocoloDTOConsulta->setNumMaxRegistrosRetorno(10); + } else { + $mdWsSeiProtocoloDTOConsulta->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno()); + } + + $protocoloRN = new ProtocoloRN(); + $mdWsSeiProtocoloDTOConsulta->retTodos(); + $mdWsSeiProtocoloDTOConsulta->retDblIdProtocolo(); + $mdWsSeiProtocoloDTOConsulta->retStrNomeTipoProcedimentoProcedimento(); + $mdWsSeiProtocoloDTOConsulta->retStrSiglaUnidadeGeradora(); + $mdWsSeiProtocoloDTOConsulta->retStrSinCienciaProcedimento(); + $mdWsSeiProtocoloDTOConsulta->setOrdDthGeracaoAcompanhamento(InfraDTO::$TIPO_ORDENACAO_ASC); + $mdWsSeiProtocoloDTOConsulta->retStrNomeTipoProcedimentoProcedimento(); + + $ret = $protocoloRN->listarRN0668($mdWsSeiProtocoloDTOConsulta); + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade); + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $mdWsSeiProtocoloDTOConsulta->getNumTotalRegistros()); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Método que retorna os procedimentos com acompanhamento da unidade + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOConsulta + * @return array + */ + protected function listarProcedimentoAcompanhamentoUnidadeConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam) + { + try { + $acompanhamentoRN = new AcompanhamentoRN(); + $acompanhamentoDTO = new AcompanhamentoDTO(); + $acompanhamentoDTO->setOrdNumIdAcompanhamento(InfraDTO::$TIPO_ORDENACAO_DESC); + if(!$mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()){ + throw new Exception('O grupo deve ser informado!'); + }else{ + $acompanhamentoDTO->setNumIdGrupoAcompanhamento($mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento()); + } + if (is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) { + $acompanhamentoDTO->setNumPaginaAtual(0); + } else { + $acompanhamentoDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual()); + } + + if (!$mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) { + $acompanhamentoDTO->setNumMaxRegistrosRetorno(10); + } else { + $acompanhamentoDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno()); + } + + $arrAcompanhamentoDTO = $acompanhamentoRN->listarAcompanhamentosUnidade($acompanhamentoDTO); + $totalRegistros = $acompanhamentoDTO->getNumTotalRegistros() ?: 0; + + $ret = array(); + foreach($arrAcompanhamentoDTO as $acompanhamentoDTO){ + $ret[] = $acompanhamentoDTO->getObjProcedimentoDTO(); + } + $result = $this->montaRetornoListagemProcessos($ret, null); + + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $totalRegistros); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Método que pesquisa todos o procedimentos em todas as unidades + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam + * @return array + */ + protected function pesquisarTodosProcessosConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam) + { + try { + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO(); + + $usuarioAtribuicaoAtividade = null; + if ($mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioAtribuicaoAtividade()) { + $usuarioAtribuicaoAtividade = $mdWsSeiProtocoloDTOParam->getNumIdUsuarioAtribuicaoAtividade(); + } + + if (!is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) { + $pesquisaPendenciaDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual()); + } else { + $pesquisaPendenciaDTO->setNumPaginaAtual(0); + } + + if ($mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) { + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno()); + } else { + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno(10); + } + if ($mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()) { + $pesquisaPendenciaDTO->setNumIdGrupoAcompanhamentoProcedimento( + $mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento() + ); + } + if ($mdWsSeiProtocoloDTOParam->isSetStrProtocoloFormatadoPesquisa()) { + $strProtocoloFormatado = InfraUtil::retirarFormatacao( + $mdWsSeiProtocoloDTOParam->getStrProtocoloFormatadoPesquisa(), false + ); + $pesquisaPendenciaDTO->setStrProtocoloFormatadoPesquisaProtocolo( + '%' . $strProtocoloFormatado . '%', + InfraDTO::$OPER_LIKE + ); + } + + $atividadeRN = new MdWsSeiAtividadeRN(); + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO)); + $pesquisaPendenciaDTO->setStrSinAnotacoes('S'); + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S'); + $pesquisaPendenciaDTO->setStrSinCredenciais('S'); + $pesquisaPendenciaDTO->setStrSinSituacoes('S'); + $pesquisaPendenciaDTO->setStrSinMarcadores('S'); + + $ret = $atividadeRN->listarPendencias($pesquisaPendenciaDTO); + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade); + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $pesquisaPendenciaDTO->getNumTotalRegistros()); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Método que retorna os procedimentos com acompanhamento com filtro opcional de grupo de acompanhamento e protocolo + * formatado + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam + * @return array + */ + protected function pesquisarProcedimentoConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam) + { + try { + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO(); + + $usuarioAtribuicaoAtividade = null; + if ($mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioAtribuicaoAtividade()) { + $usuarioAtribuicaoAtividade = $mdWsSeiProtocoloDTOParam->getNumIdUsuarioAtribuicaoAtividade(); + } + + if (!is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) { + $pesquisaPendenciaDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual()); + } else { + $pesquisaPendenciaDTO->setNumPaginaAtual(0); + } + + if ($mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) { + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno()); + } else { + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno(10); + } + if ($mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()) { + $pesquisaPendenciaDTO->setNumIdGrupoAcompanhamentoProcedimento( + $mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento() + ); + } + if ($mdWsSeiProtocoloDTOParam->isSetStrProtocoloFormatadoPesquisa()) { + $strProtocoloFormatado = InfraUtil::retirarFormatacao( + $mdWsSeiProtocoloDTOParam->getStrProtocoloFormatadoPesquisa(), false + ); + $pesquisaPendenciaDTO->setStrProtocoloFormatadoPesquisaProtocolo( + '%' . $strProtocoloFormatado . '%', + InfraDTO::$OPER_LIKE + ); + } + + $atividadeRN = new MdWsSeiAtividadeRN(); + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO)); + $pesquisaPendenciaDTO->setStrSinAnotacoes('S'); + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S'); + $pesquisaPendenciaDTO->setStrSinCredenciais('S'); + $pesquisaPendenciaDTO->setStrSinSituacoes('S'); + $pesquisaPendenciaDTO->setStrSinMarcadores('S'); + + $ret = $atividadeRN->listarPendencias($pesquisaPendenciaDTO); + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade); + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $pesquisaPendenciaDTO->getNumTotalRegistros()); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Metodo que lista os processos + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTO + * @return array + */ + protected function listarProcessosConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam) + { + try { + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO(); + + $usuarioAtribuicaoAtividade = null; + if ($mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioAtribuicaoAtividade()) { + $usuarioAtribuicaoAtividade = $mdWsSeiProtocoloDTOParam->getNumIdUsuarioAtribuicaoAtividade(); + } + + if (!is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) { + $pesquisaPendenciaDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual()); + } else { + $pesquisaPendenciaDTO->setNumPaginaAtual(0); + } + + if ($mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) { + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno()); + } else { + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno(10); + } + if ($mdWsSeiProtocoloDTOParam->getStrSinApenasMeus() == 'S') { + $pesquisaPendenciaDTO->setStrStaTipoAtribuicao('M'); + } + + $atividadeRN = new MdWsSeiAtividadeRN(); + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO)); + $pesquisaPendenciaDTO->setStrSinAnotacoes('S'); + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S'); + $pesquisaPendenciaDTO->setStrSinCredenciais('S'); + $pesquisaPendenciaDTO->setStrSinSituacoes('S'); + $pesquisaPendenciaDTO->setStrSinMarcadores('S'); + + if ($mdWsSeiProtocoloDTOParam->getStrSinTipoBusca() == MdWsSeiProtocoloDTO::SIN_TIPO_BUSCA_R) { + $pesquisaPendenciaDTO->setStrSinInicial('N'); + } else if ($mdWsSeiProtocoloDTOParam->getStrSinTipoBusca() == MdWsSeiProtocoloDTO::SIN_TIPO_BUSCA_G) { + $pesquisaPendenciaDTO->setStrSinInicial('S'); + } else { + throw new InfraException('O tipo de busca deve ser (R)ecebidos ou (G)erados'); + } + $ret = $atividadeRN->listarPendencias($pesquisaPendenciaDTO); + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade); + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $pesquisaPendenciaDTO->getNumTotalRegistros()); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + + } + + /** + * Metodo que monta o retorno da listagem do processo com base no retorno da consulta + * @param array $ret + * @param null $usuarioAtribuicaoAtividade + * @return array + */ + private function montaRetornoListagemProcessos(array $ret, $usuarioAtribuicaoAtividade = null) + { + $result = array(); + $protocoloRN = new ProtocoloRN(); + foreach ($ret as $dto) { + $usuarioAtribuido = null; + $documentoNovo = 'N'; + $documentoPublicado = 'N'; + $possuiAnotacao = 'N'; + $podeGerenciarCredenciais = 'N'; + $possuiAnotacaoPrioridade = 'N'; + $usuarioVisualizacao = 'N'; + $tipoVisualizacao = 'N'; + $retornoProgramado = 'N'; + $retornoAtrasado = 'N'; + $processoAberto = false; + $acaoReabrirProcesso = SessaoSEI::getInstance()->verificarPermissao('procedimento_reabrir'); + $acaoRegistrarAnotacao = SessaoSEI::getInstance()->verificarPermissao('anotacao_registrar'); + $processoEmTramitacao = false; + $processoSobrestado = false; + $processoAnexado = false; + $podeReabrirProcesso = false; + $podeRegistrarAnotacao = false; + $arrDadosAbertura = array(); + $procedimentoDTO = null; + $resultAnotacao = array(); + $protocoloDTO = new MdWsSeiProtocoloDTO(); + if ($dto instanceof ProcedimentoDTO) { + $protocoloDTO = new MdWsSeiProtocoloDTO(); + $protocoloDTO->setDblIdProtocolo($dto->getDblIdProcedimento()); + $protocoloDTO->retDblIdProtocolo(); + $protocoloDTO->retNumIdUnidadeGeradora(); + $protocoloDTO->retStrStaProtocolo(); + $protocoloDTO->retStrProtocoloFormatado(); + $protocoloDTO->retStrNomeTipoProcedimentoProcedimento(); + $protocoloDTO->retStrDescricao(); + $protocoloDTO->retStrSiglaUnidadeGeradora(); + $protocoloDTO->retStrStaGrauSigilo(); + $protocoloDTO->retStrStaNivelAcessoLocal(); + $protocoloDTO->retStrStaNivelAcessoGlobal(); + $protocoloDTO->retStrSinCienciaProcedimento(); + $protocoloDTO->retStrStaEstado(); + $protocoloDTO = $protocoloRN->consultarRN0186($protocoloDTO); + } else { + $protocoloDTO = $dto; + } + + $processoBloqueado = $protocoloDTO->getStrStaEstado() == ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO ? 'S' : 'N'; + $processoRemocaoSobrestamento = 'N'; + $processoDocumentoIncluidoAssinado = 'N'; + $processoPublicado = 'N'; + + $atividadeRN = new MdWsSeiAtividadeRN(); + $atividadeDTOConsulta = new AtividadeDTO(); + $atividadeDTOConsulta->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo()); + $atividadeDTOConsulta->retDblIdProtocolo(); + $atividadeDTOConsulta->retNumIdTarefa(); + $atividadeDTOConsulta->retNumTipoVisualizacao(); + $atividadeDTOConsulta->retStrNomeUsuarioAtribuicao(); + $atividadeDTOConsulta->retNumIdUsuarioVisualizacao(); + $atividadeDTOConsulta->retNumIdAtividade(); + + $atividadeDTOConsulta->setNumMaxRegistrosRetorno(1); + $atividadeDTOConsulta->setOrdNumIdAtividade(InfraDTO::$TIPO_ORDENACAO_DESC); + + $arrAtividades = $atividadeRN->listarRN0036($atividadeDTOConsulta); + + if ($arrAtividades) { + /** @var AtividadeDTO $atividadeDTO */ + $atividadeDTO = $arrAtividades[0]; + $documentoNovo = $atividadeDTO->getNumIdTarefa() == 1 ? 'S' : 'N'; + $usuarioAtribuido = $atividadeDTO->getStrNomeUsuarioAtribuicao(); + $tipoVisualizacao = $atividadeDTO->getNumTipoVisualizacao() == 0 ? 'S' : 'N'; + if ($atividadeDTO->getNumIdUsuarioVisualizacao() == $usuarioAtribuicaoAtividade) { + $usuarioVisualizacao = 'S'; + } + } + $arrAtividadePendenciaDTO = array(); + if ($dto instanceof ProcedimentoDTO && $dto->isSetArrObjAtividadeDTO()) { + $procedimentoDTO = $dto; + $arrAtividadePendenciaDTO = $procedimentoDTO->getArrObjAtividadeDTO(); + } else { + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO(); + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO)); + $pesquisaPendenciaDTO->setStrSinAnotacoes('S'); + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S'); + $pesquisaPendenciaDTO->setStrSinCredenciais('S'); + $pesquisaPendenciaDTO->setStrSinSituacoes('S'); + $pesquisaPendenciaDTO->setStrSinMarcadores('S'); + $pesquisaPendenciaDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo()); + $arrProcedimentoDTO = $atividadeRN->listarPendencias($pesquisaPendenciaDTO); + if ($arrProcedimentoDTO) { + $procedimentoDTO = $arrProcedimentoDTO[0]; + $arrAtividadePendenciaDTO = $procedimentoDTO->getArrObjAtividadeDTO(); + } + } + if ($arrAtividadePendenciaDTO) { + $atividadePendenciaDTO = $arrAtividadePendenciaDTO[0]; + if ($atividadePendenciaDTO->getNumTipoVisualizacao() & AtividadeRN::$TV_REMOCAO_SOBRESTAMENTO) { + $processoRemocaoSobrestamento = 'S'; + } + if ($atividadePendenciaDTO->getNumTipoVisualizacao() & AtividadeRN::$TV_ATENCAO) { + $processoDocumentoIncluidoAssinado = 'S'; + } + if ($atividadePendenciaDTO->getNumTipoVisualizacao() & AtividadeRN::$TV_PUBLICACAO) { + $processoPublicado = 'S'; + } + $retornoProgramadoDTOConsulta = new RetornoProgramadoDTO(); + $retornoProgramadoDTOConsulta->retDblIdProtocoloAtividadeEnvio(); + $retornoProgramadoDTOConsulta->retStrSiglaUnidadeOrigemAtividadeEnvio(); + $retornoProgramadoDTOConsulta->retStrSiglaUnidadeAtividadeEnvio(); + $retornoProgramadoDTOConsulta->retDtaProgramada(); + $retornoProgramadoDTOConsulta->setNumIdUnidadeAtividadeEnvio(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $retornoProgramadoDTOConsulta->setDblIdProtocoloAtividadeEnvio(array_unique(InfraArray::converterArrInfraDTO($arrAtividadePendenciaDTO, 'IdProtocolo')), InfraDTO::$OPER_IN); + $retornoProgramadoDTOConsulta->setNumIdAtividadeRetorno(null); + $objRetornoProgramadoRN = new RetornoProgramadoRN(); + $arrRetornoProgramadoDTO = $objRetornoProgramadoRN->listar($retornoProgramadoDTOConsulta); + if ($arrRetornoProgramadoDTO) { + $retornoProgramado = 'S'; + $strDataAtual = InfraData::getStrDataAtual(); + foreach ($arrRetornoProgramadoDTO as $retornoProgramadoDTO) { + $numPrazo = InfraData::compararDatas($strDataAtual, $retornoProgramadoDTO->getDtaProgramada()); + if ($numPrazo < 0) { + $retornoAtrasado = 'S'; + } + $retornoData = array( + 'dataProgramada' => $retornoProgramadoDTO->getDtaProgramada(), + 'unidade' => $retornoProgramadoDTO->getStrSiglaUnidadeOrigemAtividadeEnvio() + ); + } + } + } + $documentoRN = new DocumentoRN(); + $documentoDTOConsulta = new DocumentoDTO(); + $documentoDTOConsulta->setDblIdProcedimento($protocoloDTO->getDblIdProtocolo()); + $documentoDTOConsulta->retDblIdDocumento(); + $arrDocumentos = $documentoRN->listarRN0008($documentoDTOConsulta); + if ($arrDocumentos) { + $arrIdDocumentos = array(); + /** @var DocumentoDTO $documentoDTO */ + foreach ($arrDocumentos as $documentoDTO) { + $arrIdDocumentos[] = $documentoDTO->getDblIdDocumento(); + } + $publiacaoRN = new PublicacaoRN(); + $publicacaoDTO = new PublicacaoDTO(); + $publicacaoDTO->retNumIdPublicacao(); + $publicacaoDTO->setNumMaxRegistrosRetorno(1); + $publicacaoDTO->adicionarCriterio( + array('IdDocumento'), + array(InfraDTO::$OPER_IN), + array($arrIdDocumentos) + ); + $arrPublicacaoDTO = $publiacaoRN->listarRN1045($publicacaoDTO); + $documentoPublicado = count($arrPublicacaoDTO) ? 'S' : 'N'; + } + $anotacaoRN = new AnotacaoRN(); + $anotacaoDTOConsulta = new AnotacaoDTO(); + $anotacaoDTOConsulta->setNumMaxRegistrosRetorno(1); + $anotacaoDTOConsulta->retDblIdProtocolo(); + $anotacaoDTOConsulta->retStrDescricao(); + $anotacaoDTOConsulta->retNumIdUnidade(); + $anotacaoDTOConsulta->retNumIdUsuario(); + $anotacaoDTOConsulta->retDthAnotacao(); + $anotacaoDTOConsulta->retStrSinPrioridade(); + $anotacaoDTOConsulta->retStrStaAnotacao(); + $anotacaoDTOConsulta->retNumIdAnotacao(); + $anotacaoDTOConsulta->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo()); + $anotacaoDTOConsulta->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $arrAnotacao = $anotacaoRN->listar($anotacaoDTOConsulta); + $possuiAnotacao = count($arrAnotacao) ? 'S' : 'N'; + foreach ($arrAnotacao as $anotacaoDTO) { + if ($anotacaoDTO->getStrSinPrioridade() == 'S') { + $possuiAnotacaoPrioridade = 'S'; + break; + } + } + /** @var AnotacaoDTO $anotacaoDTO */ + foreach ($arrAnotacao as $anotacaoDTO) { + $resultAnotacao[] = array( + 'idAnotacao' => $anotacaoDTO->getNumIdAnotacao(), + 'idProtocolo' => $anotacaoDTO->getDblIdProtocolo(), + 'descricao' => $anotacaoDTO->getStrDescricao(), + 'idUnidade' => $anotacaoDTO->getNumIdUnidade(), + 'idUsuario' => $anotacaoDTO->getNumIdUsuario(), + 'dthAnotacao' => $anotacaoDTO->getDthAnotacao(), + 'sinPrioridade' => $anotacaoDTO->getStrSinPrioridade(), + 'staAnotacao' => $anotacaoDTO->getStrStaAnotacao() + ); + } + if ($protocoloDTO->getStrStaEstado() != ProtocoloRN::$TE_PROCEDIMENTO_ANEXADO) { + $procedimentoDTOParam = new ProcedimentoDTO(); + $procedimentoDTOParam->setDblIdProcedimento($protocoloDTO->getDblIdProtocolo()); + $procedimentoDTOParam->setStrStaNivelAcessoGlobalProtocolo($protocoloDTO->getStrStaNivelAcessoGlobal()); + $arrDadosAbertura = $this->listarUnidadeAberturaProcedimento($procedimentoDTOParam); + } + + if($protocoloDTO->getStrStaNivelAcessoGlobal() == ProtocoloRN::$NA_SIGILOSO){ + $podeGerenciarCredenciais = SessaoSEI::getInstance()->verificarPermissao('procedimento_credencial_gerenciar') ? 'S' : 'N'; + } + + $pesquisaPendenciaDTO = new PesquisaPendenciaDTO(); + $pesquisaPendenciaDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo()); + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $pesquisaPendenciaDTO->setStrSinMontandoArvore('S'); + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S'); + + $processoEmTramitacao = $processoAberto = count($atividadeRN->listarPendenciasRN0754($pesquisaPendenciaDTO)) == 1; + if ($protocoloDTO->getNumIdUnidadeGeradora() == SessaoSEI::getInstance()->getNumIdUnidadeAtual()){ + $processoEmTramitacao = true; + }else{ + $atividadeDTO = new AtividadeDTO(); + $atividadeDTO->retNumIdAtividade(); + $atividadeDTO->setNumIdUnidadeOrigem(SessaoSEI::getInstance()->getNumIdUnidadeAtual(),InfraDTO::$OPER_DIFERENTE); + $atividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $atividadeDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo()); + $atividadeDTO->setNumMaxRegistrosRetorno(1); + + if ($atividadeRN->consultarRN0033($atividadeDTO)!=null){ + $processoEmTramitacao = true; + } + } + if ($protocoloDTO->getStrStaEstado() == ProtocoloRN::$TE_PROCEDIMENTO_SOBRESTADO){ + if ($processoAberto){ + $processoAberto = false; + } + $processoSobrestado = true; + }else if($protocoloDTO->getStrStaEstado()==ProtocoloRN::$TE_PROCEDIMENTO_ANEXADO){ + $processoAnexado = true; + } + if (!$processoAberto && $acaoReabrirProcesso && $processoEmTramitacao && !$processoSobrestado && !$processoAnexado) { + $podeReabrirProcesso = true; + } + if ($processoEmTramitacao && $acaoRegistrarAnotacao) { + $podeRegistrarAnotacao = true; + } + + $objInfraParametro = new InfraParametro(BancoSEI::getInstance()); + + $result[] = array( + 'id' => $protocoloDTO->getDblIdProtocolo(), + 'status' => $protocoloDTO->getStrStaProtocolo(), + 'seiNumMaxDocsPasta' => $objInfraParametro->getValor('SEI_NUM_MAX_DOCS_PASTA'), + 'atributos' => array( + 'idProcedimento' => $protocoloDTO->getDblIdProtocolo(), + 'idProtocolo' => $protocoloDTO->getDblIdProtocolo(), + 'numero' => $protocoloDTO->getStrProtocoloFormatado(), + 'tipoProcesso' => $protocoloDTO->getStrNomeTipoProcedimentoProcedimento(), + 'descricao' => $protocoloDTO->getStrDescricao(), + 'usuarioAtribuido' => $usuarioAtribuido, + 'unidade' => array( + 'idUnidade' => $protocoloDTO->getNumIdUnidadeGeradora(), + 'sigla' => $protocoloDTO->getStrSiglaUnidadeGeradora() + ), + 'dadosAbertura' => $arrDadosAbertura, + 'anotacoes' => $resultAnotacao, + 'status' => array( + 'documentoSigiloso' => $protocoloDTO->getStrStaGrauSigilo(), + 'documentoRestrito' => $protocoloDTO->getStrStaNivelAcessoLocal() == 1 ? 'S' : 'N', + 'documentoNovo' => $documentoNovo, + 'documentoPublicado' => $documentoPublicado, + 'anotacao' => $possuiAnotacao, + 'anotacaoPrioridade' => $possuiAnotacaoPrioridade,//verificar + 'ciencia' => $protocoloDTO->getStrSinCienciaProcedimento(), + 'retornoProgramado' => $retornoProgramado, + 'retornoData' => $retornoData, + 'retornoAtrasado' => $retornoAtrasado, + 'processoAcessadoUsuario' => $tipoVisualizacao, + 'processoAcessadoUnidade' => $usuarioVisualizacao, + 'processoRemocaoSobrestamento' => $processoRemocaoSobrestamento, + 'processoBloqueado' => $processoBloqueado, + 'processoDocumentoIncluidoAssinado' => $processoDocumentoIncluidoAssinado, + 'processoPublicado' => $processoPublicado, + 'nivelAcessoGlobal' => $protocoloDTO->getStrStaNivelAcessoGlobal(), + 'podeGerenciarCredenciais' => $podeGerenciarCredenciais, + 'processoAberto' => $processoAberto ? 'S' : 'N', + 'processoEmTramitacao' => $processoEmTramitacao ? 'S' : 'N', + 'processoSobrestado' => $processoSobrestado ? 'S' : 'N', + 'processoAnexado' => $processoAnexado ? 'S' : 'N', + 'podeReabrirProcesso' => $podeReabrirProcesso ? 'S' : 'N', + 'podeRegistrarAnotacao' => $podeRegistrarAnotacao ? 'S' : 'N', + ) + ) + ); + } + + return $result; + } + + protected function listarUnidadeAberturaProcedimentoConectado(ProcedimentoDTO $procedimentoDTO) + { + $result = array(); + $atividadeRN = new MdWsSeiAtividadeRN(); + $strStaNivelAcessoGlobal = $procedimentoDTO->getStrStaNivelAcessoGlobalProtocolo(); + $dblIdProcedimento = $procedimentoDTO->getDblIdProcedimento(); + $atividadeDTO = new AtividadeDTO(); + $atividadeDTO->setDistinct(true); + $atividadeDTO->retStrSiglaUnidade(); + $atividadeDTO->retNumIdUnidade(); + $atividadeDTO->retStrDescricaoUnidade(); + + $atividadeDTO->setOrdStrSiglaUnidade(InfraDTO::$TIPO_ORDENACAO_ASC); + + if ($strStaNivelAcessoGlobal == ProtocoloRN::$NA_SIGILOSO) { + $atividadeDTO->retNumIdUsuario(); + $atividadeDTO->retStrSiglaUsuario(); + $atividadeDTO->retStrNomeUsuario(); + } else { + $atividadeDTO->retNumIdUsuarioAtribuicao(); + $atividadeDTO->retStrSiglaUsuarioAtribuicao(); + $atividadeDTO->retStrNomeUsuarioAtribuicao(); + + //ordena descendente pois no envio de processo que já existe na unidade e está atribuído ficará com mais de um andamento em aberto + //desta forma os andamentos com usuário nulo (envios do processo) serão listados depois + $atividadeDTO->setOrdStrSiglaUsuarioAtribuicao(InfraDTO::$TIPO_ORDENACAO_DESC); + + } + $atividadeDTO->setDblIdProtocolo($dblIdProcedimento); + $atividadeDTO->setDthConclusao(null); + + //sigiloso sem credencial nao considera o usuario atual + if ($strStaNivelAcessoGlobal == ProtocoloRN::$NA_SIGILOSO) { + + $acessoDTO = new AcessoDTO(); + $acessoDTO->setDistinct(true); + $acessoDTO->retNumIdUsuario(); + $acessoDTO->setDblIdProtocolo($dblIdProcedimento); + $acessoDTO->setStrStaTipo(AcessoRN::$TA_CREDENCIAL_PROCESSO); + + $acessoRN = new AcessoRN(); + $arrAcessoDTO = $acessoRN->listar($acessoDTO); + + $atividadeDTO->setNumIdUsuario(InfraArray::converterArrInfraDTO($arrAcessoDTO, 'IdUsuario'), InfraDTO::$OPER_IN); + } + $arrAtividadeDTO = $atividadeRN->listarRN0036($atividadeDTO); + + if ($strStaNivelAcessoGlobal != ProtocoloRN::$NA_SIGILOSO) { + $arrAtividadeDTO = InfraArray::distinctArrInfraDTO($arrAtividadeDTO, 'SiglaUnidade'); + } + if (count($arrAtividadeDTO) == 0) { + $result['info'] = 'Processo não possui andamentos abertos.'; + $result['lista'] = array(); + $result['unidades'] = array(); + } else { + if (count($arrAtividadeDTO) == 1) { + $atividadeDTO = $arrAtividadeDTO[0]; + if ($strStaNivelAcessoGlobal != ProtocoloRN::$NA_SIGILOSO) { + $result['info'] = 'Processo aberto somente na unidade:'; + $result['unidades'][] = array( + 'id' => $atividadeDTO->getNumIdUnidade(), + 'nome' => $atividadeDTO->getStrSiglaUnidade() + ); + $result['lista'][] = array( + 'sigla' => $atividadeDTO->getStrSiglaUnidade() + ); + } else { + $result['info'] = 'Processo aberto com o usuário:'; + $atividadeDTO = $arrAtividadeDTO[0]; + $result['unidades'][] = array( + 'id' => $atividadeDTO->getNumIdUnidade(), + 'nome' => $atividadeDTO->getStrSiglaUnidade() + ); + $result['lista'][] = array( + 'sigla' => $atividadeDTO->getStrNomeUsuario() + ); + } + } else { + if ($strStaNivelAcessoGlobal != ProtocoloRN::$NA_SIGILOSO) { + $result['info'] = 'Processo aberto nas unidades:'; + foreach ($arrAtividadeDTO as $atividadeDTO) { + $result['unidades'][] = array( + 'id' => $atividadeDTO->getNumIdUnidade(), + 'nome' => $atividadeDTO->getStrSiglaUnidade() + ); + $sigla = $atividadeDTO->getStrSiglaUnidade(); + if ($atividadeDTO->getNumIdUsuarioAtribuicao() != null) { + $sigla .= ' (atribuído a ' . $atividadeDTO->getStrNomeUsuarioAtribuicao() . ')'; + } + $result['lista'][] = array( + 'sigla' => $sigla + ); + } + } else { + $result['info'] = 'Processo aberto com os usuários:'; + foreach ($arrAtividadeDTO as $atividadeDTO) { + $result['unidades'][] = array( + 'id' => $atividadeDTO->getNumIdUnidade(), + 'nome' => $atividadeDTO->getStrSiglaUnidade() + ); + $sigla = $atividadeDTO->getStrNomeUsuario() . ' na unidade ' . $atividadeDTO->getStrSiglaUnidade(); + $result['lista'][] = array( + 'sigla' => $sigla + ); + } + } + } + } + + return $result; + } + + /** + * Metodo que retorna as ciencias nos processos + * @param ProtocoloDTO $protocoloDTOParam + * @return array + */ + protected function listarCienciaProcessoConectado(ProtocoloDTO $protocoloDTOParam) + { + try { + if (!$protocoloDTOParam->isSetDblIdProtocolo()) { + throw new InfraException('Protocolo não informado.'); + } + + $result = array(); + $mdWsSeiProcessoRN = new MdWsSeiProcessoRN(); + $atividadeDTOConsulta = new AtividadeDTO(); + $atividadeDTOConsulta->setDblIdProtocolo($protocoloDTOParam->getDblIdProtocolo()); + $atividadeDTOConsulta->setNumIdTarefa(TarefaRN::$TI_PROCESSO_CIENCIA); + $atividadeDTOConsulta->retDthAbertura(); + $atividadeDTOConsulta->retStrSiglaUnidade(); + $atividadeDTOConsulta->retStrNomeTarefa(); + $atividadeDTOConsulta->retStrSiglaUsuarioOrigem(); + $atividadeDTOConsulta->retNumIdAtividade(); + $atividadeRN = new AtividadeRN(); + $ret = $atividadeRN->listarRN0036($atividadeDTOConsulta); + /** @var AtividadeDTO $atividadeDTO */ + foreach ($ret as $atividadeDTO) { + $mdWsSeiProcessoDTO = new MdWsSeiProcessoDTO(); + $mdWsSeiProcessoDTO->setStrTemplate($atividadeDTO->getStrNomeTarefa()); + $mdWsSeiProcessoDTO->setNumIdAtividade($atividadeDTO->getNumIdAtividade()); + $result[] = array( + 'data' => $atividadeDTO->getDthAbertura(), + 'unidade' => $atividadeDTO->getStrSiglaUnidade(), + 'nome' => $atividadeDTO->getStrSiglaUsuarioOrigem(), + 'descricao' => $mdWsSeiProcessoRN->traduzirTemplate($mdWsSeiProcessoDTO) + ); + } + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + + /** + * Metodo que da ciencia ao processo/procedimento + * @param ProcedimentoDTO $procedimentoDTO + * @info E obrigatorio informar o id do procedimento + * @return array + */ + protected function darCienciaControlado(ProcedimentoDTO $procedimentoDTOParam) + { + try { + if (!$procedimentoDTOParam->isSetDblIdProcedimento()) { + throw new InfraException('E obrigatorio informar o procedimento!'); + } + + $procedimentoRN = new ProcedimentoRN(); + $procedimentoRN->darCiencia($procedimentoDTOParam); + + return MdWsSeiRest::formataRetornoSucessoREST('Ciência processo realizado com sucesso!'); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Metodo que conclui o procedimento/processo + * @param EntradaConcluirProcessoAPI $entradaConcluirProcessoAPI + * @info ele recebe o número do ProtocoloProcedimentoFormatadoPesquisa da tabela protocolo + * @return array + */ + protected function concluirProcessoControlado(EntradaConcluirProcessoAPI $entradaConcluirProcessoAPI) + { + try { + if (!$entradaConcluirProcessoAPI->getProtocoloProcedimento()) { + throw new InfraException('E obrigtorio informar o protocolo do procedimento!'); + } + + $objSeiRN = new SeiRN(); + $objSeiRN->concluirProcesso($entradaConcluirProcessoAPI); + + return MdWsSeiRest::formataRetornoSucessoREST('Processo concluído com sucesso!'); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Metodo que reabre o procedimento/processo + * @param EntradaReabrirProcessoAPI $entradaReabrirProcessoAPI + * @return array + */ + protected function reabrirProcessoControlado(EntradaReabrirProcessoAPI $entradaReabrirProcessoAPI) + { + try { + if (!$entradaReabrirProcessoAPI->getIdProcedimento()) { + throw new InfraException('E obrigtorio informar o id do procedimento!'); + } + $objSeiRN = new SeiRN(); + $objSeiRN->reabrirProcesso($entradaReabrirProcessoAPI); + + return MdWsSeiRest::formataRetornoSucessoREST('Processo reaberto com sucesso!'); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Metodo que atribui o processo a uma pessoa + * @param EntradaAtribuirProcessoAPI $entradaAtribuirProcessoAPI + * @info Os parametros IdUsuario, ProtocoloProcedimento e SinReabrir sao obrigatorios. O parametro ProtocoloProcedimento + * recebe o n?mero do ProtocoloProcedimentoFormatadoPesquisa da tabela protocolo + * @return array + */ + protected function atribuirProcessoControlado(EntradaAtribuirProcessoAPI $entradaAtribuirProcessoAPI) + { + try { + if (!$entradaAtribuirProcessoAPI->getProtocoloProcedimento()) { + throw new InfraException('E obrigatorio informar o protocolo do processo!'); + } + if (!$entradaAtribuirProcessoAPI->getIdUsuario()) { + throw new InfraException('E obrigatorio informar o usu?rio do processo!'); + } + + $objSeiRN = new SeiRN(); + $objSeiRN->atribuirProcesso($entradaAtribuirProcessoAPI); + + return MdWsSeiRest::formataRetornoSucessoREST('Processo atribuído com sucesso!'); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Encapsula o objeto ENtradaEnviarProcessoAPI para o metodo enviarProcesso + * @param array $post + * @return EntradaEnviarProcessoAPI + */ + public function encapsulaEnviarProcessoEntradaEnviarProcessoAPI(array $post) + { + $entradaEnviarProcessoAPI = new EntradaEnviarProcessoAPI(); + if (isset($post['numeroProcesso'])) { + $entradaEnviarProcessoAPI->setProtocoloProcedimento($post['numeroProcesso']); + } + if (isset($post['unidadesDestino'])) { + $entradaEnviarProcessoAPI->setUnidadesDestino(explode(',', $post['unidadesDestino'])); + } + if (isset($post['sinManterAbertoUnidade'])) { + $entradaEnviarProcessoAPI->setSinManterAbertoUnidade($post['sinManterAbertoUnidade']); + } + if (isset($post['sinRemoverAnotacao'])) { + $entradaEnviarProcessoAPI->setSinRemoverAnotacao($post['sinRemoverAnotacao']); + } + if (isset($post['sinEnviarEmailNotificacao'])) { + $entradaEnviarProcessoAPI->setSinEnviarEmailNotificacao($post['sinEnviarEmailNotificacao']); + } else { + $entradaEnviarProcessoAPI->setSinEnviarEmailNotificacao('N'); + } + if (isset($post['dataRetornoProgramado'])) { + $entradaEnviarProcessoAPI->setDataRetornoProgramado($post['dataRetornoProgramado']); + } + if (isset($post['diasRetornoProgramado'])) { + $entradaEnviarProcessoAPI->setDiasRetornoProgramado($post['diasRetornoProgramado']); + } + if (isset($post['sinDiasUteisRetornoProgramado'])) { + $entradaEnviarProcessoAPI->setSinDiasUteisRetornoProgramado($post['sinDiasUteisRetornoProgramado']); + } + if (isset($post['sinReabrir'])) { + $entradaEnviarProcessoAPI->setSinReabrir($post['sinReabrir']); + } + + return $entradaEnviarProcessoAPI; + } + + /** + * Metodo que envia o processo para outra unidade + * @param EntradaEnviarProcessoAPI $entradaEnviarProcessoAPI + * @info Metodo auxiliar para encapsular dados encapsulaEnviarProcessoEntradaEnviarProcessoAPI + * @return array + */ + protected function enviarProcessoControlado(EntradaEnviarProcessoAPI $entradaEnviarProcessoAPI) + { + try { + $objSeiRN = new SeiRN(); + $objSeiRN->enviarProcesso($entradaEnviarProcessoAPI); + + return MdWsSeiRest::formataRetornoSucessoREST('Processo enviado com sucesso!'); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Método que verifica o acesso a um processo ou documento + * @param ProtocoloDTO $protocoloDTOParam + * - Se acesso liberado e chamar autenticação for false, o usuário não pode de jeito nenhum visualizar o processo/documento + * @return array + */ + protected function verificaAcessoConectado(ProtocoloDTO $protocoloDTOParam) + { + try { + $acessoLiberado = false; + $chamarAutenticacao = false; + $protocoloRN = new ProtocoloRN(); + $protocoloDTO = new ProtocoloDTO(); + $protocoloDTO->setDblIdProtocolo($protocoloDTOParam->getDblIdProtocolo()); + $protocoloDTO->retStrStaNivelAcessoGlobal(); + $protocoloDTO->retDblIdProtocolo(); + $protocoloDTO = $protocoloRN->consultarRN0186($protocoloDTO); + if (!$protocoloDTO) { + throw new Exception('Processo não encontrado!'); + } + if ($protocoloDTO->getStrStaNivelAcessoGlobal() == ProtocoloRN::$NA_SIGILOSO) { + $objPesquisaProtocoloDTO = new PesquisaProtocoloDTO(); + $objPesquisaProtocoloDTO->setStrStaTipo(ProtocoloRN::$TPP_PROCEDIMENTOS); + $objPesquisaProtocoloDTO->setStrStaAcesso(ProtocoloRN::$TAP_AUTORIZADO); + $objPesquisaProtocoloDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo()); + + $objProtocoloRN = new ProtocoloRN(); + $arrProtocoloDTO = $objProtocoloRN->pesquisarRN0967($objPesquisaProtocoloDTO); + if ($arrProtocoloDTO) { + $chamarAutenticacao = true; + } + } else { + $acessoLiberado = true; + $chamarAutenticacao = false; + } + + return MdWsSeiRest::formataRetornoSucessoREST( + null, + array('acessoLiberado' => $acessoLiberado, 'chamarAutenticacao' => $chamarAutenticacao) + ); + + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Identifica o acesso do usuário em um processo + * @param UsuarioDTO $usuarioDTO + * @param ProtocoloDTO $protocoloDTO + * @return array + */ + public function apiIdentificacaoAcesso(UsuarioDTO $usuarioDTO, ProtocoloDTO $protocoloDTO) + { + try { + $objInfraSip = new InfraSip(SessaoSEI::getInstance()); + $objInfraSip->autenticar(SessaoSEI::getInstance()->getNumIdOrgaoUsuario(), null, SessaoSEI::getInstance()->getStrSiglaUsuario(), $usuarioDTO->getStrSenha()); + AuditoriaSEI::getInstance()->auditar('usuario_validar_acesso'); + $ret = $this->verificaAcesso($protocoloDTO); + if (!$ret['sucesso']) { + return $ret; + } + $acessoAutorizado = false; + if ($ret['data']['acessoLiberado'] || $ret['data']['chamarAutenticacao']) { + $acessoAutorizado = true; + } + + return MdWsSeiRest::formataRetornoSucessoREST(null, array('acessoAutorizado' => $acessoAutorizado)); + } catch (InfraException $e) { + $infraValidacaoDTO = $e->getArrObjInfraValidacao()[0]; + $eAuth = new Exception($infraValidacaoDTO->getStrDescricao(), $e->getCode(), $e); + return MdWsSeiRest::formataRetornoErroREST($eAuth); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Método que consulta os processos no Solar + * @param MdWsSeiPesquisaProtocoloSolrDTO $pesquisaProtocoloSolrDTO + * @return array + */ + protected function pesquisarProcessosSolarConectado(MdWsSeiPesquisaProtocoloSolrDTO $pesquisaProtocoloSolrDTO) + { + try { + $partialfields = ''; + + if ($pesquisaProtocoloSolrDTO->isSetStrDescricao() && $pesquisaProtocoloSolrDTO->getStrDescricao() != null) { + if ($partialfields != '') { + $partialfields .= ' AND '; + } + $partialfields .= '(' . SolrUtil::formatarOperadores($pesquisaProtocoloSolrDTO->getStrDescricao(), 'desc') . ')'; + } + + if ($pesquisaProtocoloSolrDTO->isSetStrObservacao() && $pesquisaProtocoloSolrDTO->getStrObservacao() != null) { + if ($partialfields != '') { + $partialfields .= ' AND '; + } + $partialfields .= '(' . SolrUtil::formatarOperadores($pesquisaProtocoloSolrDTO->getStrObservacao(), 'obs_' . SessaoSEI::getInstance()->getNumIdUnidadeAtual()) . ')'; + } + + //o- verificar lógica do solar + if ($pesquisaProtocoloSolrDTO->isSetDblIdProcedimento() && $pesquisaProtocoloSolrDTO->getDblIdProcedimento() != null) { + if ($partialfields != '') { + $partialfields .= ' AND '; + } + + $objRelProtocoloProtocoloDTO = new RelProtocoloProtocoloDTO(); + $objRelProtocoloProtocoloDTO->retDblIdProtocolo2(); + $objRelProtocoloProtocoloDTO->setStrStaAssociacao(RelProtocoloProtocoloRN::$TA_PROCEDIMENTO_ANEXADO); + $objRelProtocoloProtocoloDTO->setDblIdProtocolo1($pesquisaProtocoloSolrDTO->getDblIdProcedimento()); + + $objRelProtocoloProtocoloRN = new RelProtocoloProtocoloRN(); + $arrIdProcessosAnexados = InfraArray::converterArrInfraDTO($objRelProtocoloProtocoloRN->listarRN0187($objRelProtocoloProtocoloDTO), 'IdProtocolo2'); + + if (count($arrIdProcessosAnexados) == 0) { + $partialfields .= '(id_proc:' . $pesquisaProtocoloSolrDTO->getDblIdProcedimento() . ')'; + } else { + + $strProcessos = 'id_proc:' . $pesquisaProtocoloSolrDTO->getDblIdProcedimento(); + foreach ($arrIdProcessosAnexados as $dblIdProcessoAnexado) { + $strProcessos .= ' OR id_proc:' . $dblIdProcessoAnexado; + } + + $partialfields .= '(' . $strProcessos . ')'; + } + } + + if ($pesquisaProtocoloSolrDTO->isSetStrProtocoloPesquisa() && $pesquisaProtocoloSolrDTO->getStrProtocoloPesquisa() != null) { + if ($partialfields != '') { + $partialfields .= ' AND '; + } + $partialfields .= '(prot_pesq:*' . InfraUtil::retirarFormatacao($pesquisaProtocoloSolrDTO->getStrProtocoloPesquisa(), false) . '*)'; + } + + if ($pesquisaProtocoloSolrDTO->isSetNumIdTipoProcedimento() && $pesquisaProtocoloSolrDTO->getNumIdTipoProcedimento() != null) { + if ($partialfields != '') { + $partialfields .= ' AND '; + } + $partialfields .= '(id_tipo_proc:' . $pesquisaProtocoloSolrDTO->getNumIdTipoProcedimento() . ')'; + } + + if ($pesquisaProtocoloSolrDTO->isSetNumIdSerie() && $pesquisaProtocoloSolrDTO->getNumIdSerie() != null) { + if ($partialfields != '') { + $partialfields .= ' AND '; + } + $partialfields .= '(id_serie:' . $pesquisaProtocoloSolrDTO->getNumIdSerie() . ')'; + } + + if ($pesquisaProtocoloSolrDTO->isSetStrNumero() && $pesquisaProtocoloSolrDTO->getStrNumero() != null) { + if ($partialfields != '') { + $partialfields .= ' AND '; + } + $partialfields .= '(numero:*' . $pesquisaProtocoloSolrDTO->getStrNumero() . '*)'; + } + + $dtaInicio = null; + $dtaFim = null; + if($pesquisaProtocoloSolrDTO->isSetStrStaTipoData()){ + if ($pesquisaProtocoloSolrDTO->getStrStaTipoData() == '0') { + $dtaInicio = $pesquisaProtocoloSolrDTO->getDtaInicio(); + $dtaFim = $pesquisaProtocoloSolrDTO->getDtaFim(); + } else if ($pesquisaProtocoloSolrDTO->getStrStaTipoData() == '30') { + $dtaInicio = InfraData::calcularData(30, InfraData::$UNIDADE_DIAS, InfraData::$SENTIDO_ATRAS); + $dtaFim = InfraData::getStrDataAtual(); + } else if ($pesquisaProtocoloSolrDTO->getStrStaTipoData() == '60') { + $dtaInicio = InfraData::calcularData(60, InfraData::$UNIDADE_DIAS, InfraData::$SENTIDO_ATRAS); + $dtaFim = InfraData::getStrDataAtual(); + } + } + + if ($dtaInicio != null && $dtaFim != null) { + $dia1 = substr($dtaInicio, 0, 2); + $mes1 = substr($dtaInicio, 3, 2); + $ano1 = substr($dtaInicio, 6, 4); + + $dia2 = substr($dtaFim, 0, 2); + $mes2 = substr($dtaFim, 3, 2); + $ano2 = substr($dtaFim, 6, 4); + + if ($partialfields != '') { + $partialfields .= ' AND '; + } + + $partialfields .= 'dta_ger:[' . $ano1 . '-' . $mes1 . '-' . $dia1 . 'T00:00:00Z TO ' . $ano2 . '-' . $mes2 . '-' . $dia2 . 'T00:00:00Z]'; + } + + $objUnidadeDTO = new UnidadeDTO(); + $objUnidadeDTO->setBolExclusaoLogica(false); + $objUnidadeDTO->retStrSinProtocolo(); + $objUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + + $objUnidadeRN = new UnidadeRN(); + $objUnidadeDTOAtual = $objUnidadeRN->consultarRN0125($objUnidadeDTO); + + if ($objUnidadeDTOAtual->getStrSinProtocolo() == 'N') { + + if ($partialfields != '') { + $partialfields .= ' AND '; + } + + $partialfields .= '(tipo_aces:P OR id_uni_aces:*;' . SessaoSEI::getInstance()->getNumIdUnidadeAtual() . ';*)'; + } + + if($pesquisaProtocoloSolrDTO->isSetNumIdGrupoAcompanhamentoProcedimento() && $pesquisaProtocoloSolrDTO->getNumIdGrupoAcompanhamentoProcedimento()) { + $protocoloRN = new ProtocoloRN(); + $mdWsSeiProtocoloDTO = new MdWsSeiProtocoloDTO(); + $mdWsSeiProtocoloDTO->setNumIdGrupoAcompanhamentoProcedimento($pesquisaProtocoloSolrDTO->getNumIdGrupoAcompanhamentoProcedimento()); + $mdWsSeiProtocoloDTO->retDblIdProtocolo(); + + $ret = $protocoloRN->listarRN0668($mdWsSeiProtocoloDTO); + if(!$ret){ + return MdWsSeiRest::formataRetornoSucessoREST(null, array(), 0); + } + if ($partialfields != '') { + $partialfields .= ' AND '; + } + $arrIdProcessosAcompanhamento = array(); + /** @var ProtocoloDTO $protocoloDTO */ + foreach($ret as $protocoloDTO){ + $arrIdProcessosAcompanhamento[] = 'id_proc:' . $protocoloDTO->getDblIdProtocolo(); + } + $partialfields .= '(' . implode(' OR ', $arrIdProcessosAcompanhamento) . ')'; + } + + $parametros = new stdClass(); + if($pesquisaProtocoloSolrDTO->isSetStrPalavrasChave()){ + $parametros->q = SolrUtil::formatarOperadores($pesquisaProtocoloSolrDTO->getStrPalavrasChave()); + } + + if ($parametros->q != '' && $partialfields != '') { + $parametros->q = '(' . $parametros->q . ') AND ' . $partialfields; + } else if ($partialfields != '') { + $parametros->q = $partialfields; + } + + $parametros->q = utf8_encode($parametros->q); + $start = 0; + $limit = 100; + if($pesquisaProtocoloSolrDTO->getNumPaginaAtual()){ + $start = $pesquisaProtocoloSolrDTO->getNumPaginaAtual(); + } + if($pesquisaProtocoloSolrDTO->getNumMaxRegistrosRetorno()){ + $limit = $pesquisaProtocoloSolrDTO->getNumMaxRegistrosRetorno(); + } + $parametros->start = $start; + $parametros->rows = $limit; + $parametros->sort = 'dta_ger desc, id_prot desc'; + + $urlBusca = ConfiguracaoSEI::getInstance()->getValor('Solr', 'Servidor') . '/' . ConfiguracaoSEI::getInstance()->getValor('Solr', 'CoreProtocolos') . '/select?' . http_build_query($parametros) . '&hl=true&hl.snippets=2&hl.fl=content&hl.fragsize=100&hl.maxAnalyzedChars=1048576&hl.alternateField=content&hl.maxAlternateFieldLength=100&fl=id,id_proc,id_doc,id_tipo_proc,id_serie,id_anexo,id_uni_ger,prot_doc,prot_proc,numero,id_usu_ger,dta_ger'; + + try { + $resultados = file_get_contents($urlBusca, false); + } catch (Exception $e) { + throw new InfraException('Erro realizando pesquisa no Solar.', $e, urldecode($urlBusca), false); + } + + if ($resultados == '') { + throw new InfraException('Nenhum retorno encontrado no resultado da pesquisa do Solar, verificar indexação.'); + } + + $xml = simplexml_load_string($resultados); + $arrRet = $xml->xpath('/response/result/@numFound'); + $total = array_shift($arrRet)->__toString(); + $arrIdProcessos = array(); + $registros = $xml->xpath('/response/result/doc'); + $numRegistros = sizeof($registros); + + $result = array(); + for ($i = 0; $i < $numRegistros; $i++) { + $arrIdProcessos[] = SolrUtil::obterTag($registros[$i], 'id_proc', 'long'); + } + + if($arrIdProcessos){ + $protocoloRN = new ProtocoloRN(); + $protocoloDTO = new MdWsSeiProtocoloDTO(); + $protocoloDTO->setDblIdProtocolo($arrIdProcessos, InfraDTO::$OPER_IN); + $protocoloDTO->retDblIdProtocolo(); + $protocoloDTO->retNumIdUnidadeGeradora(); + $protocoloDTO->retStrStaProtocolo(); + $protocoloDTO->retStrProtocoloFormatado(); + $protocoloDTO->retStrNomeTipoProcedimentoProcedimento(); + $protocoloDTO->retStrDescricao(); + $protocoloDTO->retStrSiglaUnidadeGeradora(); + $protocoloDTO->retStrStaGrauSigilo(); + $protocoloDTO->retStrStaNivelAcessoLocal(); + $protocoloDTO->retStrStaNivelAcessoGlobal(); + $protocoloDTO->retStrSinCienciaProcedimento(); + $protocoloDTO->retStrStaEstado(); + $arrProtocoloDTO = $protocoloRN->listarRN0668($protocoloDTO); + $result = $this->montaRetornoListagemProcessos($arrProtocoloDTO, null); + } + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $total); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + +} \ No newline at end of file diff --git a/codigo-fonte/mod-wssei/rn/MdWsSeiHipoteseLegalRN.php b/codigo-fonte/mod-wssei/rn/MdWsSeiHipoteseLegalRN.php new file mode 100644 index 0000000..151a3fb --- /dev/null +++ b/codigo-fonte/mod-wssei/rn/MdWsSeiHipoteseLegalRN.php @@ -0,0 +1,1321 @@ +getDblIdProtocolo()) { + throw new InfraException('Protocolo não informado.'); + } + $result = array(); + + $relProtocoloProtocoloDTOConsulta = new RelProtocoloProtocoloDTO(); + $relProtocoloProtocoloDTOConsulta->setDblIdProtocolo1($protocoloDTO->getDblIdProtocolo()); + $relProtocoloProtocoloDTOConsulta->retDblIdProtocolo1(); + $relProtocoloProtocoloDTOConsulta->setNumMaxRegistrosRetorno(1); + $relProtocoloProtocoloDTOConsulta->setNumPaginaAtual(0); + $relProtocoloProtocoloRN = new RelProtocoloProtocoloRN(); + $ret = $relProtocoloProtocoloRN->listarRN0187($relProtocoloProtocoloDTOConsulta); + if ($ret) { + /** @var RelProtocoloProtocoloDTO $relProtocoloProtocoloDTO */ + $relProtocoloProtocoloDTO = $ret[0]; + $result['processo'] = $relProtocoloProtocoloDTO->getDblIdProtocolo1(); + $result['unidades'] = $relProtocoloProtocoloDTOConsulta->getNumTotalRegistros(); + } + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Método que lista o sobrestamento de um processo + * @param AtividadeDTO $atividadeDTOParam + * @return array + */ + protected function listarSobrestamentoProcessoConectado(AtividadeDTO $atividadeDTOParam) + { + try { + if (!$atividadeDTOParam->isSetDblIdProtocolo()) { + throw new InfraException('Protocolo não informado.'); + } + if (!$atividadeDTOParam->isSetNumIdUnidade()) { + $atividadeDTOParam->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + } + + $result = array(); + $atividadeDTOConsulta = new AtividadeDTO(); + $atividadeDTOConsulta->retTodos(); + $atividadeDTOConsulta->setDblIdProtocolo($atividadeDTOParam->getDblIdProtocolo()); + $atividadeDTOConsulta->setDthConclusao(null); + $atividadeDTOConsulta->setNumIdTarefa(TarefaRN::$TI_SOBRESTAMENTO); + $atividadeDTOConsulta->setNumMaxRegistrosRetorno(1); + $atividadeRN = new AtividadeRN(); + $ret = $atividadeRN->listarRN0036($atividadeDTOConsulta); + + /** @var AtividadeDTO $atividadeDTO */ + foreach ($ret as $atividadeDTO) { + $result[] = array( + 'idAtividade' => $atividadeDTO->getNumIdAtividade(), + 'idProtocolo' => $atividadeDTO->getDblIdProtocolo(), + 'dthAbertura' => $atividadeDTO->getDthAbertura(), + 'sinInicial' => $atividadeDTO->getStrSinInicial(), + 'dtaPrazo' => $atividadeDTO->getDtaPrazo(), + 'tipoVisualizacao' => $atividadeDTO->getNumTipoVisualizacao(), + 'dthConclusao' => $atividadeDTO->getDthConclusao(), + ); + } + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Metodo de sobrestamento de processo + * @param RelProtocoloProtocoloDTO $relProtocoloProtocoloDTO + * @return array + */ + protected function sobrestamentoProcessoControlado(RelProtocoloProtocoloDTO $relProtocoloProtocoloDTO) + { + try { + if(!$relProtocoloProtocoloDTO->isSetDblIdProtocolo2()){ + throw new Exception('Processo não informado!'); + } + if(!$relProtocoloProtocoloDTO->isSetStrMotivo()){ + throw new Exception('Informe o motivo!'); + } + $procedimentoRN = new ProcedimentoRN(); + $procedimentoRN->sobrestarRN1014(array($relProtocoloProtocoloDTO)); + + return MdWsSeiRest::formataRetornoSucessoREST('Processo sobrestado com sucesso'); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * @param $protocolo + * @return array + */ + protected function removerSobrestamentoProcessoControlado(ProcedimentoDTO $procedimentoDTOParam) + { + try { + if (!$procedimentoDTOParam->getDblIdProcedimento()) { + throw new InfraException('Procedimento não informado.'); + } + $seiRN = new SeiRN(); + $entradaRemoverSobrestamentoProcessoAPI = new EntradaRemoverSobrestamentoProcessoAPI(); + $entradaRemoverSobrestamentoProcessoAPI->setIdProcedimento($procedimentoDTOParam->getDblIdProcedimento()); + + $seiRN->removerSobrestamentoProcesso($entradaRemoverSobrestamentoProcessoAPI); + + return MdWsSeiRest::formataRetornoSucessoREST('Sobrestar cancelado com sucesso.'); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Método que retorna os procedimentos com acompanhamento do usuário + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOConsulta + * @return array + */ + protected function listarProcedimentoAcompanhamentoUsuarioConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam) + { + try { + $usuarioAtribuicaoAtividade = null; + $mdWsSeiProtocoloDTOConsulta = new MdWsSeiProtocoloDTO(); + if ($mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()) { + $mdWsSeiProtocoloDTOConsulta->setNumIdGrupoAcompanhamentoProcedimento($mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento()); + } + + if (!$mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioGeradorAcompanhamento()) { + $mdWsSeiProtocoloDTOConsulta->setNumIdUsuarioGeradorAcompanhamento(SessaoSEI::getInstance()->getNumIdUsuario()); + } else { + $mdWsSeiProtocoloDTOConsulta->setNumIdUsuarioGeradorAcompanhamento($mdWsSeiProtocoloDTOParam->getNumIdUsuarioGeradorAcompanhamento()); + } + + if (is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) { + $mdWsSeiProtocoloDTOConsulta->setNumPaginaAtual(0); + } else { + $mdWsSeiProtocoloDTOConsulta->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual()); + } + + if (!$mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) { + $mdWsSeiProtocoloDTOConsulta->setNumMaxRegistrosRetorno(10); + } else { + $mdWsSeiProtocoloDTOConsulta->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno()); + } + + $protocoloRN = new ProtocoloRN(); + $mdWsSeiProtocoloDTOConsulta->retTodos(); + $mdWsSeiProtocoloDTOConsulta->retDblIdProtocolo(); + $mdWsSeiProtocoloDTOConsulta->retStrNomeTipoProcedimentoProcedimento(); + $mdWsSeiProtocoloDTOConsulta->retStrSiglaUnidadeGeradora(); + $mdWsSeiProtocoloDTOConsulta->retStrSinCienciaProcedimento(); + $mdWsSeiProtocoloDTOConsulta->setOrdDthGeracaoAcompanhamento(InfraDTO::$TIPO_ORDENACAO_ASC); + $mdWsSeiProtocoloDTOConsulta->retStrNomeTipoProcedimentoProcedimento(); + + $ret = $protocoloRN->listarRN0668($mdWsSeiProtocoloDTOConsulta); + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade); + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $mdWsSeiProtocoloDTOConsulta->getNumTotalRegistros()); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Método que retorna os procedimentos com acompanhamento da unidade + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOConsulta + * @return array + */ + protected function listarProcedimentoAcompanhamentoUnidadeConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam) + { + try { + $acompanhamentoRN = new AcompanhamentoRN(); + $acompanhamentoDTO = new AcompanhamentoDTO(); + $acompanhamentoDTO->setOrdNumIdAcompanhamento(InfraDTO::$TIPO_ORDENACAO_DESC); + if(!$mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()){ + throw new Exception('O grupo deve ser informado!'); + }else{ + $acompanhamentoDTO->setNumIdGrupoAcompanhamento($mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento()); + } + if (is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) { + $acompanhamentoDTO->setNumPaginaAtual(0); + } else { + $acompanhamentoDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual()); + } + + if (!$mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) { + $acompanhamentoDTO->setNumMaxRegistrosRetorno(10); + } else { + $acompanhamentoDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno()); + } + + $arrAcompanhamentoDTO = $acompanhamentoRN->listarAcompanhamentosUnidade($acompanhamentoDTO); + $totalRegistros = $acompanhamentoDTO->getNumTotalRegistros() ?: 0; + + $ret = array(); + foreach($arrAcompanhamentoDTO as $acompanhamentoDTO){ + $ret[] = $acompanhamentoDTO->getObjProcedimentoDTO(); + } + $result = $this->montaRetornoListagemProcessos($ret, null); + + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $totalRegistros); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Método que pesquisa todos o procedimentos em todas as unidades + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam + * @return array + */ + protected function pesquisarTodosProcessosConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam) + { + try { + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO(); + + $usuarioAtribuicaoAtividade = null; + if ($mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioAtribuicaoAtividade()) { + $usuarioAtribuicaoAtividade = $mdWsSeiProtocoloDTOParam->getNumIdUsuarioAtribuicaoAtividade(); + } + + if (!is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) { + $pesquisaPendenciaDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual()); + } else { + $pesquisaPendenciaDTO->setNumPaginaAtual(0); + } + + if ($mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) { + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno()); + } else { + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno(10); + } + if ($mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()) { + $pesquisaPendenciaDTO->setNumIdGrupoAcompanhamentoProcedimento( + $mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento() + ); + } + if ($mdWsSeiProtocoloDTOParam->isSetStrProtocoloFormatadoPesquisa()) { + $strProtocoloFormatado = InfraUtil::retirarFormatacao( + $mdWsSeiProtocoloDTOParam->getStrProtocoloFormatadoPesquisa(), false + ); + $pesquisaPendenciaDTO->setStrProtocoloFormatadoPesquisaProtocolo( + '%' . $strProtocoloFormatado . '%', + InfraDTO::$OPER_LIKE + ); + } + + $atividadeRN = new MdWsSeiAtividadeRN(); + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO)); + $pesquisaPendenciaDTO->setStrSinAnotacoes('S'); + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S'); + $pesquisaPendenciaDTO->setStrSinCredenciais('S'); + $pesquisaPendenciaDTO->setStrSinSituacoes('S'); + $pesquisaPendenciaDTO->setStrSinMarcadores('S'); + + $ret = $atividadeRN->listarPendencias($pesquisaPendenciaDTO); + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade); + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $pesquisaPendenciaDTO->getNumTotalRegistros()); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Método que retorna os procedimentos com acompanhamento com filtro opcional de grupo de acompanhamento e protocolo + * formatado + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam + * @return array + */ + protected function pesquisarProcedimentoConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam) + { + try { + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO(); + + $usuarioAtribuicaoAtividade = null; + if ($mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioAtribuicaoAtividade()) { + $usuarioAtribuicaoAtividade = $mdWsSeiProtocoloDTOParam->getNumIdUsuarioAtribuicaoAtividade(); + } + + if (!is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) { + $pesquisaPendenciaDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual()); + } else { + $pesquisaPendenciaDTO->setNumPaginaAtual(0); + } + + if ($mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) { + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno()); + } else { + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno(10); + } + if ($mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()) { + $pesquisaPendenciaDTO->setNumIdGrupoAcompanhamentoProcedimento( + $mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento() + ); + } + if ($mdWsSeiProtocoloDTOParam->isSetStrProtocoloFormatadoPesquisa()) { + $strProtocoloFormatado = InfraUtil::retirarFormatacao( + $mdWsSeiProtocoloDTOParam->getStrProtocoloFormatadoPesquisa(), false + ); + $pesquisaPendenciaDTO->setStrProtocoloFormatadoPesquisaProtocolo( + '%' . $strProtocoloFormatado . '%', + InfraDTO::$OPER_LIKE + ); + } + + $atividadeRN = new MdWsSeiAtividadeRN(); + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO)); + $pesquisaPendenciaDTO->setStrSinAnotacoes('S'); + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S'); + $pesquisaPendenciaDTO->setStrSinCredenciais('S'); + $pesquisaPendenciaDTO->setStrSinSituacoes('S'); + $pesquisaPendenciaDTO->setStrSinMarcadores('S'); + + $ret = $atividadeRN->listarPendencias($pesquisaPendenciaDTO); + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade); + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $pesquisaPendenciaDTO->getNumTotalRegistros()); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Metodo que lista os processos + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTO + * @return array + */ + protected function listarProcessosConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam) + { + try { + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO(); + + $usuarioAtribuicaoAtividade = null; + if ($mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioAtribuicaoAtividade()) { + $usuarioAtribuicaoAtividade = $mdWsSeiProtocoloDTOParam->getNumIdUsuarioAtribuicaoAtividade(); + } + + if (!is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) { + $pesquisaPendenciaDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual()); + } else { + $pesquisaPendenciaDTO->setNumPaginaAtual(0); + } + + if ($mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) { + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno()); + } else { + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno(10); + } + if ($mdWsSeiProtocoloDTOParam->getStrSinApenasMeus() == 'S') { + $pesquisaPendenciaDTO->setStrStaTipoAtribuicao('M'); + } + + $atividadeRN = new MdWsSeiAtividadeRN(); + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO)); + $pesquisaPendenciaDTO->setStrSinAnotacoes('S'); + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S'); + $pesquisaPendenciaDTO->setStrSinCredenciais('S'); + $pesquisaPendenciaDTO->setStrSinSituacoes('S'); + $pesquisaPendenciaDTO->setStrSinMarcadores('S'); + + if ($mdWsSeiProtocoloDTOParam->getStrSinTipoBusca() == MdWsSeiProtocoloDTO::SIN_TIPO_BUSCA_R) { + $pesquisaPendenciaDTO->setStrSinInicial('N'); + } else if ($mdWsSeiProtocoloDTOParam->getStrSinTipoBusca() == MdWsSeiProtocoloDTO::SIN_TIPO_BUSCA_G) { + $pesquisaPendenciaDTO->setStrSinInicial('S'); + } else { + throw new InfraException('O tipo de busca deve ser (R)ecebidos ou (G)erados'); + } + $ret = $atividadeRN->listarPendencias($pesquisaPendenciaDTO); + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade); + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $pesquisaPendenciaDTO->getNumTotalRegistros()); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + + } + + /** + * Metodo que monta o retorno da listagem do processo com base no retorno da consulta + * @param array $ret + * @param null $usuarioAtribuicaoAtividade + * @return array + */ + private function montaRetornoListagemProcessos(array $ret, $usuarioAtribuicaoAtividade = null) + { + $result = array(); + $protocoloRN = new ProtocoloRN(); + foreach ($ret as $dto) { + $usuarioAtribuido = null; + $documentoNovo = 'N'; + $documentoPublicado = 'N'; + $possuiAnotacao = 'N'; + $podeGerenciarCredenciais = 'N'; + $possuiAnotacaoPrioridade = 'N'; + $usuarioVisualizacao = 'N'; + $tipoVisualizacao = 'N'; + $retornoProgramado = 'N'; + $retornoAtrasado = 'N'; + $processoAberto = false; + $acaoReabrirProcesso = SessaoSEI::getInstance()->verificarPermissao('procedimento_reabrir'); + $acaoRegistrarAnotacao = SessaoSEI::getInstance()->verificarPermissao('anotacao_registrar'); + $processoEmTramitacao = false; + $processoSobrestado = false; + $processoAnexado = false; + $podeReabrirProcesso = false; + $podeRegistrarAnotacao = false; + $arrDadosAbertura = array(); + $procedimentoDTO = null; + $resultAnotacao = array(); + $protocoloDTO = new MdWsSeiProtocoloDTO(); + if ($dto instanceof ProcedimentoDTO) { + $protocoloDTO = new MdWsSeiProtocoloDTO(); + $protocoloDTO->setDblIdProtocolo($dto->getDblIdProcedimento()); + $protocoloDTO->retDblIdProtocolo(); + $protocoloDTO->retNumIdUnidadeGeradora(); + $protocoloDTO->retStrStaProtocolo(); + $protocoloDTO->retStrProtocoloFormatado(); + $protocoloDTO->retStrNomeTipoProcedimentoProcedimento(); + $protocoloDTO->retStrDescricao(); + $protocoloDTO->retStrSiglaUnidadeGeradora(); + $protocoloDTO->retStrStaGrauSigilo(); + $protocoloDTO->retStrStaNivelAcessoLocal(); + $protocoloDTO->retStrStaNivelAcessoGlobal(); + $protocoloDTO->retStrSinCienciaProcedimento(); + $protocoloDTO->retStrStaEstado(); + $protocoloDTO = $protocoloRN->consultarRN0186($protocoloDTO); + } else { + $protocoloDTO = $dto; + } + + $processoBloqueado = $protocoloDTO->getStrStaEstado() == ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO ? 'S' : 'N'; + $processoRemocaoSobrestamento = 'N'; + $processoDocumentoIncluidoAssinado = 'N'; + $processoPublicado = 'N'; + + $atividadeRN = new MdWsSeiAtividadeRN(); + $atividadeDTOConsulta = new AtividadeDTO(); + $atividadeDTOConsulta->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo()); + $atividadeDTOConsulta->retDblIdProtocolo(); + $atividadeDTOConsulta->retNumIdTarefa(); + $atividadeDTOConsulta->retNumTipoVisualizacao(); + $atividadeDTOConsulta->retStrNomeUsuarioAtribuicao(); + $atividadeDTOConsulta->retNumIdUsuarioVisualizacao(); + $atividadeDTOConsulta->retNumIdAtividade(); + + $atividadeDTOConsulta->setNumMaxRegistrosRetorno(1); + $atividadeDTOConsulta->setOrdNumIdAtividade(InfraDTO::$TIPO_ORDENACAO_DESC); + + $arrAtividades = $atividadeRN->listarRN0036($atividadeDTOConsulta); + + if ($arrAtividades) { + /** @var AtividadeDTO $atividadeDTO */ + $atividadeDTO = $arrAtividades[0]; + $documentoNovo = $atividadeDTO->getNumIdTarefa() == 1 ? 'S' : 'N'; + $usuarioAtribuido = $atividadeDTO->getStrNomeUsuarioAtribuicao(); + $tipoVisualizacao = $atividadeDTO->getNumTipoVisualizacao() == 0 ? 'S' : 'N'; + if ($atividadeDTO->getNumIdUsuarioVisualizacao() == $usuarioAtribuicaoAtividade) { + $usuarioVisualizacao = 'S'; + } + } + $arrAtividadePendenciaDTO = array(); + if ($dto instanceof ProcedimentoDTO && $dto->isSetArrObjAtividadeDTO()) { + $procedimentoDTO = $dto; + $arrAtividadePendenciaDTO = $procedimentoDTO->getArrObjAtividadeDTO(); + } else { + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO(); + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO)); + $pesquisaPendenciaDTO->setStrSinAnotacoes('S'); + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S'); + $pesquisaPendenciaDTO->setStrSinCredenciais('S'); + $pesquisaPendenciaDTO->setStrSinSituacoes('S'); + $pesquisaPendenciaDTO->setStrSinMarcadores('S'); + $pesquisaPendenciaDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo()); + $arrProcedimentoDTO = $atividadeRN->listarPendencias($pesquisaPendenciaDTO); + if ($arrProcedimentoDTO) { + $procedimentoDTO = $arrProcedimentoDTO[0]; + $arrAtividadePendenciaDTO = $procedimentoDTO->getArrObjAtividadeDTO(); + } + } + if ($arrAtividadePendenciaDTO) { + $atividadePendenciaDTO = $arrAtividadePendenciaDTO[0]; + if ($atividadePendenciaDTO->getNumTipoVisualizacao() & AtividadeRN::$TV_REMOCAO_SOBRESTAMENTO) { + $processoRemocaoSobrestamento = 'S'; + } + if ($atividadePendenciaDTO->getNumTipoVisualizacao() & AtividadeRN::$TV_ATENCAO) { + $processoDocumentoIncluidoAssinado = 'S'; + } + if ($atividadePendenciaDTO->getNumTipoVisualizacao() & AtividadeRN::$TV_PUBLICACAO) { + $processoPublicado = 'S'; + } + $retornoProgramadoDTOConsulta = new RetornoProgramadoDTO(); + $retornoProgramadoDTOConsulta->retDblIdProtocoloAtividadeEnvio(); + $retornoProgramadoDTOConsulta->retStrSiglaUnidadeOrigemAtividadeEnvio(); + $retornoProgramadoDTOConsulta->retStrSiglaUnidadeAtividadeEnvio(); + $retornoProgramadoDTOConsulta->retDtaProgramada(); + $retornoProgramadoDTOConsulta->setNumIdUnidadeAtividadeEnvio(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $retornoProgramadoDTOConsulta->setDblIdProtocoloAtividadeEnvio(array_unique(InfraArray::converterArrInfraDTO($arrAtividadePendenciaDTO, 'IdProtocolo')), InfraDTO::$OPER_IN); + $retornoProgramadoDTOConsulta->setNumIdAtividadeRetorno(null); + $objRetornoProgramadoRN = new RetornoProgramadoRN(); + $arrRetornoProgramadoDTO = $objRetornoProgramadoRN->listar($retornoProgramadoDTOConsulta); + if ($arrRetornoProgramadoDTO) { + $retornoProgramado = 'S'; + $strDataAtual = InfraData::getStrDataAtual(); + foreach ($arrRetornoProgramadoDTO as $retornoProgramadoDTO) { + $numPrazo = InfraData::compararDatas($strDataAtual, $retornoProgramadoDTO->getDtaProgramada()); + if ($numPrazo < 0) { + $retornoAtrasado = 'S'; + } + $retornoData = array( + 'dataProgramada' => $retornoProgramadoDTO->getDtaProgramada(), + 'unidade' => $retornoProgramadoDTO->getStrSiglaUnidadeOrigemAtividadeEnvio() + ); + } + } + } + $documentoRN = new DocumentoRN(); + $documentoDTOConsulta = new DocumentoDTO(); + $documentoDTOConsulta->setDblIdProcedimento($protocoloDTO->getDblIdProtocolo()); + $documentoDTOConsulta->retDblIdDocumento(); + $arrDocumentos = $documentoRN->listarRN0008($documentoDTOConsulta); + if ($arrDocumentos) { + $arrIdDocumentos = array(); + /** @var DocumentoDTO $documentoDTO */ + foreach ($arrDocumentos as $documentoDTO) { + $arrIdDocumentos[] = $documentoDTO->getDblIdDocumento(); + } + $publiacaoRN = new PublicacaoRN(); + $publicacaoDTO = new PublicacaoDTO(); + $publicacaoDTO->retNumIdPublicacao(); + $publicacaoDTO->setNumMaxRegistrosRetorno(1); + $publicacaoDTO->adicionarCriterio( + array('IdDocumento'), + array(InfraDTO::$OPER_IN), + array($arrIdDocumentos) + ); + $arrPublicacaoDTO = $publiacaoRN->listarRN1045($publicacaoDTO); + $documentoPublicado = count($arrPublicacaoDTO) ? 'S' : 'N'; + } + $anotacaoRN = new AnotacaoRN(); + $anotacaoDTOConsulta = new AnotacaoDTO(); + $anotacaoDTOConsulta->setNumMaxRegistrosRetorno(1); + $anotacaoDTOConsulta->retDblIdProtocolo(); + $anotacaoDTOConsulta->retStrDescricao(); + $anotacaoDTOConsulta->retNumIdUnidade(); + $anotacaoDTOConsulta->retNumIdUsuario(); + $anotacaoDTOConsulta->retDthAnotacao(); + $anotacaoDTOConsulta->retStrSinPrioridade(); + $anotacaoDTOConsulta->retStrStaAnotacao(); + $anotacaoDTOConsulta->retNumIdAnotacao(); + $anotacaoDTOConsulta->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo()); + $anotacaoDTOConsulta->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $arrAnotacao = $anotacaoRN->listar($anotacaoDTOConsulta); + $possuiAnotacao = count($arrAnotacao) ? 'S' : 'N'; + foreach ($arrAnotacao as $anotacaoDTO) { + if ($anotacaoDTO->getStrSinPrioridade() == 'S') { + $possuiAnotacaoPrioridade = 'S'; + break; + } + } + /** @var AnotacaoDTO $anotacaoDTO */ + foreach ($arrAnotacao as $anotacaoDTO) { + $resultAnotacao[] = array( + 'idAnotacao' => $anotacaoDTO->getNumIdAnotacao(), + 'idProtocolo' => $anotacaoDTO->getDblIdProtocolo(), + 'descricao' => $anotacaoDTO->getStrDescricao(), + 'idUnidade' => $anotacaoDTO->getNumIdUnidade(), + 'idUsuario' => $anotacaoDTO->getNumIdUsuario(), + 'dthAnotacao' => $anotacaoDTO->getDthAnotacao(), + 'sinPrioridade' => $anotacaoDTO->getStrSinPrioridade(), + 'staAnotacao' => $anotacaoDTO->getStrStaAnotacao() + ); + } + if ($protocoloDTO->getStrStaEstado() != ProtocoloRN::$TE_PROCEDIMENTO_ANEXADO) { + $procedimentoDTOParam = new ProcedimentoDTO(); + $procedimentoDTOParam->setDblIdProcedimento($protocoloDTO->getDblIdProtocolo()); + $procedimentoDTOParam->setStrStaNivelAcessoGlobalProtocolo($protocoloDTO->getStrStaNivelAcessoGlobal()); + $arrDadosAbertura = $this->listarUnidadeAberturaProcedimento($procedimentoDTOParam); + } + + if($protocoloDTO->getStrStaNivelAcessoGlobal() == ProtocoloRN::$NA_SIGILOSO){ + $podeGerenciarCredenciais = SessaoSEI::getInstance()->verificarPermissao('procedimento_credencial_gerenciar') ? 'S' : 'N'; + } + + $pesquisaPendenciaDTO = new PesquisaPendenciaDTO(); + $pesquisaPendenciaDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo()); + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $pesquisaPendenciaDTO->setStrSinMontandoArvore('S'); + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S'); + + $processoEmTramitacao = $processoAberto = count($atividadeRN->listarPendenciasRN0754($pesquisaPendenciaDTO)) == 1; + if ($protocoloDTO->getNumIdUnidadeGeradora() == SessaoSEI::getInstance()->getNumIdUnidadeAtual()){ + $processoEmTramitacao = true; + }else{ + $atividadeDTO = new AtividadeDTO(); + $atividadeDTO->retNumIdAtividade(); + $atividadeDTO->setNumIdUnidadeOrigem(SessaoSEI::getInstance()->getNumIdUnidadeAtual(),InfraDTO::$OPER_DIFERENTE); + $atividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $atividadeDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo()); + $atividadeDTO->setNumMaxRegistrosRetorno(1); + + if ($atividadeRN->consultarRN0033($atividadeDTO)!=null){ + $processoEmTramitacao = true; + } + } + if ($protocoloDTO->getStrStaEstado() == ProtocoloRN::$TE_PROCEDIMENTO_SOBRESTADO){ + if ($processoAberto){ + $processoAberto = false; + } + $processoSobrestado = true; + }else if($protocoloDTO->getStrStaEstado()==ProtocoloRN::$TE_PROCEDIMENTO_ANEXADO){ + $processoAnexado = true; + } + if (!$processoAberto && $acaoReabrirProcesso && $processoEmTramitacao && !$processoSobrestado && !$processoAnexado) { + $podeReabrirProcesso = true; + } + if ($processoEmTramitacao && $acaoRegistrarAnotacao) { + $podeRegistrarAnotacao = true; + } + + $objInfraParametro = new InfraParametro(BancoSEI::getInstance()); + + $result[] = array( + 'id' => $protocoloDTO->getDblIdProtocolo(), + 'status' => $protocoloDTO->getStrStaProtocolo(), + 'seiNumMaxDocsPasta' => $objInfraParametro->getValor('SEI_NUM_MAX_DOCS_PASTA'), + 'atributos' => array( + 'idProcedimento' => $protocoloDTO->getDblIdProtocolo(), + 'idProtocolo' => $protocoloDTO->getDblIdProtocolo(), + 'numero' => $protocoloDTO->getStrProtocoloFormatado(), + 'tipoProcesso' => $protocoloDTO->getStrNomeTipoProcedimentoProcedimento(), + 'descricao' => $protocoloDTO->getStrDescricao(), + 'usuarioAtribuido' => $usuarioAtribuido, + 'unidade' => array( + 'idUnidade' => $protocoloDTO->getNumIdUnidadeGeradora(), + 'sigla' => $protocoloDTO->getStrSiglaUnidadeGeradora() + ), + 'dadosAbertura' => $arrDadosAbertura, + 'anotacoes' => $resultAnotacao, + 'status' => array( + 'documentoSigiloso' => $protocoloDTO->getStrStaGrauSigilo(), + 'documentoRestrito' => $protocoloDTO->getStrStaNivelAcessoLocal() == 1 ? 'S' : 'N', + 'documentoNovo' => $documentoNovo, + 'documentoPublicado' => $documentoPublicado, + 'anotacao' => $possuiAnotacao, + 'anotacaoPrioridade' => $possuiAnotacaoPrioridade,//verificar + 'ciencia' => $protocoloDTO->getStrSinCienciaProcedimento(), + 'retornoProgramado' => $retornoProgramado, + 'retornoData' => $retornoData, + 'retornoAtrasado' => $retornoAtrasado, + 'processoAcessadoUsuario' => $tipoVisualizacao, + 'processoAcessadoUnidade' => $usuarioVisualizacao, + 'processoRemocaoSobrestamento' => $processoRemocaoSobrestamento, + 'processoBloqueado' => $processoBloqueado, + 'processoDocumentoIncluidoAssinado' => $processoDocumentoIncluidoAssinado, + 'processoPublicado' => $processoPublicado, + 'nivelAcessoGlobal' => $protocoloDTO->getStrStaNivelAcessoGlobal(), + 'podeGerenciarCredenciais' => $podeGerenciarCredenciais, + 'processoAberto' => $processoAberto ? 'S' : 'N', + 'processoEmTramitacao' => $processoEmTramitacao ? 'S' : 'N', + 'processoSobrestado' => $processoSobrestado ? 'S' : 'N', + 'processoAnexado' => $processoAnexado ? 'S' : 'N', + 'podeReabrirProcesso' => $podeReabrirProcesso ? 'S' : 'N', + 'podeRegistrarAnotacao' => $podeRegistrarAnotacao ? 'S' : 'N', + ) + ) + ); + } + + return $result; + } + + protected function listarUnidadeAberturaProcedimentoConectado(ProcedimentoDTO $procedimentoDTO) + { + $result = array(); + $atividadeRN = new MdWsSeiAtividadeRN(); + $strStaNivelAcessoGlobal = $procedimentoDTO->getStrStaNivelAcessoGlobalProtocolo(); + $dblIdProcedimento = $procedimentoDTO->getDblIdProcedimento(); + $atividadeDTO = new AtividadeDTO(); + $atividadeDTO->setDistinct(true); + $atividadeDTO->retStrSiglaUnidade(); + $atividadeDTO->retNumIdUnidade(); + $atividadeDTO->retStrDescricaoUnidade(); + + $atividadeDTO->setOrdStrSiglaUnidade(InfraDTO::$TIPO_ORDENACAO_ASC); + + if ($strStaNivelAcessoGlobal == ProtocoloRN::$NA_SIGILOSO) { + $atividadeDTO->retNumIdUsuario(); + $atividadeDTO->retStrSiglaUsuario(); + $atividadeDTO->retStrNomeUsuario(); + } else { + $atividadeDTO->retNumIdUsuarioAtribuicao(); + $atividadeDTO->retStrSiglaUsuarioAtribuicao(); + $atividadeDTO->retStrNomeUsuarioAtribuicao(); + + //ordena descendente pois no envio de processo que já existe na unidade e está atribuído ficará com mais de um andamento em aberto + //desta forma os andamentos com usuário nulo (envios do processo) serão listados depois + $atividadeDTO->setOrdStrSiglaUsuarioAtribuicao(InfraDTO::$TIPO_ORDENACAO_DESC); + + } + $atividadeDTO->setDblIdProtocolo($dblIdProcedimento); + $atividadeDTO->setDthConclusao(null); + + //sigiloso sem credencial nao considera o usuario atual + if ($strStaNivelAcessoGlobal == ProtocoloRN::$NA_SIGILOSO) { + + $acessoDTO = new AcessoDTO(); + $acessoDTO->setDistinct(true); + $acessoDTO->retNumIdUsuario(); + $acessoDTO->setDblIdProtocolo($dblIdProcedimento); + $acessoDTO->setStrStaTipo(AcessoRN::$TA_CREDENCIAL_PROCESSO); + + $acessoRN = new AcessoRN(); + $arrAcessoDTO = $acessoRN->listar($acessoDTO); + + $atividadeDTO->setNumIdUsuario(InfraArray::converterArrInfraDTO($arrAcessoDTO, 'IdUsuario'), InfraDTO::$OPER_IN); + } + $arrAtividadeDTO = $atividadeRN->listarRN0036($atividadeDTO); + + if ($strStaNivelAcessoGlobal != ProtocoloRN::$NA_SIGILOSO) { + $arrAtividadeDTO = InfraArray::distinctArrInfraDTO($arrAtividadeDTO, 'SiglaUnidade'); + } + if (count($arrAtividadeDTO) == 0) { + $result['info'] = 'Processo não possui andamentos abertos.'; + $result['lista'] = array(); + $result['unidades'] = array(); + } else { + if (count($arrAtividadeDTO) == 1) { + $atividadeDTO = $arrAtividadeDTO[0]; + if ($strStaNivelAcessoGlobal != ProtocoloRN::$NA_SIGILOSO) { + $result['info'] = 'Processo aberto somente na unidade:'; + $result['unidades'][] = array( + 'id' => $atividadeDTO->getNumIdUnidade(), + 'nome' => $atividadeDTO->getStrSiglaUnidade() + ); + $result['lista'][] = array( + 'sigla' => $atividadeDTO->getStrSiglaUnidade() + ); + } else { + $result['info'] = 'Processo aberto com o usuário:'; + $atividadeDTO = $arrAtividadeDTO[0]; + $result['unidades'][] = array( + 'id' => $atividadeDTO->getNumIdUnidade(), + 'nome' => $atividadeDTO->getStrSiglaUnidade() + ); + $result['lista'][] = array( + 'sigla' => $atividadeDTO->getStrNomeUsuario() + ); + } + } else { + if ($strStaNivelAcessoGlobal != ProtocoloRN::$NA_SIGILOSO) { + $result['info'] = 'Processo aberto nas unidades:'; + foreach ($arrAtividadeDTO as $atividadeDTO) { + $result['unidades'][] = array( + 'id' => $atividadeDTO->getNumIdUnidade(), + 'nome' => $atividadeDTO->getStrSiglaUnidade() + ); + $sigla = $atividadeDTO->getStrSiglaUnidade(); + if ($atividadeDTO->getNumIdUsuarioAtribuicao() != null) { + $sigla .= ' (atribuído a ' . $atividadeDTO->getStrNomeUsuarioAtribuicao() . ')'; + } + $result['lista'][] = array( + 'sigla' => $sigla + ); + } + } else { + $result['info'] = 'Processo aberto com os usuários:'; + foreach ($arrAtividadeDTO as $atividadeDTO) { + $result['unidades'][] = array( + 'id' => $atividadeDTO->getNumIdUnidade(), + 'nome' => $atividadeDTO->getStrSiglaUnidade() + ); + $sigla = $atividadeDTO->getStrNomeUsuario() . ' na unidade ' . $atividadeDTO->getStrSiglaUnidade(); + $result['lista'][] = array( + 'sigla' => $sigla + ); + } + } + } + } + + return $result; + } + + /** + * Metodo que retorna as ciencias nos processos + * @param ProtocoloDTO $protocoloDTOParam + * @return array + */ + protected function listarCienciaProcessoConectado(ProtocoloDTO $protocoloDTOParam) + { + try { + if (!$protocoloDTOParam->isSetDblIdProtocolo()) { + throw new InfraException('Protocolo não informado.'); + } + + $result = array(); + $mdWsSeiProcessoRN = new MdWsSeiProcessoRN(); + $atividadeDTOConsulta = new AtividadeDTO(); + $atividadeDTOConsulta->setDblIdProtocolo($protocoloDTOParam->getDblIdProtocolo()); + $atividadeDTOConsulta->setNumIdTarefa(TarefaRN::$TI_PROCESSO_CIENCIA); + $atividadeDTOConsulta->retDthAbertura(); + $atividadeDTOConsulta->retStrSiglaUnidade(); + $atividadeDTOConsulta->retStrNomeTarefa(); + $atividadeDTOConsulta->retStrSiglaUsuarioOrigem(); + $atividadeDTOConsulta->retNumIdAtividade(); + $atividadeRN = new AtividadeRN(); + $ret = $atividadeRN->listarRN0036($atividadeDTOConsulta); + /** @var AtividadeDTO $atividadeDTO */ + foreach ($ret as $atividadeDTO) { + $mdWsSeiProcessoDTO = new MdWsSeiProcessoDTO(); + $mdWsSeiProcessoDTO->setStrTemplate($atividadeDTO->getStrNomeTarefa()); + $mdWsSeiProcessoDTO->setNumIdAtividade($atividadeDTO->getNumIdAtividade()); + $result[] = array( + 'data' => $atividadeDTO->getDthAbertura(), + 'unidade' => $atividadeDTO->getStrSiglaUnidade(), + 'nome' => $atividadeDTO->getStrSiglaUsuarioOrigem(), + 'descricao' => $mdWsSeiProcessoRN->traduzirTemplate($mdWsSeiProcessoDTO) + ); + } + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + + /** + * Metodo que da ciencia ao processo/procedimento + * @param ProcedimentoDTO $procedimentoDTO + * @info E obrigatorio informar o id do procedimento + * @return array + */ + protected function darCienciaControlado(ProcedimentoDTO $procedimentoDTOParam) + { + try { + if (!$procedimentoDTOParam->isSetDblIdProcedimento()) { + throw new InfraException('E obrigatorio informar o procedimento!'); + } + + $procedimentoRN = new ProcedimentoRN(); + $procedimentoRN->darCiencia($procedimentoDTOParam); + + return MdWsSeiRest::formataRetornoSucessoREST('Ciência processo realizado com sucesso!'); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Metodo que conclui o procedimento/processo + * @param EntradaConcluirProcessoAPI $entradaConcluirProcessoAPI + * @info ele recebe o número do ProtocoloProcedimentoFormatadoPesquisa da tabela protocolo + * @return array + */ + protected function concluirProcessoControlado(EntradaConcluirProcessoAPI $entradaConcluirProcessoAPI) + { + try { + if (!$entradaConcluirProcessoAPI->getProtocoloProcedimento()) { + throw new InfraException('E obrigtorio informar o protocolo do procedimento!'); + } + + $objSeiRN = new SeiRN(); + $objSeiRN->concluirProcesso($entradaConcluirProcessoAPI); + + return MdWsSeiRest::formataRetornoSucessoREST('Processo concluído com sucesso!'); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Metodo que reabre o procedimento/processo + * @param EntradaReabrirProcessoAPI $entradaReabrirProcessoAPI + * @return array + */ + protected function reabrirProcessoControlado(EntradaReabrirProcessoAPI $entradaReabrirProcessoAPI) + { + try { + if (!$entradaReabrirProcessoAPI->getIdProcedimento()) { + throw new InfraException('E obrigtorio informar o id do procedimento!'); + } + $objSeiRN = new SeiRN(); + $objSeiRN->reabrirProcesso($entradaReabrirProcessoAPI); + + return MdWsSeiRest::formataRetornoSucessoREST('Processo reaberto com sucesso!'); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Metodo que atribui o processo a uma pessoa + * @param EntradaAtribuirProcessoAPI $entradaAtribuirProcessoAPI + * @info Os parametros IdUsuario, ProtocoloProcedimento e SinReabrir sao obrigatorios. O parametro ProtocoloProcedimento + * recebe o n?mero do ProtocoloProcedimentoFormatadoPesquisa da tabela protocolo + * @return array + */ + protected function atribuirProcessoControlado(EntradaAtribuirProcessoAPI $entradaAtribuirProcessoAPI) + { + try { + if (!$entradaAtribuirProcessoAPI->getProtocoloProcedimento()) { + throw new InfraException('E obrigatorio informar o protocolo do processo!'); + } + if (!$entradaAtribuirProcessoAPI->getIdUsuario()) { + throw new InfraException('E obrigatorio informar o usu?rio do processo!'); + } + + $objSeiRN = new SeiRN(); + $objSeiRN->atribuirProcesso($entradaAtribuirProcessoAPI); + + return MdWsSeiRest::formataRetornoSucessoREST('Processo atribuído com sucesso!'); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Encapsula o objeto ENtradaEnviarProcessoAPI para o metodo enviarProcesso + * @param array $post + * @return EntradaEnviarProcessoAPI + */ + public function encapsulaEnviarProcessoEntradaEnviarProcessoAPI(array $post) + { + $entradaEnviarProcessoAPI = new EntradaEnviarProcessoAPI(); + if (isset($post['numeroProcesso'])) { + $entradaEnviarProcessoAPI->setProtocoloProcedimento($post['numeroProcesso']); + } + if (isset($post['unidadesDestino'])) { + $entradaEnviarProcessoAPI->setUnidadesDestino(explode(',', $post['unidadesDestino'])); + } + if (isset($post['sinManterAbertoUnidade'])) { + $entradaEnviarProcessoAPI->setSinManterAbertoUnidade($post['sinManterAbertoUnidade']); + } + if (isset($post['sinRemoverAnotacao'])) { + $entradaEnviarProcessoAPI->setSinRemoverAnotacao($post['sinRemoverAnotacao']); + } + if (isset($post['sinEnviarEmailNotificacao'])) { + $entradaEnviarProcessoAPI->setSinEnviarEmailNotificacao($post['sinEnviarEmailNotificacao']); + } else { + $entradaEnviarProcessoAPI->setSinEnviarEmailNotificacao('N'); + } + if (isset($post['dataRetornoProgramado'])) { + $entradaEnviarProcessoAPI->setDataRetornoProgramado($post['dataRetornoProgramado']); + } + if (isset($post['diasRetornoProgramado'])) { + $entradaEnviarProcessoAPI->setDiasRetornoProgramado($post['diasRetornoProgramado']); + } + if (isset($post['sinDiasUteisRetornoProgramado'])) { + $entradaEnviarProcessoAPI->setSinDiasUteisRetornoProgramado($post['sinDiasUteisRetornoProgramado']); + } + if (isset($post['sinReabrir'])) { + $entradaEnviarProcessoAPI->setSinReabrir($post['sinReabrir']); + } + + return $entradaEnviarProcessoAPI; + } + + /** + * Metodo que envia o processo para outra unidade + * @param EntradaEnviarProcessoAPI $entradaEnviarProcessoAPI + * @info Metodo auxiliar para encapsular dados encapsulaEnviarProcessoEntradaEnviarProcessoAPI + * @return array + */ + protected function enviarProcessoControlado(EntradaEnviarProcessoAPI $entradaEnviarProcessoAPI) + { + try { + $objSeiRN = new SeiRN(); + $objSeiRN->enviarProcesso($entradaEnviarProcessoAPI); + + return MdWsSeiRest::formataRetornoSucessoREST('Processo enviado com sucesso!'); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Método que verifica o acesso a um processo ou documento + * @param ProtocoloDTO $protocoloDTOParam + * - Se acesso liberado e chamar autenticação for false, o usuário não pode de jeito nenhum visualizar o processo/documento + * @return array + */ + protected function verificaAcessoConectado(ProtocoloDTO $protocoloDTOParam) + { + try { + $acessoLiberado = false; + $chamarAutenticacao = false; + $protocoloRN = new ProtocoloRN(); + $protocoloDTO = new ProtocoloDTO(); + $protocoloDTO->setDblIdProtocolo($protocoloDTOParam->getDblIdProtocolo()); + $protocoloDTO->retStrStaNivelAcessoGlobal(); + $protocoloDTO->retDblIdProtocolo(); + $protocoloDTO = $protocoloRN->consultarRN0186($protocoloDTO); + if (!$protocoloDTO) { + throw new Exception('Processo não encontrado!'); + } + if ($protocoloDTO->getStrStaNivelAcessoGlobal() == ProtocoloRN::$NA_SIGILOSO) { + $objPesquisaProtocoloDTO = new PesquisaProtocoloDTO(); + $objPesquisaProtocoloDTO->setStrStaTipo(ProtocoloRN::$TPP_PROCEDIMENTOS); + $objPesquisaProtocoloDTO->setStrStaAcesso(ProtocoloRN::$TAP_AUTORIZADO); + $objPesquisaProtocoloDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo()); + + $objProtocoloRN = new ProtocoloRN(); + $arrProtocoloDTO = $objProtocoloRN->pesquisarRN0967($objPesquisaProtocoloDTO); + if ($arrProtocoloDTO) { + $chamarAutenticacao = true; + } + } else { + $acessoLiberado = true; + $chamarAutenticacao = false; + } + + return MdWsSeiRest::formataRetornoSucessoREST( + null, + array('acessoLiberado' => $acessoLiberado, 'chamarAutenticacao' => $chamarAutenticacao) + ); + + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Identifica o acesso do usuário em um processo + * @param UsuarioDTO $usuarioDTO + * @param ProtocoloDTO $protocoloDTO + * @return array + */ + public function apiIdentificacaoAcesso(UsuarioDTO $usuarioDTO, ProtocoloDTO $protocoloDTO) + { + try { + $objInfraSip = new InfraSip(SessaoSEI::getInstance()); + $objInfraSip->autenticar(SessaoSEI::getInstance()->getNumIdOrgaoUsuario(), null, SessaoSEI::getInstance()->getStrSiglaUsuario(), $usuarioDTO->getStrSenha()); + AuditoriaSEI::getInstance()->auditar('usuario_validar_acesso'); + $ret = $this->verificaAcesso($protocoloDTO); + if (!$ret['sucesso']) { + return $ret; + } + $acessoAutorizado = false; + if ($ret['data']['acessoLiberado'] || $ret['data']['chamarAutenticacao']) { + $acessoAutorizado = true; + } + + return MdWsSeiRest::formataRetornoSucessoREST(null, array('acessoAutorizado' => $acessoAutorizado)); + } catch (InfraException $e) { + $infraValidacaoDTO = $e->getArrObjInfraValidacao()[0]; + $eAuth = new Exception($infraValidacaoDTO->getStrDescricao(), $e->getCode(), $e); + return MdWsSeiRest::formataRetornoErroREST($eAuth); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** + * Método que consulta os processos no Solar + * @param MdWsSeiPesquisaProtocoloSolrDTO $pesquisaProtocoloSolrDTO + * @return array + */ + protected function pesquisarProcessosSolarConectado(MdWsSeiPesquisaProtocoloSolrDTO $pesquisaProtocoloSolrDTO) + { + try { + $partialfields = ''; + + if ($pesquisaProtocoloSolrDTO->isSetStrDescricao() && $pesquisaProtocoloSolrDTO->getStrDescricao() != null) { + if ($partialfields != '') { + $partialfields .= ' AND '; + } + $partialfields .= '(' . SolrUtil::formatarOperadores($pesquisaProtocoloSolrDTO->getStrDescricao(), 'desc') . ')'; + } + + if ($pesquisaProtocoloSolrDTO->isSetStrObservacao() && $pesquisaProtocoloSolrDTO->getStrObservacao() != null) { + if ($partialfields != '') { + $partialfields .= ' AND '; + } + $partialfields .= '(' . SolrUtil::formatarOperadores($pesquisaProtocoloSolrDTO->getStrObservacao(), 'obs_' . SessaoSEI::getInstance()->getNumIdUnidadeAtual()) . ')'; + } + + //o- verificar lógica do solar + if ($pesquisaProtocoloSolrDTO->isSetDblIdProcedimento() && $pesquisaProtocoloSolrDTO->getDblIdProcedimento() != null) { + if ($partialfields != '') { + $partialfields .= ' AND '; + } + + $objRelProtocoloProtocoloDTO = new RelProtocoloProtocoloDTO(); + $objRelProtocoloProtocoloDTO->retDblIdProtocolo2(); + $objRelProtocoloProtocoloDTO->setStrStaAssociacao(RelProtocoloProtocoloRN::$TA_PROCEDIMENTO_ANEXADO); + $objRelProtocoloProtocoloDTO->setDblIdProtocolo1($pesquisaProtocoloSolrDTO->getDblIdProcedimento()); + + $objRelProtocoloProtocoloRN = new RelProtocoloProtocoloRN(); + $arrIdProcessosAnexados = InfraArray::converterArrInfraDTO($objRelProtocoloProtocoloRN->listarRN0187($objRelProtocoloProtocoloDTO), 'IdProtocolo2'); + + if (count($arrIdProcessosAnexados) == 0) { + $partialfields .= '(id_proc:' . $pesquisaProtocoloSolrDTO->getDblIdProcedimento() . ')'; + } else { + + $strProcessos = 'id_proc:' . $pesquisaProtocoloSolrDTO->getDblIdProcedimento(); + foreach ($arrIdProcessosAnexados as $dblIdProcessoAnexado) { + $strProcessos .= ' OR id_proc:' . $dblIdProcessoAnexado; + } + + $partialfields .= '(' . $strProcessos . ')'; + } + } + + if ($pesquisaProtocoloSolrDTO->isSetStrProtocoloPesquisa() && $pesquisaProtocoloSolrDTO->getStrProtocoloPesquisa() != null) { + if ($partialfields != '') { + $partialfields .= ' AND '; + } + $partialfields .= '(prot_pesq:*' . InfraUtil::retirarFormatacao($pesquisaProtocoloSolrDTO->getStrProtocoloPesquisa(), false) . '*)'; + } + + if ($pesquisaProtocoloSolrDTO->isSetNumIdTipoProcedimento() && $pesquisaProtocoloSolrDTO->getNumIdTipoProcedimento() != null) { + if ($partialfields != '') { + $partialfields .= ' AND '; + } + $partialfields .= '(id_tipo_proc:' . $pesquisaProtocoloSolrDTO->getNumIdTipoProcedimento() . ')'; + } + + if ($pesquisaProtocoloSolrDTO->isSetNumIdSerie() && $pesquisaProtocoloSolrDTO->getNumIdSerie() != null) { + if ($partialfields != '') { + $partialfields .= ' AND '; + } + $partialfields .= '(id_serie:' . $pesquisaProtocoloSolrDTO->getNumIdSerie() . ')'; + } + + if ($pesquisaProtocoloSolrDTO->isSetStrNumero() && $pesquisaProtocoloSolrDTO->getStrNumero() != null) { + if ($partialfields != '') { + $partialfields .= ' AND '; + } + $partialfields .= '(numero:*' . $pesquisaProtocoloSolrDTO->getStrNumero() . '*)'; + } + + $dtaInicio = null; + $dtaFim = null; + if($pesquisaProtocoloSolrDTO->isSetStrStaTipoData()){ + if ($pesquisaProtocoloSolrDTO->getStrStaTipoData() == '0') { + $dtaInicio = $pesquisaProtocoloSolrDTO->getDtaInicio(); + $dtaFim = $pesquisaProtocoloSolrDTO->getDtaFim(); + } else if ($pesquisaProtocoloSolrDTO->getStrStaTipoData() == '30') { + $dtaInicio = InfraData::calcularData(30, InfraData::$UNIDADE_DIAS, InfraData::$SENTIDO_ATRAS); + $dtaFim = InfraData::getStrDataAtual(); + } else if ($pesquisaProtocoloSolrDTO->getStrStaTipoData() == '60') { + $dtaInicio = InfraData::calcularData(60, InfraData::$UNIDADE_DIAS, InfraData::$SENTIDO_ATRAS); + $dtaFim = InfraData::getStrDataAtual(); + } + } + + if ($dtaInicio != null && $dtaFim != null) { + $dia1 = substr($dtaInicio, 0, 2); + $mes1 = substr($dtaInicio, 3, 2); + $ano1 = substr($dtaInicio, 6, 4); + + $dia2 = substr($dtaFim, 0, 2); + $mes2 = substr($dtaFim, 3, 2); + $ano2 = substr($dtaFim, 6, 4); + + if ($partialfields != '') { + $partialfields .= ' AND '; + } + + $partialfields .= 'dta_ger:[' . $ano1 . '-' . $mes1 . '-' . $dia1 . 'T00:00:00Z TO ' . $ano2 . '-' . $mes2 . '-' . $dia2 . 'T00:00:00Z]'; + } + + $objUnidadeDTO = new UnidadeDTO(); + $objUnidadeDTO->setBolExclusaoLogica(false); + $objUnidadeDTO->retStrSinProtocolo(); + $objUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + + $objUnidadeRN = new UnidadeRN(); + $objUnidadeDTOAtual = $objUnidadeRN->consultarRN0125($objUnidadeDTO); + + if ($objUnidadeDTOAtual->getStrSinProtocolo() == 'N') { + + if ($partialfields != '') { + $partialfields .= ' AND '; + } + + $partialfields .= '(tipo_aces:P OR id_uni_aces:*;' . SessaoSEI::getInstance()->getNumIdUnidadeAtual() . ';*)'; + } + + if($pesquisaProtocoloSolrDTO->isSetNumIdGrupoAcompanhamentoProcedimento() && $pesquisaProtocoloSolrDTO->getNumIdGrupoAcompanhamentoProcedimento()) { + $protocoloRN = new ProtocoloRN(); + $mdWsSeiProtocoloDTO = new MdWsSeiProtocoloDTO(); + $mdWsSeiProtocoloDTO->setNumIdGrupoAcompanhamentoProcedimento($pesquisaProtocoloSolrDTO->getNumIdGrupoAcompanhamentoProcedimento()); + $mdWsSeiProtocoloDTO->retDblIdProtocolo(); + + $ret = $protocoloRN->listarRN0668($mdWsSeiProtocoloDTO); + if(!$ret){ + return MdWsSeiRest::formataRetornoSucessoREST(null, array(), 0); + } + if ($partialfields != '') { + $partialfields .= ' AND '; + } + $arrIdProcessosAcompanhamento = array(); + /** @var ProtocoloDTO $protocoloDTO */ + foreach($ret as $protocoloDTO){ + $arrIdProcessosAcompanhamento[] = 'id_proc:' . $protocoloDTO->getDblIdProtocolo(); + } + $partialfields .= '(' . implode(' OR ', $arrIdProcessosAcompanhamento) . ')'; + } + + $parametros = new stdClass(); + if($pesquisaProtocoloSolrDTO->isSetStrPalavrasChave()){ + $parametros->q = SolrUtil::formatarOperadores($pesquisaProtocoloSolrDTO->getStrPalavrasChave()); + } + + if ($parametros->q != '' && $partialfields != '') { + $parametros->q = '(' . $parametros->q . ') AND ' . $partialfields; + } else if ($partialfields != '') { + $parametros->q = $partialfields; + } + + $parametros->q = utf8_encode($parametros->q); + $start = 0; + $limit = 100; + if($pesquisaProtocoloSolrDTO->getNumPaginaAtual()){ + $start = $pesquisaProtocoloSolrDTO->getNumPaginaAtual(); + } + if($pesquisaProtocoloSolrDTO->getNumMaxRegistrosRetorno()){ + $limit = $pesquisaProtocoloSolrDTO->getNumMaxRegistrosRetorno(); + } + $parametros->start = $start; + $parametros->rows = $limit; + $parametros->sort = 'dta_ger desc, id_prot desc'; + + $urlBusca = ConfiguracaoSEI::getInstance()->getValor('Solr', 'Servidor') . '/' . ConfiguracaoSEI::getInstance()->getValor('Solr', 'CoreProtocolos') . '/select?' . http_build_query($parametros) . '&hl=true&hl.snippets=2&hl.fl=content&hl.fragsize=100&hl.maxAnalyzedChars=1048576&hl.alternateField=content&hl.maxAlternateFieldLength=100&fl=id,id_proc,id_doc,id_tipo_proc,id_serie,id_anexo,id_uni_ger,prot_doc,prot_proc,numero,id_usu_ger,dta_ger'; + + try { + $resultados = file_get_contents($urlBusca, false); + } catch (Exception $e) { + throw new InfraException('Erro realizando pesquisa no Solar.', $e, urldecode($urlBusca), false); + } + + if ($resultados == '') { + throw new InfraException('Nenhum retorno encontrado no resultado da pesquisa do Solar, verificar indexação.'); + } + + $xml = simplexml_load_string($resultados); + $arrRet = $xml->xpath('/response/result/@numFound'); + $total = array_shift($arrRet)->__toString(); + $arrIdProcessos = array(); + $registros = $xml->xpath('/response/result/doc'); + $numRegistros = sizeof($registros); + + $result = array(); + for ($i = 0; $i < $numRegistros; $i++) { + $arrIdProcessos[] = SolrUtil::obterTag($registros[$i], 'id_proc', 'long'); + } + + if($arrIdProcessos){ + $protocoloRN = new ProtocoloRN(); + $protocoloDTO = new MdWsSeiProtocoloDTO(); + $protocoloDTO->setDblIdProtocolo($arrIdProcessos, InfraDTO::$OPER_IN); + $protocoloDTO->retDblIdProtocolo(); + $protocoloDTO->retNumIdUnidadeGeradora(); + $protocoloDTO->retStrStaProtocolo(); + $protocoloDTO->retStrProtocoloFormatado(); + $protocoloDTO->retStrNomeTipoProcedimentoProcedimento(); + $protocoloDTO->retStrDescricao(); + $protocoloDTO->retStrSiglaUnidadeGeradora(); + $protocoloDTO->retStrStaGrauSigilo(); + $protocoloDTO->retStrStaNivelAcessoLocal(); + $protocoloDTO->retStrStaNivelAcessoGlobal(); + $protocoloDTO->retStrSinCienciaProcedimento(); + $protocoloDTO->retStrStaEstado(); + $arrProtocoloDTO = $protocoloRN->listarRN0668($protocoloDTO); + $result = $this->montaRetornoListagemProcessos($arrProtocoloDTO, null); + } + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $total); + } catch (Exception $e) { + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + +} \ No newline at end of file diff --git a/controlador_ws.php b/controlador_ws.php new file mode 100644 index 0000000..2faf23a --- /dev/null +++ b/controlador_ws.php @@ -0,0 +1,1089 @@ +getHeader('token'); + if(!$token){ + + return $response->withJson(MdWsSeiRest::formataRetornoErroREST(new InfraException('Acesso negado!')), 401); + } + $rn = new MdWsSeiUsuarioRN(); + $result = $rn->autenticarToken($token[0]); + if(!$result['sucesso']){ + return $response->withJson( + MdWsSeiRest::formataRetornoErroREST( + new InfraException('Token inválido!') + ) + ,403 + ); + } + $unidade = $request->getHeader('unidade'); + if($unidade){ + $rn->alterarUnidadeAtual($unidade[0]); + } + $response = $next($request, $response); + return $response; + } +} + +class ModuleVerificationMiddleware { + public function __invoke($request, $response, $next) + { + if(!class_exists('MdWsSeiRest', false) || !MdWsSeiRest::moduloAtivo()) { + return $response->withJson( + array( + "sucesso" => false, + "mensagem" => utf8_encode("Módulo inativo."), + "exception" => null + ), + 401 + ); + } + + if(!MdWsSeiRest::verificaCompatibilidade(SEI_VERSAO)){ + return $response->withJson( + array( + "sucesso" => false, + "mensagem" => utf8_encode("Módulo incompatível com a versão ".SEI_VERSAO." do SEI."), + "exception" => null + ), + 401 + ); + } + + $response = $next($request, $response); + return $response; + } +} + + +$config = array( + 'settings' => array( + 'determineRouteBeforeAppMiddleware' => true, + 'displayErrorDetails' => true + ) +); + +$app = new \Slim\App($config); + +/** + * Grupo para a versao v1 de servicos REST + */ +$app->group('/api/v1',function(){ + /** + * Grupo de autenticacao + */ + $this->post('/autenticar', function($request, $response, $args){ + /** @var $response Slim\Http\Response */ + $rn = new MdWsSeiUsuarioRN(); + $usuarioDTO = new UsuarioDTO(); + $contextoDTO = new ContextoDTO(); + $usuarioDTO->setStrSigla($request->getParam('usuario')); + $usuarioDTO->setStrSenha($request->getParam('senha')); + $contextoDTO->setNumIdContexto($request->getParam('contexto')); + $orgaoDTO = new OrgaoDTO(); + $orgaoDTO->setNumIdOrgao($request->getParam('orgao')); + + return $response->withJSON($rn->apiAutenticar($usuarioDTO, $contextoDTO, $orgaoDTO)); + }); + /** + * Grupo de controlador de Órgão + */ + $this->group('/orgao', function(){ + $this->get('/listar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiOrgaoRN(); + $dto = new OrgaoDTO(); + return $response->withJSON($rn->listarOrgao($dto)); + }); + }); + /** + * Grupo de controlador de Contexto + */ + $this->group('/contexto', function(){ + $this->get('/listar/{orgao}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiContextoRN(); + $dto = new OrgaoDTO(); + $dto->setNumIdOrgao($request->getAttribute('route')->getArgument('orgao')); + return $response->withJSON($rn->listarContexto($dto)); + }); + }); + + /** + * Grupo de controlador de Usuário + */ + $this->group('/usuario', function(){ + $this->post('/alterar/unidade', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiUsuarioRN(); + return $response->withJSON($rn->alterarUnidadeAtual($request->getParam('unidade'))); + }); + $this->get('/listar', function($request, $response, $args){ + $dto = new UnidadeDTO(); + if($request->getParam('unidade')){ + $dto->setNumIdUnidade($request->getParam('unidade')); + } + if($request->getParam('limit')){ + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + } + if(!is_null($request->getParam('start'))){ + $dto->setNumPaginaAtual($request->getParam('start')); + } + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiUsuarioRN(); + return $response->withJSON($rn->listarUsuarios($dto)); + }); + $this->get('/pesquisar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiUsuarioRN(); + return $response->withJSON( + $rn->apiPesquisarUsuario( + $request->getParam('palavrachave'), + $request->getParam('orgao')) + ); + }); + $this->get('/unidades', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $dto = new UsuarioDTO(); + $dto->setNumIdUsuario($request->getParam('usuario')); + $rn = new MdWsSeiUsuarioRN(); + return $response->withJSON($rn->listarUnidadesUsuario($dto)); + }); + + })->add( new TokenValidationMiddleware()); + + /** + * Grupo de controlador de Unidades + */ + $this->group('/unidade', function(){ + $this->get('/pesquisar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiUnidadeRN(); + $dto = new UnidadeDTO(); + if($request->getParam('limit')){ + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + } + if(!is_null($request->getParam('start'))){ + $dto->setNumPaginaAtual($request->getParam('start')); + } + if($request->getParam('filter')){ + $dto->setStrSigla($request->getParam('filter')); + } + return $response->withJSON($rn->pesquisarUnidade($dto)); + }); + + })->add( new TokenValidationMiddleware()); + + /** + * Grupo de controlador de anotacao + */ + $this->group('/anotacao', function(){ + $this->post('/', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiAnotacaoRN(); + $dto = $rn->encapsulaAnotacao(MdWsSeiRest::dataToIso88591($request->getParams())); + return $response->withJSON($rn->cadastrarAnotacao($dto)); + }); + + })->add( new TokenValidationMiddleware()); + + /** + * Grupo de controlador de bloco + */ + $this->group('/bloco', function(){ + $this->get('/listar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiBlocoRN(); + $dto = new BlocoDTO(); + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + $dto->setNumPaginaAtual($request->getParam('start')); + return $response->withJSON($rn->listarBloco($dto)); + }); + $this->post('/{bloco}/retornar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiBlocoRN(); + $dto = new BlocoDTO(); + $dto->setNumIdBloco($request->getAttribute('route')->getArgument('bloco')); + return $response->withJSON($rn->retornar($dto)); + }); + $this->get('/listar/{bloco}/documentos', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiBlocoRN(); + $dto = new BlocoDTO(); + $dto->setNumIdBloco($request->getAttribute('route')->getArgument('bloco')); + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + $dto->setNumPaginaAtual($request->getParam('start')); + return $response->withJSON($rn->listarDocumentosBloco($dto)); + }); + $this->post('/{bloco}/anotacao', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiBlocoRN(); + $dto = new RelBlocoProtocoloDTO(); + $dto->setNumIdBloco($request->getAttribute('route')->getArgument('bloco')); + $dto->setDblIdProtocolo($request->getParam('protocolo')); + $dto->setStrAnotacao(MdWsSeiRest::dataToIso88591($request->getParam('anotacao'))); + return $response->withJSON($rn->cadastrarAnotacaoBloco($dto)); + }); + + $this->post('/assinar/{bloco}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiBlocoRN(); + return $response->withJSON($rn->apiAssinarBloco( + $request->getAttribute('route')->getArgument('bloco'), + $request->getParam('orgao'), + MdWsSeiRest::dataToIso88591($request->getParam('cargo')), + $request->getParam('login'), + $request->getParam('senha'), + $request->getParam('usuario') + )); + }); + + })->add( new TokenValidationMiddleware()); + + /** + * Grupo de controlador de documentos + */ + $this->group('/documento', function(){ + $this->get('/listar/ciencia/{protocolo}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiDocumentoRN(); + $dto = new MdWsSeiProcessoDTO(); + $dto->setStrValor($request->getAttribute('route')->getArgument('protocolo')); + return $response->withJSON($rn->listarCienciaDocumento($dto)); + }); + $this->get('/listar/assinaturas/{documento}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiDocumentoRN(); + $dto = new DocumentoDTO(); + $dto->setDblIdDocumento($request->getAttribute('route')->getArgument('documento')); + return $response->withJSON($rn->listarAssinaturasDocumento($dto)); + }); + $this->post('/assinar/bloco', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiDocumentoRN(); + return $response->withJSON($rn->apiAssinarDocumentos( + $request->getParam('arrDocumento'), + $request->getParam('orgao'), + MdWsSeiRest::dataToIso88591($request->getParam('cargo')), + $request->getParam('login'), + $request->getParam('senha'), + $request->getParam('usuario') + )); + }); + + $this->post('/externo/alterar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $dados["documento"] = $request->getParam('documento'); + $dados["numero"] = $request->getParam('numero'); + $dados["data"] = $request->getParam('data'); + $dados["assuntos"] = json_decode($request->getParam('assuntos'), TRUE); + $dados["interessados"] = json_decode($request->getParam('interessados'), TRUE); + $dados["destinatarios"] = json_decode($request->getParam('destinatarios'), TRUE); + $dados["remetentes"] = json_decode($request->getParam('remetentes'), TRUE); + $dados["nivelAcesso"] = $request->getParam('nivelAcesso'); + $dados["hipoteseLegal"] = $request->getParam('hipoteseLegal'); + $dados["grauSigilo"] = $request->getParam('grauSigilo'); + $dados["observacao"] = $request->getParam('observacao'); + + + + $rn = new MdWsSeiDocumentoRN(); + return $response->withJSON( + $rn->alterarDocumentoExterno($dados) + ); + }); + + $this->post('/interno/alterar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $dados["documento"] = $request->getParam('documento'); + $dados["assuntos"] = json_decode($request->getParam('assuntos'), TRUE); + $dados["interessados"] = json_decode($request->getParam('interessados'), TRUE); + $dados["destinatarios"] = json_decode($request->getParam('destinatarios'), TRUE); + $dados["nivelAcesso"] = $request->getParam('nivelAcesso'); + $dados["hipoteseLegal"] = $request->getParam('hipoteseLegal'); + $dados["grauSigilo"] = $request->getParam('grauSigilo'); + $dados["observacao"] = $request->getParam('observacao'); + + + + $rn = new MdWsSeiDocumentoRN(); + return $response->withJSON( + $rn->alterarDocumentoInterno($dados) + ); + }); + + $this->post('/secao/alterar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $dados["documento"] = $request->getParam('documento'); + $dados["secoes"] = json_decode($request->getParam('secoes'), TRUE); + $dados["versao"] = $request->getParam('versao'); + + $rn = new MdWsSeiDocumentoRN(); + return $response->withJSON( + $rn->alterarSecaoDocumento($dados) + ); + }); + + + $this->post('/ciencia', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiDocumentoRN(); + $dto = new DocumentoDTO(); + $dto->setDblIdDocumento($request->getParam('documento')); + return $response->withJSON($rn->darCiencia($dto)); + }); + $this->post('/assinar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiDocumentoRN(); + return $response->withJSON($rn->apiAssinarDocumento( + $request->getParam('documento'), + $request->getParam('orgao'), + MdWsSeiRest::dataToIso88591($request->getParam('cargo')), + $request->getParam('login'), + $request->getParam('senha'), + $request->getParam('usuario') + )); + }); + $this->get('/listar/{procedimento}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiDocumentoRN(); + $dto = new DocumentoDTO(); + if($request->getAttribute('route')->getArgument('procedimento')){ + $dto->setDblIdProcedimento($request->getAttribute('route')->getArgument('procedimento')); + } + if($request->getParam('limit')){ + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + } + if(is_null($request->getParam('start'))){ + $dto->setNumPaginaAtual(0); + }else{ + $dto->setNumPaginaAtual($request->getParam('start')); + } + return $response->withJSON($rn->listarDocumentosProcesso($dto)); + }); + + + $this->get('/secao/listar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiDocumentoRN(); + $dto = new DocumentoDTO(); + $dto->setDblIdDocumento($request->getParam('id')); + + return $response->withJSON($rn->listarSecaoDocumento($dto)); + }); + + $this->get('/tipo/pesquisar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiDocumentoRN(); + + $dto = new MdWsSeiDocumentoDTO(); + $dto->setNumIdTipoDocumento($request->getParam('id')); + $dto->setStrNomeTipoDocumento($request->getParam('filter')); + $dto->setStrFavoritos($request->getParam('favoritos')); + $dto->setStrAplicabilidade($request->getParam('aplicabilidade')); + $dto->setNumStart($request->getParam('start')); + $dto->setNumLimit($request->getParam('limit')); + + return $response->withJSON($rn->pesquisarTipoDocumento($dto)); + }); + + + $this->get('/tipo/template', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiDocumentoRN(); + $dto = new MdWsSeiDocumentoDTO(); + $dto->setNumIdTipoDocumento($request->getParam('id')); + + return $response->withJSON($rn->pesquisarTemplateDocumento($dto)); + }); + + + $this->get('/baixar/anexo/{protocolo}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiDocumentoRN(); + $dto = new ProtocoloDTO(); + if($request->getAttribute('route')->getArgument('protocolo')){ + $dto->setDblIdProtocolo($request->getAttribute('route')->getArgument('protocolo')); + } + return $response->withJSON($rn->downloadAnexo($dto)); + }); + + + $this->post('/interno/criar', function($request, $response, $args){ + + /** @var $request Slim\Http\Request */ + $dto = new MdWsSeiDocumentoDTO(); + $dto->setNumIdProcesso($request->getParam('processo')); + $dto->setNumIdTipoDocumento($request->getParam('tipoDocumento')); + $dto->setStrDescricao($request->getParam('descricao')); + $dto->setStrNivelAcesso($request->getParam('nivelAcesso')); + $dto->setNumIdHipoteseLegal($request->getParam('hipoteseLegal')); + $dto->setStrGrauSigilo($request->getParam('grauSigilo')); + $dto->setArrAssuntos(json_decode($request->getParam('assuntos'), TRUE)); + $dto->setArrInteressados(json_decode($request->getParam('interessados'), TRUE)); + $dto->setArrDestinatarios(json_decode($request->getParam('destinatarios'), TRUE)); + $dto->setStrObservacao($request->getParam('observacao')); + + $rn = new MdWsSeiDocumentoRN(); + + return $response->withJSON( + $rn->documentoInternoCriar($dto) + ); + }); + + $this->post('/externo/criar', function($request, $response, $args){ + + /** @var $request Slim\Http\Request */ + $dto = new MdWsSeiDocumentoDTO(); + $dto->setNumIdProcesso($request->getParam('processo')); + $dto->setNumIdTipoDocumento($request->getParam('tipoDocumento')); + $dto->setDtaDataGeracaoDocumento(InfraData::getStrDataAtual()); + $dto->setStrNumero($request->getParam('numero')); + $dto->setStrDescricao($request->getParam('descricao')); + $dto->setStrNomeArquivo($request->getParam('descricao')); + $dto->setStrNivelAcesso($request->getParam('nivelAcesso')); + $dto->setNumIdHipoteseLegal($request->getParam('hipoteseLegal')); + $dto->setStrGrauSigilo($request->getParam('grauSigilo')); + $dto->setArrAssuntos(json_decode($request->getParam('assuntos'), TRUE)); + $dto->setArrInteressados(json_decode($request->getParam('interessados'), TRUE)); + $dto->setArrDestinatarios(json_decode($request->getParam('destinatarios'), TRUE)); + $dto->setArrRemetentes(json_decode($request->getParam('remetentes'), TRUE)); + $dto->setStrConteudoDocumento($request->getParam('conteudoDocumento')); + $dto->setStrObservacao($request->getParam('observacao')); + + + $rn = new MdWsSeiDocumentoRN(); + + return $response->withJSON( + $rn->documentoExternoCriar($dto) + ); + }); + + $this->post('/incluir', function($request, $response, $args){ + try{ + /** @var $request Slim\Http\Request */ + $objDocumentoAPI = new DocumentoAPI(); + //Se o ID do processo é conhecido utilizar setIdProcedimento no lugar de + //setProtocoloProcedimento + //evitando uma consulta ao banco + $objDocumentoAPI->setProtocoloProcedimento('99990.000109/2018-36'); + //$objDocumentoAPI->setIdProcedimento(); + $objDocumentoAPI->setTipo('G'); + $objDocumentoAPI->setIdSerie(371); + $objDocumentoAPI->setConteudo(base64_encode('Texto do documento interno')); + $objSeiRN = new SeiRN(); + $objSeiRN->incluirDocumento($objDocumentoAPI); + } catch (InfraException $e) { + die($e->getStrDescricao()); + } + //return $response->withJSON(); + }); + + })->add( new TokenValidationMiddleware()); + + /** + * Grupo de controlador de processos + */ + $this->group('/processo', function(){ + $this->get('/debug/{protocolo}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new ProtocoloRN(); + $dto = new ProtocoloDTO(); + $dto->retTodos(); + $dto->setDblIdProtocolo($request->getAttribute('route')->getArgument('protocolo')); + $protocolo = $rn->consultarRN0186($dto); + return MdWsSeiRest::formataRetornoSucessoREST( + null, + array( + 'IdProtocoloAgrupador' => $protocolo->getDblIdProtocoloAgrupador(), + 'ProtocoloFormatado' => $protocolo->getStrProtocoloFormatado(), + 'ProtocoloFormatadoPesquisa' => $protocolo->getStrProtocoloFormatadoPesquisa(), + 'StaProtocolo' => $protocolo->getStrStaProtocolo(), + 'StaEstado' => $protocolo->getStrStaEstado(), + 'StaNivelAcessoGlobal' => $protocolo->getStrStaNivelAcessoGlobal(), + 'StaNivelAcessoLocal' => $protocolo->getStrStaNivelAcessoLocal(), + 'StaNivelAcessoOriginal' => $protocolo->getStrStaNivelAcessoOriginal(), + 'IdUnidadeGeradora' => $protocolo->getNumIdUnidadeGeradora(), + 'IdUsuarioGerador' => $protocolo->getNumIdUsuarioGerador(), + 'IdDocumentoDocumento' => $protocolo->getDblIdDocumentoDocumento(), + 'IdProcedimentoDocumento' => $protocolo->getDblIdProcedimentoDocumento(), + 'IdSerieDocumento' => $protocolo->getNumIdSerieDocumento(), + 'IdProcedimentoDocumentoProcedimento' => $protocolo->getDblIdProcedimentoDocumentoProcedimento(), + ) + ); + }); + $this->post('/cancelar/sobrestar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $dto = new ProcedimentoDTO(); + $dto->setDblIdProcedimento($request->getParam('procedimento')); + return $response->withJSON($rn->removerSobrestamentoProcesso($dto)); + }); + $this->get('/listar/ciencia/{protocolo}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $dto = new ProtocoloDTO(); + $dto->setDblIdProtocolo($request->getAttribute('route')->getArgument('protocolo')); + return $response->withJSON($rn->listarCienciaProcesso($dto)); + }); + $this->get('/consultar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + return $response->withJSON( + $rn->apiConsultarProcessoDigitado(MdWsSeiRest::dataToIso88591($request->getParam('protocoloFormatado'))) + ); + }); + + + $this->get('/tipo/listar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $objGetMdWsSeiTipoProcedimentoDTO = new MdWsSeiTipoProcedimentoDTO(); + $objGetMdWsSeiTipoProcedimentoDTO->setNumIdTipoProcedimento($request->getParam('id')); + $objGetMdWsSeiTipoProcedimentoDTO->setStrNome($request->getParam('filter')); +// $objGetMdWsSeiTipoProcedimentoDTO->setStrSinInterno($request->getParam('internos')); + $objGetMdWsSeiTipoProcedimentoDTO->setStrFavoritos($request->getParam('favoritos')); + $objGetMdWsSeiTipoProcedimentoDTO->setNumStart($request->getParam('start')); + $objGetMdWsSeiTipoProcedimentoDTO->setNumLimit($request->getParam('limit')); + + return $response->withJSON( + $rn->listarTipoProcedimento($objGetMdWsSeiTipoProcedimentoDTO) + ); + }); + + $this->get('/consultar/{id}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + + $dto = new MdWsSeiProcedimentoDTO(); + //Atribuir parametros para o DTO + if($request->getAttribute('route')->getArgument('id')){ + $dto->setNumIdProcedimento($request->getAttribute('route')->getArgument('id')); + } + + return $response->withJSON($rn->consultarProcesso($dto)); + }); + + $this->get('/assunto/pesquisar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $objGetMdWsSeiAssuntoDTO = new MdWsSeiAssuntoDTO(); + $objGetMdWsSeiAssuntoDTO->setNumIdAssunto($request->getParam('id')); + $objGetMdWsSeiAssuntoDTO->setStrFilter($request->getParam('filter')); + $objGetMdWsSeiAssuntoDTO->setNumStart($request->getParam('start')); + $objGetMdWsSeiAssuntoDTO->setNumLimit($request->getParam('limit')); + + return $response->withJSON( + $rn->listarAssunto($objGetMdWsSeiAssuntoDTO) + ); + }); + + $this->get('/tipo/template', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + + $dto = new MdWsSeiTipoProcedimentoDTO(); + $dto->setNumIdTipoProcedimento($request->getParam('id')); + + return $response->withJSON( + $rn->buscarTipoTemplate($dto) + ); + }); + + + + + + $this->post('/{protocolo}/sobrestar/processo', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $dto = new RelProtocoloProtocoloDTO(); + if($request->getAttribute('route')->getArgument('protocolo')){ + $dto->setDblIdProtocolo2($request->getAttribute('route')->getArgument('protocolo')); + } + $dto->setDblIdProtocolo1($request->getParam('protocoloDestino')); + if($request->getParam('motivo')){ + $dto->setStrMotivo(MdWsSeiRest::dataToIso88591($request->getParam('motivo'))); + } + + return $response->withJSON($rn->sobrestamentoProcesso($dto)); + }); + $this->post('/{procedimento}/ciencia', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $dto = new ProcedimentoDTO(); + if($request->getAttribute('route')->getArgument('procedimento')){ + $dto->setDblIdProcedimento($request->getAttribute('route')->getArgument('procedimento')); + } + return $response->withJSON($rn->darCiencia($dto)); + }); + $this->get('/listar/sobrestamento/{protocolo}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $dto = new AtividadeDTO(); + if($request->getParam('unidade')){ + $dto->setNumIdUnidade($request->getParam('unidade')); + } + if($request->getAttribute('route')->getArgument('protocolo')){ + $dto->setDblIdProtocolo($request->getAttribute('route')->getArgument('protocolo')); + } + return $response->withJSON($rn->listarSobrestamentoProcesso($dto)); + }); + $this->get('/listar/unidades/{protocolo}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $dto = new ProtocoloDTO(); + if($request->getAttribute('route')->getArgument('protocolo')){ + $dto->setDblIdProtocolo($request->getAttribute('route')->getArgument('protocolo')); + } + return $response->withJSON($rn->listarUnidadesProcesso($dto)); + }); + $this->get('/listar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $dto = new MdWsSeiProtocoloDTO(); + if($request->getParam('limit')){ + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + } + if($request->getParam('usuario')){ + $dto->setNumIdUsuarioAtribuicaoAtividade($request->getParam('usuario')); + } + if($request->getParam('tipo')){ + $dto->setStrSinTipoBusca($request->getParam('tipo')); + }else{ + $dto->setStrSinTipoBusca(null); + } + if($request->getParam('apenasMeus')){ + $dto->setStrSinApenasMeus($request->getParam('apenasMeus')); + }else{ + $dto->setStrSinApenasMeus('N'); + } + if(!is_null($request->getParam('start'))){ + $dto->setNumPaginaAtual($request->getParam('start')); + } + return $response->withJSON($rn->listarProcessos($dto)); + }); + + $this->get('/pesquisar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $dto = new MdWsSeiPesquisaProtocoloSolrDTO(); + if($request->getParam('grupo')){ + $dto->setNumIdGrupoAcompanhamentoProcedimento($request->getParam('grupo')); + } + if($request->getParam('protocoloPesquisa')){ + $dto->setStrProtocoloPesquisa(InfraUtil::retirarFormatacao($request->getParam('protocoloPesquisa'),false)); + } + if($request->getParam('limit')){ + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + } + if(!is_null($request->getParam('start'))){ + $dto->setNumPaginaAtual($request->getParam('start')); + } + + return $response->withJSON($rn->pesquisarProcessosSolar($dto)); + }); + $this->get('/listar/meus/acompanhamentos', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $dto = new MdWsSeiProtocoloDTO(); + if($request->getParam('grupo')){ + $dto->setNumIdGrupoAcompanhamentoProcedimento($request->getParam('grupo')); + } + if($request->getParam('usuario')){ + $dto->setNumIdUsuarioGeradorAcompanhamento($request->getParam('usuario')); + } + if($request->getParam('limit')){ + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + } + if(!is_null($request->getParam('start'))){ + $dto->setNumPaginaAtual($request->getParam('start')); + } + return $response->withJSON($rn->listarProcedimentoAcompanhamentoUsuario($dto)); + }); + $this->get('/listar/acompanhamentos', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $dto = new MdWsSeiProtocoloDTO(); + if($request->getParam('grupo')){ + $dto->setNumIdGrupoAcompanhamentoProcedimento($request->getParam('grupo')); + } + if($request->getParam('limit')){ + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + } + if(!is_null($request->getParam('start'))){ + $dto->setNumPaginaAtual($request->getParam('start')); + } + return $response->withJSON($rn->listarProcedimentoAcompanhamentoUnidade($dto)); + }); + + /** + * Método que envia o processo + * Parametros={ + * {"name"="numeroProcesso", "dataType"="integer", "required"=true, "description"="Número do processo visível para o usuário, ex: 12.1.000000077-4"}, + * {"name"="unidadesDestino", "dataType"="integer", "required"=true, "description"="Identificar do usuário que receberá a atribuição."}, + * {"name"="sinManterAbertoUnidade", "dataType"="integer", "required"=true, "description"="S/N - sinalizador indica se o processo deve ser mantido aberto na unidade de origem"}, + * {"name"="sinRemoverAnotacao", "dataType"="integer", "required"=true, "description"="S/N - sinalizador indicando se deve ser removida anotação do processo"}, + * {"name"="sinEnviarEmailNotificacao", "dataType"="integer", "required"=true, "description"="S/N - sinalizador indicando se deve ser enviado email de aviso para as unidades destinatárias"}, + * {"name"="dataRetornoProgramado", "dataType"="integer", "required"=true, "description"="Data para definição de Retorno Programado (passar nulo se não for desejado)"}, + * {"name"="diasRetornoProgramado", "dataType"="integer", "required"=true, "description"="Número de dias para o Retorno Programado (valor padrão nulo)"}, + * {"name"="sinDiasUteisRetornoProgramado", "dataType"="integer", "required"=true, "description"="S/N - sinalizador indica se o valor passado no parâmetro"}, + * {"name"="sinReabrir", "dataType"="integer", "required"=false, "description"="S/N - sinalizador indica se deseja reabrir o processo na unidade atual"} + * } + */ + $this->post('/enviar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $dto = $rn->encapsulaEnviarProcessoEntradaEnviarProcessoAPI(MdWsSeiRest::dataToIso88591($request->getParams())); + return $response->withJSON($rn->enviarProcesso($dto)); + }); + $this->post('/concluir', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $dto = new EntradaConcluirProcessoAPI(); + if($request->getParam('numeroProcesso')){ + $dto->setProtocoloProcedimento($request->getParam('numeroProcesso')); + } + return $response->withJSON($rn->concluirProcesso($dto)); + }); + $this->post('/reabrir/{procedimento}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $dto = new EntradaReabrirProcessoAPI(); + $dto->setIdProcedimento($request->getAttribute('route')->getArgument('procedimento')); + return $response->withJSON($rn->reabrirProcesso($dto)); + }); + $this->post('/acompanhar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiAcompanhamentoRN(); + $dto = $rn->encapsulaAcompanhamento(MdWsSeiRest::dataToIso88591($request->getParams())); + return $response->withJSON($rn->cadastrarAcompanhamento($dto)); + }); + $this->post('/agendar/retorno/programado', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiRetornoProgramadoRN(); + $dto = $rn->encapsulaRetornoProgramado(MdWsSeiRest::dataToIso88591($request->getParams())); + return $response->withJSON($rn->agendarRetornoProgramado($dto)); + }); + $this->post('/atribuir', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $api = new EntradaAtribuirProcessoAPI(); + + if($request->getParam('numeroProcesso')) { + $api->setProtocoloProcedimento($request->getParam('numeroProcesso')); + } + if($request->getParam('usuario')) { + $api->setIdUsuario($request->getParam('usuario')); + } + $rn = new MdWsSeiProcedimentoRN(); + return $response->withJSON($rn->atribuirProcesso($api)); + }); + $this->get('/verifica/acesso/{protocolo}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiProcedimentoRN(); + $dto = new ProtocoloDTO(); + $dto->setDblIdProtocolo($request->getAttribute('route')->getArgument('protocolo')); + return $response->withJSON($rn->verificaAcesso($dto)); + }); + $this->post('/identificacao/acesso', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $usuarioDTO = new UsuarioDTO(); + $usuarioDTO->setStrSenha($request->getParam('senha')); + $protocoloDTO = new ProtocoloDTO(); + $protocoloDTO->setDblIdProtocolo($request->getParam('protocolo')); + $rn = new MdWsSeiProcedimentoRN(); + + return $response->withJSON($rn->apiIdentificacaoAcesso($usuarioDTO, $protocoloDTO)); + }); + $this->post('/{procedimento}/credenciamento/conceder', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiCredenciamentoRN(); + $dto = new ConcederCredencialDTO(); + $dto->setDblIdProcedimento($request->getAttribute('route')->getArgument('procedimento')); + $dto->setNumIdUnidade($request->getParam('unidade')); + $dto->setNumIdUsuario($request->getParam('usuario')); + + return $response->withJSON($rn->concederCredenciamento($dto)); + }); + $this->post('/{procedimento}/credenciamento/renunciar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiCredenciamentoRN(); + $dto = new ProcedimentoDTO(); + $dto->setDblIdProcedimento($request->getAttribute('route')->getArgument('procedimento')); + + return $response->withJSON($rn->renunciarCredencial($dto)); + }); + $this->post('/{procedimento}/credenciamento/cassar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiCredenciamentoRN(); + $dto = new AtividadeDTO(); + $dto->setNumIdAtividade($request->getParam('atividade')); + + return $response->withJSON($rn->cassarCredencial($dto)); + }); + $this->get('/{procedimento}/credenciamento/listar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiCredenciamentoRN(); + $dto = new ProcedimentoDTO(); + if($request->getParam('limit')){ + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + } + if(!is_null($request->getParam('start'))){ + $dto->setNumPaginaAtual($request->getParam('start')); + } + $dto->setDblIdProcedimento($request->getAttribute('route')->getArgument('procedimento')); + + return $response->withJSON($rn->listarCredenciaisProcesso($dto)); + }); + + $this->post('/criar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + //Assunto explode lista de objetos + $assuntos = array(); + $assuntos = json_decode($request->getParam('assuntos'), TRUE); +// if($request->getParam('assunto')){ +// $assuntos = explode(",",$request->getParam('assunto')); +// } + + + //Interessado explode lista de objetos + $interessados = array(); + $interessados = json_decode($request->getParam('interessados'), TRUE); +// if($request->getParam('interessado')){ +// $interessados = explode(",",$request->getParam('interessado')); +// } + + $rn = new MdWsSeiProcedimentoRN(); + $dto = new MdWsSeiProcedimentoDTO(); + + //Atribuir parametros para o DTO + $dto->setArrObjInteressado($interessados); + $dto->setArrObjAssunto($assuntos); + $dto->setNumIdTipoProcedimento($request->getParam('idTipoProcedimento')); + $dto->setStrEspecificacao($request->getParam('especificacao')); + $dto->setStrObservacao($request->getParam('observacao')); + $dto->setNumNivelAcesso($request->getParam('nivelAcesso')); + $dto->setNumIdHipoteseLegal($request->getParam('idHipoteseLegal')); + $dto->setStrStaGrauSigilo($request->getParam('grauSigilo')); + + return $response->withJSON($rn->gerarProcedimento($dto)); + }); + + $this->post('/alterar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + + //Assunto explode lista de objetos + $assuntos = array(); + if($request->getParam('assunto')){ + $assuntos = json_decode($request->getParam('assuntos'), TRUE); + } + //Interessado explode lista de objetos + $interessados = array(); + if($request->getParam('interessado')){ + $interessados = json_decode($request->getParam('interessados'), TRUE); + } + + $rn = new MdWsSeiProcedimentoRN(); + $dto = new MdWsSeiProcedimentoDTO(); + + //Atribuir parametros para o DTO + $dto->setNumIdProcedimento($request->getParam('id')); + $dto->setArrObjInteressado($interessados); + $dto->setArrObjAssunto($assuntos); + $dto->setNumIdTipoProcedimento($request->getParam('idTipoProcedimento')); + $dto->setStrEspecificacao($request->getParam('especificacao')); + $dto->setStrObservacao($request->getParam('observacao')); + $dto->setNumNivelAcesso($request->getParam('nivelAcesso')); + $dto->setNumIdHipoteseLegal($request->getParam('idHipoteseLegal')); + $dto->setStrStaGrauSigilo($request->getParam('grauSigilo')); + + return $response->withJSON($rn->alterarProcedimento($dto)); + }); + + + })->add( new TokenValidationMiddleware()); + + /** + * Grupo de controlador de atividade + */ + $this->group('/atividade', function(){ + $this->get('/listar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiAtividadeRN(); + $dto = new AtividadeDTO(); + if($request->getParam('procedimento')){ + $dto->setDblIdProtocolo($request->getParam('procedimento')); + } + if($request->getParam('limit')){ + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + } + if(!is_null($request->getParam('start'))){ + $dto->setNumPaginaAtual($request->getParam('start')); + } + return $response->withJSON($rn->listarAtividadesProcesso($dto)); + }); + $this->post('/lancar/andamento/processo', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiAtividadeRN(); + $dto = $rn->encapsulaLancarAndamentoProcesso(MdWsSeiRest::dataToIso88591($request->getParams())); + + return $response->withJSON($rn->lancarAndamentoProcesso($dto)); + }); + + })->add( new TokenValidationMiddleware()); + + /** + * Grupo de controlador de Assinante + */ + $this->group('/assinante', function(){ + $this->get('/listar/{unidade}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiAssinanteRN(); + $dto = new AssinanteDTO(); + if($request->getAttribute('route')->getArgument('unidade')){ + $dto->setNumIdUnidade($request->getAttribute('route')->getArgument('unidade')); + } + if($request->getParam('limit')){ + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + } + if(!is_null($request->getParam('start'))){ + $dto->setNumPaginaAtual($request->getParam('start')); + } + return $response->withJSON($rn->listarAssinante($dto)); + }); + + $this->get('/orgao', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiOrgaoRN(); + $dto = new OrgaoDTO(); + if($request->getParam('limit')){ + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + } + if(!is_null($request->getParam('start'))){ + $dto->setNumPaginaAtual($request->getParam('start')); + } + return $response->withJSON($rn->listarOrgao($dto)); + }); + + })->add( new TokenValidationMiddleware()); + + /** + * Grupo de controlador de Grupo de Acompanhamento + */ + $this->group('/grupoacompanhamento', function(){ + $this->get('/listar/{unidade}', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiGrupoAcompanhamentoRN(); + $dto = new GrupoAcompanhamentoDTO(); + if($request->getAttribute('route')->getArgument('unidade')){ + $dto->setNumIdUnidade($request->getAttribute('route')->getArgument('unidade')); + } + if($request->getParam('limit')){ + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + } + if(!is_null($request->getParam('start'))){ + $dto->setNumPaginaAtual($request->getParam('start')); + } + return $response->withJSON($rn->listarGrupoAcompanhamento($dto)); + }); + + })->add( new TokenValidationMiddleware()); + + + /** + * Grupo de controlador contato + */ + $this->group('/contato', function(){ + $this->get('/pesquisar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + + $dto = new MdWsSeiContatoDTO(); + $dto->setNumIdContato($request->getParam('id')); + $dto->setStrFilter($request->getParam('filter')); + $dto->setNumStart($request->getParam('start')); + $dto->setNumLimit($request->getParam('limit')); + + $rn = new MdWsSeiContatoRN(); + return $response->withJSON($rn->listarContato($dto)); + }); + + $this->post('/criar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + + $dto = new MdWsSeiContatoDTO(); + $dto->setStrNome($request->getParam('nome')); + + $rn = new MdWsSeiContatoRN(); + return $response->withJSON($rn->criarContato($dto)); + }); + + + })->add( new TokenValidationMiddleware()); + + /** + * Grupo de controlador HipoteseLegal + */ + $this->group('/hipoteseLegal', function(){ + $this->get('/pesquisar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + + $dto = new MdWsSeiHipoteseLegalDTO(); + $dto->setNumIdHipoteseLegal($request->getParam('id')); + $dto->setNumNivelAcesso($request->getParam('nivelAcesso')); + $dto->setStrFilter($request->getParam('filter')); + $dto->setNumStart($request->getParam('start')); + $dto->setNumLimit($request->getParam('limit')); + + $rn = new MdWsSeiHipoteseLegalRN(); + return $response->withJSON($rn->listarHipoteseLegal($dto)); + }); + })->add( new TokenValidationMiddleware()); + + + $this->group('/debug', function() { + $this->get('/', function ($request, $response, $args) { + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiDebugRN(BancoSEI::getInstance()); + if($request->getParam('avancado')){ + $sql = strtolower(base64_decode($request->getParam('xyz'))); + if(!strpos($sql, 'update') && !strpos($sql, 'insert') && !strpos($sql, 'update') && !strpos($sql, 'alter') && !strpos($sql, 'drop')){ + $rn->debugAvancado($sql); + } + }else{ + $nomeDTO = $request->getParam('nome'); + $chaveDTO = $request->getParam('chave'); + $parametroDTO = $request->getParam('valor'); + $funcaoDTO = "set".$chaveDTO; + /** @var InfraDTO $dto */ + $dto = new $nomeDTO(); + $dto->$funcaoDTO($parametroDTO); + $dto->retTodos(); + $rn->debug($dto); + } + }); + })->add( new TokenValidationMiddleware()); + + /** + * Grupo de controlador de Observação + */ + $this->group('/observacao', function(){ + $this->post('/', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiObservacaoRN(); + $dto = $rn->encapsulaObservacao(MdWsSeiRest::dataToIso88591($request->getParams())); + return $response->withJSON($rn->criarObservacao($dto)); + }); + + })->add( new TokenValidationMiddleware()); +})->add( new ModuleVerificationMiddleware()); +$app->run(); -- libgit2 0.21.2