Commit 11c8db6a248007fbddba41fcb103b44652b74223

Authored by Rafael Viva
1 parent c6f52f7a
Exists in master and in 1 other branch desenv

primeiro commit

MdWsSeiRest.php 0 → 100644
... ... @@ -0,0 +1,354 @@
  1 +<?
  2 +
  3 +/**
  4 + * Eduardo Romao
  5 + *
  6 + * 26/03/2017 - criado por ejushiro@gmail.com
  7 + *
  8 + */
  9 +class MdWsSeiRest extends SeiIntegracao
  10 +{
  11 + const NOME_MODULO = "MdWsSeiRest";
  12 +
  13 + /**
  14 + * Converte os dados para UTF8 para ser compativel com json_encode
  15 + * @param $item
  16 + * @return array|string
  17 + */
  18 + public static function dataToUtf8($item)
  19 + {
  20 +
  21 + if (is_array($item)) {
  22 + $itemArr = $item;
  23 + } else if (is_object($item)) {
  24 + $itemArr = get_object_vars($item);
  25 + } else if (is_bool($item)) {
  26 + return $item;
  27 + } else {
  28 + return utf8_encode(htmlspecialchars($item));
  29 + }
  30 + $response = array();
  31 + foreach ($itemArr as $key => $val) {
  32 + $response[$key] = MdWsSeiRest::dataToUtf8($val);
  33 + }
  34 + return $response;
  35 + }
  36 +
  37 + public static function dataToIso88591($item)
  38 + {
  39 + if (is_array($item)) {
  40 + $itemArr = $item;
  41 + } else if (is_object($item)) {
  42 + $itemArr = get_object_vars($item);
  43 + } else if (is_bool($item)) {
  44 + return $item;
  45 + } else {
  46 + return mb_convert_encoding($item, 'ISO-8859-1');
  47 + }
  48 + $response = array();
  49 + foreach ($itemArr as $key => $val) {
  50 + $response[$key] = MdWsSeiRest::dataToIso88591($val);
  51 + }
  52 + return $response;
  53 + }
  54 +
  55 + /**
  56 + * Formata o retorno da mensagem para o padrão do controlador de serviços REST
  57 + * @param null $mensagem
  58 + * @param null $result
  59 + * @param null $total
  60 + * @param bool $jsonEncode - Se alterado para true retornará como json_encode
  61 + * @return array
  62 + */
  63 + public static function formataRetornoSucessoREST($mensagem = null, $result = null, $total = null, $jsonEncode = false)
  64 + {
  65 + $data = array();
  66 + $data['sucesso'] = true;
  67 + if ($mensagem) {
  68 + $data['mensagem'] = $mensagem;
  69 + }
  70 + if ($result) {
  71 + $data['data'] = $result;
  72 + }
  73 + if (!is_null($total)) {
  74 + $data['total'] = $total;
  75 + }
  76 + $retorno = MdWsSeiRest::dataToUtf8($data);
  77 +
  78 + return !$jsonEncode ? $retorno : json_encode($retorno);
  79 + }
  80 +
  81 + /**
  82 + * Formata o retorno da mensagem para o padrão do controlador de serviços REST
  83 + * @param Exception $e
  84 + * @return array
  85 + */
  86 + public static function formataRetornoErroREST(Exception $e)
  87 + {
  88 + $mensagem = $e->getMessage();
  89 + if ($e instanceof InfraException) {
  90 + if (!$e->getStrDescricao()) {
  91 + /** @var InfraValidacaoDTO $validacaoDTO */
  92 + if (count($e->getArrObjInfraValidacao()) == 1) {
  93 + $mensagem = $e->getArrObjInfraValidacao()[0]->getStrDescricao();
  94 + } else {
  95 + foreach ($e->getArrObjInfraValidacao() as $validacaoDTO) {
  96 + $mensagem[] = $validacaoDTO->getStrDescricao();
  97 + }
  98 + }
  99 + } else {
  100 + $mensagem = $e->getStrDescricao();
  101 + }
  102 +
  103 + }
  104 + return MdWsSeiRest::dataToUtf8(
  105 + array(
  106 + "sucesso" => false,
  107 + "mensagem" => $mensagem,
  108 + "exception" => $e
  109 + )
  110 + );
  111 + }
  112 +
  113 + public function __construct()
  114 + {
  115 + }
  116 +
  117 + /**
  118 + * Método que verifica se o módulo esta ativo nas configurações do SEI
  119 + */
  120 + public static function moduloAtivo()
  121 + {
  122 + global $SEI_MODULOS;
  123 + $ativo = false;
  124 + foreach ($SEI_MODULOS as $modulo) {
  125 + if ($modulo instanceof self) {
  126 + $ativo = true;
  127 + break;
  128 + }
  129 + }
  130 + return $ativo;
  131 + }
  132 +
  133 + /**
  134 + * Retorna se é compativel com a versão atual do SEI instalado
  135 + * @param $strVersaoSEI
  136 + * @return bool
  137 + */
  138 + public function verificaCompatibilidade($strVersaoSEI)
  139 + {
  140 + if (substr($strVersaoSEI, 0, 2) != '3.') {
  141 + return false;
  142 + }
  143 + return true;
  144 + }
  145 +
  146 + public function getNome()
  147 + {
  148 + return 'Módulo de provisionamento de serviços REST do SEI';
  149 + }
  150 +
  151 + public function getVersao()
  152 + {
  153 + return '0.7.10';
  154 + }
  155 +
  156 + public function getInstituicao()
  157 + {
  158 + return 'wssei';
  159 + }
  160 +
  161 + public function inicializar($strVersaoSEI)
  162 + {
  163 + if (!$this->verificaCompatibilidade($strVersaoSEI)) {
  164 + die('Módulo "' . $this->getNome() . '" (' . $this->getVersao() . ') não e compatível com esta versão do SEI (' . $strVersaoSEI . ').');
  165 + }
  166 + }
  167 +
  168 + public function montarBotaoControleProcessos()
  169 + {
  170 + return array();
  171 + }
  172 +
  173 + public function montarIconeControleProcessos($arrObjProcedimentoAPI)
  174 + {
  175 + return array();
  176 + }
  177 +
  178 + public function montarIconeAcompanhamentoEspecial($arrObjProcedimentoAPI)
  179 + {
  180 + return array();
  181 + }
  182 +
  183 + public function montarIconeProcesso(ProcedimentoAPI $objProcedimentoAPI)
  184 + {
  185 + return array();
  186 + }
  187 +
  188 + public function montarBotaoProcesso(ProcedimentoAPI $objProcedimentoAPI)
  189 + {
  190 + return array();
  191 + }
  192 +
  193 + public function montarIconeDocumento(ProcedimentoAPI $objProcedimentoAPI, $arrObjDocumentoAPI)
  194 + {
  195 + return array();
  196 + }
  197 +
  198 + public function montarBotaoDocumento(ProcedimentoAPI $objProcedimentoAPI, $arrObjDocumentoAPI)
  199 + {
  200 + return array();
  201 + }
  202 +
  203 + public function alterarIconeArvoreDocumento(ProcedimentoAPI $objProcedimentoAPI, $arrObjDocumentoAPI)
  204 + {
  205 + return array();
  206 + }
  207 +
  208 + public function montarMenuPublicacoes()
  209 + {
  210 + return array();
  211 + }
  212 +
  213 + public function montarMenuUsuarioExterno()
  214 + {
  215 + return array();
  216 + }
  217 +
  218 + public function montarAcaoControleAcessoExterno($arrObjAcessoExternoAPI)
  219 + {
  220 + return array();
  221 + }
  222 +
  223 + public function montarAcaoDocumentoAcessoExternoAutorizado($arrObjDocumentoAPI)
  224 + {
  225 + return array();
  226 + }
  227 +
  228 + public function montarAcaoProcessoAnexadoAcessoExternoAutorizado($arrObjProcedimentoAPI)
  229 + {
  230 + return array();
  231 + }
  232 +
  233 + public function montarBotaoAcessoExternoAutorizado(ProcedimentoAPI $objProcedimentoAPI)
  234 + {
  235 + return array();
  236 + }
  237 +
  238 + public function montarBotaoControleAcessoExterno()
  239 + {
  240 + return array();
  241 + }
  242 +
  243 + public function processarControlador($strAcao)
  244 + {
  245 + return false;
  246 + }
  247 +
  248 + public function processarControladorAjax($strAcao)
  249 + {
  250 + return null;
  251 + }
  252 +
  253 + public function processarControladorPublicacoes($strAcao)
  254 + {
  255 + return false;
  256 + }
  257 +
  258 + public function processarControladorExterno($strAcao)
  259 + {
  260 + return false;
  261 + }
  262 +
  263 + public function verificarAcessoProtocolo($arrObjProcedimentoAPI, $arrObjDocumentoAPI)
  264 + {
  265 + return null;
  266 + }
  267 +
  268 + public function verificarAcessoProtocoloExterno($arrObjProcedimentoAPI, $arrObjDocumentoAPI)
  269 + {
  270 + return null;
  271 + }
  272 +
  273 + public function montarMensagemProcesso(ProcedimentoAPI $objProcedimentoAPI)
  274 + {
  275 + return null;
  276 + }
  277 +
  278 + public function adicionarElementoMenu()
  279 + {
  280 + $nomeArquivo = 'QRCODE_'
  281 + . self::NOME_MODULO
  282 + . "_"
  283 + . SessaoSEI::getInstance()->getNumIdOrgaoUsuario()
  284 + . "_"
  285 + . SessaoSEI::getInstance()->getNumIdContextoUsuario()
  286 + . "_"
  287 + . self::getVersao();
  288 + $html = CacheSEI::getInstance()->getAtributo($nomeArquivo);
  289 +
  290 + if ($html) {
  291 + return $html;
  292 + }
  293 +
  294 + $html = $this->montaCorpoHTMLQRCode($nomeArquivo);
  295 + CacheSEI::getInstance()->setAtributo($nomeArquivo, $html, CacheSEI::getInstance()->getNumTempo());
  296 +
  297 + return $html;
  298 + }
  299 +
  300 + /**
  301 + * Função que monta o html do QRCode para o menu lateral do SEI
  302 + * @param $nomeArquivo
  303 + * @return string
  304 + */
  305 + private function montaCorpoHTMLQRCode($nomeArquivo)
  306 + {
  307 + $htmlQrCode = '';
  308 + $caminhoAtual = explode("/sei/web", __DIR__);
  309 + $urlSEI = ConfiguracaoSEI::getInstance()->getValor('SEI', 'URL')
  310 + . $caminhoAtual[1]
  311 + . '/controlador_ws.php/api/v1';
  312 + $conteudoQrCode = 'url: ' . $urlSEI
  313 + . ';'
  314 + . 'siglaorgao: ' . SessaoSEI::getInstance()->getStrSiglaOrgaoUsuario()
  315 + . ';'
  316 + . 'orgao: ' . SessaoSEI::getInstance()->getNumIdOrgaoUsuario()
  317 + . ';'
  318 + . 'contexto: ' . SessaoSEI::getInstance()->getNumIdContextoUsuario();
  319 + $caminhoFisicoQrCode = DIR_SEI_TEMP . '/' . $nomeArquivo;
  320 +
  321 + InfraQRCode::gerar($conteudoQrCode, $caminhoFisicoQrCode, 'L', 2, 1);
  322 +
  323 + $infraException = new InfraException();
  324 + if (!file_exists($caminhoFisicoQrCode)) {
  325 + $infraException->lancarValidacao('Arquivo do QRCode não encontrado.');
  326 + }
  327 + if (filesize($caminhoFisicoQrCode) == 0) {
  328 + $infraException->lancarValidacao('Arquivo do QRCode vazio.');
  329 + }
  330 + if (($binQrCode = file_get_contents($caminhoFisicoQrCode)) === false) {
  331 + $infraException->lancarValidacao('Não foi possível ler o arquivo do QRCode.');
  332 + }
  333 +
  334 + $htmlQrCode .= '<div style="font-size: 12px; text-align: center;">';
  335 + $htmlQrCode .= '<div style="height: 12px; margin-bottom: 22px; background-color: #01A5DA; border-bottom: 4px solid #AFCF2C;"></div>';
  336 + $htmlQrCode .= '<p style="text-align: left; margin: 5px;">';
  337 + $htmlQrCode .= '<strong style="font-weight: bolder">';
  338 + $htmlQrCode .= 'Acesse as lojas App Store ou Google Play e instale o aplicativo do SEI! no seu celular.';
  339 + $htmlQrCode .= '</strong>';
  340 + $htmlQrCode .= '</p>';
  341 + $htmlQrCode .= '<p style="text-align: left; margin: 15px 5px 5px 5px;">';
  342 + $htmlQrCode .= '<strong style="font-weight: bolder">';
  343 + $htmlQrCode .= 'Abra o aplicativo do SEI! e faça a leitura do código abaixo para sincronizá-lo com sua conta.';
  344 + $htmlQrCode .= '</strong>';
  345 + $htmlQrCode .= '</p>';
  346 + $htmlQrCode .= '<img style="margin: 20px auto 6px;" align="center" src="data:image/png;base64, '
  347 + . base64_encode($binQrCode) . '" />';
  348 + $htmlQrCode .= '</div>';
  349 +
  350 + return $htmlQrCode;
  351 + }
  352 +}
  353 +
  354 +?>
0 355 \ No newline at end of file
... ...
codigo-fonte/mod-wssei/dto/MdWsSeiAssuntoDTO.php 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +<?
  2 +
  3 +/**
  4 + * Class MdWsSeiProcessoDTO
  5 + * DTO somente para encapsulamento de dados.
  6 + * OBS: Nao estou usando API pois em modulos do SEI o autoload nao carrega as API's.
  7 + */
  8 +class MdWsSeiProcessoDTO extends InfraDTO{
  9 +
  10 + public function getStrNomeTabela()
  11 + {
  12 + throw new InfraException('DTO nao utilizavel para consulta!');
  13 + }
  14 +
  15 + public function montar(){
  16 + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Template');
  17 + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdAtividade');
  18 + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Valor');
  19 + }
  20 +
  21 +}
... ...
codigo-fonte/mod-wssei/dto/MdWsSeiContatoDTO.php 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +<?
  2 +
  3 +/**
  4 + * Class MdWsSeiProcessoDTO
  5 + * DTO somente para encapsulamento de dados.
  6 + * OBS: Nao estou usando API pois em modulos do SEI o autoload nao carrega as API's.
  7 + */
  8 +class MdWsSeiProcessoDTO extends InfraDTO{
  9 +
  10 + public function getStrNomeTabela()
  11 + {
  12 + throw new InfraException('DTO nao utilizavel para consulta!');
  13 + }
  14 +
  15 + public function montar(){
  16 + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Template');
  17 + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdAtividade');
  18 + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Valor');
  19 + }
  20 +
  21 +}
... ...
codigo-fonte/mod-wssei/dto/MdWsSeiDocumentoDTO.php 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +<?
  2 +
  3 +/**
  4 + * Class MdWsSeiProcessoDTO
  5 + * DTO somente para encapsulamento de dados.
  6 + * OBS: Nao estou usando API pois em modulos do SEI o autoload nao carrega as API's.
  7 + */
  8 +class MdWsSeiProcessoDTO extends InfraDTO{
  9 +
  10 + public function getStrNomeTabela()
  11 + {
  12 + throw new InfraException('DTO nao utilizavel para consulta!');
  13 + }
  14 +
  15 + public function montar(){
  16 + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Template');
  17 + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdAtividade');
  18 + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Valor');
  19 + }
  20 +
  21 +}
... ...
codigo-fonte/mod-wssei/dto/MdWsSeiHipoteseLegalDTO.php 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +<?
  2 +
  3 +/**
  4 + * Class MdWsSeiProcessoDTO
  5 + * DTO somente para encapsulamento de dados.
  6 + * OBS: Nao estou usando API pois em modulos do SEI o autoload nao carrega as API's.
  7 + */
  8 +class MdWsSeiProcessoDTO extends InfraDTO{
  9 +
  10 + public function getStrNomeTabela()
  11 + {
  12 + throw new InfraException('DTO nao utilizavel para consulta!');
  13 + }
  14 +
  15 + public function montar(){
  16 + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Template');
  17 + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdAtividade');
  18 + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Valor');
  19 + }
  20 +
  21 +}
... ...
codigo-fonte/mod-wssei/dto/MdWsSeiProcedimentoDTO.php 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +<?
  2 +
  3 +/**
  4 + * Class MdWsSeiProcessoDTO
  5 + * DTO somente para encapsulamento de dados.
  6 + * OBS: Nao estou usando API pois em modulos do SEI o autoload nao carrega as API's.
  7 + */
  8 +class MdWsSeiProcessoDTO extends InfraDTO{
  9 +
  10 + public function getStrNomeTabela()
  11 + {
  12 + throw new InfraException('DTO nao utilizavel para consulta!');
  13 + }
  14 +
  15 + public function montar(){
  16 + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Template');
  17 + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdAtividade');
  18 + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Valor');
  19 + }
  20 +
  21 +}
... ...
codigo-fonte/mod-wssei/dto/MdWsSeiTipoProcedimentoDTO.php 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +<?
  2 +
  3 +/**
  4 + * Class MdWsSeiProcessoDTO
  5 + * DTO somente para encapsulamento de dados.
  6 + * OBS: Nao estou usando API pois em modulos do SEI o autoload nao carrega as API's.
  7 + */
  8 +class MdWsSeiProcessoDTO extends InfraDTO{
  9 +
  10 + public function getStrNomeTabela()
  11 + {
  12 + throw new InfraException('DTO nao utilizavel para consulta!');
  13 + }
  14 +
  15 + public function montar(){
  16 + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Template');
  17 + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdAtividade');
  18 + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'Valor');
  19 + }
  20 +
  21 +}
... ...
codigo-fonte/mod-wssei/rn/MdWsSeiContatoRN.php 0 → 100644
... ... @@ -0,0 +1,1321 @@
  1 +<?
  2 +require_once dirname(__FILE__) . '/../../../SEI.php';
  3 +
  4 +class MdWsSeiProcedimentoRN extends InfraRN
  5 +{
  6 +
  7 + protected function inicializarObjInfraIBanco()
  8 + {
  9 + return BancoSEI::getInstance();
  10 + }
  11 +
  12 + /**
  13 + * Consulta o processo pelo protocolo
  14 + * @param $protocolo
  15 + * @return array
  16 + */
  17 + public function apiConsultarProcessoDigitado($protocolo){
  18 + try{
  19 + $result = ProcedimentoINT::pesquisarDigitadoRI1023($protocolo);
  20 +
  21 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result);
  22 + }catch (Exception $e){
  23 + return MdWsSeiRest::formataRetornoErroREST($e);
  24 + }
  25 + }
  26 +
  27 + /**
  28 + * Retorna o total de unidades do processo
  29 + * @param ProtocoloDTO $protocoloDTO
  30 + * @return array
  31 + */
  32 + protected function listarUnidadesProcessoConectado(ProtocoloDTO $protocoloDTO)
  33 + {
  34 + try {
  35 + if (!$protocoloDTO->getDblIdProtocolo()) {
  36 + throw new InfraException('Protocolo não informado.');
  37 + }
  38 + $result = array();
  39 +
  40 + $relProtocoloProtocoloDTOConsulta = new RelProtocoloProtocoloDTO();
  41 + $relProtocoloProtocoloDTOConsulta->setDblIdProtocolo1($protocoloDTO->getDblIdProtocolo());
  42 + $relProtocoloProtocoloDTOConsulta->retDblIdProtocolo1();
  43 + $relProtocoloProtocoloDTOConsulta->setNumMaxRegistrosRetorno(1);
  44 + $relProtocoloProtocoloDTOConsulta->setNumPaginaAtual(0);
  45 + $relProtocoloProtocoloRN = new RelProtocoloProtocoloRN();
  46 + $ret = $relProtocoloProtocoloRN->listarRN0187($relProtocoloProtocoloDTOConsulta);
  47 + if ($ret) {
  48 + /** @var RelProtocoloProtocoloDTO $relProtocoloProtocoloDTO */
  49 + $relProtocoloProtocoloDTO = $ret[0];
  50 + $result['processo'] = $relProtocoloProtocoloDTO->getDblIdProtocolo1();
  51 + $result['unidades'] = $relProtocoloProtocoloDTOConsulta->getNumTotalRegistros();
  52 + }
  53 +
  54 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result);
  55 + } catch (Exception $e) {
  56 + return MdWsSeiRest::formataRetornoErroREST($e);
  57 + }
  58 + }
  59 +
  60 + /**
  61 + * Método que lista o sobrestamento de um processo
  62 + * @param AtividadeDTO $atividadeDTOParam
  63 + * @return array
  64 + */
  65 + protected function listarSobrestamentoProcessoConectado(AtividadeDTO $atividadeDTOParam)
  66 + {
  67 + try {
  68 + if (!$atividadeDTOParam->isSetDblIdProtocolo()) {
  69 + throw new InfraException('Protocolo não informado.');
  70 + }
  71 + if (!$atividadeDTOParam->isSetNumIdUnidade()) {
  72 + $atividadeDTOParam->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  73 + }
  74 +
  75 + $result = array();
  76 + $atividadeDTOConsulta = new AtividadeDTO();
  77 + $atividadeDTOConsulta->retTodos();
  78 + $atividadeDTOConsulta->setDblIdProtocolo($atividadeDTOParam->getDblIdProtocolo());
  79 + $atividadeDTOConsulta->setDthConclusao(null);
  80 + $atividadeDTOConsulta->setNumIdTarefa(TarefaRN::$TI_SOBRESTAMENTO);
  81 + $atividadeDTOConsulta->setNumMaxRegistrosRetorno(1);
  82 + $atividadeRN = new AtividadeRN();
  83 + $ret = $atividadeRN->listarRN0036($atividadeDTOConsulta);
  84 +
  85 + /** @var AtividadeDTO $atividadeDTO */
  86 + foreach ($ret as $atividadeDTO) {
  87 + $result[] = array(
  88 + 'idAtividade' => $atividadeDTO->getNumIdAtividade(),
  89 + 'idProtocolo' => $atividadeDTO->getDblIdProtocolo(),
  90 + 'dthAbertura' => $atividadeDTO->getDthAbertura(),
  91 + 'sinInicial' => $atividadeDTO->getStrSinInicial(),
  92 + 'dtaPrazo' => $atividadeDTO->getDtaPrazo(),
  93 + 'tipoVisualizacao' => $atividadeDTO->getNumTipoVisualizacao(),
  94 + 'dthConclusao' => $atividadeDTO->getDthConclusao(),
  95 + );
  96 + }
  97 +
  98 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result);
  99 + } catch (Exception $e) {
  100 + return MdWsSeiRest::formataRetornoErroREST($e);
  101 + }
  102 + }
  103 +
  104 + /**
  105 + * Metodo de sobrestamento de processo
  106 + * @param RelProtocoloProtocoloDTO $relProtocoloProtocoloDTO
  107 + * @return array
  108 + */
  109 + protected function sobrestamentoProcessoControlado(RelProtocoloProtocoloDTO $relProtocoloProtocoloDTO)
  110 + {
  111 + try {
  112 + if(!$relProtocoloProtocoloDTO->isSetDblIdProtocolo2()){
  113 + throw new Exception('Processo não informado!');
  114 + }
  115 + if(!$relProtocoloProtocoloDTO->isSetStrMotivo()){
  116 + throw new Exception('Informe o motivo!');
  117 + }
  118 + $procedimentoRN = new ProcedimentoRN();
  119 + $procedimentoRN->sobrestarRN1014(array($relProtocoloProtocoloDTO));
  120 +
  121 + return MdWsSeiRest::formataRetornoSucessoREST('Processo sobrestado com sucesso');
  122 + } catch (Exception $e) {
  123 + return MdWsSeiRest::formataRetornoErroREST($e);
  124 + }
  125 + }
  126 +
  127 + /**
  128 + * @param $protocolo
  129 + * @return array
  130 + */
  131 + protected function removerSobrestamentoProcessoControlado(ProcedimentoDTO $procedimentoDTOParam)
  132 + {
  133 + try {
  134 + if (!$procedimentoDTOParam->getDblIdProcedimento()) {
  135 + throw new InfraException('Procedimento não informado.');
  136 + }
  137 + $seiRN = new SeiRN();
  138 + $entradaRemoverSobrestamentoProcessoAPI = new EntradaRemoverSobrestamentoProcessoAPI();
  139 + $entradaRemoverSobrestamentoProcessoAPI->setIdProcedimento($procedimentoDTOParam->getDblIdProcedimento());
  140 +
  141 + $seiRN->removerSobrestamentoProcesso($entradaRemoverSobrestamentoProcessoAPI);
  142 +
  143 + return MdWsSeiRest::formataRetornoSucessoREST('Sobrestar cancelado com sucesso.');
  144 + } catch (Exception $e) {
  145 + return MdWsSeiRest::formataRetornoErroREST($e);
  146 + }
  147 + }
  148 +
  149 + /**
  150 + * Método que retorna os procedimentos com acompanhamento do usuário
  151 + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOConsulta
  152 + * @return array
  153 + */
  154 + protected function listarProcedimentoAcompanhamentoUsuarioConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam)
  155 + {
  156 + try {
  157 + $usuarioAtribuicaoAtividade = null;
  158 + $mdWsSeiProtocoloDTOConsulta = new MdWsSeiProtocoloDTO();
  159 + if ($mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()) {
  160 + $mdWsSeiProtocoloDTOConsulta->setNumIdGrupoAcompanhamentoProcedimento($mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento());
  161 + }
  162 +
  163 + if (!$mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioGeradorAcompanhamento()) {
  164 + $mdWsSeiProtocoloDTOConsulta->setNumIdUsuarioGeradorAcompanhamento(SessaoSEI::getInstance()->getNumIdUsuario());
  165 + } else {
  166 + $mdWsSeiProtocoloDTOConsulta->setNumIdUsuarioGeradorAcompanhamento($mdWsSeiProtocoloDTOParam->getNumIdUsuarioGeradorAcompanhamento());
  167 + }
  168 +
  169 + if (is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) {
  170 + $mdWsSeiProtocoloDTOConsulta->setNumPaginaAtual(0);
  171 + } else {
  172 + $mdWsSeiProtocoloDTOConsulta->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual());
  173 + }
  174 +
  175 + if (!$mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) {
  176 + $mdWsSeiProtocoloDTOConsulta->setNumMaxRegistrosRetorno(10);
  177 + } else {
  178 + $mdWsSeiProtocoloDTOConsulta->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno());
  179 + }
  180 +
  181 + $protocoloRN = new ProtocoloRN();
  182 + $mdWsSeiProtocoloDTOConsulta->retTodos();
  183 + $mdWsSeiProtocoloDTOConsulta->retDblIdProtocolo();
  184 + $mdWsSeiProtocoloDTOConsulta->retStrNomeTipoProcedimentoProcedimento();
  185 + $mdWsSeiProtocoloDTOConsulta->retStrSiglaUnidadeGeradora();
  186 + $mdWsSeiProtocoloDTOConsulta->retStrSinCienciaProcedimento();
  187 + $mdWsSeiProtocoloDTOConsulta->setOrdDthGeracaoAcompanhamento(InfraDTO::$TIPO_ORDENACAO_ASC);
  188 + $mdWsSeiProtocoloDTOConsulta->retStrNomeTipoProcedimentoProcedimento();
  189 +
  190 + $ret = $protocoloRN->listarRN0668($mdWsSeiProtocoloDTOConsulta);
  191 + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade);
  192 +
  193 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $mdWsSeiProtocoloDTOConsulta->getNumTotalRegistros());
  194 + } catch (Exception $e) {
  195 + return MdWsSeiRest::formataRetornoErroREST($e);
  196 + }
  197 + }
  198 +
  199 + /**
  200 + * Método que retorna os procedimentos com acompanhamento da unidade
  201 + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOConsulta
  202 + * @return array
  203 + */
  204 + protected function listarProcedimentoAcompanhamentoUnidadeConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam)
  205 + {
  206 + try {
  207 + $acompanhamentoRN = new AcompanhamentoRN();
  208 + $acompanhamentoDTO = new AcompanhamentoDTO();
  209 + $acompanhamentoDTO->setOrdNumIdAcompanhamento(InfraDTO::$TIPO_ORDENACAO_DESC);
  210 + if(!$mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()){
  211 + throw new Exception('O grupo deve ser informado!');
  212 + }else{
  213 + $acompanhamentoDTO->setNumIdGrupoAcompanhamento($mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento());
  214 + }
  215 + if (is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) {
  216 + $acompanhamentoDTO->setNumPaginaAtual(0);
  217 + } else {
  218 + $acompanhamentoDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual());
  219 + }
  220 +
  221 + if (!$mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) {
  222 + $acompanhamentoDTO->setNumMaxRegistrosRetorno(10);
  223 + } else {
  224 + $acompanhamentoDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno());
  225 + }
  226 +
  227 + $arrAcompanhamentoDTO = $acompanhamentoRN->listarAcompanhamentosUnidade($acompanhamentoDTO);
  228 + $totalRegistros = $acompanhamentoDTO->getNumTotalRegistros() ?: 0;
  229 +
  230 + $ret = array();
  231 + foreach($arrAcompanhamentoDTO as $acompanhamentoDTO){
  232 + $ret[] = $acompanhamentoDTO->getObjProcedimentoDTO();
  233 + }
  234 + $result = $this->montaRetornoListagemProcessos($ret, null);
  235 +
  236 +
  237 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $totalRegistros);
  238 + } catch (Exception $e) {
  239 + return MdWsSeiRest::formataRetornoErroREST($e);
  240 + }
  241 + }
  242 +
  243 + /**
  244 + * Método que pesquisa todos o procedimentos em todas as unidades
  245 + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam
  246 + * @return array
  247 + */
  248 + protected function pesquisarTodosProcessosConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam)
  249 + {
  250 + try {
  251 + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO();
  252 +
  253 + $usuarioAtribuicaoAtividade = null;
  254 + if ($mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioAtribuicaoAtividade()) {
  255 + $usuarioAtribuicaoAtividade = $mdWsSeiProtocoloDTOParam->getNumIdUsuarioAtribuicaoAtividade();
  256 + }
  257 +
  258 + if (!is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) {
  259 + $pesquisaPendenciaDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual());
  260 + } else {
  261 + $pesquisaPendenciaDTO->setNumPaginaAtual(0);
  262 + }
  263 +
  264 + if ($mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) {
  265 + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno());
  266 + } else {
  267 + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno(10);
  268 + }
  269 + if ($mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()) {
  270 + $pesquisaPendenciaDTO->setNumIdGrupoAcompanhamentoProcedimento(
  271 + $mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento()
  272 + );
  273 + }
  274 + if ($mdWsSeiProtocoloDTOParam->isSetStrProtocoloFormatadoPesquisa()) {
  275 + $strProtocoloFormatado = InfraUtil::retirarFormatacao(
  276 + $mdWsSeiProtocoloDTOParam->getStrProtocoloFormatadoPesquisa(), false
  277 + );
  278 + $pesquisaPendenciaDTO->setStrProtocoloFormatadoPesquisaProtocolo(
  279 + '%' . $strProtocoloFormatado . '%',
  280 + InfraDTO::$OPER_LIKE
  281 + );
  282 + }
  283 +
  284 + $atividadeRN = new MdWsSeiAtividadeRN();
  285 + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO));
  286 + $pesquisaPendenciaDTO->setStrSinAnotacoes('S');
  287 + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S');
  288 + $pesquisaPendenciaDTO->setStrSinCredenciais('S');
  289 + $pesquisaPendenciaDTO->setStrSinSituacoes('S');
  290 + $pesquisaPendenciaDTO->setStrSinMarcadores('S');
  291 +
  292 + $ret = $atividadeRN->listarPendencias($pesquisaPendenciaDTO);
  293 + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade);
  294 +
  295 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $pesquisaPendenciaDTO->getNumTotalRegistros());
  296 + } catch (Exception $e) {
  297 + return MdWsSeiRest::formataRetornoErroREST($e);
  298 + }
  299 + }
  300 +
  301 + /**
  302 + * Método que retorna os procedimentos com acompanhamento com filtro opcional de grupo de acompanhamento e protocolo
  303 + * formatado
  304 + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam
  305 + * @return array
  306 + */
  307 + protected function pesquisarProcedimentoConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam)
  308 + {
  309 + try {
  310 + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO();
  311 +
  312 + $usuarioAtribuicaoAtividade = null;
  313 + if ($mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioAtribuicaoAtividade()) {
  314 + $usuarioAtribuicaoAtividade = $mdWsSeiProtocoloDTOParam->getNumIdUsuarioAtribuicaoAtividade();
  315 + }
  316 +
  317 + if (!is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) {
  318 + $pesquisaPendenciaDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual());
  319 + } else {
  320 + $pesquisaPendenciaDTO->setNumPaginaAtual(0);
  321 + }
  322 +
  323 + if ($mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) {
  324 + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno());
  325 + } else {
  326 + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno(10);
  327 + }
  328 + if ($mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()) {
  329 + $pesquisaPendenciaDTO->setNumIdGrupoAcompanhamentoProcedimento(
  330 + $mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento()
  331 + );
  332 + }
  333 + if ($mdWsSeiProtocoloDTOParam->isSetStrProtocoloFormatadoPesquisa()) {
  334 + $strProtocoloFormatado = InfraUtil::retirarFormatacao(
  335 + $mdWsSeiProtocoloDTOParam->getStrProtocoloFormatadoPesquisa(), false
  336 + );
  337 + $pesquisaPendenciaDTO->setStrProtocoloFormatadoPesquisaProtocolo(
  338 + '%' . $strProtocoloFormatado . '%',
  339 + InfraDTO::$OPER_LIKE
  340 + );
  341 + }
  342 +
  343 + $atividadeRN = new MdWsSeiAtividadeRN();
  344 + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
  345 + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  346 + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO));
  347 + $pesquisaPendenciaDTO->setStrSinAnotacoes('S');
  348 + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S');
  349 + $pesquisaPendenciaDTO->setStrSinCredenciais('S');
  350 + $pesquisaPendenciaDTO->setStrSinSituacoes('S');
  351 + $pesquisaPendenciaDTO->setStrSinMarcadores('S');
  352 +
  353 + $ret = $atividadeRN->listarPendencias($pesquisaPendenciaDTO);
  354 + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade);
  355 +
  356 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $pesquisaPendenciaDTO->getNumTotalRegistros());
  357 + } catch (Exception $e) {
  358 + return MdWsSeiRest::formataRetornoErroREST($e);
  359 + }
  360 + }
  361 +
  362 + /**
  363 + * Metodo que lista os processos
  364 + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTO
  365 + * @return array
  366 + */
  367 + protected function listarProcessosConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam)
  368 + {
  369 + try {
  370 + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO();
  371 +
  372 + $usuarioAtribuicaoAtividade = null;
  373 + if ($mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioAtribuicaoAtividade()) {
  374 + $usuarioAtribuicaoAtividade = $mdWsSeiProtocoloDTOParam->getNumIdUsuarioAtribuicaoAtividade();
  375 + }
  376 +
  377 + if (!is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) {
  378 + $pesquisaPendenciaDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual());
  379 + } else {
  380 + $pesquisaPendenciaDTO->setNumPaginaAtual(0);
  381 + }
  382 +
  383 + if ($mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) {
  384 + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno());
  385 + } else {
  386 + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno(10);
  387 + }
  388 + if ($mdWsSeiProtocoloDTOParam->getStrSinApenasMeus() == 'S') {
  389 + $pesquisaPendenciaDTO->setStrStaTipoAtribuicao('M');
  390 + }
  391 +
  392 + $atividadeRN = new MdWsSeiAtividadeRN();
  393 + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
  394 + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  395 + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO));
  396 + $pesquisaPendenciaDTO->setStrSinAnotacoes('S');
  397 + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S');
  398 + $pesquisaPendenciaDTO->setStrSinCredenciais('S');
  399 + $pesquisaPendenciaDTO->setStrSinSituacoes('S');
  400 + $pesquisaPendenciaDTO->setStrSinMarcadores('S');
  401 +
  402 + if ($mdWsSeiProtocoloDTOParam->getStrSinTipoBusca() == MdWsSeiProtocoloDTO::SIN_TIPO_BUSCA_R) {
  403 + $pesquisaPendenciaDTO->setStrSinInicial('N');
  404 + } else if ($mdWsSeiProtocoloDTOParam->getStrSinTipoBusca() == MdWsSeiProtocoloDTO::SIN_TIPO_BUSCA_G) {
  405 + $pesquisaPendenciaDTO->setStrSinInicial('S');
  406 + } else {
  407 + throw new InfraException('O tipo de busca deve ser (R)ecebidos ou (G)erados');
  408 + }
  409 + $ret = $atividadeRN->listarPendencias($pesquisaPendenciaDTO);
  410 + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade);
  411 +
  412 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $pesquisaPendenciaDTO->getNumTotalRegistros());
  413 + } catch (Exception $e) {
  414 + return MdWsSeiRest::formataRetornoErroREST($e);
  415 + }
  416 +
  417 + }
  418 +
  419 + /**
  420 + * Metodo que monta o retorno da listagem do processo com base no retorno da consulta
  421 + * @param array $ret
  422 + * @param null $usuarioAtribuicaoAtividade
  423 + * @return array
  424 + */
  425 + private function montaRetornoListagemProcessos(array $ret, $usuarioAtribuicaoAtividade = null)
  426 + {
  427 + $result = array();
  428 + $protocoloRN = new ProtocoloRN();
  429 + foreach ($ret as $dto) {
  430 + $usuarioAtribuido = null;
  431 + $documentoNovo = 'N';
  432 + $documentoPublicado = 'N';
  433 + $possuiAnotacao = 'N';
  434 + $podeGerenciarCredenciais = 'N';
  435 + $possuiAnotacaoPrioridade = 'N';
  436 + $usuarioVisualizacao = 'N';
  437 + $tipoVisualizacao = 'N';
  438 + $retornoProgramado = 'N';
  439 + $retornoAtrasado = 'N';
  440 + $processoAberto = false;
  441 + $acaoReabrirProcesso = SessaoSEI::getInstance()->verificarPermissao('procedimento_reabrir');
  442 + $acaoRegistrarAnotacao = SessaoSEI::getInstance()->verificarPermissao('anotacao_registrar');
  443 + $processoEmTramitacao = false;
  444 + $processoSobrestado = false;
  445 + $processoAnexado = false;
  446 + $podeReabrirProcesso = false;
  447 + $podeRegistrarAnotacao = false;
  448 + $arrDadosAbertura = array();
  449 + $procedimentoDTO = null;
  450 + $resultAnotacao = array();
  451 + $protocoloDTO = new MdWsSeiProtocoloDTO();
  452 + if ($dto instanceof ProcedimentoDTO) {
  453 + $protocoloDTO = new MdWsSeiProtocoloDTO();
  454 + $protocoloDTO->setDblIdProtocolo($dto->getDblIdProcedimento());
  455 + $protocoloDTO->retDblIdProtocolo();
  456 + $protocoloDTO->retNumIdUnidadeGeradora();
  457 + $protocoloDTO->retStrStaProtocolo();
  458 + $protocoloDTO->retStrProtocoloFormatado();
  459 + $protocoloDTO->retStrNomeTipoProcedimentoProcedimento();
  460 + $protocoloDTO->retStrDescricao();
  461 + $protocoloDTO->retStrSiglaUnidadeGeradora();
  462 + $protocoloDTO->retStrStaGrauSigilo();
  463 + $protocoloDTO->retStrStaNivelAcessoLocal();
  464 + $protocoloDTO->retStrStaNivelAcessoGlobal();
  465 + $protocoloDTO->retStrSinCienciaProcedimento();
  466 + $protocoloDTO->retStrStaEstado();
  467 + $protocoloDTO = $protocoloRN->consultarRN0186($protocoloDTO);
  468 + } else {
  469 + $protocoloDTO = $dto;
  470 + }
  471 +
  472 + $processoBloqueado = $protocoloDTO->getStrStaEstado() == ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO ? 'S' : 'N';
  473 + $processoRemocaoSobrestamento = 'N';
  474 + $processoDocumentoIncluidoAssinado = 'N';
  475 + $processoPublicado = 'N';
  476 +
  477 + $atividadeRN = new MdWsSeiAtividadeRN();
  478 + $atividadeDTOConsulta = new AtividadeDTO();
  479 + $atividadeDTOConsulta->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo());
  480 + $atividadeDTOConsulta->retDblIdProtocolo();
  481 + $atividadeDTOConsulta->retNumIdTarefa();
  482 + $atividadeDTOConsulta->retNumTipoVisualizacao();
  483 + $atividadeDTOConsulta->retStrNomeUsuarioAtribuicao();
  484 + $atividadeDTOConsulta->retNumIdUsuarioVisualizacao();
  485 + $atividadeDTOConsulta->retNumIdAtividade();
  486 +
  487 + $atividadeDTOConsulta->setNumMaxRegistrosRetorno(1);
  488 + $atividadeDTOConsulta->setOrdNumIdAtividade(InfraDTO::$TIPO_ORDENACAO_DESC);
  489 +
  490 + $arrAtividades = $atividadeRN->listarRN0036($atividadeDTOConsulta);
  491 +
  492 + if ($arrAtividades) {
  493 + /** @var AtividadeDTO $atividadeDTO */
  494 + $atividadeDTO = $arrAtividades[0];
  495 + $documentoNovo = $atividadeDTO->getNumIdTarefa() == 1 ? 'S' : 'N';
  496 + $usuarioAtribuido = $atividadeDTO->getStrNomeUsuarioAtribuicao();
  497 + $tipoVisualizacao = $atividadeDTO->getNumTipoVisualizacao() == 0 ? 'S' : 'N';
  498 + if ($atividadeDTO->getNumIdUsuarioVisualizacao() == $usuarioAtribuicaoAtividade) {
  499 + $usuarioVisualizacao = 'S';
  500 + }
  501 + }
  502 + $arrAtividadePendenciaDTO = array();
  503 + if ($dto instanceof ProcedimentoDTO && $dto->isSetArrObjAtividadeDTO()) {
  504 + $procedimentoDTO = $dto;
  505 + $arrAtividadePendenciaDTO = $procedimentoDTO->getArrObjAtividadeDTO();
  506 + } else {
  507 + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO();
  508 + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
  509 + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  510 + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO));
  511 + $pesquisaPendenciaDTO->setStrSinAnotacoes('S');
  512 + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S');
  513 + $pesquisaPendenciaDTO->setStrSinCredenciais('S');
  514 + $pesquisaPendenciaDTO->setStrSinSituacoes('S');
  515 + $pesquisaPendenciaDTO->setStrSinMarcadores('S');
  516 + $pesquisaPendenciaDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo());
  517 + $arrProcedimentoDTO = $atividadeRN->listarPendencias($pesquisaPendenciaDTO);
  518 + if ($arrProcedimentoDTO) {
  519 + $procedimentoDTO = $arrProcedimentoDTO[0];
  520 + $arrAtividadePendenciaDTO = $procedimentoDTO->getArrObjAtividadeDTO();
  521 + }
  522 + }
  523 + if ($arrAtividadePendenciaDTO) {
  524 + $atividadePendenciaDTO = $arrAtividadePendenciaDTO[0];
  525 + if ($atividadePendenciaDTO->getNumTipoVisualizacao() & AtividadeRN::$TV_REMOCAO_SOBRESTAMENTO) {
  526 + $processoRemocaoSobrestamento = 'S';
  527 + }
  528 + if ($atividadePendenciaDTO->getNumTipoVisualizacao() & AtividadeRN::$TV_ATENCAO) {
  529 + $processoDocumentoIncluidoAssinado = 'S';
  530 + }
  531 + if ($atividadePendenciaDTO->getNumTipoVisualizacao() & AtividadeRN::$TV_PUBLICACAO) {
  532 + $processoPublicado = 'S';
  533 + }
  534 + $retornoProgramadoDTOConsulta = new RetornoProgramadoDTO();
  535 + $retornoProgramadoDTOConsulta->retDblIdProtocoloAtividadeEnvio();
  536 + $retornoProgramadoDTOConsulta->retStrSiglaUnidadeOrigemAtividadeEnvio();
  537 + $retornoProgramadoDTOConsulta->retStrSiglaUnidadeAtividadeEnvio();
  538 + $retornoProgramadoDTOConsulta->retDtaProgramada();
  539 + $retornoProgramadoDTOConsulta->setNumIdUnidadeAtividadeEnvio(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  540 + $retornoProgramadoDTOConsulta->setDblIdProtocoloAtividadeEnvio(array_unique(InfraArray::converterArrInfraDTO($arrAtividadePendenciaDTO, 'IdProtocolo')), InfraDTO::$OPER_IN);
  541 + $retornoProgramadoDTOConsulta->setNumIdAtividadeRetorno(null);
  542 + $objRetornoProgramadoRN = new RetornoProgramadoRN();
  543 + $arrRetornoProgramadoDTO = $objRetornoProgramadoRN->listar($retornoProgramadoDTOConsulta);
  544 + if ($arrRetornoProgramadoDTO) {
  545 + $retornoProgramado = 'S';
  546 + $strDataAtual = InfraData::getStrDataAtual();
  547 + foreach ($arrRetornoProgramadoDTO as $retornoProgramadoDTO) {
  548 + $numPrazo = InfraData::compararDatas($strDataAtual, $retornoProgramadoDTO->getDtaProgramada());
  549 + if ($numPrazo < 0) {
  550 + $retornoAtrasado = 'S';
  551 + }
  552 + $retornoData = array(
  553 + 'dataProgramada' => $retornoProgramadoDTO->getDtaProgramada(),
  554 + 'unidade' => $retornoProgramadoDTO->getStrSiglaUnidadeOrigemAtividadeEnvio()
  555 + );
  556 + }
  557 + }
  558 + }
  559 + $documentoRN = new DocumentoRN();
  560 + $documentoDTOConsulta = new DocumentoDTO();
  561 + $documentoDTOConsulta->setDblIdProcedimento($protocoloDTO->getDblIdProtocolo());
  562 + $documentoDTOConsulta->retDblIdDocumento();
  563 + $arrDocumentos = $documentoRN->listarRN0008($documentoDTOConsulta);
  564 + if ($arrDocumentos) {
  565 + $arrIdDocumentos = array();
  566 + /** @var DocumentoDTO $documentoDTO */
  567 + foreach ($arrDocumentos as $documentoDTO) {
  568 + $arrIdDocumentos[] = $documentoDTO->getDblIdDocumento();
  569 + }
  570 + $publiacaoRN = new PublicacaoRN();
  571 + $publicacaoDTO = new PublicacaoDTO();
  572 + $publicacaoDTO->retNumIdPublicacao();
  573 + $publicacaoDTO->setNumMaxRegistrosRetorno(1);
  574 + $publicacaoDTO->adicionarCriterio(
  575 + array('IdDocumento'),
  576 + array(InfraDTO::$OPER_IN),
  577 + array($arrIdDocumentos)
  578 + );
  579 + $arrPublicacaoDTO = $publiacaoRN->listarRN1045($publicacaoDTO);
  580 + $documentoPublicado = count($arrPublicacaoDTO) ? 'S' : 'N';
  581 + }
  582 + $anotacaoRN = new AnotacaoRN();
  583 + $anotacaoDTOConsulta = new AnotacaoDTO();
  584 + $anotacaoDTOConsulta->setNumMaxRegistrosRetorno(1);
  585 + $anotacaoDTOConsulta->retDblIdProtocolo();
  586 + $anotacaoDTOConsulta->retStrDescricao();
  587 + $anotacaoDTOConsulta->retNumIdUnidade();
  588 + $anotacaoDTOConsulta->retNumIdUsuario();
  589 + $anotacaoDTOConsulta->retDthAnotacao();
  590 + $anotacaoDTOConsulta->retStrSinPrioridade();
  591 + $anotacaoDTOConsulta->retStrStaAnotacao();
  592 + $anotacaoDTOConsulta->retNumIdAnotacao();
  593 + $anotacaoDTOConsulta->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo());
  594 + $anotacaoDTOConsulta->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  595 + $arrAnotacao = $anotacaoRN->listar($anotacaoDTOConsulta);
  596 + $possuiAnotacao = count($arrAnotacao) ? 'S' : 'N';
  597 + foreach ($arrAnotacao as $anotacaoDTO) {
  598 + if ($anotacaoDTO->getStrSinPrioridade() == 'S') {
  599 + $possuiAnotacaoPrioridade = 'S';
  600 + break;
  601 + }
  602 + }
  603 + /** @var AnotacaoDTO $anotacaoDTO */
  604 + foreach ($arrAnotacao as $anotacaoDTO) {
  605 + $resultAnotacao[] = array(
  606 + 'idAnotacao' => $anotacaoDTO->getNumIdAnotacao(),
  607 + 'idProtocolo' => $anotacaoDTO->getDblIdProtocolo(),
  608 + 'descricao' => $anotacaoDTO->getStrDescricao(),
  609 + 'idUnidade' => $anotacaoDTO->getNumIdUnidade(),
  610 + 'idUsuario' => $anotacaoDTO->getNumIdUsuario(),
  611 + 'dthAnotacao' => $anotacaoDTO->getDthAnotacao(),
  612 + 'sinPrioridade' => $anotacaoDTO->getStrSinPrioridade(),
  613 + 'staAnotacao' => $anotacaoDTO->getStrStaAnotacao()
  614 + );
  615 + }
  616 + if ($protocoloDTO->getStrStaEstado() != ProtocoloRN::$TE_PROCEDIMENTO_ANEXADO) {
  617 + $procedimentoDTOParam = new ProcedimentoDTO();
  618 + $procedimentoDTOParam->setDblIdProcedimento($protocoloDTO->getDblIdProtocolo());
  619 + $procedimentoDTOParam->setStrStaNivelAcessoGlobalProtocolo($protocoloDTO->getStrStaNivelAcessoGlobal());
  620 + $arrDadosAbertura = $this->listarUnidadeAberturaProcedimento($procedimentoDTOParam);
  621 + }
  622 +
  623 + if($protocoloDTO->getStrStaNivelAcessoGlobal() == ProtocoloRN::$NA_SIGILOSO){
  624 + $podeGerenciarCredenciais = SessaoSEI::getInstance()->verificarPermissao('procedimento_credencial_gerenciar') ? 'S' : 'N';
  625 + }
  626 +
  627 + $pesquisaPendenciaDTO = new PesquisaPendenciaDTO();
  628 + $pesquisaPendenciaDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo());
  629 + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
  630 + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  631 + $pesquisaPendenciaDTO->setStrSinMontandoArvore('S');
  632 + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S');
  633 +
  634 + $processoEmTramitacao = $processoAberto = count($atividadeRN->listarPendenciasRN0754($pesquisaPendenciaDTO)) == 1;
  635 + if ($protocoloDTO->getNumIdUnidadeGeradora() == SessaoSEI::getInstance()->getNumIdUnidadeAtual()){
  636 + $processoEmTramitacao = true;
  637 + }else{
  638 + $atividadeDTO = new AtividadeDTO();
  639 + $atividadeDTO->retNumIdAtividade();
  640 + $atividadeDTO->setNumIdUnidadeOrigem(SessaoSEI::getInstance()->getNumIdUnidadeAtual(),InfraDTO::$OPER_DIFERENTE);
  641 + $atividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  642 + $atividadeDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo());
  643 + $atividadeDTO->setNumMaxRegistrosRetorno(1);
  644 +
  645 + if ($atividadeRN->consultarRN0033($atividadeDTO)!=null){
  646 + $processoEmTramitacao = true;
  647 + }
  648 + }
  649 + if ($protocoloDTO->getStrStaEstado() == ProtocoloRN::$TE_PROCEDIMENTO_SOBRESTADO){
  650 + if ($processoAberto){
  651 + $processoAberto = false;
  652 + }
  653 + $processoSobrestado = true;
  654 + }else if($protocoloDTO->getStrStaEstado()==ProtocoloRN::$TE_PROCEDIMENTO_ANEXADO){
  655 + $processoAnexado = true;
  656 + }
  657 + if (!$processoAberto && $acaoReabrirProcesso && $processoEmTramitacao && !$processoSobrestado && !$processoAnexado) {
  658 + $podeReabrirProcesso = true;
  659 + }
  660 + if ($processoEmTramitacao && $acaoRegistrarAnotacao) {
  661 + $podeRegistrarAnotacao = true;
  662 + }
  663 +
  664 + $objInfraParametro = new InfraParametro(BancoSEI::getInstance());
  665 +
  666 + $result[] = array(
  667 + 'id' => $protocoloDTO->getDblIdProtocolo(),
  668 + 'status' => $protocoloDTO->getStrStaProtocolo(),
  669 + 'seiNumMaxDocsPasta' => $objInfraParametro->getValor('SEI_NUM_MAX_DOCS_PASTA'),
  670 + 'atributos' => array(
  671 + 'idProcedimento' => $protocoloDTO->getDblIdProtocolo(),
  672 + 'idProtocolo' => $protocoloDTO->getDblIdProtocolo(),
  673 + 'numero' => $protocoloDTO->getStrProtocoloFormatado(),
  674 + 'tipoProcesso' => $protocoloDTO->getStrNomeTipoProcedimentoProcedimento(),
  675 + 'descricao' => $protocoloDTO->getStrDescricao(),
  676 + 'usuarioAtribuido' => $usuarioAtribuido,
  677 + 'unidade' => array(
  678 + 'idUnidade' => $protocoloDTO->getNumIdUnidadeGeradora(),
  679 + 'sigla' => $protocoloDTO->getStrSiglaUnidadeGeradora()
  680 + ),
  681 + 'dadosAbertura' => $arrDadosAbertura,
  682 + 'anotacoes' => $resultAnotacao,
  683 + 'status' => array(
  684 + 'documentoSigiloso' => $protocoloDTO->getStrStaGrauSigilo(),
  685 + 'documentoRestrito' => $protocoloDTO->getStrStaNivelAcessoLocal() == 1 ? 'S' : 'N',
  686 + 'documentoNovo' => $documentoNovo,
  687 + 'documentoPublicado' => $documentoPublicado,
  688 + 'anotacao' => $possuiAnotacao,
  689 + 'anotacaoPrioridade' => $possuiAnotacaoPrioridade,//verificar
  690 + 'ciencia' => $protocoloDTO->getStrSinCienciaProcedimento(),
  691 + 'retornoProgramado' => $retornoProgramado,
  692 + 'retornoData' => $retornoData,
  693 + 'retornoAtrasado' => $retornoAtrasado,
  694 + 'processoAcessadoUsuario' => $tipoVisualizacao,
  695 + 'processoAcessadoUnidade' => $usuarioVisualizacao,
  696 + 'processoRemocaoSobrestamento' => $processoRemocaoSobrestamento,
  697 + 'processoBloqueado' => $processoBloqueado,
  698 + 'processoDocumentoIncluidoAssinado' => $processoDocumentoIncluidoAssinado,
  699 + 'processoPublicado' => $processoPublicado,
  700 + 'nivelAcessoGlobal' => $protocoloDTO->getStrStaNivelAcessoGlobal(),
  701 + 'podeGerenciarCredenciais' => $podeGerenciarCredenciais,
  702 + 'processoAberto' => $processoAberto ? 'S' : 'N',
  703 + 'processoEmTramitacao' => $processoEmTramitacao ? 'S' : 'N',
  704 + 'processoSobrestado' => $processoSobrestado ? 'S' : 'N',
  705 + 'processoAnexado' => $processoAnexado ? 'S' : 'N',
  706 + 'podeReabrirProcesso' => $podeReabrirProcesso ? 'S' : 'N',
  707 + 'podeRegistrarAnotacao' => $podeRegistrarAnotacao ? 'S' : 'N',
  708 + )
  709 + )
  710 + );
  711 + }
  712 +
  713 + return $result;
  714 + }
  715 +
  716 + protected function listarUnidadeAberturaProcedimentoConectado(ProcedimentoDTO $procedimentoDTO)
  717 + {
  718 + $result = array();
  719 + $atividadeRN = new MdWsSeiAtividadeRN();
  720 + $strStaNivelAcessoGlobal = $procedimentoDTO->getStrStaNivelAcessoGlobalProtocolo();
  721 + $dblIdProcedimento = $procedimentoDTO->getDblIdProcedimento();
  722 + $atividadeDTO = new AtividadeDTO();
  723 + $atividadeDTO->setDistinct(true);
  724 + $atividadeDTO->retStrSiglaUnidade();
  725 + $atividadeDTO->retNumIdUnidade();
  726 + $atividadeDTO->retStrDescricaoUnidade();
  727 +
  728 + $atividadeDTO->setOrdStrSiglaUnidade(InfraDTO::$TIPO_ORDENACAO_ASC);
  729 +
  730 + if ($strStaNivelAcessoGlobal == ProtocoloRN::$NA_SIGILOSO) {
  731 + $atividadeDTO->retNumIdUsuario();
  732 + $atividadeDTO->retStrSiglaUsuario();
  733 + $atividadeDTO->retStrNomeUsuario();
  734 + } else {
  735 + $atividadeDTO->retNumIdUsuarioAtribuicao();
  736 + $atividadeDTO->retStrSiglaUsuarioAtribuicao();
  737 + $atividadeDTO->retStrNomeUsuarioAtribuicao();
  738 +
  739 + //ordena descendente pois no envio de processo que já existe na unidade e está atribuído ficará com mais de um andamento em aberto
  740 + //desta forma os andamentos com usuário nulo (envios do processo) serão listados depois
  741 + $atividadeDTO->setOrdStrSiglaUsuarioAtribuicao(InfraDTO::$TIPO_ORDENACAO_DESC);
  742 +
  743 + }
  744 + $atividadeDTO->setDblIdProtocolo($dblIdProcedimento);
  745 + $atividadeDTO->setDthConclusao(null);
  746 +
  747 + //sigiloso sem credencial nao considera o usuario atual
  748 + if ($strStaNivelAcessoGlobal == ProtocoloRN::$NA_SIGILOSO) {
  749 +
  750 + $acessoDTO = new AcessoDTO();
  751 + $acessoDTO->setDistinct(true);
  752 + $acessoDTO->retNumIdUsuario();
  753 + $acessoDTO->setDblIdProtocolo($dblIdProcedimento);
  754 + $acessoDTO->setStrStaTipo(AcessoRN::$TA_CREDENCIAL_PROCESSO);
  755 +
  756 + $acessoRN = new AcessoRN();
  757 + $arrAcessoDTO = $acessoRN->listar($acessoDTO);
  758 +
  759 + $atividadeDTO->setNumIdUsuario(InfraArray::converterArrInfraDTO($arrAcessoDTO, 'IdUsuario'), InfraDTO::$OPER_IN);
  760 + }
  761 + $arrAtividadeDTO = $atividadeRN->listarRN0036($atividadeDTO);
  762 +
  763 + if ($strStaNivelAcessoGlobal != ProtocoloRN::$NA_SIGILOSO) {
  764 + $arrAtividadeDTO = InfraArray::distinctArrInfraDTO($arrAtividadeDTO, 'SiglaUnidade');
  765 + }
  766 + if (count($arrAtividadeDTO) == 0) {
  767 + $result['info'] = 'Processo não possui andamentos abertos.';
  768 + $result['lista'] = array();
  769 + $result['unidades'] = array();
  770 + } else {
  771 + if (count($arrAtividadeDTO) == 1) {
  772 + $atividadeDTO = $arrAtividadeDTO[0];
  773 + if ($strStaNivelAcessoGlobal != ProtocoloRN::$NA_SIGILOSO) {
  774 + $result['info'] = 'Processo aberto somente na unidade:';
  775 + $result['unidades'][] = array(
  776 + 'id' => $atividadeDTO->getNumIdUnidade(),
  777 + 'nome' => $atividadeDTO->getStrSiglaUnidade()
  778 + );
  779 + $result['lista'][] = array(
  780 + 'sigla' => $atividadeDTO->getStrSiglaUnidade()
  781 + );
  782 + } else {
  783 + $result['info'] = 'Processo aberto com o usuário:';
  784 + $atividadeDTO = $arrAtividadeDTO[0];
  785 + $result['unidades'][] = array(
  786 + 'id' => $atividadeDTO->getNumIdUnidade(),
  787 + 'nome' => $atividadeDTO->getStrSiglaUnidade()
  788 + );
  789 + $result['lista'][] = array(
  790 + 'sigla' => $atividadeDTO->getStrNomeUsuario()
  791 + );
  792 + }
  793 + } else {
  794 + if ($strStaNivelAcessoGlobal != ProtocoloRN::$NA_SIGILOSO) {
  795 + $result['info'] = 'Processo aberto nas unidades:';
  796 + foreach ($arrAtividadeDTO as $atividadeDTO) {
  797 + $result['unidades'][] = array(
  798 + 'id' => $atividadeDTO->getNumIdUnidade(),
  799 + 'nome' => $atividadeDTO->getStrSiglaUnidade()
  800 + );
  801 + $sigla = $atividadeDTO->getStrSiglaUnidade();
  802 + if ($atividadeDTO->getNumIdUsuarioAtribuicao() != null) {
  803 + $sigla .= ' (atribuído a ' . $atividadeDTO->getStrNomeUsuarioAtribuicao() . ')';
  804 + }
  805 + $result['lista'][] = array(
  806 + 'sigla' => $sigla
  807 + );
  808 + }
  809 + } else {
  810 + $result['info'] = 'Processo aberto com os usuários:';
  811 + foreach ($arrAtividadeDTO as $atividadeDTO) {
  812 + $result['unidades'][] = array(
  813 + 'id' => $atividadeDTO->getNumIdUnidade(),
  814 + 'nome' => $atividadeDTO->getStrSiglaUnidade()
  815 + );
  816 + $sigla = $atividadeDTO->getStrNomeUsuario() . ' na unidade ' . $atividadeDTO->getStrSiglaUnidade();
  817 + $result['lista'][] = array(
  818 + 'sigla' => $sigla
  819 + );
  820 + }
  821 + }
  822 + }
  823 + }
  824 +
  825 + return $result;
  826 + }
  827 +
  828 + /**
  829 + * Metodo que retorna as ciencias nos processos
  830 + * @param ProtocoloDTO $protocoloDTOParam
  831 + * @return array
  832 + */
  833 + protected function listarCienciaProcessoConectado(ProtocoloDTO $protocoloDTOParam)
  834 + {
  835 + try {
  836 + if (!$protocoloDTOParam->isSetDblIdProtocolo()) {
  837 + throw new InfraException('Protocolo não informado.');
  838 + }
  839 +
  840 + $result = array();
  841 + $mdWsSeiProcessoRN = new MdWsSeiProcessoRN();
  842 + $atividadeDTOConsulta = new AtividadeDTO();
  843 + $atividadeDTOConsulta->setDblIdProtocolo($protocoloDTOParam->getDblIdProtocolo());
  844 + $atividadeDTOConsulta->setNumIdTarefa(TarefaRN::$TI_PROCESSO_CIENCIA);
  845 + $atividadeDTOConsulta->retDthAbertura();
  846 + $atividadeDTOConsulta->retStrSiglaUnidade();
  847 + $atividadeDTOConsulta->retStrNomeTarefa();
  848 + $atividadeDTOConsulta->retStrSiglaUsuarioOrigem();
  849 + $atividadeDTOConsulta->retNumIdAtividade();
  850 + $atividadeRN = new AtividadeRN();
  851 + $ret = $atividadeRN->listarRN0036($atividadeDTOConsulta);
  852 + /** @var AtividadeDTO $atividadeDTO */
  853 + foreach ($ret as $atividadeDTO) {
  854 + $mdWsSeiProcessoDTO = new MdWsSeiProcessoDTO();
  855 + $mdWsSeiProcessoDTO->setStrTemplate($atividadeDTO->getStrNomeTarefa());
  856 + $mdWsSeiProcessoDTO->setNumIdAtividade($atividadeDTO->getNumIdAtividade());
  857 + $result[] = array(
  858 + 'data' => $atividadeDTO->getDthAbertura(),
  859 + 'unidade' => $atividadeDTO->getStrSiglaUnidade(),
  860 + 'nome' => $atividadeDTO->getStrSiglaUsuarioOrigem(),
  861 + 'descricao' => $mdWsSeiProcessoRN->traduzirTemplate($mdWsSeiProcessoDTO)
  862 + );
  863 + }
  864 +
  865 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result);
  866 + } catch (Exception $e) {
  867 + return MdWsSeiRest::formataRetornoErroREST($e);
  868 + }
  869 + }
  870 +
  871 +
  872 + /**
  873 + * Metodo que da ciencia ao processo/procedimento
  874 + * @param ProcedimentoDTO $procedimentoDTO
  875 + * @info E obrigatorio informar o id do procedimento
  876 + * @return array
  877 + */
  878 + protected function darCienciaControlado(ProcedimentoDTO $procedimentoDTOParam)
  879 + {
  880 + try {
  881 + if (!$procedimentoDTOParam->isSetDblIdProcedimento()) {
  882 + throw new InfraException('E obrigatorio informar o procedimento!');
  883 + }
  884 +
  885 + $procedimentoRN = new ProcedimentoRN();
  886 + $procedimentoRN->darCiencia($procedimentoDTOParam);
  887 +
  888 + return MdWsSeiRest::formataRetornoSucessoREST('Ciência processo realizado com sucesso!');
  889 + } catch (Exception $e) {
  890 + return MdWsSeiRest::formataRetornoErroREST($e);
  891 + }
  892 + }
  893 +
  894 + /**
  895 + * Metodo que conclui o procedimento/processo
  896 + * @param EntradaConcluirProcessoAPI $entradaConcluirProcessoAPI
  897 + * @info ele recebe o número do ProtocoloProcedimentoFormatadoPesquisa da tabela protocolo
  898 + * @return array
  899 + */
  900 + protected function concluirProcessoControlado(EntradaConcluirProcessoAPI $entradaConcluirProcessoAPI)
  901 + {
  902 + try {
  903 + if (!$entradaConcluirProcessoAPI->getProtocoloProcedimento()) {
  904 + throw new InfraException('E obrigtorio informar o protocolo do procedimento!');
  905 + }
  906 +
  907 + $objSeiRN = new SeiRN();
  908 + $objSeiRN->concluirProcesso($entradaConcluirProcessoAPI);
  909 +
  910 + return MdWsSeiRest::formataRetornoSucessoREST('Processo concluído com sucesso!');
  911 + } catch (Exception $e) {
  912 + return MdWsSeiRest::formataRetornoErroREST($e);
  913 + }
  914 + }
  915 +
  916 + /**
  917 + * Metodo que reabre o procedimento/processo
  918 + * @param EntradaReabrirProcessoAPI $entradaReabrirProcessoAPI
  919 + * @return array
  920 + */
  921 + protected function reabrirProcessoControlado(EntradaReabrirProcessoAPI $entradaReabrirProcessoAPI)
  922 + {
  923 + try {
  924 + if (!$entradaReabrirProcessoAPI->getIdProcedimento()) {
  925 + throw new InfraException('E obrigtorio informar o id do procedimento!');
  926 + }
  927 + $objSeiRN = new SeiRN();
  928 + $objSeiRN->reabrirProcesso($entradaReabrirProcessoAPI);
  929 +
  930 + return MdWsSeiRest::formataRetornoSucessoREST('Processo reaberto com sucesso!');
  931 + } catch (Exception $e) {
  932 + return MdWsSeiRest::formataRetornoErroREST($e);
  933 + }
  934 + }
  935 +
  936 + /**
  937 + * Metodo que atribui o processo a uma pessoa
  938 + * @param EntradaAtribuirProcessoAPI $entradaAtribuirProcessoAPI
  939 + * @info Os parametros IdUsuario, ProtocoloProcedimento e SinReabrir sao obrigatorios. O parametro ProtocoloProcedimento
  940 + * recebe o n?mero do ProtocoloProcedimentoFormatadoPesquisa da tabela protocolo
  941 + * @return array
  942 + */
  943 + protected function atribuirProcessoControlado(EntradaAtribuirProcessoAPI $entradaAtribuirProcessoAPI)
  944 + {
  945 + try {
  946 + if (!$entradaAtribuirProcessoAPI->getProtocoloProcedimento()) {
  947 + throw new InfraException('E obrigatorio informar o protocolo do processo!');
  948 + }
  949 + if (!$entradaAtribuirProcessoAPI->getIdUsuario()) {
  950 + throw new InfraException('E obrigatorio informar o usu?rio do processo!');
  951 + }
  952 +
  953 + $objSeiRN = new SeiRN();
  954 + $objSeiRN->atribuirProcesso($entradaAtribuirProcessoAPI);
  955 +
  956 + return MdWsSeiRest::formataRetornoSucessoREST('Processo atribuído com sucesso!');
  957 + } catch (Exception $e) {
  958 + return MdWsSeiRest::formataRetornoErroREST($e);
  959 + }
  960 + }
  961 +
  962 + /**
  963 + * Encapsula o objeto ENtradaEnviarProcessoAPI para o metodo enviarProcesso
  964 + * @param array $post
  965 + * @return EntradaEnviarProcessoAPI
  966 + */
  967 + public function encapsulaEnviarProcessoEntradaEnviarProcessoAPI(array $post)
  968 + {
  969 + $entradaEnviarProcessoAPI = new EntradaEnviarProcessoAPI();
  970 + if (isset($post['numeroProcesso'])) {
  971 + $entradaEnviarProcessoAPI->setProtocoloProcedimento($post['numeroProcesso']);
  972 + }
  973 + if (isset($post['unidadesDestino'])) {
  974 + $entradaEnviarProcessoAPI->setUnidadesDestino(explode(',', $post['unidadesDestino']));
  975 + }
  976 + if (isset($post['sinManterAbertoUnidade'])) {
  977 + $entradaEnviarProcessoAPI->setSinManterAbertoUnidade($post['sinManterAbertoUnidade']);
  978 + }
  979 + if (isset($post['sinRemoverAnotacao'])) {
  980 + $entradaEnviarProcessoAPI->setSinRemoverAnotacao($post['sinRemoverAnotacao']);
  981 + }
  982 + if (isset($post['sinEnviarEmailNotificacao'])) {
  983 + $entradaEnviarProcessoAPI->setSinEnviarEmailNotificacao($post['sinEnviarEmailNotificacao']);
  984 + } else {
  985 + $entradaEnviarProcessoAPI->setSinEnviarEmailNotificacao('N');
  986 + }
  987 + if (isset($post['dataRetornoProgramado'])) {
  988 + $entradaEnviarProcessoAPI->setDataRetornoProgramado($post['dataRetornoProgramado']);
  989 + }
  990 + if (isset($post['diasRetornoProgramado'])) {
  991 + $entradaEnviarProcessoAPI->setDiasRetornoProgramado($post['diasRetornoProgramado']);
  992 + }
  993 + if (isset($post['sinDiasUteisRetornoProgramado'])) {
  994 + $entradaEnviarProcessoAPI->setSinDiasUteisRetornoProgramado($post['sinDiasUteisRetornoProgramado']);
  995 + }
  996 + if (isset($post['sinReabrir'])) {
  997 + $entradaEnviarProcessoAPI->setSinReabrir($post['sinReabrir']);
  998 + }
  999 +
  1000 + return $entradaEnviarProcessoAPI;
  1001 + }
  1002 +
  1003 + /**
  1004 + * Metodo que envia o processo para outra unidade
  1005 + * @param EntradaEnviarProcessoAPI $entradaEnviarProcessoAPI
  1006 + * @info Metodo auxiliar para encapsular dados encapsulaEnviarProcessoEntradaEnviarProcessoAPI
  1007 + * @return array
  1008 + */
  1009 + protected function enviarProcessoControlado(EntradaEnviarProcessoAPI $entradaEnviarProcessoAPI)
  1010 + {
  1011 + try {
  1012 + $objSeiRN = new SeiRN();
  1013 + $objSeiRN->enviarProcesso($entradaEnviarProcessoAPI);
  1014 +
  1015 + return MdWsSeiRest::formataRetornoSucessoREST('Processo enviado com sucesso!');
  1016 + } catch (Exception $e) {
  1017 + return MdWsSeiRest::formataRetornoErroREST($e);
  1018 + }
  1019 + }
  1020 +
  1021 + /**
  1022 + * Método que verifica o acesso a um processo ou documento
  1023 + * @param ProtocoloDTO $protocoloDTOParam
  1024 + * - Se acesso liberado e chamar autenticação for false, o usuário não pode de jeito nenhum visualizar o processo/documento
  1025 + * @return array
  1026 + */
  1027 + protected function verificaAcessoConectado(ProtocoloDTO $protocoloDTOParam)
  1028 + {
  1029 + try {
  1030 + $acessoLiberado = false;
  1031 + $chamarAutenticacao = false;
  1032 + $protocoloRN = new ProtocoloRN();
  1033 + $protocoloDTO = new ProtocoloDTO();
  1034 + $protocoloDTO->setDblIdProtocolo($protocoloDTOParam->getDblIdProtocolo());
  1035 + $protocoloDTO->retStrStaNivelAcessoGlobal();
  1036 + $protocoloDTO->retDblIdProtocolo();
  1037 + $protocoloDTO = $protocoloRN->consultarRN0186($protocoloDTO);
  1038 + if (!$protocoloDTO) {
  1039 + throw new Exception('Processo não encontrado!');
  1040 + }
  1041 + if ($protocoloDTO->getStrStaNivelAcessoGlobal() == ProtocoloRN::$NA_SIGILOSO) {
  1042 + $objPesquisaProtocoloDTO = new PesquisaProtocoloDTO();
  1043 + $objPesquisaProtocoloDTO->setStrStaTipo(ProtocoloRN::$TPP_PROCEDIMENTOS);
  1044 + $objPesquisaProtocoloDTO->setStrStaAcesso(ProtocoloRN::$TAP_AUTORIZADO);
  1045 + $objPesquisaProtocoloDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo());
  1046 +
  1047 + $objProtocoloRN = new ProtocoloRN();
  1048 + $arrProtocoloDTO = $objProtocoloRN->pesquisarRN0967($objPesquisaProtocoloDTO);
  1049 + if ($arrProtocoloDTO) {
  1050 + $chamarAutenticacao = true;
  1051 + }
  1052 + } else {
  1053 + $acessoLiberado = true;
  1054 + $chamarAutenticacao = false;
  1055 + }
  1056 +
  1057 + return MdWsSeiRest::formataRetornoSucessoREST(
  1058 + null,
  1059 + array('acessoLiberado' => $acessoLiberado, 'chamarAutenticacao' => $chamarAutenticacao)
  1060 + );
  1061 +
  1062 + } catch (Exception $e) {
  1063 + return MdWsSeiRest::formataRetornoErroREST($e);
  1064 + }
  1065 + }
  1066 +
  1067 + /**
  1068 + * Identifica o acesso do usuário em um processo
  1069 + * @param UsuarioDTO $usuarioDTO
  1070 + * @param ProtocoloDTO $protocoloDTO
  1071 + * @return array
  1072 + */
  1073 + public function apiIdentificacaoAcesso(UsuarioDTO $usuarioDTO, ProtocoloDTO $protocoloDTO)
  1074 + {
  1075 + try {
  1076 + $objInfraSip = new InfraSip(SessaoSEI::getInstance());
  1077 + $objInfraSip->autenticar(SessaoSEI::getInstance()->getNumIdOrgaoUsuario(), null, SessaoSEI::getInstance()->getStrSiglaUsuario(), $usuarioDTO->getStrSenha());
  1078 + AuditoriaSEI::getInstance()->auditar('usuario_validar_acesso');
  1079 + $ret = $this->verificaAcesso($protocoloDTO);
  1080 + if (!$ret['sucesso']) {
  1081 + return $ret;
  1082 + }
  1083 + $acessoAutorizado = false;
  1084 + if ($ret['data']['acessoLiberado'] || $ret['data']['chamarAutenticacao']) {
  1085 + $acessoAutorizado = true;
  1086 + }
  1087 +
  1088 + return MdWsSeiRest::formataRetornoSucessoREST(null, array('acessoAutorizado' => $acessoAutorizado));
  1089 + } catch (InfraException $e) {
  1090 + $infraValidacaoDTO = $e->getArrObjInfraValidacao()[0];
  1091 + $eAuth = new Exception($infraValidacaoDTO->getStrDescricao(), $e->getCode(), $e);
  1092 + return MdWsSeiRest::formataRetornoErroREST($eAuth);
  1093 + } catch (Exception $e) {
  1094 + return MdWsSeiRest::formataRetornoErroREST($e);
  1095 + }
  1096 + }
  1097 +
  1098 + /**
  1099 + * Método que consulta os processos no Solar
  1100 + * @param MdWsSeiPesquisaProtocoloSolrDTO $pesquisaProtocoloSolrDTO
  1101 + * @return array
  1102 + */
  1103 + protected function pesquisarProcessosSolarConectado(MdWsSeiPesquisaProtocoloSolrDTO $pesquisaProtocoloSolrDTO)
  1104 + {
  1105 + try {
  1106 + $partialfields = '';
  1107 +
  1108 + if ($pesquisaProtocoloSolrDTO->isSetStrDescricao() && $pesquisaProtocoloSolrDTO->getStrDescricao() != null) {
  1109 + if ($partialfields != '') {
  1110 + $partialfields .= ' AND ';
  1111 + }
  1112 + $partialfields .= '(' . SolrUtil::formatarOperadores($pesquisaProtocoloSolrDTO->getStrDescricao(), 'desc') . ')';
  1113 + }
  1114 +
  1115 + if ($pesquisaProtocoloSolrDTO->isSetStrObservacao() && $pesquisaProtocoloSolrDTO->getStrObservacao() != null) {
  1116 + if ($partialfields != '') {
  1117 + $partialfields .= ' AND ';
  1118 + }
  1119 + $partialfields .= '(' . SolrUtil::formatarOperadores($pesquisaProtocoloSolrDTO->getStrObservacao(), 'obs_' . SessaoSEI::getInstance()->getNumIdUnidadeAtual()) . ')';
  1120 + }
  1121 +
  1122 + //o- verificar lógica do solar
  1123 + if ($pesquisaProtocoloSolrDTO->isSetDblIdProcedimento() && $pesquisaProtocoloSolrDTO->getDblIdProcedimento() != null) {
  1124 + if ($partialfields != '') {
  1125 + $partialfields .= ' AND ';
  1126 + }
  1127 +
  1128 + $objRelProtocoloProtocoloDTO = new RelProtocoloProtocoloDTO();
  1129 + $objRelProtocoloProtocoloDTO->retDblIdProtocolo2();
  1130 + $objRelProtocoloProtocoloDTO->setStrStaAssociacao(RelProtocoloProtocoloRN::$TA_PROCEDIMENTO_ANEXADO);
  1131 + $objRelProtocoloProtocoloDTO->setDblIdProtocolo1($pesquisaProtocoloSolrDTO->getDblIdProcedimento());
  1132 +
  1133 + $objRelProtocoloProtocoloRN = new RelProtocoloProtocoloRN();
  1134 + $arrIdProcessosAnexados = InfraArray::converterArrInfraDTO($objRelProtocoloProtocoloRN->listarRN0187($objRelProtocoloProtocoloDTO), 'IdProtocolo2');
  1135 +
  1136 + if (count($arrIdProcessosAnexados) == 0) {
  1137 + $partialfields .= '(id_proc:' . $pesquisaProtocoloSolrDTO->getDblIdProcedimento() . ')';
  1138 + } else {
  1139 +
  1140 + $strProcessos = 'id_proc:' . $pesquisaProtocoloSolrDTO->getDblIdProcedimento();
  1141 + foreach ($arrIdProcessosAnexados as $dblIdProcessoAnexado) {
  1142 + $strProcessos .= ' OR id_proc:' . $dblIdProcessoAnexado;
  1143 + }
  1144 +
  1145 + $partialfields .= '(' . $strProcessos . ')';
  1146 + }
  1147 + }
  1148 +
  1149 + if ($pesquisaProtocoloSolrDTO->isSetStrProtocoloPesquisa() && $pesquisaProtocoloSolrDTO->getStrProtocoloPesquisa() != null) {
  1150 + if ($partialfields != '') {
  1151 + $partialfields .= ' AND ';
  1152 + }
  1153 + $partialfields .= '(prot_pesq:*' . InfraUtil::retirarFormatacao($pesquisaProtocoloSolrDTO->getStrProtocoloPesquisa(), false) . '*)';
  1154 + }
  1155 +
  1156 + if ($pesquisaProtocoloSolrDTO->isSetNumIdTipoProcedimento() && $pesquisaProtocoloSolrDTO->getNumIdTipoProcedimento() != null) {
  1157 + if ($partialfields != '') {
  1158 + $partialfields .= ' AND ';
  1159 + }
  1160 + $partialfields .= '(id_tipo_proc:' . $pesquisaProtocoloSolrDTO->getNumIdTipoProcedimento() . ')';
  1161 + }
  1162 +
  1163 + if ($pesquisaProtocoloSolrDTO->isSetNumIdSerie() && $pesquisaProtocoloSolrDTO->getNumIdSerie() != null) {
  1164 + if ($partialfields != '') {
  1165 + $partialfields .= ' AND ';
  1166 + }
  1167 + $partialfields .= '(id_serie:' . $pesquisaProtocoloSolrDTO->getNumIdSerie() . ')';
  1168 + }
  1169 +
  1170 + if ($pesquisaProtocoloSolrDTO->isSetStrNumero() && $pesquisaProtocoloSolrDTO->getStrNumero() != null) {
  1171 + if ($partialfields != '') {
  1172 + $partialfields .= ' AND ';
  1173 + }
  1174 + $partialfields .= '(numero:*' . $pesquisaProtocoloSolrDTO->getStrNumero() . '*)';
  1175 + }
  1176 +
  1177 + $dtaInicio = null;
  1178 + $dtaFim = null;
  1179 + if($pesquisaProtocoloSolrDTO->isSetStrStaTipoData()){
  1180 + if ($pesquisaProtocoloSolrDTO->getStrStaTipoData() == '0') {
  1181 + $dtaInicio = $pesquisaProtocoloSolrDTO->getDtaInicio();
  1182 + $dtaFim = $pesquisaProtocoloSolrDTO->getDtaFim();
  1183 + } else if ($pesquisaProtocoloSolrDTO->getStrStaTipoData() == '30') {
  1184 + $dtaInicio = InfraData::calcularData(30, InfraData::$UNIDADE_DIAS, InfraData::$SENTIDO_ATRAS);
  1185 + $dtaFim = InfraData::getStrDataAtual();
  1186 + } else if ($pesquisaProtocoloSolrDTO->getStrStaTipoData() == '60') {
  1187 + $dtaInicio = InfraData::calcularData(60, InfraData::$UNIDADE_DIAS, InfraData::$SENTIDO_ATRAS);
  1188 + $dtaFim = InfraData::getStrDataAtual();
  1189 + }
  1190 + }
  1191 +
  1192 + if ($dtaInicio != null && $dtaFim != null) {
  1193 + $dia1 = substr($dtaInicio, 0, 2);
  1194 + $mes1 = substr($dtaInicio, 3, 2);
  1195 + $ano1 = substr($dtaInicio, 6, 4);
  1196 +
  1197 + $dia2 = substr($dtaFim, 0, 2);
  1198 + $mes2 = substr($dtaFim, 3, 2);
  1199 + $ano2 = substr($dtaFim, 6, 4);
  1200 +
  1201 + if ($partialfields != '') {
  1202 + $partialfields .= ' AND ';
  1203 + }
  1204 +
  1205 + $partialfields .= 'dta_ger:[' . $ano1 . '-' . $mes1 . '-' . $dia1 . 'T00:00:00Z TO ' . $ano2 . '-' . $mes2 . '-' . $dia2 . 'T00:00:00Z]';
  1206 + }
  1207 +
  1208 + $objUnidadeDTO = new UnidadeDTO();
  1209 + $objUnidadeDTO->setBolExclusaoLogica(false);
  1210 + $objUnidadeDTO->retStrSinProtocolo();
  1211 + $objUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  1212 +
  1213 + $objUnidadeRN = new UnidadeRN();
  1214 + $objUnidadeDTOAtual = $objUnidadeRN->consultarRN0125($objUnidadeDTO);
  1215 +
  1216 + if ($objUnidadeDTOAtual->getStrSinProtocolo() == 'N') {
  1217 +
  1218 + if ($partialfields != '') {
  1219 + $partialfields .= ' AND ';
  1220 + }
  1221 +
  1222 + $partialfields .= '(tipo_aces:P OR id_uni_aces:*;' . SessaoSEI::getInstance()->getNumIdUnidadeAtual() . ';*)';
  1223 + }
  1224 +
  1225 + if($pesquisaProtocoloSolrDTO->isSetNumIdGrupoAcompanhamentoProcedimento() && $pesquisaProtocoloSolrDTO->getNumIdGrupoAcompanhamentoProcedimento()) {
  1226 + $protocoloRN = new ProtocoloRN();
  1227 + $mdWsSeiProtocoloDTO = new MdWsSeiProtocoloDTO();
  1228 + $mdWsSeiProtocoloDTO->setNumIdGrupoAcompanhamentoProcedimento($pesquisaProtocoloSolrDTO->getNumIdGrupoAcompanhamentoProcedimento());
  1229 + $mdWsSeiProtocoloDTO->retDblIdProtocolo();
  1230 +
  1231 + $ret = $protocoloRN->listarRN0668($mdWsSeiProtocoloDTO);
  1232 + if(!$ret){
  1233 + return MdWsSeiRest::formataRetornoSucessoREST(null, array(), 0);
  1234 + }
  1235 + if ($partialfields != '') {
  1236 + $partialfields .= ' AND ';
  1237 + }
  1238 + $arrIdProcessosAcompanhamento = array();
  1239 + /** @var ProtocoloDTO $protocoloDTO */
  1240 + foreach($ret as $protocoloDTO){
  1241 + $arrIdProcessosAcompanhamento[] = 'id_proc:' . $protocoloDTO->getDblIdProtocolo();
  1242 + }
  1243 + $partialfields .= '(' . implode(' OR ', $arrIdProcessosAcompanhamento) . ')';
  1244 + }
  1245 +
  1246 + $parametros = new stdClass();
  1247 + if($pesquisaProtocoloSolrDTO->isSetStrPalavrasChave()){
  1248 + $parametros->q = SolrUtil::formatarOperadores($pesquisaProtocoloSolrDTO->getStrPalavrasChave());
  1249 + }
  1250 +
  1251 + if ($parametros->q != '' && $partialfields != '') {
  1252 + $parametros->q = '(' . $parametros->q . ') AND ' . $partialfields;
  1253 + } else if ($partialfields != '') {
  1254 + $parametros->q = $partialfields;
  1255 + }
  1256 +
  1257 + $parametros->q = utf8_encode($parametros->q);
  1258 + $start = 0;
  1259 + $limit = 100;
  1260 + if($pesquisaProtocoloSolrDTO->getNumPaginaAtual()){
  1261 + $start = $pesquisaProtocoloSolrDTO->getNumPaginaAtual();
  1262 + }
  1263 + if($pesquisaProtocoloSolrDTO->getNumMaxRegistrosRetorno()){
  1264 + $limit = $pesquisaProtocoloSolrDTO->getNumMaxRegistrosRetorno();
  1265 + }
  1266 + $parametros->start = $start;
  1267 + $parametros->rows = $limit;
  1268 + $parametros->sort = 'dta_ger desc, id_prot desc';
  1269 +
  1270 + $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';
  1271 +
  1272 + try {
  1273 + $resultados = file_get_contents($urlBusca, false);
  1274 + } catch (Exception $e) {
  1275 + throw new InfraException('Erro realizando pesquisa no Solar.', $e, urldecode($urlBusca), false);
  1276 + }
  1277 +
  1278 + if ($resultados == '') {
  1279 + throw new InfraException('Nenhum retorno encontrado no resultado da pesquisa do Solar, verificar indexação.');
  1280 + }
  1281 +
  1282 + $xml = simplexml_load_string($resultados);
  1283 + $arrRet = $xml->xpath('/response/result/@numFound');
  1284 + $total = array_shift($arrRet)->__toString();
  1285 + $arrIdProcessos = array();
  1286 + $registros = $xml->xpath('/response/result/doc');
  1287 + $numRegistros = sizeof($registros);
  1288 +
  1289 + $result = array();
  1290 + for ($i = 0; $i < $numRegistros; $i++) {
  1291 + $arrIdProcessos[] = SolrUtil::obterTag($registros[$i], 'id_proc', 'long');
  1292 + }
  1293 +
  1294 + if($arrIdProcessos){
  1295 + $protocoloRN = new ProtocoloRN();
  1296 + $protocoloDTO = new MdWsSeiProtocoloDTO();
  1297 + $protocoloDTO->setDblIdProtocolo($arrIdProcessos, InfraDTO::$OPER_IN);
  1298 + $protocoloDTO->retDblIdProtocolo();
  1299 + $protocoloDTO->retNumIdUnidadeGeradora();
  1300 + $protocoloDTO->retStrStaProtocolo();
  1301 + $protocoloDTO->retStrProtocoloFormatado();
  1302 + $protocoloDTO->retStrNomeTipoProcedimentoProcedimento();
  1303 + $protocoloDTO->retStrDescricao();
  1304 + $protocoloDTO->retStrSiglaUnidadeGeradora();
  1305 + $protocoloDTO->retStrStaGrauSigilo();
  1306 + $protocoloDTO->retStrStaNivelAcessoLocal();
  1307 + $protocoloDTO->retStrStaNivelAcessoGlobal();
  1308 + $protocoloDTO->retStrSinCienciaProcedimento();
  1309 + $protocoloDTO->retStrStaEstado();
  1310 + $arrProtocoloDTO = $protocoloRN->listarRN0668($protocoloDTO);
  1311 + $result = $this->montaRetornoListagemProcessos($arrProtocoloDTO, null);
  1312 + }
  1313 +
  1314 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $total);
  1315 + } catch (Exception $e) {
  1316 + return MdWsSeiRest::formataRetornoErroREST($e);
  1317 + }
  1318 + }
  1319 +
  1320 +
  1321 +}
0 1322 \ No newline at end of file
... ...
codigo-fonte/mod-wssei/rn/MdWsSeiHipoteseLegalRN.php 0 → 100644
... ... @@ -0,0 +1,1321 @@
  1 +<?
  2 +require_once dirname(__FILE__) . '/../../../SEI.php';
  3 +
  4 +class MdWsSeiProcedimentoRN extends InfraRN
  5 +{
  6 +
  7 + protected function inicializarObjInfraIBanco()
  8 + {
  9 + return BancoSEI::getInstance();
  10 + }
  11 +
  12 + /**
  13 + * Consulta o processo pelo protocolo
  14 + * @param $protocolo
  15 + * @return array
  16 + */
  17 + public function apiConsultarProcessoDigitado($protocolo){
  18 + try{
  19 + $result = ProcedimentoINT::pesquisarDigitadoRI1023($protocolo);
  20 +
  21 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result);
  22 + }catch (Exception $e){
  23 + return MdWsSeiRest::formataRetornoErroREST($e);
  24 + }
  25 + }
  26 +
  27 + /**
  28 + * Retorna o total de unidades do processo
  29 + * @param ProtocoloDTO $protocoloDTO
  30 + * @return array
  31 + */
  32 + protected function listarUnidadesProcessoConectado(ProtocoloDTO $protocoloDTO)
  33 + {
  34 + try {
  35 + if (!$protocoloDTO->getDblIdProtocolo()) {
  36 + throw new InfraException('Protocolo não informado.');
  37 + }
  38 + $result = array();
  39 +
  40 + $relProtocoloProtocoloDTOConsulta = new RelProtocoloProtocoloDTO();
  41 + $relProtocoloProtocoloDTOConsulta->setDblIdProtocolo1($protocoloDTO->getDblIdProtocolo());
  42 + $relProtocoloProtocoloDTOConsulta->retDblIdProtocolo1();
  43 + $relProtocoloProtocoloDTOConsulta->setNumMaxRegistrosRetorno(1);
  44 + $relProtocoloProtocoloDTOConsulta->setNumPaginaAtual(0);
  45 + $relProtocoloProtocoloRN = new RelProtocoloProtocoloRN();
  46 + $ret = $relProtocoloProtocoloRN->listarRN0187($relProtocoloProtocoloDTOConsulta);
  47 + if ($ret) {
  48 + /** @var RelProtocoloProtocoloDTO $relProtocoloProtocoloDTO */
  49 + $relProtocoloProtocoloDTO = $ret[0];
  50 + $result['processo'] = $relProtocoloProtocoloDTO->getDblIdProtocolo1();
  51 + $result['unidades'] = $relProtocoloProtocoloDTOConsulta->getNumTotalRegistros();
  52 + }
  53 +
  54 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result);
  55 + } catch (Exception $e) {
  56 + return MdWsSeiRest::formataRetornoErroREST($e);
  57 + }
  58 + }
  59 +
  60 + /**
  61 + * Método que lista o sobrestamento de um processo
  62 + * @param AtividadeDTO $atividadeDTOParam
  63 + * @return array
  64 + */
  65 + protected function listarSobrestamentoProcessoConectado(AtividadeDTO $atividadeDTOParam)
  66 + {
  67 + try {
  68 + if (!$atividadeDTOParam->isSetDblIdProtocolo()) {
  69 + throw new InfraException('Protocolo não informado.');
  70 + }
  71 + if (!$atividadeDTOParam->isSetNumIdUnidade()) {
  72 + $atividadeDTOParam->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  73 + }
  74 +
  75 + $result = array();
  76 + $atividadeDTOConsulta = new AtividadeDTO();
  77 + $atividadeDTOConsulta->retTodos();
  78 + $atividadeDTOConsulta->setDblIdProtocolo($atividadeDTOParam->getDblIdProtocolo());
  79 + $atividadeDTOConsulta->setDthConclusao(null);
  80 + $atividadeDTOConsulta->setNumIdTarefa(TarefaRN::$TI_SOBRESTAMENTO);
  81 + $atividadeDTOConsulta->setNumMaxRegistrosRetorno(1);
  82 + $atividadeRN = new AtividadeRN();
  83 + $ret = $atividadeRN->listarRN0036($atividadeDTOConsulta);
  84 +
  85 + /** @var AtividadeDTO $atividadeDTO */
  86 + foreach ($ret as $atividadeDTO) {
  87 + $result[] = array(
  88 + 'idAtividade' => $atividadeDTO->getNumIdAtividade(),
  89 + 'idProtocolo' => $atividadeDTO->getDblIdProtocolo(),
  90 + 'dthAbertura' => $atividadeDTO->getDthAbertura(),
  91 + 'sinInicial' => $atividadeDTO->getStrSinInicial(),
  92 + 'dtaPrazo' => $atividadeDTO->getDtaPrazo(),
  93 + 'tipoVisualizacao' => $atividadeDTO->getNumTipoVisualizacao(),
  94 + 'dthConclusao' => $atividadeDTO->getDthConclusao(),
  95 + );
  96 + }
  97 +
  98 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result);
  99 + } catch (Exception $e) {
  100 + return MdWsSeiRest::formataRetornoErroREST($e);
  101 + }
  102 + }
  103 +
  104 + /**
  105 + * Metodo de sobrestamento de processo
  106 + * @param RelProtocoloProtocoloDTO $relProtocoloProtocoloDTO
  107 + * @return array
  108 + */
  109 + protected function sobrestamentoProcessoControlado(RelProtocoloProtocoloDTO $relProtocoloProtocoloDTO)
  110 + {
  111 + try {
  112 + if(!$relProtocoloProtocoloDTO->isSetDblIdProtocolo2()){
  113 + throw new Exception('Processo não informado!');
  114 + }
  115 + if(!$relProtocoloProtocoloDTO->isSetStrMotivo()){
  116 + throw new Exception('Informe o motivo!');
  117 + }
  118 + $procedimentoRN = new ProcedimentoRN();
  119 + $procedimentoRN->sobrestarRN1014(array($relProtocoloProtocoloDTO));
  120 +
  121 + return MdWsSeiRest::formataRetornoSucessoREST('Processo sobrestado com sucesso');
  122 + } catch (Exception $e) {
  123 + return MdWsSeiRest::formataRetornoErroREST($e);
  124 + }
  125 + }
  126 +
  127 + /**
  128 + * @param $protocolo
  129 + * @return array
  130 + */
  131 + protected function removerSobrestamentoProcessoControlado(ProcedimentoDTO $procedimentoDTOParam)
  132 + {
  133 + try {
  134 + if (!$procedimentoDTOParam->getDblIdProcedimento()) {
  135 + throw new InfraException('Procedimento não informado.');
  136 + }
  137 + $seiRN = new SeiRN();
  138 + $entradaRemoverSobrestamentoProcessoAPI = new EntradaRemoverSobrestamentoProcessoAPI();
  139 + $entradaRemoverSobrestamentoProcessoAPI->setIdProcedimento($procedimentoDTOParam->getDblIdProcedimento());
  140 +
  141 + $seiRN->removerSobrestamentoProcesso($entradaRemoverSobrestamentoProcessoAPI);
  142 +
  143 + return MdWsSeiRest::formataRetornoSucessoREST('Sobrestar cancelado com sucesso.');
  144 + } catch (Exception $e) {
  145 + return MdWsSeiRest::formataRetornoErroREST($e);
  146 + }
  147 + }
  148 +
  149 + /**
  150 + * Método que retorna os procedimentos com acompanhamento do usuário
  151 + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOConsulta
  152 + * @return array
  153 + */
  154 + protected function listarProcedimentoAcompanhamentoUsuarioConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam)
  155 + {
  156 + try {
  157 + $usuarioAtribuicaoAtividade = null;
  158 + $mdWsSeiProtocoloDTOConsulta = new MdWsSeiProtocoloDTO();
  159 + if ($mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()) {
  160 + $mdWsSeiProtocoloDTOConsulta->setNumIdGrupoAcompanhamentoProcedimento($mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento());
  161 + }
  162 +
  163 + if (!$mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioGeradorAcompanhamento()) {
  164 + $mdWsSeiProtocoloDTOConsulta->setNumIdUsuarioGeradorAcompanhamento(SessaoSEI::getInstance()->getNumIdUsuario());
  165 + } else {
  166 + $mdWsSeiProtocoloDTOConsulta->setNumIdUsuarioGeradorAcompanhamento($mdWsSeiProtocoloDTOParam->getNumIdUsuarioGeradorAcompanhamento());
  167 + }
  168 +
  169 + if (is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) {
  170 + $mdWsSeiProtocoloDTOConsulta->setNumPaginaAtual(0);
  171 + } else {
  172 + $mdWsSeiProtocoloDTOConsulta->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual());
  173 + }
  174 +
  175 + if (!$mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) {
  176 + $mdWsSeiProtocoloDTOConsulta->setNumMaxRegistrosRetorno(10);
  177 + } else {
  178 + $mdWsSeiProtocoloDTOConsulta->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno());
  179 + }
  180 +
  181 + $protocoloRN = new ProtocoloRN();
  182 + $mdWsSeiProtocoloDTOConsulta->retTodos();
  183 + $mdWsSeiProtocoloDTOConsulta->retDblIdProtocolo();
  184 + $mdWsSeiProtocoloDTOConsulta->retStrNomeTipoProcedimentoProcedimento();
  185 + $mdWsSeiProtocoloDTOConsulta->retStrSiglaUnidadeGeradora();
  186 + $mdWsSeiProtocoloDTOConsulta->retStrSinCienciaProcedimento();
  187 + $mdWsSeiProtocoloDTOConsulta->setOrdDthGeracaoAcompanhamento(InfraDTO::$TIPO_ORDENACAO_ASC);
  188 + $mdWsSeiProtocoloDTOConsulta->retStrNomeTipoProcedimentoProcedimento();
  189 +
  190 + $ret = $protocoloRN->listarRN0668($mdWsSeiProtocoloDTOConsulta);
  191 + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade);
  192 +
  193 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $mdWsSeiProtocoloDTOConsulta->getNumTotalRegistros());
  194 + } catch (Exception $e) {
  195 + return MdWsSeiRest::formataRetornoErroREST($e);
  196 + }
  197 + }
  198 +
  199 + /**
  200 + * Método que retorna os procedimentos com acompanhamento da unidade
  201 + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOConsulta
  202 + * @return array
  203 + */
  204 + protected function listarProcedimentoAcompanhamentoUnidadeConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam)
  205 + {
  206 + try {
  207 + $acompanhamentoRN = new AcompanhamentoRN();
  208 + $acompanhamentoDTO = new AcompanhamentoDTO();
  209 + $acompanhamentoDTO->setOrdNumIdAcompanhamento(InfraDTO::$TIPO_ORDENACAO_DESC);
  210 + if(!$mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()){
  211 + throw new Exception('O grupo deve ser informado!');
  212 + }else{
  213 + $acompanhamentoDTO->setNumIdGrupoAcompanhamento($mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento());
  214 + }
  215 + if (is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) {
  216 + $acompanhamentoDTO->setNumPaginaAtual(0);
  217 + } else {
  218 + $acompanhamentoDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual());
  219 + }
  220 +
  221 + if (!$mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) {
  222 + $acompanhamentoDTO->setNumMaxRegistrosRetorno(10);
  223 + } else {
  224 + $acompanhamentoDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno());
  225 + }
  226 +
  227 + $arrAcompanhamentoDTO = $acompanhamentoRN->listarAcompanhamentosUnidade($acompanhamentoDTO);
  228 + $totalRegistros = $acompanhamentoDTO->getNumTotalRegistros() ?: 0;
  229 +
  230 + $ret = array();
  231 + foreach($arrAcompanhamentoDTO as $acompanhamentoDTO){
  232 + $ret[] = $acompanhamentoDTO->getObjProcedimentoDTO();
  233 + }
  234 + $result = $this->montaRetornoListagemProcessos($ret, null);
  235 +
  236 +
  237 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $totalRegistros);
  238 + } catch (Exception $e) {
  239 + return MdWsSeiRest::formataRetornoErroREST($e);
  240 + }
  241 + }
  242 +
  243 + /**
  244 + * Método que pesquisa todos o procedimentos em todas as unidades
  245 + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam
  246 + * @return array
  247 + */
  248 + protected function pesquisarTodosProcessosConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam)
  249 + {
  250 + try {
  251 + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO();
  252 +
  253 + $usuarioAtribuicaoAtividade = null;
  254 + if ($mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioAtribuicaoAtividade()) {
  255 + $usuarioAtribuicaoAtividade = $mdWsSeiProtocoloDTOParam->getNumIdUsuarioAtribuicaoAtividade();
  256 + }
  257 +
  258 + if (!is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) {
  259 + $pesquisaPendenciaDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual());
  260 + } else {
  261 + $pesquisaPendenciaDTO->setNumPaginaAtual(0);
  262 + }
  263 +
  264 + if ($mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) {
  265 + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno());
  266 + } else {
  267 + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno(10);
  268 + }
  269 + if ($mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()) {
  270 + $pesquisaPendenciaDTO->setNumIdGrupoAcompanhamentoProcedimento(
  271 + $mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento()
  272 + );
  273 + }
  274 + if ($mdWsSeiProtocoloDTOParam->isSetStrProtocoloFormatadoPesquisa()) {
  275 + $strProtocoloFormatado = InfraUtil::retirarFormatacao(
  276 + $mdWsSeiProtocoloDTOParam->getStrProtocoloFormatadoPesquisa(), false
  277 + );
  278 + $pesquisaPendenciaDTO->setStrProtocoloFormatadoPesquisaProtocolo(
  279 + '%' . $strProtocoloFormatado . '%',
  280 + InfraDTO::$OPER_LIKE
  281 + );
  282 + }
  283 +
  284 + $atividadeRN = new MdWsSeiAtividadeRN();
  285 + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO));
  286 + $pesquisaPendenciaDTO->setStrSinAnotacoes('S');
  287 + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S');
  288 + $pesquisaPendenciaDTO->setStrSinCredenciais('S');
  289 + $pesquisaPendenciaDTO->setStrSinSituacoes('S');
  290 + $pesquisaPendenciaDTO->setStrSinMarcadores('S');
  291 +
  292 + $ret = $atividadeRN->listarPendencias($pesquisaPendenciaDTO);
  293 + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade);
  294 +
  295 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $pesquisaPendenciaDTO->getNumTotalRegistros());
  296 + } catch (Exception $e) {
  297 + return MdWsSeiRest::formataRetornoErroREST($e);
  298 + }
  299 + }
  300 +
  301 + /**
  302 + * Método que retorna os procedimentos com acompanhamento com filtro opcional de grupo de acompanhamento e protocolo
  303 + * formatado
  304 + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam
  305 + * @return array
  306 + */
  307 + protected function pesquisarProcedimentoConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam)
  308 + {
  309 + try {
  310 + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO();
  311 +
  312 + $usuarioAtribuicaoAtividade = null;
  313 + if ($mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioAtribuicaoAtividade()) {
  314 + $usuarioAtribuicaoAtividade = $mdWsSeiProtocoloDTOParam->getNumIdUsuarioAtribuicaoAtividade();
  315 + }
  316 +
  317 + if (!is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) {
  318 + $pesquisaPendenciaDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual());
  319 + } else {
  320 + $pesquisaPendenciaDTO->setNumPaginaAtual(0);
  321 + }
  322 +
  323 + if ($mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) {
  324 + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno());
  325 + } else {
  326 + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno(10);
  327 + }
  328 + if ($mdWsSeiProtocoloDTOParam->isSetNumIdGrupoAcompanhamentoProcedimento()) {
  329 + $pesquisaPendenciaDTO->setNumIdGrupoAcompanhamentoProcedimento(
  330 + $mdWsSeiProtocoloDTOParam->getNumIdGrupoAcompanhamentoProcedimento()
  331 + );
  332 + }
  333 + if ($mdWsSeiProtocoloDTOParam->isSetStrProtocoloFormatadoPesquisa()) {
  334 + $strProtocoloFormatado = InfraUtil::retirarFormatacao(
  335 + $mdWsSeiProtocoloDTOParam->getStrProtocoloFormatadoPesquisa(), false
  336 + );
  337 + $pesquisaPendenciaDTO->setStrProtocoloFormatadoPesquisaProtocolo(
  338 + '%' . $strProtocoloFormatado . '%',
  339 + InfraDTO::$OPER_LIKE
  340 + );
  341 + }
  342 +
  343 + $atividadeRN = new MdWsSeiAtividadeRN();
  344 + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
  345 + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  346 + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO));
  347 + $pesquisaPendenciaDTO->setStrSinAnotacoes('S');
  348 + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S');
  349 + $pesquisaPendenciaDTO->setStrSinCredenciais('S');
  350 + $pesquisaPendenciaDTO->setStrSinSituacoes('S');
  351 + $pesquisaPendenciaDTO->setStrSinMarcadores('S');
  352 +
  353 + $ret = $atividadeRN->listarPendencias($pesquisaPendenciaDTO);
  354 + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade);
  355 +
  356 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $pesquisaPendenciaDTO->getNumTotalRegistros());
  357 + } catch (Exception $e) {
  358 + return MdWsSeiRest::formataRetornoErroREST($e);
  359 + }
  360 + }
  361 +
  362 + /**
  363 + * Metodo que lista os processos
  364 + * @param MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTO
  365 + * @return array
  366 + */
  367 + protected function listarProcessosConectado(MdWsSeiProtocoloDTO $mdWsSeiProtocoloDTOParam)
  368 + {
  369 + try {
  370 + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO();
  371 +
  372 + $usuarioAtribuicaoAtividade = null;
  373 + if ($mdWsSeiProtocoloDTOParam->isSetNumIdUsuarioAtribuicaoAtividade()) {
  374 + $usuarioAtribuicaoAtividade = $mdWsSeiProtocoloDTOParam->getNumIdUsuarioAtribuicaoAtividade();
  375 + }
  376 +
  377 + if (!is_null($mdWsSeiProtocoloDTOParam->getNumPaginaAtual())) {
  378 + $pesquisaPendenciaDTO->setNumPaginaAtual($mdWsSeiProtocoloDTOParam->getNumPaginaAtual());
  379 + } else {
  380 + $pesquisaPendenciaDTO->setNumPaginaAtual(0);
  381 + }
  382 +
  383 + if ($mdWsSeiProtocoloDTOParam->isSetNumMaxRegistrosRetorno()) {
  384 + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno($mdWsSeiProtocoloDTOParam->getNumMaxRegistrosRetorno());
  385 + } else {
  386 + $pesquisaPendenciaDTO->setNumMaxRegistrosRetorno(10);
  387 + }
  388 + if ($mdWsSeiProtocoloDTOParam->getStrSinApenasMeus() == 'S') {
  389 + $pesquisaPendenciaDTO->setStrStaTipoAtribuicao('M');
  390 + }
  391 +
  392 + $atividadeRN = new MdWsSeiAtividadeRN();
  393 + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
  394 + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  395 + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO));
  396 + $pesquisaPendenciaDTO->setStrSinAnotacoes('S');
  397 + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S');
  398 + $pesquisaPendenciaDTO->setStrSinCredenciais('S');
  399 + $pesquisaPendenciaDTO->setStrSinSituacoes('S');
  400 + $pesquisaPendenciaDTO->setStrSinMarcadores('S');
  401 +
  402 + if ($mdWsSeiProtocoloDTOParam->getStrSinTipoBusca() == MdWsSeiProtocoloDTO::SIN_TIPO_BUSCA_R) {
  403 + $pesquisaPendenciaDTO->setStrSinInicial('N');
  404 + } else if ($mdWsSeiProtocoloDTOParam->getStrSinTipoBusca() == MdWsSeiProtocoloDTO::SIN_TIPO_BUSCA_G) {
  405 + $pesquisaPendenciaDTO->setStrSinInicial('S');
  406 + } else {
  407 + throw new InfraException('O tipo de busca deve ser (R)ecebidos ou (G)erados');
  408 + }
  409 + $ret = $atividadeRN->listarPendencias($pesquisaPendenciaDTO);
  410 + $result = $this->montaRetornoListagemProcessos($ret, $usuarioAtribuicaoAtividade);
  411 +
  412 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $pesquisaPendenciaDTO->getNumTotalRegistros());
  413 + } catch (Exception $e) {
  414 + return MdWsSeiRest::formataRetornoErroREST($e);
  415 + }
  416 +
  417 + }
  418 +
  419 + /**
  420 + * Metodo que monta o retorno da listagem do processo com base no retorno da consulta
  421 + * @param array $ret
  422 + * @param null $usuarioAtribuicaoAtividade
  423 + * @return array
  424 + */
  425 + private function montaRetornoListagemProcessos(array $ret, $usuarioAtribuicaoAtividade = null)
  426 + {
  427 + $result = array();
  428 + $protocoloRN = new ProtocoloRN();
  429 + foreach ($ret as $dto) {
  430 + $usuarioAtribuido = null;
  431 + $documentoNovo = 'N';
  432 + $documentoPublicado = 'N';
  433 + $possuiAnotacao = 'N';
  434 + $podeGerenciarCredenciais = 'N';
  435 + $possuiAnotacaoPrioridade = 'N';
  436 + $usuarioVisualizacao = 'N';
  437 + $tipoVisualizacao = 'N';
  438 + $retornoProgramado = 'N';
  439 + $retornoAtrasado = 'N';
  440 + $processoAberto = false;
  441 + $acaoReabrirProcesso = SessaoSEI::getInstance()->verificarPermissao('procedimento_reabrir');
  442 + $acaoRegistrarAnotacao = SessaoSEI::getInstance()->verificarPermissao('anotacao_registrar');
  443 + $processoEmTramitacao = false;
  444 + $processoSobrestado = false;
  445 + $processoAnexado = false;
  446 + $podeReabrirProcesso = false;
  447 + $podeRegistrarAnotacao = false;
  448 + $arrDadosAbertura = array();
  449 + $procedimentoDTO = null;
  450 + $resultAnotacao = array();
  451 + $protocoloDTO = new MdWsSeiProtocoloDTO();
  452 + if ($dto instanceof ProcedimentoDTO) {
  453 + $protocoloDTO = new MdWsSeiProtocoloDTO();
  454 + $protocoloDTO->setDblIdProtocolo($dto->getDblIdProcedimento());
  455 + $protocoloDTO->retDblIdProtocolo();
  456 + $protocoloDTO->retNumIdUnidadeGeradora();
  457 + $protocoloDTO->retStrStaProtocolo();
  458 + $protocoloDTO->retStrProtocoloFormatado();
  459 + $protocoloDTO->retStrNomeTipoProcedimentoProcedimento();
  460 + $protocoloDTO->retStrDescricao();
  461 + $protocoloDTO->retStrSiglaUnidadeGeradora();
  462 + $protocoloDTO->retStrStaGrauSigilo();
  463 + $protocoloDTO->retStrStaNivelAcessoLocal();
  464 + $protocoloDTO->retStrStaNivelAcessoGlobal();
  465 + $protocoloDTO->retStrSinCienciaProcedimento();
  466 + $protocoloDTO->retStrStaEstado();
  467 + $protocoloDTO = $protocoloRN->consultarRN0186($protocoloDTO);
  468 + } else {
  469 + $protocoloDTO = $dto;
  470 + }
  471 +
  472 + $processoBloqueado = $protocoloDTO->getStrStaEstado() == ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO ? 'S' : 'N';
  473 + $processoRemocaoSobrestamento = 'N';
  474 + $processoDocumentoIncluidoAssinado = 'N';
  475 + $processoPublicado = 'N';
  476 +
  477 + $atividadeRN = new MdWsSeiAtividadeRN();
  478 + $atividadeDTOConsulta = new AtividadeDTO();
  479 + $atividadeDTOConsulta->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo());
  480 + $atividadeDTOConsulta->retDblIdProtocolo();
  481 + $atividadeDTOConsulta->retNumIdTarefa();
  482 + $atividadeDTOConsulta->retNumTipoVisualizacao();
  483 + $atividadeDTOConsulta->retStrNomeUsuarioAtribuicao();
  484 + $atividadeDTOConsulta->retNumIdUsuarioVisualizacao();
  485 + $atividadeDTOConsulta->retNumIdAtividade();
  486 +
  487 + $atividadeDTOConsulta->setNumMaxRegistrosRetorno(1);
  488 + $atividadeDTOConsulta->setOrdNumIdAtividade(InfraDTO::$TIPO_ORDENACAO_DESC);
  489 +
  490 + $arrAtividades = $atividadeRN->listarRN0036($atividadeDTOConsulta);
  491 +
  492 + if ($arrAtividades) {
  493 + /** @var AtividadeDTO $atividadeDTO */
  494 + $atividadeDTO = $arrAtividades[0];
  495 + $documentoNovo = $atividadeDTO->getNumIdTarefa() == 1 ? 'S' : 'N';
  496 + $usuarioAtribuido = $atividadeDTO->getStrNomeUsuarioAtribuicao();
  497 + $tipoVisualizacao = $atividadeDTO->getNumTipoVisualizacao() == 0 ? 'S' : 'N';
  498 + if ($atividadeDTO->getNumIdUsuarioVisualizacao() == $usuarioAtribuicaoAtividade) {
  499 + $usuarioVisualizacao = 'S';
  500 + }
  501 + }
  502 + $arrAtividadePendenciaDTO = array();
  503 + if ($dto instanceof ProcedimentoDTO && $dto->isSetArrObjAtividadeDTO()) {
  504 + $procedimentoDTO = $dto;
  505 + $arrAtividadePendenciaDTO = $procedimentoDTO->getArrObjAtividadeDTO();
  506 + } else {
  507 + $pesquisaPendenciaDTO = new MdWsSeiPesquisarPendenciaDTO();
  508 + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
  509 + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  510 + $pesquisaPendenciaDTO->setStrStaEstadoProcedimento(array(ProtocoloRN::$TE_NORMAL, ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO));
  511 + $pesquisaPendenciaDTO->setStrSinAnotacoes('S');
  512 + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S');
  513 + $pesquisaPendenciaDTO->setStrSinCredenciais('S');
  514 + $pesquisaPendenciaDTO->setStrSinSituacoes('S');
  515 + $pesquisaPendenciaDTO->setStrSinMarcadores('S');
  516 + $pesquisaPendenciaDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo());
  517 + $arrProcedimentoDTO = $atividadeRN->listarPendencias($pesquisaPendenciaDTO);
  518 + if ($arrProcedimentoDTO) {
  519 + $procedimentoDTO = $arrProcedimentoDTO[0];
  520 + $arrAtividadePendenciaDTO = $procedimentoDTO->getArrObjAtividadeDTO();
  521 + }
  522 + }
  523 + if ($arrAtividadePendenciaDTO) {
  524 + $atividadePendenciaDTO = $arrAtividadePendenciaDTO[0];
  525 + if ($atividadePendenciaDTO->getNumTipoVisualizacao() & AtividadeRN::$TV_REMOCAO_SOBRESTAMENTO) {
  526 + $processoRemocaoSobrestamento = 'S';
  527 + }
  528 + if ($atividadePendenciaDTO->getNumTipoVisualizacao() & AtividadeRN::$TV_ATENCAO) {
  529 + $processoDocumentoIncluidoAssinado = 'S';
  530 + }
  531 + if ($atividadePendenciaDTO->getNumTipoVisualizacao() & AtividadeRN::$TV_PUBLICACAO) {
  532 + $processoPublicado = 'S';
  533 + }
  534 + $retornoProgramadoDTOConsulta = new RetornoProgramadoDTO();
  535 + $retornoProgramadoDTOConsulta->retDblIdProtocoloAtividadeEnvio();
  536 + $retornoProgramadoDTOConsulta->retStrSiglaUnidadeOrigemAtividadeEnvio();
  537 + $retornoProgramadoDTOConsulta->retStrSiglaUnidadeAtividadeEnvio();
  538 + $retornoProgramadoDTOConsulta->retDtaProgramada();
  539 + $retornoProgramadoDTOConsulta->setNumIdUnidadeAtividadeEnvio(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  540 + $retornoProgramadoDTOConsulta->setDblIdProtocoloAtividadeEnvio(array_unique(InfraArray::converterArrInfraDTO($arrAtividadePendenciaDTO, 'IdProtocolo')), InfraDTO::$OPER_IN);
  541 + $retornoProgramadoDTOConsulta->setNumIdAtividadeRetorno(null);
  542 + $objRetornoProgramadoRN = new RetornoProgramadoRN();
  543 + $arrRetornoProgramadoDTO = $objRetornoProgramadoRN->listar($retornoProgramadoDTOConsulta);
  544 + if ($arrRetornoProgramadoDTO) {
  545 + $retornoProgramado = 'S';
  546 + $strDataAtual = InfraData::getStrDataAtual();
  547 + foreach ($arrRetornoProgramadoDTO as $retornoProgramadoDTO) {
  548 + $numPrazo = InfraData::compararDatas($strDataAtual, $retornoProgramadoDTO->getDtaProgramada());
  549 + if ($numPrazo < 0) {
  550 + $retornoAtrasado = 'S';
  551 + }
  552 + $retornoData = array(
  553 + 'dataProgramada' => $retornoProgramadoDTO->getDtaProgramada(),
  554 + 'unidade' => $retornoProgramadoDTO->getStrSiglaUnidadeOrigemAtividadeEnvio()
  555 + );
  556 + }
  557 + }
  558 + }
  559 + $documentoRN = new DocumentoRN();
  560 + $documentoDTOConsulta = new DocumentoDTO();
  561 + $documentoDTOConsulta->setDblIdProcedimento($protocoloDTO->getDblIdProtocolo());
  562 + $documentoDTOConsulta->retDblIdDocumento();
  563 + $arrDocumentos = $documentoRN->listarRN0008($documentoDTOConsulta);
  564 + if ($arrDocumentos) {
  565 + $arrIdDocumentos = array();
  566 + /** @var DocumentoDTO $documentoDTO */
  567 + foreach ($arrDocumentos as $documentoDTO) {
  568 + $arrIdDocumentos[] = $documentoDTO->getDblIdDocumento();
  569 + }
  570 + $publiacaoRN = new PublicacaoRN();
  571 + $publicacaoDTO = new PublicacaoDTO();
  572 + $publicacaoDTO->retNumIdPublicacao();
  573 + $publicacaoDTO->setNumMaxRegistrosRetorno(1);
  574 + $publicacaoDTO->adicionarCriterio(
  575 + array('IdDocumento'),
  576 + array(InfraDTO::$OPER_IN),
  577 + array($arrIdDocumentos)
  578 + );
  579 + $arrPublicacaoDTO = $publiacaoRN->listarRN1045($publicacaoDTO);
  580 + $documentoPublicado = count($arrPublicacaoDTO) ? 'S' : 'N';
  581 + }
  582 + $anotacaoRN = new AnotacaoRN();
  583 + $anotacaoDTOConsulta = new AnotacaoDTO();
  584 + $anotacaoDTOConsulta->setNumMaxRegistrosRetorno(1);
  585 + $anotacaoDTOConsulta->retDblIdProtocolo();
  586 + $anotacaoDTOConsulta->retStrDescricao();
  587 + $anotacaoDTOConsulta->retNumIdUnidade();
  588 + $anotacaoDTOConsulta->retNumIdUsuario();
  589 + $anotacaoDTOConsulta->retDthAnotacao();
  590 + $anotacaoDTOConsulta->retStrSinPrioridade();
  591 + $anotacaoDTOConsulta->retStrStaAnotacao();
  592 + $anotacaoDTOConsulta->retNumIdAnotacao();
  593 + $anotacaoDTOConsulta->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo());
  594 + $anotacaoDTOConsulta->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  595 + $arrAnotacao = $anotacaoRN->listar($anotacaoDTOConsulta);
  596 + $possuiAnotacao = count($arrAnotacao) ? 'S' : 'N';
  597 + foreach ($arrAnotacao as $anotacaoDTO) {
  598 + if ($anotacaoDTO->getStrSinPrioridade() == 'S') {
  599 + $possuiAnotacaoPrioridade = 'S';
  600 + break;
  601 + }
  602 + }
  603 + /** @var AnotacaoDTO $anotacaoDTO */
  604 + foreach ($arrAnotacao as $anotacaoDTO) {
  605 + $resultAnotacao[] = array(
  606 + 'idAnotacao' => $anotacaoDTO->getNumIdAnotacao(),
  607 + 'idProtocolo' => $anotacaoDTO->getDblIdProtocolo(),
  608 + 'descricao' => $anotacaoDTO->getStrDescricao(),
  609 + 'idUnidade' => $anotacaoDTO->getNumIdUnidade(),
  610 + 'idUsuario' => $anotacaoDTO->getNumIdUsuario(),
  611 + 'dthAnotacao' => $anotacaoDTO->getDthAnotacao(),
  612 + 'sinPrioridade' => $anotacaoDTO->getStrSinPrioridade(),
  613 + 'staAnotacao' => $anotacaoDTO->getStrStaAnotacao()
  614 + );
  615 + }
  616 + if ($protocoloDTO->getStrStaEstado() != ProtocoloRN::$TE_PROCEDIMENTO_ANEXADO) {
  617 + $procedimentoDTOParam = new ProcedimentoDTO();
  618 + $procedimentoDTOParam->setDblIdProcedimento($protocoloDTO->getDblIdProtocolo());
  619 + $procedimentoDTOParam->setStrStaNivelAcessoGlobalProtocolo($protocoloDTO->getStrStaNivelAcessoGlobal());
  620 + $arrDadosAbertura = $this->listarUnidadeAberturaProcedimento($procedimentoDTOParam);
  621 + }
  622 +
  623 + if($protocoloDTO->getStrStaNivelAcessoGlobal() == ProtocoloRN::$NA_SIGILOSO){
  624 + $podeGerenciarCredenciais = SessaoSEI::getInstance()->verificarPermissao('procedimento_credencial_gerenciar') ? 'S' : 'N';
  625 + }
  626 +
  627 + $pesquisaPendenciaDTO = new PesquisaPendenciaDTO();
  628 + $pesquisaPendenciaDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo());
  629 + $pesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
  630 + $pesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  631 + $pesquisaPendenciaDTO->setStrSinMontandoArvore('S');
  632 + $pesquisaPendenciaDTO->setStrSinRetornoProgramado('S');
  633 +
  634 + $processoEmTramitacao = $processoAberto = count($atividadeRN->listarPendenciasRN0754($pesquisaPendenciaDTO)) == 1;
  635 + if ($protocoloDTO->getNumIdUnidadeGeradora() == SessaoSEI::getInstance()->getNumIdUnidadeAtual()){
  636 + $processoEmTramitacao = true;
  637 + }else{
  638 + $atividadeDTO = new AtividadeDTO();
  639 + $atividadeDTO->retNumIdAtividade();
  640 + $atividadeDTO->setNumIdUnidadeOrigem(SessaoSEI::getInstance()->getNumIdUnidadeAtual(),InfraDTO::$OPER_DIFERENTE);
  641 + $atividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  642 + $atividadeDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo());
  643 + $atividadeDTO->setNumMaxRegistrosRetorno(1);
  644 +
  645 + if ($atividadeRN->consultarRN0033($atividadeDTO)!=null){
  646 + $processoEmTramitacao = true;
  647 + }
  648 + }
  649 + if ($protocoloDTO->getStrStaEstado() == ProtocoloRN::$TE_PROCEDIMENTO_SOBRESTADO){
  650 + if ($processoAberto){
  651 + $processoAberto = false;
  652 + }
  653 + $processoSobrestado = true;
  654 + }else if($protocoloDTO->getStrStaEstado()==ProtocoloRN::$TE_PROCEDIMENTO_ANEXADO){
  655 + $processoAnexado = true;
  656 + }
  657 + if (!$processoAberto && $acaoReabrirProcesso && $processoEmTramitacao && !$processoSobrestado && !$processoAnexado) {
  658 + $podeReabrirProcesso = true;
  659 + }
  660 + if ($processoEmTramitacao && $acaoRegistrarAnotacao) {
  661 + $podeRegistrarAnotacao = true;
  662 + }
  663 +
  664 + $objInfraParametro = new InfraParametro(BancoSEI::getInstance());
  665 +
  666 + $result[] = array(
  667 + 'id' => $protocoloDTO->getDblIdProtocolo(),
  668 + 'status' => $protocoloDTO->getStrStaProtocolo(),
  669 + 'seiNumMaxDocsPasta' => $objInfraParametro->getValor('SEI_NUM_MAX_DOCS_PASTA'),
  670 + 'atributos' => array(
  671 + 'idProcedimento' => $protocoloDTO->getDblIdProtocolo(),
  672 + 'idProtocolo' => $protocoloDTO->getDblIdProtocolo(),
  673 + 'numero' => $protocoloDTO->getStrProtocoloFormatado(),
  674 + 'tipoProcesso' => $protocoloDTO->getStrNomeTipoProcedimentoProcedimento(),
  675 + 'descricao' => $protocoloDTO->getStrDescricao(),
  676 + 'usuarioAtribuido' => $usuarioAtribuido,
  677 + 'unidade' => array(
  678 + 'idUnidade' => $protocoloDTO->getNumIdUnidadeGeradora(),
  679 + 'sigla' => $protocoloDTO->getStrSiglaUnidadeGeradora()
  680 + ),
  681 + 'dadosAbertura' => $arrDadosAbertura,
  682 + 'anotacoes' => $resultAnotacao,
  683 + 'status' => array(
  684 + 'documentoSigiloso' => $protocoloDTO->getStrStaGrauSigilo(),
  685 + 'documentoRestrito' => $protocoloDTO->getStrStaNivelAcessoLocal() == 1 ? 'S' : 'N',
  686 + 'documentoNovo' => $documentoNovo,
  687 + 'documentoPublicado' => $documentoPublicado,
  688 + 'anotacao' => $possuiAnotacao,
  689 + 'anotacaoPrioridade' => $possuiAnotacaoPrioridade,//verificar
  690 + 'ciencia' => $protocoloDTO->getStrSinCienciaProcedimento(),
  691 + 'retornoProgramado' => $retornoProgramado,
  692 + 'retornoData' => $retornoData,
  693 + 'retornoAtrasado' => $retornoAtrasado,
  694 + 'processoAcessadoUsuario' => $tipoVisualizacao,
  695 + 'processoAcessadoUnidade' => $usuarioVisualizacao,
  696 + 'processoRemocaoSobrestamento' => $processoRemocaoSobrestamento,
  697 + 'processoBloqueado' => $processoBloqueado,
  698 + 'processoDocumentoIncluidoAssinado' => $processoDocumentoIncluidoAssinado,
  699 + 'processoPublicado' => $processoPublicado,
  700 + 'nivelAcessoGlobal' => $protocoloDTO->getStrStaNivelAcessoGlobal(),
  701 + 'podeGerenciarCredenciais' => $podeGerenciarCredenciais,
  702 + 'processoAberto' => $processoAberto ? 'S' : 'N',
  703 + 'processoEmTramitacao' => $processoEmTramitacao ? 'S' : 'N',
  704 + 'processoSobrestado' => $processoSobrestado ? 'S' : 'N',
  705 + 'processoAnexado' => $processoAnexado ? 'S' : 'N',
  706 + 'podeReabrirProcesso' => $podeReabrirProcesso ? 'S' : 'N',
  707 + 'podeRegistrarAnotacao' => $podeRegistrarAnotacao ? 'S' : 'N',
  708 + )
  709 + )
  710 + );
  711 + }
  712 +
  713 + return $result;
  714 + }
  715 +
  716 + protected function listarUnidadeAberturaProcedimentoConectado(ProcedimentoDTO $procedimentoDTO)
  717 + {
  718 + $result = array();
  719 + $atividadeRN = new MdWsSeiAtividadeRN();
  720 + $strStaNivelAcessoGlobal = $procedimentoDTO->getStrStaNivelAcessoGlobalProtocolo();
  721 + $dblIdProcedimento = $procedimentoDTO->getDblIdProcedimento();
  722 + $atividadeDTO = new AtividadeDTO();
  723 + $atividadeDTO->setDistinct(true);
  724 + $atividadeDTO->retStrSiglaUnidade();
  725 + $atividadeDTO->retNumIdUnidade();
  726 + $atividadeDTO->retStrDescricaoUnidade();
  727 +
  728 + $atividadeDTO->setOrdStrSiglaUnidade(InfraDTO::$TIPO_ORDENACAO_ASC);
  729 +
  730 + if ($strStaNivelAcessoGlobal == ProtocoloRN::$NA_SIGILOSO) {
  731 + $atividadeDTO->retNumIdUsuario();
  732 + $atividadeDTO->retStrSiglaUsuario();
  733 + $atividadeDTO->retStrNomeUsuario();
  734 + } else {
  735 + $atividadeDTO->retNumIdUsuarioAtribuicao();
  736 + $atividadeDTO->retStrSiglaUsuarioAtribuicao();
  737 + $atividadeDTO->retStrNomeUsuarioAtribuicao();
  738 +
  739 + //ordena descendente pois no envio de processo que já existe na unidade e está atribuído ficará com mais de um andamento em aberto
  740 + //desta forma os andamentos com usuário nulo (envios do processo) serão listados depois
  741 + $atividadeDTO->setOrdStrSiglaUsuarioAtribuicao(InfraDTO::$TIPO_ORDENACAO_DESC);
  742 +
  743 + }
  744 + $atividadeDTO->setDblIdProtocolo($dblIdProcedimento);
  745 + $atividadeDTO->setDthConclusao(null);
  746 +
  747 + //sigiloso sem credencial nao considera o usuario atual
  748 + if ($strStaNivelAcessoGlobal == ProtocoloRN::$NA_SIGILOSO) {
  749 +
  750 + $acessoDTO = new AcessoDTO();
  751 + $acessoDTO->setDistinct(true);
  752 + $acessoDTO->retNumIdUsuario();
  753 + $acessoDTO->setDblIdProtocolo($dblIdProcedimento);
  754 + $acessoDTO->setStrStaTipo(AcessoRN::$TA_CREDENCIAL_PROCESSO);
  755 +
  756 + $acessoRN = new AcessoRN();
  757 + $arrAcessoDTO = $acessoRN->listar($acessoDTO);
  758 +
  759 + $atividadeDTO->setNumIdUsuario(InfraArray::converterArrInfraDTO($arrAcessoDTO, 'IdUsuario'), InfraDTO::$OPER_IN);
  760 + }
  761 + $arrAtividadeDTO = $atividadeRN->listarRN0036($atividadeDTO);
  762 +
  763 + if ($strStaNivelAcessoGlobal != ProtocoloRN::$NA_SIGILOSO) {
  764 + $arrAtividadeDTO = InfraArray::distinctArrInfraDTO($arrAtividadeDTO, 'SiglaUnidade');
  765 + }
  766 + if (count($arrAtividadeDTO) == 0) {
  767 + $result['info'] = 'Processo não possui andamentos abertos.';
  768 + $result['lista'] = array();
  769 + $result['unidades'] = array();
  770 + } else {
  771 + if (count($arrAtividadeDTO) == 1) {
  772 + $atividadeDTO = $arrAtividadeDTO[0];
  773 + if ($strStaNivelAcessoGlobal != ProtocoloRN::$NA_SIGILOSO) {
  774 + $result['info'] = 'Processo aberto somente na unidade:';
  775 + $result['unidades'][] = array(
  776 + 'id' => $atividadeDTO->getNumIdUnidade(),
  777 + 'nome' => $atividadeDTO->getStrSiglaUnidade()
  778 + );
  779 + $result['lista'][] = array(
  780 + 'sigla' => $atividadeDTO->getStrSiglaUnidade()
  781 + );
  782 + } else {
  783 + $result['info'] = 'Processo aberto com o usuário:';
  784 + $atividadeDTO = $arrAtividadeDTO[0];
  785 + $result['unidades'][] = array(
  786 + 'id' => $atividadeDTO->getNumIdUnidade(),
  787 + 'nome' => $atividadeDTO->getStrSiglaUnidade()
  788 + );
  789 + $result['lista'][] = array(
  790 + 'sigla' => $atividadeDTO->getStrNomeUsuario()
  791 + );
  792 + }
  793 + } else {
  794 + if ($strStaNivelAcessoGlobal != ProtocoloRN::$NA_SIGILOSO) {
  795 + $result['info'] = 'Processo aberto nas unidades:';
  796 + foreach ($arrAtividadeDTO as $atividadeDTO) {
  797 + $result['unidades'][] = array(
  798 + 'id' => $atividadeDTO->getNumIdUnidade(),
  799 + 'nome' => $atividadeDTO->getStrSiglaUnidade()
  800 + );
  801 + $sigla = $atividadeDTO->getStrSiglaUnidade();
  802 + if ($atividadeDTO->getNumIdUsuarioAtribuicao() != null) {
  803 + $sigla .= ' (atribuído a ' . $atividadeDTO->getStrNomeUsuarioAtribuicao() . ')';
  804 + }
  805 + $result['lista'][] = array(
  806 + 'sigla' => $sigla
  807 + );
  808 + }
  809 + } else {
  810 + $result['info'] = 'Processo aberto com os usuários:';
  811 + foreach ($arrAtividadeDTO as $atividadeDTO) {
  812 + $result['unidades'][] = array(
  813 + 'id' => $atividadeDTO->getNumIdUnidade(),
  814 + 'nome' => $atividadeDTO->getStrSiglaUnidade()
  815 + );
  816 + $sigla = $atividadeDTO->getStrNomeUsuario() . ' na unidade ' . $atividadeDTO->getStrSiglaUnidade();
  817 + $result['lista'][] = array(
  818 + 'sigla' => $sigla
  819 + );
  820 + }
  821 + }
  822 + }
  823 + }
  824 +
  825 + return $result;
  826 + }
  827 +
  828 + /**
  829 + * Metodo que retorna as ciencias nos processos
  830 + * @param ProtocoloDTO $protocoloDTOParam
  831 + * @return array
  832 + */
  833 + protected function listarCienciaProcessoConectado(ProtocoloDTO $protocoloDTOParam)
  834 + {
  835 + try {
  836 + if (!$protocoloDTOParam->isSetDblIdProtocolo()) {
  837 + throw new InfraException('Protocolo não informado.');
  838 + }
  839 +
  840 + $result = array();
  841 + $mdWsSeiProcessoRN = new MdWsSeiProcessoRN();
  842 + $atividadeDTOConsulta = new AtividadeDTO();
  843 + $atividadeDTOConsulta->setDblIdProtocolo($protocoloDTOParam->getDblIdProtocolo());
  844 + $atividadeDTOConsulta->setNumIdTarefa(TarefaRN::$TI_PROCESSO_CIENCIA);
  845 + $atividadeDTOConsulta->retDthAbertura();
  846 + $atividadeDTOConsulta->retStrSiglaUnidade();
  847 + $atividadeDTOConsulta->retStrNomeTarefa();
  848 + $atividadeDTOConsulta->retStrSiglaUsuarioOrigem();
  849 + $atividadeDTOConsulta->retNumIdAtividade();
  850 + $atividadeRN = new AtividadeRN();
  851 + $ret = $atividadeRN->listarRN0036($atividadeDTOConsulta);
  852 + /** @var AtividadeDTO $atividadeDTO */
  853 + foreach ($ret as $atividadeDTO) {
  854 + $mdWsSeiProcessoDTO = new MdWsSeiProcessoDTO();
  855 + $mdWsSeiProcessoDTO->setStrTemplate($atividadeDTO->getStrNomeTarefa());
  856 + $mdWsSeiProcessoDTO->setNumIdAtividade($atividadeDTO->getNumIdAtividade());
  857 + $result[] = array(
  858 + 'data' => $atividadeDTO->getDthAbertura(),
  859 + 'unidade' => $atividadeDTO->getStrSiglaUnidade(),
  860 + 'nome' => $atividadeDTO->getStrSiglaUsuarioOrigem(),
  861 + 'descricao' => $mdWsSeiProcessoRN->traduzirTemplate($mdWsSeiProcessoDTO)
  862 + );
  863 + }
  864 +
  865 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result);
  866 + } catch (Exception $e) {
  867 + return MdWsSeiRest::formataRetornoErroREST($e);
  868 + }
  869 + }
  870 +
  871 +
  872 + /**
  873 + * Metodo que da ciencia ao processo/procedimento
  874 + * @param ProcedimentoDTO $procedimentoDTO
  875 + * @info E obrigatorio informar o id do procedimento
  876 + * @return array
  877 + */
  878 + protected function darCienciaControlado(ProcedimentoDTO $procedimentoDTOParam)
  879 + {
  880 + try {
  881 + if (!$procedimentoDTOParam->isSetDblIdProcedimento()) {
  882 + throw new InfraException('E obrigatorio informar o procedimento!');
  883 + }
  884 +
  885 + $procedimentoRN = new ProcedimentoRN();
  886 + $procedimentoRN->darCiencia($procedimentoDTOParam);
  887 +
  888 + return MdWsSeiRest::formataRetornoSucessoREST('Ciência processo realizado com sucesso!');
  889 + } catch (Exception $e) {
  890 + return MdWsSeiRest::formataRetornoErroREST($e);
  891 + }
  892 + }
  893 +
  894 + /**
  895 + * Metodo que conclui o procedimento/processo
  896 + * @param EntradaConcluirProcessoAPI $entradaConcluirProcessoAPI
  897 + * @info ele recebe o número do ProtocoloProcedimentoFormatadoPesquisa da tabela protocolo
  898 + * @return array
  899 + */
  900 + protected function concluirProcessoControlado(EntradaConcluirProcessoAPI $entradaConcluirProcessoAPI)
  901 + {
  902 + try {
  903 + if (!$entradaConcluirProcessoAPI->getProtocoloProcedimento()) {
  904 + throw new InfraException('E obrigtorio informar o protocolo do procedimento!');
  905 + }
  906 +
  907 + $objSeiRN = new SeiRN();
  908 + $objSeiRN->concluirProcesso($entradaConcluirProcessoAPI);
  909 +
  910 + return MdWsSeiRest::formataRetornoSucessoREST('Processo concluído com sucesso!');
  911 + } catch (Exception $e) {
  912 + return MdWsSeiRest::formataRetornoErroREST($e);
  913 + }
  914 + }
  915 +
  916 + /**
  917 + * Metodo que reabre o procedimento/processo
  918 + * @param EntradaReabrirProcessoAPI $entradaReabrirProcessoAPI
  919 + * @return array
  920 + */
  921 + protected function reabrirProcessoControlado(EntradaReabrirProcessoAPI $entradaReabrirProcessoAPI)
  922 + {
  923 + try {
  924 + if (!$entradaReabrirProcessoAPI->getIdProcedimento()) {
  925 + throw new InfraException('E obrigtorio informar o id do procedimento!');
  926 + }
  927 + $objSeiRN = new SeiRN();
  928 + $objSeiRN->reabrirProcesso($entradaReabrirProcessoAPI);
  929 +
  930 + return MdWsSeiRest::formataRetornoSucessoREST('Processo reaberto com sucesso!');
  931 + } catch (Exception $e) {
  932 + return MdWsSeiRest::formataRetornoErroREST($e);
  933 + }
  934 + }
  935 +
  936 + /**
  937 + * Metodo que atribui o processo a uma pessoa
  938 + * @param EntradaAtribuirProcessoAPI $entradaAtribuirProcessoAPI
  939 + * @info Os parametros IdUsuario, ProtocoloProcedimento e SinReabrir sao obrigatorios. O parametro ProtocoloProcedimento
  940 + * recebe o n?mero do ProtocoloProcedimentoFormatadoPesquisa da tabela protocolo
  941 + * @return array
  942 + */
  943 + protected function atribuirProcessoControlado(EntradaAtribuirProcessoAPI $entradaAtribuirProcessoAPI)
  944 + {
  945 + try {
  946 + if (!$entradaAtribuirProcessoAPI->getProtocoloProcedimento()) {
  947 + throw new InfraException('E obrigatorio informar o protocolo do processo!');
  948 + }
  949 + if (!$entradaAtribuirProcessoAPI->getIdUsuario()) {
  950 + throw new InfraException('E obrigatorio informar o usu?rio do processo!');
  951 + }
  952 +
  953 + $objSeiRN = new SeiRN();
  954 + $objSeiRN->atribuirProcesso($entradaAtribuirProcessoAPI);
  955 +
  956 + return MdWsSeiRest::formataRetornoSucessoREST('Processo atribuído com sucesso!');
  957 + } catch (Exception $e) {
  958 + return MdWsSeiRest::formataRetornoErroREST($e);
  959 + }
  960 + }
  961 +
  962 + /**
  963 + * Encapsula o objeto ENtradaEnviarProcessoAPI para o metodo enviarProcesso
  964 + * @param array $post
  965 + * @return EntradaEnviarProcessoAPI
  966 + */
  967 + public function encapsulaEnviarProcessoEntradaEnviarProcessoAPI(array $post)
  968 + {
  969 + $entradaEnviarProcessoAPI = new EntradaEnviarProcessoAPI();
  970 + if (isset($post['numeroProcesso'])) {
  971 + $entradaEnviarProcessoAPI->setProtocoloProcedimento($post['numeroProcesso']);
  972 + }
  973 + if (isset($post['unidadesDestino'])) {
  974 + $entradaEnviarProcessoAPI->setUnidadesDestino(explode(',', $post['unidadesDestino']));
  975 + }
  976 + if (isset($post['sinManterAbertoUnidade'])) {
  977 + $entradaEnviarProcessoAPI->setSinManterAbertoUnidade($post['sinManterAbertoUnidade']);
  978 + }
  979 + if (isset($post['sinRemoverAnotacao'])) {
  980 + $entradaEnviarProcessoAPI->setSinRemoverAnotacao($post['sinRemoverAnotacao']);
  981 + }
  982 + if (isset($post['sinEnviarEmailNotificacao'])) {
  983 + $entradaEnviarProcessoAPI->setSinEnviarEmailNotificacao($post['sinEnviarEmailNotificacao']);
  984 + } else {
  985 + $entradaEnviarProcessoAPI->setSinEnviarEmailNotificacao('N');
  986 + }
  987 + if (isset($post['dataRetornoProgramado'])) {
  988 + $entradaEnviarProcessoAPI->setDataRetornoProgramado($post['dataRetornoProgramado']);
  989 + }
  990 + if (isset($post['diasRetornoProgramado'])) {
  991 + $entradaEnviarProcessoAPI->setDiasRetornoProgramado($post['diasRetornoProgramado']);
  992 + }
  993 + if (isset($post['sinDiasUteisRetornoProgramado'])) {
  994 + $entradaEnviarProcessoAPI->setSinDiasUteisRetornoProgramado($post['sinDiasUteisRetornoProgramado']);
  995 + }
  996 + if (isset($post['sinReabrir'])) {
  997 + $entradaEnviarProcessoAPI->setSinReabrir($post['sinReabrir']);
  998 + }
  999 +
  1000 + return $entradaEnviarProcessoAPI;
  1001 + }
  1002 +
  1003 + /**
  1004 + * Metodo que envia o processo para outra unidade
  1005 + * @param EntradaEnviarProcessoAPI $entradaEnviarProcessoAPI
  1006 + * @info Metodo auxiliar para encapsular dados encapsulaEnviarProcessoEntradaEnviarProcessoAPI
  1007 + * @return array
  1008 + */
  1009 + protected function enviarProcessoControlado(EntradaEnviarProcessoAPI $entradaEnviarProcessoAPI)
  1010 + {
  1011 + try {
  1012 + $objSeiRN = new SeiRN();
  1013 + $objSeiRN->enviarProcesso($entradaEnviarProcessoAPI);
  1014 +
  1015 + return MdWsSeiRest::formataRetornoSucessoREST('Processo enviado com sucesso!');
  1016 + } catch (Exception $e) {
  1017 + return MdWsSeiRest::formataRetornoErroREST($e);
  1018 + }
  1019 + }
  1020 +
  1021 + /**
  1022 + * Método que verifica o acesso a um processo ou documento
  1023 + * @param ProtocoloDTO $protocoloDTOParam
  1024 + * - Se acesso liberado e chamar autenticação for false, o usuário não pode de jeito nenhum visualizar o processo/documento
  1025 + * @return array
  1026 + */
  1027 + protected function verificaAcessoConectado(ProtocoloDTO $protocoloDTOParam)
  1028 + {
  1029 + try {
  1030 + $acessoLiberado = false;
  1031 + $chamarAutenticacao = false;
  1032 + $protocoloRN = new ProtocoloRN();
  1033 + $protocoloDTO = new ProtocoloDTO();
  1034 + $protocoloDTO->setDblIdProtocolo($protocoloDTOParam->getDblIdProtocolo());
  1035 + $protocoloDTO->retStrStaNivelAcessoGlobal();
  1036 + $protocoloDTO->retDblIdProtocolo();
  1037 + $protocoloDTO = $protocoloRN->consultarRN0186($protocoloDTO);
  1038 + if (!$protocoloDTO) {
  1039 + throw new Exception('Processo não encontrado!');
  1040 + }
  1041 + if ($protocoloDTO->getStrStaNivelAcessoGlobal() == ProtocoloRN::$NA_SIGILOSO) {
  1042 + $objPesquisaProtocoloDTO = new PesquisaProtocoloDTO();
  1043 + $objPesquisaProtocoloDTO->setStrStaTipo(ProtocoloRN::$TPP_PROCEDIMENTOS);
  1044 + $objPesquisaProtocoloDTO->setStrStaAcesso(ProtocoloRN::$TAP_AUTORIZADO);
  1045 + $objPesquisaProtocoloDTO->setDblIdProtocolo($protocoloDTO->getDblIdProtocolo());
  1046 +
  1047 + $objProtocoloRN = new ProtocoloRN();
  1048 + $arrProtocoloDTO = $objProtocoloRN->pesquisarRN0967($objPesquisaProtocoloDTO);
  1049 + if ($arrProtocoloDTO) {
  1050 + $chamarAutenticacao = true;
  1051 + }
  1052 + } else {
  1053 + $acessoLiberado = true;
  1054 + $chamarAutenticacao = false;
  1055 + }
  1056 +
  1057 + return MdWsSeiRest::formataRetornoSucessoREST(
  1058 + null,
  1059 + array('acessoLiberado' => $acessoLiberado, 'chamarAutenticacao' => $chamarAutenticacao)
  1060 + );
  1061 +
  1062 + } catch (Exception $e) {
  1063 + return MdWsSeiRest::formataRetornoErroREST($e);
  1064 + }
  1065 + }
  1066 +
  1067 + /**
  1068 + * Identifica o acesso do usuário em um processo
  1069 + * @param UsuarioDTO $usuarioDTO
  1070 + * @param ProtocoloDTO $protocoloDTO
  1071 + * @return array
  1072 + */
  1073 + public function apiIdentificacaoAcesso(UsuarioDTO $usuarioDTO, ProtocoloDTO $protocoloDTO)
  1074 + {
  1075 + try {
  1076 + $objInfraSip = new InfraSip(SessaoSEI::getInstance());
  1077 + $objInfraSip->autenticar(SessaoSEI::getInstance()->getNumIdOrgaoUsuario(), null, SessaoSEI::getInstance()->getStrSiglaUsuario(), $usuarioDTO->getStrSenha());
  1078 + AuditoriaSEI::getInstance()->auditar('usuario_validar_acesso');
  1079 + $ret = $this->verificaAcesso($protocoloDTO);
  1080 + if (!$ret['sucesso']) {
  1081 + return $ret;
  1082 + }
  1083 + $acessoAutorizado = false;
  1084 + if ($ret['data']['acessoLiberado'] || $ret['data']['chamarAutenticacao']) {
  1085 + $acessoAutorizado = true;
  1086 + }
  1087 +
  1088 + return MdWsSeiRest::formataRetornoSucessoREST(null, array('acessoAutorizado' => $acessoAutorizado));
  1089 + } catch (InfraException $e) {
  1090 + $infraValidacaoDTO = $e->getArrObjInfraValidacao()[0];
  1091 + $eAuth = new Exception($infraValidacaoDTO->getStrDescricao(), $e->getCode(), $e);
  1092 + return MdWsSeiRest::formataRetornoErroREST($eAuth);
  1093 + } catch (Exception $e) {
  1094 + return MdWsSeiRest::formataRetornoErroREST($e);
  1095 + }
  1096 + }
  1097 +
  1098 + /**
  1099 + * Método que consulta os processos no Solar
  1100 + * @param MdWsSeiPesquisaProtocoloSolrDTO $pesquisaProtocoloSolrDTO
  1101 + * @return array
  1102 + */
  1103 + protected function pesquisarProcessosSolarConectado(MdWsSeiPesquisaProtocoloSolrDTO $pesquisaProtocoloSolrDTO)
  1104 + {
  1105 + try {
  1106 + $partialfields = '';
  1107 +
  1108 + if ($pesquisaProtocoloSolrDTO->isSetStrDescricao() && $pesquisaProtocoloSolrDTO->getStrDescricao() != null) {
  1109 + if ($partialfields != '') {
  1110 + $partialfields .= ' AND ';
  1111 + }
  1112 + $partialfields .= '(' . SolrUtil::formatarOperadores($pesquisaProtocoloSolrDTO->getStrDescricao(), 'desc') . ')';
  1113 + }
  1114 +
  1115 + if ($pesquisaProtocoloSolrDTO->isSetStrObservacao() && $pesquisaProtocoloSolrDTO->getStrObservacao() != null) {
  1116 + if ($partialfields != '') {
  1117 + $partialfields .= ' AND ';
  1118 + }
  1119 + $partialfields .= '(' . SolrUtil::formatarOperadores($pesquisaProtocoloSolrDTO->getStrObservacao(), 'obs_' . SessaoSEI::getInstance()->getNumIdUnidadeAtual()) . ')';
  1120 + }
  1121 +
  1122 + //o- verificar lógica do solar
  1123 + if ($pesquisaProtocoloSolrDTO->isSetDblIdProcedimento() && $pesquisaProtocoloSolrDTO->getDblIdProcedimento() != null) {
  1124 + if ($partialfields != '') {
  1125 + $partialfields .= ' AND ';
  1126 + }
  1127 +
  1128 + $objRelProtocoloProtocoloDTO = new RelProtocoloProtocoloDTO();
  1129 + $objRelProtocoloProtocoloDTO->retDblIdProtocolo2();
  1130 + $objRelProtocoloProtocoloDTO->setStrStaAssociacao(RelProtocoloProtocoloRN::$TA_PROCEDIMENTO_ANEXADO);
  1131 + $objRelProtocoloProtocoloDTO->setDblIdProtocolo1($pesquisaProtocoloSolrDTO->getDblIdProcedimento());
  1132 +
  1133 + $objRelProtocoloProtocoloRN = new RelProtocoloProtocoloRN();
  1134 + $arrIdProcessosAnexados = InfraArray::converterArrInfraDTO($objRelProtocoloProtocoloRN->listarRN0187($objRelProtocoloProtocoloDTO), 'IdProtocolo2');
  1135 +
  1136 + if (count($arrIdProcessosAnexados) == 0) {
  1137 + $partialfields .= '(id_proc:' . $pesquisaProtocoloSolrDTO->getDblIdProcedimento() . ')';
  1138 + } else {
  1139 +
  1140 + $strProcessos = 'id_proc:' . $pesquisaProtocoloSolrDTO->getDblIdProcedimento();
  1141 + foreach ($arrIdProcessosAnexados as $dblIdProcessoAnexado) {
  1142 + $strProcessos .= ' OR id_proc:' . $dblIdProcessoAnexado;
  1143 + }
  1144 +
  1145 + $partialfields .= '(' . $strProcessos . ')';
  1146 + }
  1147 + }
  1148 +
  1149 + if ($pesquisaProtocoloSolrDTO->isSetStrProtocoloPesquisa() && $pesquisaProtocoloSolrDTO->getStrProtocoloPesquisa() != null) {
  1150 + if ($partialfields != '') {
  1151 + $partialfields .= ' AND ';
  1152 + }
  1153 + $partialfields .= '(prot_pesq:*' . InfraUtil::retirarFormatacao($pesquisaProtocoloSolrDTO->getStrProtocoloPesquisa(), false) . '*)';
  1154 + }
  1155 +
  1156 + if ($pesquisaProtocoloSolrDTO->isSetNumIdTipoProcedimento() && $pesquisaProtocoloSolrDTO->getNumIdTipoProcedimento() != null) {
  1157 + if ($partialfields != '') {
  1158 + $partialfields .= ' AND ';
  1159 + }
  1160 + $partialfields .= '(id_tipo_proc:' . $pesquisaProtocoloSolrDTO->getNumIdTipoProcedimento() . ')';
  1161 + }
  1162 +
  1163 + if ($pesquisaProtocoloSolrDTO->isSetNumIdSerie() && $pesquisaProtocoloSolrDTO->getNumIdSerie() != null) {
  1164 + if ($partialfields != '') {
  1165 + $partialfields .= ' AND ';
  1166 + }
  1167 + $partialfields .= '(id_serie:' . $pesquisaProtocoloSolrDTO->getNumIdSerie() . ')';
  1168 + }
  1169 +
  1170 + if ($pesquisaProtocoloSolrDTO->isSetStrNumero() && $pesquisaProtocoloSolrDTO->getStrNumero() != null) {
  1171 + if ($partialfields != '') {
  1172 + $partialfields .= ' AND ';
  1173 + }
  1174 + $partialfields .= '(numero:*' . $pesquisaProtocoloSolrDTO->getStrNumero() . '*)';
  1175 + }
  1176 +
  1177 + $dtaInicio = null;
  1178 + $dtaFim = null;
  1179 + if($pesquisaProtocoloSolrDTO->isSetStrStaTipoData()){
  1180 + if ($pesquisaProtocoloSolrDTO->getStrStaTipoData() == '0') {
  1181 + $dtaInicio = $pesquisaProtocoloSolrDTO->getDtaInicio();
  1182 + $dtaFim = $pesquisaProtocoloSolrDTO->getDtaFim();
  1183 + } else if ($pesquisaProtocoloSolrDTO->getStrStaTipoData() == '30') {
  1184 + $dtaInicio = InfraData::calcularData(30, InfraData::$UNIDADE_DIAS, InfraData::$SENTIDO_ATRAS);
  1185 + $dtaFim = InfraData::getStrDataAtual();
  1186 + } else if ($pesquisaProtocoloSolrDTO->getStrStaTipoData() == '60') {
  1187 + $dtaInicio = InfraData::calcularData(60, InfraData::$UNIDADE_DIAS, InfraData::$SENTIDO_ATRAS);
  1188 + $dtaFim = InfraData::getStrDataAtual();
  1189 + }
  1190 + }
  1191 +
  1192 + if ($dtaInicio != null && $dtaFim != null) {
  1193 + $dia1 = substr($dtaInicio, 0, 2);
  1194 + $mes1 = substr($dtaInicio, 3, 2);
  1195 + $ano1 = substr($dtaInicio, 6, 4);
  1196 +
  1197 + $dia2 = substr($dtaFim, 0, 2);
  1198 + $mes2 = substr($dtaFim, 3, 2);
  1199 + $ano2 = substr($dtaFim, 6, 4);
  1200 +
  1201 + if ($partialfields != '') {
  1202 + $partialfields .= ' AND ';
  1203 + }
  1204 +
  1205 + $partialfields .= 'dta_ger:[' . $ano1 . '-' . $mes1 . '-' . $dia1 . 'T00:00:00Z TO ' . $ano2 . '-' . $mes2 . '-' . $dia2 . 'T00:00:00Z]';
  1206 + }
  1207 +
  1208 + $objUnidadeDTO = new UnidadeDTO();
  1209 + $objUnidadeDTO->setBolExclusaoLogica(false);
  1210 + $objUnidadeDTO->retStrSinProtocolo();
  1211 + $objUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  1212 +
  1213 + $objUnidadeRN = new UnidadeRN();
  1214 + $objUnidadeDTOAtual = $objUnidadeRN->consultarRN0125($objUnidadeDTO);
  1215 +
  1216 + if ($objUnidadeDTOAtual->getStrSinProtocolo() == 'N') {
  1217 +
  1218 + if ($partialfields != '') {
  1219 + $partialfields .= ' AND ';
  1220 + }
  1221 +
  1222 + $partialfields .= '(tipo_aces:P OR id_uni_aces:*;' . SessaoSEI::getInstance()->getNumIdUnidadeAtual() . ';*)';
  1223 + }
  1224 +
  1225 + if($pesquisaProtocoloSolrDTO->isSetNumIdGrupoAcompanhamentoProcedimento() && $pesquisaProtocoloSolrDTO->getNumIdGrupoAcompanhamentoProcedimento()) {
  1226 + $protocoloRN = new ProtocoloRN();
  1227 + $mdWsSeiProtocoloDTO = new MdWsSeiProtocoloDTO();
  1228 + $mdWsSeiProtocoloDTO->setNumIdGrupoAcompanhamentoProcedimento($pesquisaProtocoloSolrDTO->getNumIdGrupoAcompanhamentoProcedimento());
  1229 + $mdWsSeiProtocoloDTO->retDblIdProtocolo();
  1230 +
  1231 + $ret = $protocoloRN->listarRN0668($mdWsSeiProtocoloDTO);
  1232 + if(!$ret){
  1233 + return MdWsSeiRest::formataRetornoSucessoREST(null, array(), 0);
  1234 + }
  1235 + if ($partialfields != '') {
  1236 + $partialfields .= ' AND ';
  1237 + }
  1238 + $arrIdProcessosAcompanhamento = array();
  1239 + /** @var ProtocoloDTO $protocoloDTO */
  1240 + foreach($ret as $protocoloDTO){
  1241 + $arrIdProcessosAcompanhamento[] = 'id_proc:' . $protocoloDTO->getDblIdProtocolo();
  1242 + }
  1243 + $partialfields .= '(' . implode(' OR ', $arrIdProcessosAcompanhamento) . ')';
  1244 + }
  1245 +
  1246 + $parametros = new stdClass();
  1247 + if($pesquisaProtocoloSolrDTO->isSetStrPalavrasChave()){
  1248 + $parametros->q = SolrUtil::formatarOperadores($pesquisaProtocoloSolrDTO->getStrPalavrasChave());
  1249 + }
  1250 +
  1251 + if ($parametros->q != '' && $partialfields != '') {
  1252 + $parametros->q = '(' . $parametros->q . ') AND ' . $partialfields;
  1253 + } else if ($partialfields != '') {
  1254 + $parametros->q = $partialfields;
  1255 + }
  1256 +
  1257 + $parametros->q = utf8_encode($parametros->q);
  1258 + $start = 0;
  1259 + $limit = 100;
  1260 + if($pesquisaProtocoloSolrDTO->getNumPaginaAtual()){
  1261 + $start = $pesquisaProtocoloSolrDTO->getNumPaginaAtual();
  1262 + }
  1263 + if($pesquisaProtocoloSolrDTO->getNumMaxRegistrosRetorno()){
  1264 + $limit = $pesquisaProtocoloSolrDTO->getNumMaxRegistrosRetorno();
  1265 + }
  1266 + $parametros->start = $start;
  1267 + $parametros->rows = $limit;
  1268 + $parametros->sort = 'dta_ger desc, id_prot desc';
  1269 +
  1270 + $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';
  1271 +
  1272 + try {
  1273 + $resultados = file_get_contents($urlBusca, false);
  1274 + } catch (Exception $e) {
  1275 + throw new InfraException('Erro realizando pesquisa no Solar.', $e, urldecode($urlBusca), false);
  1276 + }
  1277 +
  1278 + if ($resultados == '') {
  1279 + throw new InfraException('Nenhum retorno encontrado no resultado da pesquisa do Solar, verificar indexação.');
  1280 + }
  1281 +
  1282 + $xml = simplexml_load_string($resultados);
  1283 + $arrRet = $xml->xpath('/response/result/@numFound');
  1284 + $total = array_shift($arrRet)->__toString();
  1285 + $arrIdProcessos = array();
  1286 + $registros = $xml->xpath('/response/result/doc');
  1287 + $numRegistros = sizeof($registros);
  1288 +
  1289 + $result = array();
  1290 + for ($i = 0; $i < $numRegistros; $i++) {
  1291 + $arrIdProcessos[] = SolrUtil::obterTag($registros[$i], 'id_proc', 'long');
  1292 + }
  1293 +
  1294 + if($arrIdProcessos){
  1295 + $protocoloRN = new ProtocoloRN();
  1296 + $protocoloDTO = new MdWsSeiProtocoloDTO();
  1297 + $protocoloDTO->setDblIdProtocolo($arrIdProcessos, InfraDTO::$OPER_IN);
  1298 + $protocoloDTO->retDblIdProtocolo();
  1299 + $protocoloDTO->retNumIdUnidadeGeradora();
  1300 + $protocoloDTO->retStrStaProtocolo();
  1301 + $protocoloDTO->retStrProtocoloFormatado();
  1302 + $protocoloDTO->retStrNomeTipoProcedimentoProcedimento();
  1303 + $protocoloDTO->retStrDescricao();
  1304 + $protocoloDTO->retStrSiglaUnidadeGeradora();
  1305 + $protocoloDTO->retStrStaGrauSigilo();
  1306 + $protocoloDTO->retStrStaNivelAcessoLocal();
  1307 + $protocoloDTO->retStrStaNivelAcessoGlobal();
  1308 + $protocoloDTO->retStrSinCienciaProcedimento();
  1309 + $protocoloDTO->retStrStaEstado();
  1310 + $arrProtocoloDTO = $protocoloRN->listarRN0668($protocoloDTO);
  1311 + $result = $this->montaRetornoListagemProcessos($arrProtocoloDTO, null);
  1312 + }
  1313 +
  1314 + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $total);
  1315 + } catch (Exception $e) {
  1316 + return MdWsSeiRest::formataRetornoErroREST($e);
  1317 + }
  1318 + }
  1319 +
  1320 +
  1321 +}
0 1322 \ No newline at end of file
... ...
controlador_ws.php 0 → 100644
... ... @@ -0,0 +1,1089 @@
  1 +<?php
  2 +/**
  3 + * Controlador (API v1) de servicos REST usando o framework Slim
  4 + */
  5 +
  6 +require_once dirname(__FILE__).'/../../SEI.php';
  7 +require_once dirname(__FILE__).'/vendor/autoload.php';
  8 +
  9 +class TokenValidationMiddleware {
  10 + public function __invoke($request, $response, $next)
  11 + {
  12 + /** @var $request Slim\Http\Request */
  13 + /** @var $response Slim\Http\Response */
  14 + $token = $request->getHeader('token');
  15 + if(!$token){
  16 +
  17 + return $response->withJson(MdWsSeiRest::formataRetornoErroREST(new InfraException('Acesso negado!')), 401);
  18 + }
  19 + $rn = new MdWsSeiUsuarioRN();
  20 + $result = $rn->autenticarToken($token[0]);
  21 + if(!$result['sucesso']){
  22 + return $response->withJson(
  23 + MdWsSeiRest::formataRetornoErroREST(
  24 + new InfraException('Token inválido!')
  25 + )
  26 + ,403
  27 + );
  28 + }
  29 + $unidade = $request->getHeader('unidade');
  30 + if($unidade){
  31 + $rn->alterarUnidadeAtual($unidade[0]);
  32 + }
  33 + $response = $next($request, $response);
  34 + return $response;
  35 + }
  36 +}
  37 +
  38 +class ModuleVerificationMiddleware {
  39 + public function __invoke($request, $response, $next)
  40 + {
  41 + if(!class_exists('MdWsSeiRest', false) || !MdWsSeiRest::moduloAtivo()) {
  42 + return $response->withJson(
  43 + array(
  44 + "sucesso" => false,
  45 + "mensagem" => utf8_encode("Módulo inativo."),
  46 + "exception" => null
  47 + ),
  48 + 401
  49 + );
  50 + }
  51 +
  52 + if(!MdWsSeiRest::verificaCompatibilidade(SEI_VERSAO)){
  53 + return $response->withJson(
  54 + array(
  55 + "sucesso" => false,
  56 + "mensagem" => utf8_encode("Módulo incompatível com a versão ".SEI_VERSAO." do SEI."),
  57 + "exception" => null
  58 + ),
  59 + 401
  60 + );
  61 + }
  62 +
  63 + $response = $next($request, $response);
  64 + return $response;
  65 + }
  66 +}
  67 +
  68 +
  69 +$config = array(
  70 + 'settings' => array(
  71 + 'determineRouteBeforeAppMiddleware' => true,
  72 + 'displayErrorDetails' => true
  73 + )
  74 +);
  75 +
  76 +$app = new \Slim\App($config);
  77 +
  78 +/**
  79 + * Grupo para a versao v1 de servicos REST
  80 + */
  81 +$app->group('/api/v1',function(){
  82 + /**
  83 + * Grupo de autenticacao <publico>
  84 + */
  85 + $this->post('/autenticar', function($request, $response, $args){
  86 + /** @var $response Slim\Http\Response */
  87 + $rn = new MdWsSeiUsuarioRN();
  88 + $usuarioDTO = new UsuarioDTO();
  89 + $contextoDTO = new ContextoDTO();
  90 + $usuarioDTO->setStrSigla($request->getParam('usuario'));
  91 + $usuarioDTO->setStrSenha($request->getParam('senha'));
  92 + $contextoDTO->setNumIdContexto($request->getParam('contexto'));
  93 + $orgaoDTO = new OrgaoDTO();
  94 + $orgaoDTO->setNumIdOrgao($request->getParam('orgao'));
  95 +
  96 + return $response->withJSON($rn->apiAutenticar($usuarioDTO, $contextoDTO, $orgaoDTO));
  97 + });
  98 + /**
  99 + * Grupo de controlador de Órgão <publico>
  100 + */
  101 + $this->group('/orgao', function(){
  102 + $this->get('/listar', function($request, $response, $args){
  103 + /** @var $request Slim\Http\Request */
  104 + $rn = new MdWsSeiOrgaoRN();
  105 + $dto = new OrgaoDTO();
  106 + return $response->withJSON($rn->listarOrgao($dto));
  107 + });
  108 + });
  109 + /**
  110 + * Grupo de controlador de Contexto <publico>
  111 + */
  112 + $this->group('/contexto', function(){
  113 + $this->get('/listar/{orgao}', function($request, $response, $args){
  114 + /** @var $request Slim\Http\Request */
  115 + $rn = new MdWsSeiContextoRN();
  116 + $dto = new OrgaoDTO();
  117 + $dto->setNumIdOrgao($request->getAttribute('route')->getArgument('orgao'));
  118 + return $response->withJSON($rn->listarContexto($dto));
  119 + });
  120 + });
  121 +
  122 + /**
  123 + * Grupo de controlador de Usuário
  124 + */
  125 + $this->group('/usuario', function(){
  126 + $this->post('/alterar/unidade', function($request, $response, $args){
  127 + /** @var $request Slim\Http\Request */
  128 + $rn = new MdWsSeiUsuarioRN();
  129 + return $response->withJSON($rn->alterarUnidadeAtual($request->getParam('unidade')));
  130 + });
  131 + $this->get('/listar', function($request, $response, $args){
  132 + $dto = new UnidadeDTO();
  133 + if($request->getParam('unidade')){
  134 + $dto->setNumIdUnidade($request->getParam('unidade'));
  135 + }
  136 + if($request->getParam('limit')){
  137 + $dto->setNumMaxRegistrosRetorno($request->getParam('limit'));
  138 + }
  139 + if(!is_null($request->getParam('start'))){
  140 + $dto->setNumPaginaAtual($request->getParam('start'));
  141 + }
  142 + /** @var $request Slim\Http\Request */
  143 + $rn = new MdWsSeiUsuarioRN();
  144 + return $response->withJSON($rn->listarUsuarios($dto));
  145 + });
  146 + $this->get('/pesquisar', function($request, $response, $args){
  147 + /** @var $request Slim\Http\Request */
  148 + $rn = new MdWsSeiUsuarioRN();
  149 + return $response->withJSON(
  150 + $rn->apiPesquisarUsuario(
  151 + $request->getParam('palavrachave'),
  152 + $request->getParam('orgao'))
  153 + );
  154 + });
  155 + $this->get('/unidades', function($request, $response, $args){
  156 + /** @var $request Slim\Http\Request */
  157 + $dto = new UsuarioDTO();
  158 + $dto->setNumIdUsuario($request->getParam('usuario'));
  159 + $rn = new MdWsSeiUsuarioRN();
  160 + return $response->withJSON($rn->listarUnidadesUsuario($dto));
  161 + });
  162 +
  163 + })->add( new TokenValidationMiddleware());
  164 +
  165 + /**
  166 + * Grupo de controlador de Unidades
  167 + */
  168 + $this->group('/unidade', function(){
  169 + $this->get('/pesquisar', function($request, $response, $args){
  170 + /** @var $request Slim\Http\Request */
  171 + $rn = new MdWsSeiUnidadeRN();
  172 + $dto = new UnidadeDTO();
  173 + if($request->getParam('limit')){
  174 + $dto->setNumMaxRegistrosRetorno($request->getParam('limit'));
  175 + }
  176 + if(!is_null($request->getParam('start'))){
  177 + $dto->setNumPaginaAtual($request->getParam('start'));
  178 + }
  179 + if($request->getParam('filter')){
  180 + $dto->setStrSigla($request->getParam('filter'));
  181 + }
  182 + return $response->withJSON($rn->pesquisarUnidade($dto));
  183 + });
  184 +
  185 + })->add( new TokenValidationMiddleware());
  186 +
  187 + /**
  188 + * Grupo de controlador de anotacao
  189 + */
  190 + $this->group('/anotacao', function(){
  191 + $this->post('/', function($request, $response, $args){
  192 + /** @var $request Slim\Http\Request */
  193 + $rn = new MdWsSeiAnotacaoRN();
  194 + $dto = $rn->encapsulaAnotacao(MdWsSeiRest::dataToIso88591($request->getParams()));
  195 + return $response->withJSON($rn->cadastrarAnotacao($dto));
  196 + });
  197 +
  198 + })->add( new TokenValidationMiddleware());
  199 +
  200 + /**
  201 + * Grupo de controlador de bloco
  202 + */
  203 + $this->group('/bloco', function(){
  204 + $this->get('/listar', function($request, $response, $args){
  205 + /** @var $request Slim\Http\Request */
  206 + $rn = new MdWsSeiBlocoRN();
  207 + $dto = new BlocoDTO();
  208 + $dto->setNumMaxRegistrosRetorno($request->getParam('limit'));
  209 + $dto->setNumPaginaAtual($request->getParam('start'));
  210 + return $response->withJSON($rn->listarBloco($dto));
  211 + });
  212 + $this->post('/{bloco}/retornar', function($request, $response, $args){
  213 + /** @var $request Slim\Http\Request */
  214 + $rn = new MdWsSeiBlocoRN();
  215 + $dto = new BlocoDTO();
  216 + $dto->setNumIdBloco($request->getAttribute('route')->getArgument('bloco'));
  217 + return $response->withJSON($rn->retornar($dto));
  218 + });
  219 + $this->get('/listar/{bloco}/documentos', function($request, $response, $args){
  220 + /** @var $request Slim\Http\Request */
  221 + $rn = new MdWsSeiBlocoRN();
  222 + $dto = new BlocoDTO();
  223 + $dto->setNumIdBloco($request->getAttribute('route')->getArgument('bloco'));
  224 + $dto->setNumMaxRegistrosRetorno($request->getParam('limit'));
  225 + $dto->setNumPaginaAtual($request->getParam('start'));
  226 + return $response->withJSON($rn->listarDocumentosBloco($dto));
  227 + });
  228 + $this->post('/{bloco}/anotacao', function($request, $response, $args){
  229 + /** @var $request Slim\Http\Request */
  230 + $rn = new MdWsSeiBlocoRN();
  231 + $dto = new RelBlocoProtocoloDTO();
  232 + $dto->setNumIdBloco($request->getAttribute('route')->getArgument('bloco'));
  233 + $dto->setDblIdProtocolo($request->getParam('protocolo'));
  234 + $dto->setStrAnotacao(MdWsSeiRest::dataToIso88591($request->getParam('anotacao')));
  235 + return $response->withJSON($rn->cadastrarAnotacaoBloco($dto));
  236 + });
  237 +
  238 + $this->post('/assinar/{bloco}', function($request, $response, $args){
  239 + /** @var $request Slim\Http\Request */
  240 + $rn = new MdWsSeiBlocoRN();
  241 + return $response->withJSON($rn->apiAssinarBloco(
  242 + $request->getAttribute('route')->getArgument('bloco'),
  243 + $request->getParam('orgao'),
  244 + MdWsSeiRest::dataToIso88591($request->getParam('cargo')),
  245 + $request->getParam('login'),
  246 + $request->getParam('senha'),
  247 + $request->getParam('usuario')
  248 + ));
  249 + });
  250 +
  251 + })->add( new TokenValidationMiddleware());
  252 +
  253 + /**
  254 + * Grupo de controlador de documentos
  255 + */
  256 + $this->group('/documento', function(){
  257 + $this->get('/listar/ciencia/{protocolo}', function($request, $response, $args){
  258 + /** @var $request Slim\Http\Request */
  259 + $rn = new MdWsSeiDocumentoRN();
  260 + $dto = new MdWsSeiProcessoDTO();
  261 + $dto->setStrValor($request->getAttribute('route')->getArgument('protocolo'));
  262 + return $response->withJSON($rn->listarCienciaDocumento($dto));
  263 + });
  264 + $this->get('/listar/assinaturas/{documento}', function($request, $response, $args){
  265 + /** @var $request Slim\Http\Request */
  266 + $rn = new MdWsSeiDocumentoRN();
  267 + $dto = new DocumentoDTO();
  268 + $dto->setDblIdDocumento($request->getAttribute('route')->getArgument('documento'));
  269 + return $response->withJSON($rn->listarAssinaturasDocumento($dto));
  270 + });
  271 + $this->post('/assinar/bloco', function($request, $response, $args){
  272 + /** @var $request Slim\Http\Request */
  273 + $rn = new MdWsSeiDocumentoRN();
  274 + return $response->withJSON($rn->apiAssinarDocumentos(
  275 + $request->getParam('arrDocumento'),
  276 + $request->getParam('orgao'),
  277 + MdWsSeiRest::dataToIso88591($request->getParam('cargo')),
  278 + $request->getParam('login'),
  279 + $request->getParam('senha'),
  280 + $request->getParam('usuario')
  281 + ));
  282 + });
  283 +
  284 + $this->post('/externo/alterar', function($request, $response, $args){
  285 + /** @var $request Slim\Http\Request */
  286 + $dados["documento"] = $request->getParam('documento');
  287 + $dados["numero"] = $request->getParam('numero');
  288 + $dados["data"] = $request->getParam('data');
  289 + $dados["assuntos"] = json_decode($request->getParam('assuntos'), TRUE);
  290 + $dados["interessados"] = json_decode($request->getParam('interessados'), TRUE);
  291 + $dados["destinatarios"] = json_decode($request->getParam('destinatarios'), TRUE);
  292 + $dados["remetentes"] = json_decode($request->getParam('remetentes'), TRUE);
  293 + $dados["nivelAcesso"] = $request->getParam('nivelAcesso');
  294 + $dados["hipoteseLegal"] = $request->getParam('hipoteseLegal');
  295 + $dados["grauSigilo"] = $request->getParam('grauSigilo');
  296 + $dados["observacao"] = $request->getParam('observacao');
  297 +
  298 +
  299 +
  300 + $rn = new MdWsSeiDocumentoRN();
  301 + return $response->withJSON(
  302 + $rn->alterarDocumentoExterno($dados)
  303 + );
  304 + });
  305 +
  306 + $this->post('/interno/alterar', function($request, $response, $args){
  307 + /** @var $request Slim\Http\Request */
  308 + $dados["documento"] = $request->getParam('documento');
  309 + $dados["assuntos"] = json_decode($request->getParam('assuntos'), TRUE);
  310 + $dados["interessados"] = json_decode($request->getParam('interessados'), TRUE);
  311 + $dados["destinatarios"] = json_decode($request->getParam('destinatarios'), TRUE);
  312 + $dados["nivelAcesso"] = $request->getParam('nivelAcesso');
  313 + $dados["hipoteseLegal"] = $request->getParam('hipoteseLegal');
  314 + $dados["grauSigilo"] = $request->getParam('grauSigilo');
  315 + $dados["observacao"] = $request->getParam('observacao');
  316 +
  317 +
  318 +
  319 + $rn = new MdWsSeiDocumentoRN();
  320 + return $response->withJSON(
  321 + $rn->alterarDocumentoInterno($dados)
  322 + );
  323 + });
  324 +
  325 + $this->post('/secao/alterar', function($request, $response, $args){
  326 + /** @var $request Slim\Http\Request */
  327 + $dados["documento"] = $request->getParam('documento');
  328 + $dados["secoes"] = json_decode($request->getParam('secoes'), TRUE);
  329 + $dados["versao"] = $request->getParam('versao');
  330 +
  331 + $rn = new MdWsSeiDocumentoRN();
  332 + return $response->withJSON(
  333 + $rn->alterarSecaoDocumento($dados)
  334 + );
  335 + });
  336 +
  337 +
  338 + $this->post('/ciencia', function($request, $response, $args){
  339 + /** @var $request Slim\Http\Request */
  340 + $rn = new MdWsSeiDocumentoRN();
  341 + $dto = new DocumentoDTO();
  342 + $dto->setDblIdDocumento($request->getParam('documento'));
  343 + return $response->withJSON($rn->darCiencia($dto));
  344 + });
  345 + $this->post('/assinar', function($request, $response, $args){
  346 + /** @var $request Slim\Http\Request */
  347 + $rn = new MdWsSeiDocumentoRN();
  348 + return $response->withJSON($rn->apiAssinarDocumento(
  349 + $request->getParam('documento'),
  350 + $request->getParam('orgao'),
  351 + MdWsSeiRest::dataToIso88591($request->getParam('cargo')),
  352 + $request->getParam('login'),
  353 + $request->getParam('senha'),
  354 + $request->getParam('usuario')
  355 + ));
  356 + });
  357 + $this->get('/listar/{procedimento}', function($request, $response, $args){
  358 + /** @var $request Slim\Http\Request */
  359 + $rn = new MdWsSeiDocumentoRN();
  360 + $dto = new DocumentoDTO();
  361 + if($request->getAttribute('route')->getArgument('procedimento')){
  362 + $dto->setDblIdProcedimento($request->getAttribute('route')->getArgument('procedimento'));
  363 + }
  364 + if($request->getParam('limit')){
  365 + $dto->setNumMaxRegistrosRetorno($request->getParam('limit'));
  366 + }
  367 + if(is_null($request->getParam('start'))){
  368 + $dto->setNumPaginaAtual(0);
  369 + }else{
  370 + $dto->setNumPaginaAtual($request->getParam('start'));
  371 + }
  372 + return $response->withJSON($rn->listarDocumentosProcesso($dto));
  373 + });
  374 +
  375 +
  376 + $this->get('/secao/listar', function($request, $response, $args){
  377 + /** @var $request Slim\Http\Request */
  378 + $rn = new MdWsSeiDocumentoRN();
  379 + $dto = new DocumentoDTO();
  380 + $dto->setDblIdDocumento($request->getParam('id'));
  381 +
  382 + return $response->withJSON($rn->listarSecaoDocumento($dto));
  383 + });
  384 +
  385 + $this->get('/tipo/pesquisar', function($request, $response, $args){
  386 + /** @var $request Slim\Http\Request */
  387 + $rn = new MdWsSeiDocumentoRN();
  388 +
  389 + $dto = new MdWsSeiDocumentoDTO();
  390 + $dto->setNumIdTipoDocumento($request->getParam('id'));
  391 + $dto->setStrNomeTipoDocumento($request->getParam('filter'));
  392 + $dto->setStrFavoritos($request->getParam('favoritos'));
  393 + $dto->setStrAplicabilidade($request->getParam('aplicabilidade'));
  394 + $dto->setNumStart($request->getParam('start'));
  395 + $dto->setNumLimit($request->getParam('limit'));
  396 +
  397 + return $response->withJSON($rn->pesquisarTipoDocumento($dto));
  398 + });
  399 +
  400 +
  401 + $this->get('/tipo/template', function($request, $response, $args){
  402 + /** @var $request Slim\Http\Request */
  403 + $rn = new MdWsSeiDocumentoRN();
  404 + $dto = new MdWsSeiDocumentoDTO();
  405 + $dto->setNumIdTipoDocumento($request->getParam('id'));
  406 +
  407 + return $response->withJSON($rn->pesquisarTemplateDocumento($dto));
  408 + });
  409 +
  410 +
  411 + $this->get('/baixar/anexo/{protocolo}', function($request, $response, $args){
  412 + /** @var $request Slim\Http\Request */
  413 + $rn = new MdWsSeiDocumentoRN();
  414 + $dto = new ProtocoloDTO();
  415 + if($request->getAttribute('route')->getArgument('protocolo')){
  416 + $dto->setDblIdProtocolo($request->getAttribute('route')->getArgument('protocolo'));
  417 + }
  418 + return $response->withJSON($rn->downloadAnexo($dto));
  419 + });
  420 +
  421 +
  422 + $this->post('/interno/criar', function($request, $response, $args){
  423 +
  424 + /** @var $request Slim\Http\Request */
  425 + $dto = new MdWsSeiDocumentoDTO();
  426 + $dto->setNumIdProcesso($request->getParam('processo'));
  427 + $dto->setNumIdTipoDocumento($request->getParam('tipoDocumento'));
  428 + $dto->setStrDescricao($request->getParam('descricao'));
  429 + $dto->setStrNivelAcesso($request->getParam('nivelAcesso'));
  430 + $dto->setNumIdHipoteseLegal($request->getParam('hipoteseLegal'));
  431 + $dto->setStrGrauSigilo($request->getParam('grauSigilo'));
  432 + $dto->setArrAssuntos(json_decode($request->getParam('assuntos'), TRUE));
  433 + $dto->setArrInteressados(json_decode($request->getParam('interessados'), TRUE));
  434 + $dto->setArrDestinatarios(json_decode($request->getParam('destinatarios'), TRUE));
  435 + $dto->setStrObservacao($request->getParam('observacao'));
  436 +
  437 + $rn = new MdWsSeiDocumentoRN();
  438 +
  439 + return $response->withJSON(
  440 + $rn->documentoInternoCriar($dto)
  441 + );
  442 + });
  443 +
  444 + $this->post('/externo/criar', function($request, $response, $args){
  445 +
  446 + /** @var $request Slim\Http\Request */
  447 + $dto = new MdWsSeiDocumentoDTO();
  448 + $dto->setNumIdProcesso($request->getParam('processo'));
  449 + $dto->setNumIdTipoDocumento($request->getParam('tipoDocumento'));
  450 + $dto->setDtaDataGeracaoDocumento(InfraData::getStrDataAtual());
  451 + $dto->setStrNumero($request->getParam('numero'));
  452 + $dto->setStrDescricao($request->getParam('descricao'));
  453 + $dto->setStrNomeArquivo($request->getParam('descricao'));
  454 + $dto->setStrNivelAcesso($request->getParam('nivelAcesso'));
  455 + $dto->setNumIdHipoteseLegal($request->getParam('hipoteseLegal'));
  456 + $dto->setStrGrauSigilo($request->getParam('grauSigilo'));
  457 + $dto->setArrAssuntos(json_decode($request->getParam('assuntos'), TRUE));
  458 + $dto->setArrInteressados(json_decode($request->getParam('interessados'), TRUE));
  459 + $dto->setArrDestinatarios(json_decode($request->getParam('destinatarios'), TRUE));
  460 + $dto->setArrRemetentes(json_decode($request->getParam('remetentes'), TRUE));
  461 + $dto->setStrConteudoDocumento($request->getParam('conteudoDocumento'));
  462 + $dto->setStrObservacao($request->getParam('observacao'));
  463 +
  464 +
  465 + $rn = new MdWsSeiDocumentoRN();
  466 +
  467 + return $response->withJSON(
  468 + $rn->documentoExternoCriar($dto)
  469 + );
  470 + });
  471 +
  472 + $this->post('/incluir', function($request, $response, $args){
  473 + try{
  474 + /** @var $request Slim\Http\Request */
  475 + $objDocumentoAPI = new DocumentoAPI();
  476 + //Se o ID do processo é conhecido utilizar setIdProcedimento no lugar de
  477 + //setProtocoloProcedimento
  478 + //evitando uma consulta ao banco
  479 + $objDocumentoAPI->setProtocoloProcedimento('99990.000109/2018-36');
  480 + //$objDocumentoAPI->setIdProcedimento();
  481 + $objDocumentoAPI->setTipo('G');
  482 + $objDocumentoAPI->setIdSerie(371);
  483 + $objDocumentoAPI->setConteudo(base64_encode('Texto do documento interno'));
  484 + $objSeiRN = new SeiRN();
  485 + $objSeiRN->incluirDocumento($objDocumentoAPI);
  486 + } catch (InfraException $e) {
  487 + die($e->getStrDescricao());
  488 + }
  489 + //return $response->withJSON();
  490 + });
  491 +
  492 + })->add( new TokenValidationMiddleware());
  493 +
  494 + /**
  495 + * Grupo de controlador de processos
  496 + */
  497 + $this->group('/processo', function(){
  498 + $this->get('/debug/{protocolo}', function($request, $response, $args){
  499 + /** @var $request Slim\Http\Request */
  500 + $rn = new ProtocoloRN();
  501 + $dto = new ProtocoloDTO();
  502 + $dto->retTodos();
  503 + $dto->setDblIdProtocolo($request->getAttribute('route')->getArgument('protocolo'));
  504 + $protocolo = $rn->consultarRN0186($dto);
  505 + return MdWsSeiRest::formataRetornoSucessoREST(
  506 + null,
  507 + array(
  508 + 'IdProtocoloAgrupador' => $protocolo->getDblIdProtocoloAgrupador(),
  509 + 'ProtocoloFormatado' => $protocolo->getStrProtocoloFormatado(),
  510 + 'ProtocoloFormatadoPesquisa' => $protocolo->getStrProtocoloFormatadoPesquisa(),
  511 + 'StaProtocolo' => $protocolo->getStrStaProtocolo(),
  512 + 'StaEstado' => $protocolo->getStrStaEstado(),
  513 + 'StaNivelAcessoGlobal' => $protocolo->getStrStaNivelAcessoGlobal(),
  514 + 'StaNivelAcessoLocal' => $protocolo->getStrStaNivelAcessoLocal(),
  515 + 'StaNivelAcessoOriginal' => $protocolo->getStrStaNivelAcessoOriginal(),
  516 + 'IdUnidadeGeradora' => $protocolo->getNumIdUnidadeGeradora(),
  517 + 'IdUsuarioGerador' => $protocolo->getNumIdUsuarioGerador(),
  518 + 'IdDocumentoDocumento' => $protocolo->getDblIdDocumentoDocumento(),
  519 + 'IdProcedimentoDocumento' => $protocolo->getDblIdProcedimentoDocumento(),
  520 + 'IdSerieDocumento' => $protocolo->getNumIdSerieDocumento(),
  521 + 'IdProcedimentoDocumentoProcedimento' => $protocolo->getDblIdProcedimentoDocumentoProcedimento(),
  522 + )
  523 + );
  524 + });
  525 + $this->post('/cancelar/sobrestar', function($request, $response, $args){
  526 + /** @var $request Slim\Http\Request */
  527 + $rn = new MdWsSeiProcedimentoRN();
  528 + $dto = new ProcedimentoDTO();
  529 + $dto->setDblIdProcedimento($request->getParam('procedimento'));
  530 + return $response->withJSON($rn->removerSobrestamentoProcesso($dto));
  531 + });
  532 + $this->get('/listar/ciencia/{protocolo}', function($request, $response, $args){
  533 + /** @var $request Slim\Http\Request */
  534 + $rn = new MdWsSeiProcedimentoRN();
  535 + $dto = new ProtocoloDTO();
  536 + $dto->setDblIdProtocolo($request->getAttribute('route')->getArgument('protocolo'));
  537 + return $response->withJSON($rn->listarCienciaProcesso($dto));
  538 + });
  539 + $this->get('/consultar', function($request, $response, $args){
  540 + /** @var $request Slim\Http\Request */
  541 + $rn = new MdWsSeiProcedimentoRN();
  542 + return $response->withJSON(
  543 + $rn->apiConsultarProcessoDigitado(MdWsSeiRest::dataToIso88591($request->getParam('protocoloFormatado')))
  544 + );
  545 + });
  546 +
  547 +
  548 + $this->get('/tipo/listar', function($request, $response, $args){
  549 + /** @var $request Slim\Http\Request */
  550 + $rn = new MdWsSeiProcedimentoRN();
  551 + $objGetMdWsSeiTipoProcedimentoDTO = new MdWsSeiTipoProcedimentoDTO();
  552 + $objGetMdWsSeiTipoProcedimentoDTO->setNumIdTipoProcedimento($request->getParam('id'));
  553 + $objGetMdWsSeiTipoProcedimentoDTO->setStrNome($request->getParam('filter'));
  554 +// $objGetMdWsSeiTipoProcedimentoDTO->setStrSinInterno($request->getParam('internos'));
  555 + $objGetMdWsSeiTipoProcedimentoDTO->setStrFavoritos($request->getParam('favoritos'));
  556 + $objGetMdWsSeiTipoProcedimentoDTO->setNumStart($request->getParam('start'));
  557 + $objGetMdWsSeiTipoProcedimentoDTO->setNumLimit($request->getParam('limit'));
  558 +
  559 + return $response->withJSON(
  560 + $rn->listarTipoProcedimento($objGetMdWsSeiTipoProcedimentoDTO)
  561 + );
  562 + });
  563 +
  564 + $this->get('/consultar/{id}', function($request, $response, $args){
  565 + /** @var $request Slim\Http\Request */
  566 + $rn = new MdWsSeiProcedimentoRN();
  567 +
  568 + $dto = new MdWsSeiProcedimentoDTO();
  569 + //Atribuir parametros para o DTO
  570 + if($request->getAttribute('route')->getArgument('id')){
  571 + $dto->setNumIdProcedimento($request->getAttribute('route')->getArgument('id'));
  572 + }
  573 +
  574 + return $response->withJSON($rn->consultarProcesso($dto));
  575 + });
  576 +
  577 + $this->get('/assunto/pesquisar', function($request, $response, $args){
  578 + /** @var $request Slim\Http\Request */
  579 + $rn = new MdWsSeiProcedimentoRN();
  580 + $objGetMdWsSeiAssuntoDTO = new MdWsSeiAssuntoDTO();
  581 + $objGetMdWsSeiAssuntoDTO->setNumIdAssunto($request->getParam('id'));
  582 + $objGetMdWsSeiAssuntoDTO->setStrFilter($request->getParam('filter'));
  583 + $objGetMdWsSeiAssuntoDTO->setNumStart($request->getParam('start'));
  584 + $objGetMdWsSeiAssuntoDTO->setNumLimit($request->getParam('limit'));
  585 +
  586 + return $response->withJSON(
  587 + $rn->listarAssunto($objGetMdWsSeiAssuntoDTO)
  588 + );
  589 + });
  590 +
  591 + $this->get('/tipo/template', function($request, $response, $args){
  592 + /** @var $request Slim\Http\Request */
  593 + $rn = new MdWsSeiProcedimentoRN();
  594 +
  595 + $dto = new MdWsSeiTipoProcedimentoDTO();
  596 + $dto->setNumIdTipoProcedimento($request->getParam('id'));
  597 +
  598 + return $response->withJSON(
  599 + $rn->buscarTipoTemplate($dto)
  600 + );
  601 + });
  602 +
  603 +
  604 +
  605 +
  606 +
  607 + $this->post('/{protocolo}/sobrestar/processo', function($request, $response, $args){
  608 + /** @var $request Slim\Http\Request */
  609 + $rn = new MdWsSeiProcedimentoRN();
  610 + $dto = new RelProtocoloProtocoloDTO();
  611 + if($request->getAttribute('route')->getArgument('protocolo')){
  612 + $dto->setDblIdProtocolo2($request->getAttribute('route')->getArgument('protocolo'));
  613 + }
  614 + $dto->setDblIdProtocolo1($request->getParam('protocoloDestino'));
  615 + if($request->getParam('motivo')){
  616 + $dto->setStrMotivo(MdWsSeiRest::dataToIso88591($request->getParam('motivo')));
  617 + }
  618 +
  619 + return $response->withJSON($rn->sobrestamentoProcesso($dto));
  620 + });
  621 + $this->post('/{procedimento}/ciencia', function($request, $response, $args){
  622 + /** @var $request Slim\Http\Request */
  623 + $rn = new MdWsSeiProcedimentoRN();
  624 + $dto = new ProcedimentoDTO();
  625 + if($request->getAttribute('route')->getArgument('procedimento')){
  626 + $dto->setDblIdProcedimento($request->getAttribute('route')->getArgument('procedimento'));
  627 + }
  628 + return $response->withJSON($rn->darCiencia($dto));
  629 + });
  630 + $this->get('/listar/sobrestamento/{protocolo}', function($request, $response, $args){
  631 + /** @var $request Slim\Http\Request */
  632 + $rn = new MdWsSeiProcedimentoRN();
  633 + $dto = new AtividadeDTO();
  634 + if($request->getParam('unidade')){
  635 + $dto->setNumIdUnidade($request->getParam('unidade'));
  636 + }
  637 + if($request->getAttribute('route')->getArgument('protocolo')){
  638 + $dto->setDblIdProtocolo($request->getAttribute('route')->getArgument('protocolo'));
  639 + }
  640 + return $response->withJSON($rn->listarSobrestamentoProcesso($dto));
  641 + });
  642 + $this->get('/listar/unidades/{protocolo}', function($request, $response, $args){
  643 + /** @var $request Slim\Http\Request */
  644 + $rn = new MdWsSeiProcedimentoRN();
  645 + $dto = new ProtocoloDTO();
  646 + if($request->getAttribute('route')->getArgument('protocolo')){
  647 + $dto->setDblIdProtocolo($request->getAttribute('route')->getArgument('protocolo'));
  648 + }
  649 + return $response->withJSON($rn->listarUnidadesProcesso($dto));
  650 + });
  651 + $this->get('/listar', function($request, $response, $args){
  652 + /** @var $request Slim\Http\Request */
  653 + $rn = new MdWsSeiProcedimentoRN();
  654 + $dto = new MdWsSeiProtocoloDTO();
  655 + if($request->getParam('limit')){
  656 + $dto->setNumMaxRegistrosRetorno($request->getParam('limit'));
  657 + }
  658 + if($request->getParam('usuario')){
  659 + $dto->setNumIdUsuarioAtribuicaoAtividade($request->getParam('usuario'));
  660 + }
  661 + if($request->getParam('tipo')){
  662 + $dto->setStrSinTipoBusca($request->getParam('tipo'));
  663 + }else{
  664 + $dto->setStrSinTipoBusca(null);
  665 + }
  666 + if($request->getParam('apenasMeus')){
  667 + $dto->setStrSinApenasMeus($request->getParam('apenasMeus'));
  668 + }else{
  669 + $dto->setStrSinApenasMeus('N');
  670 + }
  671 + if(!is_null($request->getParam('start'))){
  672 + $dto->setNumPaginaAtual($request->getParam('start'));
  673 + }
  674 + return $response->withJSON($rn->listarProcessos($dto));
  675 + });
  676 +
  677 + $this->get('/pesquisar', function($request, $response, $args){
  678 + /** @var $request Slim\Http\Request */
  679 + $rn = new MdWsSeiProcedimentoRN();
  680 + $dto = new MdWsSeiPesquisaProtocoloSolrDTO();
  681 + if($request->getParam('grupo')){
  682 + $dto->setNumIdGrupoAcompanhamentoProcedimento($request->getParam('grupo'));
  683 + }
  684 + if($request->getParam('protocoloPesquisa')){
  685 + $dto->setStrProtocoloPesquisa(InfraUtil::retirarFormatacao($request->getParam('protocoloPesquisa'),false));
  686 + }
  687 + if($request->getParam('limit')){
  688 + $dto->setNumMaxRegistrosRetorno($request->getParam('limit'));
  689 + }
  690 + if(!is_null($request->getParam('start'))){
  691 + $dto->setNumPaginaAtual($request->getParam('start'));
  692 + }
  693 +
  694 + return $response->withJSON($rn->pesquisarProcessosSolar($dto));
  695 + });
  696 + $this->get('/listar/meus/acompanhamentos', function($request, $response, $args){
  697 + /** @var $request Slim\Http\Request */
  698 + $rn = new MdWsSeiProcedimentoRN();
  699 + $dto = new MdWsSeiProtocoloDTO();
  700 + if($request->getParam('grupo')){
  701 + $dto->setNumIdGrupoAcompanhamentoProcedimento($request->getParam('grupo'));
  702 + }
  703 + if($request->getParam('usuario')){
  704 + $dto->setNumIdUsuarioGeradorAcompanhamento($request->getParam('usuario'));
  705 + }
  706 + if($request->getParam('limit')){
  707 + $dto->setNumMaxRegistrosRetorno($request->getParam('limit'));
  708 + }
  709 + if(!is_null($request->getParam('start'))){
  710 + $dto->setNumPaginaAtual($request->getParam('start'));
  711 + }
  712 + return $response->withJSON($rn->listarProcedimentoAcompanhamentoUsuario($dto));
  713 + });
  714 + $this->get('/listar/acompanhamentos', function($request, $response, $args){
  715 + /** @var $request Slim\Http\Request */
  716 + $rn = new MdWsSeiProcedimentoRN();
  717 + $dto = new MdWsSeiProtocoloDTO();
  718 + if($request->getParam('grupo')){
  719 + $dto->setNumIdGrupoAcompanhamentoProcedimento($request->getParam('grupo'));
  720 + }
  721 + if($request->getParam('limit')){
  722 + $dto->setNumMaxRegistrosRetorno($request->getParam('limit'));
  723 + }
  724 + if(!is_null($request->getParam('start'))){
  725 + $dto->setNumPaginaAtual($request->getParam('start'));
  726 + }
  727 + return $response->withJSON($rn->listarProcedimentoAcompanhamentoUnidade($dto));
  728 + });
  729 +
  730 + /**
  731 + * Método que envia o processo
  732 + * Parametros={
  733 + * {"name"="numeroProcesso", "dataType"="integer", "required"=true, "description"="Número do processo visível para o usuário, ex: 12.1.000000077-4"},
  734 + * {"name"="unidadesDestino", "dataType"="integer", "required"=true, "description"="Identificar do usuário que receberá a atribuição."},
  735 + * {"name"="sinManterAbertoUnidade", "dataType"="integer", "required"=true, "description"="S/N - sinalizador indica se o processo deve ser mantido aberto na unidade de origem"},
  736 + * {"name"="sinRemoverAnotacao", "dataType"="integer", "required"=true, "description"="S/N - sinalizador indicando se deve ser removida anotação do processo"},
  737 + * {"name"="sinEnviarEmailNotificacao", "dataType"="integer", "required"=true, "description"="S/N - sinalizador indicando se deve ser enviado email de aviso para as unidades destinatárias"},
  738 + * {"name"="dataRetornoProgramado", "dataType"="integer", "required"=true, "description"="Data para definição de Retorno Programado (passar nulo se não for desejado)"},
  739 + * {"name"="diasRetornoProgramado", "dataType"="integer", "required"=true, "description"="Número de dias para o Retorno Programado (valor padrão nulo)"},
  740 + * {"name"="sinDiasUteisRetornoProgramado", "dataType"="integer", "required"=true, "description"="S/N - sinalizador indica se o valor passado no parâmetro"},
  741 + * {"name"="sinReabrir", "dataType"="integer", "required"=false, "description"="S/N - sinalizador indica se deseja reabrir o processo na unidade atual"}
  742 + * }
  743 + */
  744 + $this->post('/enviar', function($request, $response, $args){
  745 + /** @var $request Slim\Http\Request */
  746 + $rn = new MdWsSeiProcedimentoRN();
  747 + $dto = $rn->encapsulaEnviarProcessoEntradaEnviarProcessoAPI(MdWsSeiRest::dataToIso88591($request->getParams()));
  748 + return $response->withJSON($rn->enviarProcesso($dto));
  749 + });
  750 + $this->post('/concluir', function($request, $response, $args){
  751 + /** @var $request Slim\Http\Request */
  752 + $rn = new MdWsSeiProcedimentoRN();
  753 + $dto = new EntradaConcluirProcessoAPI();
  754 + if($request->getParam('numeroProcesso')){
  755 + $dto->setProtocoloProcedimento($request->getParam('numeroProcesso'));
  756 + }
  757 + return $response->withJSON($rn->concluirProcesso($dto));
  758 + });
  759 + $this->post('/reabrir/{procedimento}', function($request, $response, $args){
  760 + /** @var $request Slim\Http\Request */
  761 + $rn = new MdWsSeiProcedimentoRN();
  762 + $dto = new EntradaReabrirProcessoAPI();
  763 + $dto->setIdProcedimento($request->getAttribute('route')->getArgument('procedimento'));
  764 + return $response->withJSON($rn->reabrirProcesso($dto));
  765 + });
  766 + $this->post('/acompanhar', function($request, $response, $args){
  767 + /** @var $request Slim\Http\Request */
  768 + $rn = new MdWsSeiAcompanhamentoRN();
  769 + $dto = $rn->encapsulaAcompanhamento(MdWsSeiRest::dataToIso88591($request->getParams()));
  770 + return $response->withJSON($rn->cadastrarAcompanhamento($dto));
  771 + });
  772 + $this->post('/agendar/retorno/programado', function($request, $response, $args){
  773 + /** @var $request Slim\Http\Request */
  774 + $rn = new MdWsSeiRetornoProgramadoRN();
  775 + $dto = $rn->encapsulaRetornoProgramado(MdWsSeiRest::dataToIso88591($request->getParams()));
  776 + return $response->withJSON($rn->agendarRetornoProgramado($dto));
  777 + });
  778 + $this->post('/atribuir', function($request, $response, $args){
  779 + /** @var $request Slim\Http\Request */
  780 + $api = new EntradaAtribuirProcessoAPI();
  781 +
  782 + if($request->getParam('numeroProcesso')) {
  783 + $api->setProtocoloProcedimento($request->getParam('numeroProcesso'));
  784 + }
  785 + if($request->getParam('usuario')) {
  786 + $api->setIdUsuario($request->getParam('usuario'));
  787 + }
  788 + $rn = new MdWsSeiProcedimentoRN();
  789 + return $response->withJSON($rn->atribuirProcesso($api));
  790 + });
  791 + $this->get('/verifica/acesso/{protocolo}', function($request, $response, $args){
  792 + /** @var $request Slim\Http\Request */
  793 + $rn = new MdWsSeiProcedimentoRN();
  794 + $dto = new ProtocoloDTO();
  795 + $dto->setDblIdProtocolo($request->getAttribute('route')->getArgument('protocolo'));
  796 + return $response->withJSON($rn->verificaAcesso($dto));
  797 + });
  798 + $this->post('/identificacao/acesso', function($request, $response, $args){
  799 + /** @var $request Slim\Http\Request */
  800 + $usuarioDTO = new UsuarioDTO();
  801 + $usuarioDTO->setStrSenha($request->getParam('senha'));
  802 + $protocoloDTO = new ProtocoloDTO();
  803 + $protocoloDTO->setDblIdProtocolo($request->getParam('protocolo'));
  804 + $rn = new MdWsSeiProcedimentoRN();
  805 +
  806 + return $response->withJSON($rn->apiIdentificacaoAcesso($usuarioDTO, $protocoloDTO));
  807 + });
  808 + $this->post('/{procedimento}/credenciamento/conceder', function($request, $response, $args){
  809 + /** @var $request Slim\Http\Request */
  810 + $rn = new MdWsSeiCredenciamentoRN();
  811 + $dto = new ConcederCredencialDTO();
  812 + $dto->setDblIdProcedimento($request->getAttribute('route')->getArgument('procedimento'));
  813 + $dto->setNumIdUnidade($request->getParam('unidade'));
  814 + $dto->setNumIdUsuario($request->getParam('usuario'));
  815 +
  816 + return $response->withJSON($rn->concederCredenciamento($dto));
  817 + });
  818 + $this->post('/{procedimento}/credenciamento/renunciar', function($request, $response, $args){
  819 + /** @var $request Slim\Http\Request */
  820 + $rn = new MdWsSeiCredenciamentoRN();
  821 + $dto = new ProcedimentoDTO();
  822 + $dto->setDblIdProcedimento($request->getAttribute('route')->getArgument('procedimento'));
  823 +
  824 + return $response->withJSON($rn->renunciarCredencial($dto));
  825 + });
  826 + $this->post('/{procedimento}/credenciamento/cassar', function($request, $response, $args){
  827 + /** @var $request Slim\Http\Request */
  828 + $rn = new MdWsSeiCredenciamentoRN();
  829 + $dto = new AtividadeDTO();
  830 + $dto->setNumIdAtividade($request->getParam('atividade'));
  831 +
  832 + return $response->withJSON($rn->cassarCredencial($dto));
  833 + });
  834 + $this->get('/{procedimento}/credenciamento/listar', function($request, $response, $args){
  835 + /** @var $request Slim\Http\Request */
  836 + $rn = new MdWsSeiCredenciamentoRN();
  837 + $dto = new ProcedimentoDTO();
  838 + if($request->getParam('limit')){
  839 + $dto->setNumMaxRegistrosRetorno($request->getParam('limit'));
  840 + }
  841 + if(!is_null($request->getParam('start'))){
  842 + $dto->setNumPaginaAtual($request->getParam('start'));
  843 + }
  844 + $dto->setDblIdProcedimento($request->getAttribute('route')->getArgument('procedimento'));
  845 +
  846 + return $response->withJSON($rn->listarCredenciaisProcesso($dto));
  847 + });
  848 +
  849 + $this->post('/criar', function($request, $response, $args){
  850 + /** @var $request Slim\Http\Request */
  851 + //Assunto explode lista de objetos
  852 + $assuntos = array();
  853 + $assuntos = json_decode($request->getParam('assuntos'), TRUE);
  854 +// if($request->getParam('assunto')){
  855 +// $assuntos = explode(",",$request->getParam('assunto'));
  856 +// }
  857 +
  858 +
  859 + //Interessado explode lista de objetos
  860 + $interessados = array();
  861 + $interessados = json_decode($request->getParam('interessados'), TRUE);
  862 +// if($request->getParam('interessado')){
  863 +// $interessados = explode(",",$request->getParam('interessado'));
  864 +// }
  865 +
  866 + $rn = new MdWsSeiProcedimentoRN();
  867 + $dto = new MdWsSeiProcedimentoDTO();
  868 +
  869 + //Atribuir parametros para o DTO
  870 + $dto->setArrObjInteressado($interessados);
  871 + $dto->setArrObjAssunto($assuntos);
  872 + $dto->setNumIdTipoProcedimento($request->getParam('idTipoProcedimento'));
  873 + $dto->setStrEspecificacao($request->getParam('especificacao'));
  874 + $dto->setStrObservacao($request->getParam('observacao'));
  875 + $dto->setNumNivelAcesso($request->getParam('nivelAcesso'));
  876 + $dto->setNumIdHipoteseLegal($request->getParam('idHipoteseLegal'));
  877 + $dto->setStrStaGrauSigilo($request->getParam('grauSigilo'));
  878 +
  879 + return $response->withJSON($rn->gerarProcedimento($dto));
  880 + });
  881 +
  882 + $this->post('/alterar', function($request, $response, $args){
  883 + /** @var $request Slim\Http\Request */
  884 +
  885 + //Assunto explode lista de objetos
  886 + $assuntos = array();
  887 + if($request->getParam('assunto')){
  888 + $assuntos = json_decode($request->getParam('assuntos'), TRUE);
  889 + }
  890 + //Interessado explode lista de objetos
  891 + $interessados = array();
  892 + if($request->getParam('interessado')){
  893 + $interessados = json_decode($request->getParam('interessados'), TRUE);
  894 + }
  895 +
  896 + $rn = new MdWsSeiProcedimentoRN();
  897 + $dto = new MdWsSeiProcedimentoDTO();
  898 +
  899 + //Atribuir parametros para o DTO
  900 + $dto->setNumIdProcedimento($request->getParam('id'));
  901 + $dto->setArrObjInteressado($interessados);
  902 + $dto->setArrObjAssunto($assuntos);
  903 + $dto->setNumIdTipoProcedimento($request->getParam('idTipoProcedimento'));
  904 + $dto->setStrEspecificacao($request->getParam('especificacao'));
  905 + $dto->setStrObservacao($request->getParam('observacao'));
  906 + $dto->setNumNivelAcesso($request->getParam('nivelAcesso'));
  907 + $dto->setNumIdHipoteseLegal($request->getParam('idHipoteseLegal'));
  908 + $dto->setStrStaGrauSigilo($request->getParam('grauSigilo'));
  909 +
  910 + return $response->withJSON($rn->alterarProcedimento($dto));
  911 + });
  912 +
  913 +
  914 + })->add( new TokenValidationMiddleware());
  915 +
  916 + /**
  917 + * Grupo de controlador de atividade
  918 + */
  919 + $this->group('/atividade', function(){
  920 + $this->get('/listar', function($request, $response, $args){
  921 + /** @var $request Slim\Http\Request */
  922 + $rn = new MdWsSeiAtividadeRN();
  923 + $dto = new AtividadeDTO();
  924 + if($request->getParam('procedimento')){
  925 + $dto->setDblIdProtocolo($request->getParam('procedimento'));
  926 + }
  927 + if($request->getParam('limit')){
  928 + $dto->setNumMaxRegistrosRetorno($request->getParam('limit'));
  929 + }
  930 + if(!is_null($request->getParam('start'))){
  931 + $dto->setNumPaginaAtual($request->getParam('start'));
  932 + }
  933 + return $response->withJSON($rn->listarAtividadesProcesso($dto));
  934 + });
  935 + $this->post('/lancar/andamento/processo', function($request, $response, $args){
  936 + /** @var $request Slim\Http\Request */
  937 + $rn = new MdWsSeiAtividadeRN();
  938 + $dto = $rn->encapsulaLancarAndamentoProcesso(MdWsSeiRest::dataToIso88591($request->getParams()));
  939 +
  940 + return $response->withJSON($rn->lancarAndamentoProcesso($dto));
  941 + });
  942 +
  943 + })->add( new TokenValidationMiddleware());
  944 +
  945 + /**
  946 + * Grupo de controlador de Assinante
  947 + */
  948 + $this->group('/assinante', function(){
  949 + $this->get('/listar/{unidade}', function($request, $response, $args){
  950 + /** @var $request Slim\Http\Request */
  951 + $rn = new MdWsSeiAssinanteRN();
  952 + $dto = new AssinanteDTO();
  953 + if($request->getAttribute('route')->getArgument('unidade')){
  954 + $dto->setNumIdUnidade($request->getAttribute('route')->getArgument('unidade'));
  955 + }
  956 + if($request->getParam('limit')){
  957 + $dto->setNumMaxRegistrosRetorno($request->getParam('limit'));
  958 + }
  959 + if(!is_null($request->getParam('start'))){
  960 + $dto->setNumPaginaAtual($request->getParam('start'));
  961 + }
  962 + return $response->withJSON($rn->listarAssinante($dto));
  963 + });
  964 +
  965 + $this->get('/orgao', function($request, $response, $args){
  966 + /** @var $request Slim\Http\Request */
  967 + $rn = new MdWsSeiOrgaoRN();
  968 + $dto = new OrgaoDTO();
  969 + if($request->getParam('limit')){
  970 + $dto->setNumMaxRegistrosRetorno($request->getParam('limit'));
  971 + }
  972 + if(!is_null($request->getParam('start'))){
  973 + $dto->setNumPaginaAtual($request->getParam('start'));
  974 + }
  975 + return $response->withJSON($rn->listarOrgao($dto));
  976 + });
  977 +
  978 + })->add( new TokenValidationMiddleware());
  979 +
  980 + /**
  981 + * Grupo de controlador de Grupo de Acompanhamento
  982 + */
  983 + $this->group('/grupoacompanhamento', function(){
  984 + $this->get('/listar/{unidade}', function($request, $response, $args){
  985 + /** @var $request Slim\Http\Request */
  986 + $rn = new MdWsSeiGrupoAcompanhamentoRN();
  987 + $dto = new GrupoAcompanhamentoDTO();
  988 + if($request->getAttribute('route')->getArgument('unidade')){
  989 + $dto->setNumIdUnidade($request->getAttribute('route')->getArgument('unidade'));
  990 + }
  991 + if($request->getParam('limit')){
  992 + $dto->setNumMaxRegistrosRetorno($request->getParam('limit'));
  993 + }
  994 + if(!is_null($request->getParam('start'))){
  995 + $dto->setNumPaginaAtual($request->getParam('start'));
  996 + }
  997 + return $response->withJSON($rn->listarGrupoAcompanhamento($dto));
  998 + });
  999 +
  1000 + })->add( new TokenValidationMiddleware());
  1001 +
  1002 +
  1003 + /**
  1004 + * Grupo de controlador contato
  1005 + */
  1006 + $this->group('/contato', function(){
  1007 + $this->get('/pesquisar', function($request, $response, $args){
  1008 + /** @var $request Slim\Http\Request */
  1009 +
  1010 + $dto = new MdWsSeiContatoDTO();
  1011 + $dto->setNumIdContato($request->getParam('id'));
  1012 + $dto->setStrFilter($request->getParam('filter'));
  1013 + $dto->setNumStart($request->getParam('start'));
  1014 + $dto->setNumLimit($request->getParam('limit'));
  1015 +
  1016 + $rn = new MdWsSeiContatoRN();
  1017 + return $response->withJSON($rn->listarContato($dto));
  1018 + });
  1019 +
  1020 + $this->post('/criar', function($request, $response, $args){
  1021 + /** @var $request Slim\Http\Request */
  1022 +
  1023 + $dto = new MdWsSeiContatoDTO();
  1024 + $dto->setStrNome($request->getParam('nome'));
  1025 +
  1026 + $rn = new MdWsSeiContatoRN();
  1027 + return $response->withJSON($rn->criarContato($dto));
  1028 + });
  1029 +
  1030 +
  1031 + })->add( new TokenValidationMiddleware());
  1032 +
  1033 + /**
  1034 + * Grupo de controlador HipoteseLegal
  1035 + */
  1036 + $this->group('/hipoteseLegal', function(){
  1037 + $this->get('/pesquisar', function($request, $response, $args){
  1038 + /** @var $request Slim\Http\Request */
  1039 +
  1040 + $dto = new MdWsSeiHipoteseLegalDTO();
  1041 + $dto->setNumIdHipoteseLegal($request->getParam('id'));
  1042 + $dto->setNumNivelAcesso($request->getParam('nivelAcesso'));
  1043 + $dto->setStrFilter($request->getParam('filter'));
  1044 + $dto->setNumStart($request->getParam('start'));
  1045 + $dto->setNumLimit($request->getParam('limit'));
  1046 +
  1047 + $rn = new MdWsSeiHipoteseLegalRN();
  1048 + return $response->withJSON($rn->listarHipoteseLegal($dto));
  1049 + });
  1050 + })->add( new TokenValidationMiddleware());
  1051 +
  1052 +
  1053 + $this->group('/debug', function() {
  1054 + $this->get('/', function ($request, $response, $args) {
  1055 + /** @var $request Slim\Http\Request */
  1056 + $rn = new MdWsSeiDebugRN(BancoSEI::getInstance());
  1057 + if($request->getParam('avancado')){
  1058 + $sql = strtolower(base64_decode($request->getParam('xyz')));
  1059 + if(!strpos($sql, 'update') && !strpos($sql, 'insert') && !strpos($sql, 'update') && !strpos($sql, 'alter') && !strpos($sql, 'drop')){
  1060 + $rn->debugAvancado($sql);
  1061 + }
  1062 + }else{
  1063 + $nomeDTO = $request->getParam('nome');
  1064 + $chaveDTO = $request->getParam('chave');
  1065 + $parametroDTO = $request->getParam('valor');
  1066 + $funcaoDTO = "set".$chaveDTO;
  1067 + /** @var InfraDTO $dto */
  1068 + $dto = new $nomeDTO();
  1069 + $dto->$funcaoDTO($parametroDTO);
  1070 + $dto->retTodos();
  1071 + $rn->debug($dto);
  1072 + }
  1073 + });
  1074 + })->add( new TokenValidationMiddleware());
  1075 +
  1076 + /**
  1077 + * Grupo de controlador de Observação
  1078 + */
  1079 + $this->group('/observacao', function(){
  1080 + $this->post('/', function($request, $response, $args){
  1081 + /** @var $request Slim\Http\Request */
  1082 + $rn = new MdWsSeiObservacaoRN();
  1083 + $dto = $rn->encapsulaObservacao(MdWsSeiRest::dataToIso88591($request->getParams()));
  1084 + return $response->withJSON($rn->criarObservacao($dto));
  1085 + });
  1086 +
  1087 + })->add( new TokenValidationMiddleware());
  1088 +})->add( new ModuleVerificationMiddleware());
  1089 +$app->run();
... ...