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 @@
+
+
+/**
+ * Eduardo Romao
+ *
+ * 26/03/2017 - criado por ejushiro@gmail.com
+ *
+ */
+class MdWsSeiRest extends SeiIntegracao
+{
+ const NOME_MODULO = "MdWsSeiRest";
+
+ /**
+ * Converte os dados para UTF8 para ser compativel com json_encode
+ * @param $item
+ * @return array|string
+ */
+ public static function dataToUtf8($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 utf8_encode(htmlspecialchars($item));
+ }
+ $response = array();
+ foreach ($itemArr as $key => $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 @@
+
+
+/**
+ * Class MdWsSeiProcessoDTO
+ * DTO somente para encapsulamento de dados.
+ * OBS: Nao estou usando API pois em modulos do SEI o autoload nao carrega as API's.
+ */
+class MdWsSeiProcessoDTO extends InfraDTO{
+
+ public function getStrNomeTabela()
+ {
+ throw new InfraException('DTO nao utilizavel para consulta!');
+ }
+
+ public function montar(){
+ $this->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 @@
+
+
+/**
+ * Class MdWsSeiProcessoDTO
+ * DTO somente para encapsulamento de dados.
+ * OBS: Nao estou usando API pois em modulos do SEI o autoload nao carrega as API's.
+ */
+class MdWsSeiProcessoDTO extends InfraDTO{
+
+ public function getStrNomeTabela()
+ {
+ throw new InfraException('DTO nao utilizavel para consulta!');
+ }
+
+ public function montar(){
+ $this->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 @@
+
+
+/**
+ * Class MdWsSeiProcessoDTO
+ * DTO somente para encapsulamento de dados.
+ * OBS: Nao estou usando API pois em modulos do SEI o autoload nao carrega as API's.
+ */
+class MdWsSeiProcessoDTO extends InfraDTO{
+
+ public function getStrNomeTabela()
+ {
+ throw new InfraException('DTO nao utilizavel para consulta!');
+ }
+
+ public function montar(){
+ $this->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 @@
+
+
+/**
+ * Class MdWsSeiProcessoDTO
+ * DTO somente para encapsulamento de dados.
+ * OBS: Nao estou usando API pois em modulos do SEI o autoload nao carrega as API's.
+ */
+class MdWsSeiProcessoDTO extends InfraDTO{
+
+ public function getStrNomeTabela()
+ {
+ throw new InfraException('DTO nao utilizavel para consulta!');
+ }
+
+ public function montar(){
+ $this->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 @@
+
+
+/**
+ * Class MdWsSeiProcessoDTO
+ * DTO somente para encapsulamento de dados.
+ * OBS: Nao estou usando API pois em modulos do SEI o autoload nao carrega as API's.
+ */
+class MdWsSeiProcessoDTO extends InfraDTO{
+
+ public function getStrNomeTabela()
+ {
+ throw new InfraException('DTO nao utilizavel para consulta!');
+ }
+
+ public function montar(){
+ $this->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 @@
+
+
+/**
+ * Class MdWsSeiProcessoDTO
+ * DTO somente para encapsulamento de dados.
+ * OBS: Nao estou usando API pois em modulos do SEI o autoload nao carrega as API's.
+ */
+class MdWsSeiProcessoDTO extends InfraDTO{
+
+ public function getStrNomeTabela()
+ {
+ throw new InfraException('DTO nao utilizavel para consulta!');
+ }
+
+ public function montar(){
+ $this->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 @@
+
+require_once dirname(__FILE__) . '/../../../SEI.php';
+
+class MdWsSeiProcedimentoRN extends InfraRN
+{
+
+ protected function inicializarObjInfraIBanco()
+ {
+ return BancoSEI::getInstance();
+ }
+
+ /**
+ * Consulta o processo pelo protocolo
+ * @param $protocolo
+ * @return array
+ */
+ public function apiConsultarProcessoDigitado($protocolo){
+ try{
+ $result = ProcedimentoINT::pesquisarDigitadoRI1023($protocolo);
+
+ return MdWsSeiRest::formataRetornoSucessoREST(null, $result);
+ }catch (Exception $e){
+ return MdWsSeiRest::formataRetornoErroREST($e);
+ }
+ }
+
+ /**
+ * Retorna o total de unidades do processo
+ * @param ProtocoloDTO $protocoloDTO
+ * @return array
+ */
+ protected function listarUnidadesProcessoConectado(ProtocoloDTO $protocoloDTO)
+ {
+ try {
+ if (!$protocoloDTO->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 @@
+
+require_once dirname(__FILE__) . '/../../../SEI.php';
+
+class MdWsSeiProcedimentoRN extends InfraRN
+{
+
+ protected function inicializarObjInfraIBanco()
+ {
+ return BancoSEI::getInstance();
+ }
+
+ /**
+ * Consulta o processo pelo protocolo
+ * @param $protocolo
+ * @return array
+ */
+ public function apiConsultarProcessoDigitado($protocolo){
+ try{
+ $result = ProcedimentoINT::pesquisarDigitadoRI1023($protocolo);
+
+ return MdWsSeiRest::formataRetornoSucessoREST(null, $result);
+ }catch (Exception $e){
+ return MdWsSeiRest::formataRetornoErroREST($e);
+ }
+ }
+
+ /**
+ * Retorna o total de unidades do processo
+ * @param ProtocoloDTO $protocoloDTO
+ * @return array
+ */
+ protected function listarUnidadesProcessoConectado(ProtocoloDTO $protocoloDTO)
+ {
+ try {
+ if (!$protocoloDTO->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