From 3bdd99d3b684723d97761ea05d4e294046130016 Mon Sep 17 00:00:00 2001 From: eduardo.batista Date: Fri, 17 Mar 2017 09:44:41 -0300 Subject: [PATCH] [FEAT] Implementando novos serviços. --- controlador_ws.php | 39 +++++++++++++++++++++++++++++++++++++++ rn/MdWsSeiAtividadeRN.php | 187 +++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------- rn/MdWsSeiDocumentoRN.php | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ teste.php | 40 ++++++++++++++++++++++++++++------------ 4 files changed, 237 insertions(+), 152 deletions(-) diff --git a/controlador_ws.php b/controlador_ws.php index cfdf203..77e259b 100644 --- a/controlador_ws.php +++ b/controlador_ws.php @@ -159,6 +159,23 @@ $app->group('/api/v1',function(){ $request->getParam('usuario') )); }); + $this->get('/listar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiDocumentoRN(); + $dto = new DocumentoDTO(); + if($request->getParam('procedimento')){ + $dto->setDblIdProcedimento($request->getParam('procedimento')); + } + if($request->getParam('limit')){ + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + } + if(is_null($request->getParam('start'))){ + $dto->setNumPaginaAtual(0); + }else{ + $dto->setNumPaginaAtual($request->getParam('start')); + } + return $response->withJSON($rn->listarDocumentosProcesso($dto)); + }); })->add( new TokenValidationMiddleware()); @@ -245,5 +262,27 @@ $app->group('/api/v1',function(){ }); })->add( new TokenValidationMiddleware()); + + /** + * Grupo de controlador de atividade + */ + $this->group('/atividade', function(){ + $this->get('/listar', function($request, $response, $args){ + /** @var $request Slim\Http\Request */ + $rn = new MdWsSeiAtividadeRN(); + $dto = new AtividadeDTO(); + if($request->getParam('procedimento')){ + $dto->setDblIdProtocolo($request->getParam('procedimento')); + } + if($request->getParam('limit')){ + $dto->setNumMaxRegistrosRetorno($request->getParam('limit')); + } + if(!is_null($request->getParam('start'))){ + $dto->setNumPaginaAtual($request->getParam('start')); + } + return $response->withJSON($rn->listarAtividadesProcesso($dto)); + }); + + })->add( new TokenValidationMiddleware()); }); $app->run(); diff --git a/rn/MdWsSeiAtividadeRN.php b/rn/MdWsSeiAtividadeRN.php index 51755e5..68c109b 100644 --- a/rn/MdWsSeiAtividadeRN.php +++ b/rn/MdWsSeiAtividadeRN.php @@ -7,156 +7,63 @@ class MdWsSeiAtividadeRN extends InfraRN { return BancoSEI::getInstance(); } - private function traduzirTemplate(AtividadeDTO $atividadeDTO, ProtocoloDTO $protocoloDTO) { - $arrParameters = ['DOCUMENTO', 'DOCUMENTOS', 'NIVEL_ACESSO', 'GRAU_SIGILO', 'HIPOTESE_LEGAL', 'DATA_AUTUACAO', 'TIPO_CONFERENCIA', - 'PROCESSO', 'USUARIO', 'USUARIOS', 'UNIDADE', 'BLOCO', 'DATA_HORA', 'USUARIO_ANULACAO', 'INTERESSADO', 'LOCALIZADOR', 'ANEXO', - 'USUARIO_EXTERNO_NOME', 'USUARIO_EXTERNO_SIGLA', 'DATA', 'DESTINATARIO_NOME', 'DESTINATARIO_EMAIL', 'DATA_VALIDADE', 'DIAS_VALIDADE', - 'MOTIVO', 'VEICULO', 'TIPO']; - - $strTemplate = $atividadeDTO->getStrNomeTarefa(); - - if ($strTemplate) { - foreach($arrParameters as $parameter) { - $parameter = '@' . $parameter . '@'; - - $restrito = 'n�o restrito'; - - $nome = ($atividadeDTO->getNumIdUsuarioOrigem())? $atividadeDTO->getStrNomeUsuarioOrigem() : null; - $sigla = ($atividadeDTO->getNumIdUsuarioOrigem())? $atividadeDTO->getStrSiglaUsuarioOrigem() : null; - $usuarioAnulacao = ($atividadeDTO->getNumIdUsuarioConclusao())? $atividadeDTO->getStrNomeUsuarioConclusao() : null; - $unidade = $atividadeDTO->getStrSiglaUnidade(); - $dataHora = ' '.$atividadeDTO->getDthAbertura(); - - if ($protocoloDTO->getStrStaNivelAcessoLocal() == 1) { - $restrito = 'restrito'; - } - - if('@DOCUMENTO@' == $parameter) { - $strTemplate = str_replace($parameter, $protocoloDTO->getStrProtocoloFormatado(), $strTemplate); - } elseif ('@DOCUMENTOS@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } elseif ('@NIVEL_ACESSO@' == $parameter) { - $strTemplate = str_replace($parameter, $restrito, $strTemplate); - } elseif ('@GRAU_SIGILO@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } elseif ('@HIPOTESE_LEGAL@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } elseif ('@DATA_AUTUACAO@' == $parameter) { - $strTemplate = str_replace($parameter, $dataHora, $strTemplate); - } elseif ('@TIPO_CONFERENCIA@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } elseif ('@PROCESSO@' == $parameter) { - $strTemplate = str_replace($parameter, $protocoloDTO->getStrProtocoloFormatado(), $strTemplate); - } elseif ('@USUARIO@' == $parameter) { - $strTemplate = str_replace($parameter, $nome, $strTemplate); - } elseif ('@USUARIOS@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } elseif ('@UNIDADE@' == $parameter) { - $strTemplate = str_replace($parameter, $unidade, $strTemplate); - } elseif ('@BLOCO@' == $parameter) { - $blocoRN = new BlocoRN(); - $blocoDTO = new BlocoDTO(); - $blocoDTO->setNumIdUnidade($atividadeDTO->getNumIdUnidade()); - $blocoDTO->setNumMaxRegistrosRetorno(1); - $blocoDTO->retStrDescricao(); - $blocoResult = $blocoRN->listarRN1277($blocoDTO); - if (!empty($blocoResult)) { - $bloco = $blocoResult[0]; - $strTemplate = str_replace($parameter, $bloco->getStrDescricao(), $strTemplate); - } - } elseif ('@DATA_HORA@' == $parameter) { - $strTemplate = str_replace($parameter, $dataHora, $strTemplate); - } elseif ('@DATA@' == $parameter) { - $strTemplate = str_replace($parameter, $dataHora, $strTemplate); - } elseif ('@USUARIO_ANULACAO@' == $parameter) { - $strTemplate = str_replace($parameter, $usuarioAnulacao, $strTemplate); - } elseif ('@INTERESSADO@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } elseif ('@LOCALIZADOR@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } elseif ('@ANEXO@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } elseif ('@USUARIO_EXTERNO_NOME@' == $parameter) { - $strTemplate = str_replace($parameter, $nome, $strTemplate); - } elseif ('@USUARIO_EXTERNO_SIGLA@' == $parameter) { - $strTemplate = str_replace($parameter, $sigla, $strTemplate); - } elseif ('@DESTINATARIO_NOME@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } elseif ('@DESTINATARIO_EMAIL@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } elseif ('@DATA_VALIDADE@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } elseif ('@DIAS_VALIDADE@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } elseif ('@MOTIVO@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } elseif ('@VEICULO@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } elseif ('@TIPO@' == $parameter) { - $strTemplate = str_replace($parameter, '', $strTemplate); - } - } - } - - return $strTemplate; - } - /** - * Para efetuar a paginacao e necessario passar dentro do AtividadeDTO os parametros abaixo: - * -- setNumPaginaAtual($offset) - * -- setNumMaxRegistrosRetorno($limit) - * @param AtividadeDTO $atividadeDTO + * Retorna as atividades de um processo + * @param AtividadeDTO $atividadeDTOParam * @return array * @throws InfraException */ - protected function listarAtividadesProcessoConectado(AtividadeDTO $atividadeDTO){ + protected function listarAtividadesProcessoConectado(AtividadeDTO $atividadeDTOParam){ try{ - if(!$atividadeDTO->isSetDblIdProtocolo()){ - throw new InfraException('O protocolo deve ser informado!'); + $result = array(); + $atividadeDTOConsulta = new AtividadeDTO(); + if(!$atividadeDTOParam->isSetDblIdProtocolo()){ + throw new InfraException('O procedimento deve ser informado!'); } - if(!$atividadeDTO->isSetNumIdUnidade()){ - $atividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $atividadeDTOConsulta->setDblIdProtocolo($atividadeDTOParam->isSetDblIdProtocolo()); + if(is_null($atividadeDTOParam->getNumPaginaAtual())){ + $atividadeDTOConsulta->setNumPaginaAtual(0); + }else{ + $atividadeDTOConsulta->setNumPaginaAtual($atividadeDTOParam->getNumPaginaAtual()); } - $protocoloRN = new ProtocoloRN(); - $protocoloDTO = new ProtocoloDTO(); - $protocoloDTO->setDblIdProtocolo($atividadeDTO->getDblIdProtocolo()); - $protocoloDTO->retStrStaNivelAcessoLocal(); - $protocoloDTO->retStrProtocoloFormatado(); - $resultProtocolo = $protocoloRN->listarRN0668($protocoloDTO); - $protocoloDTO = $resultProtocolo[0]; - - $atividadeDTO->retDblIdProtocolo(); - $atividadeDTO->retNumIdUnidade(); - $atividadeDTO->retDthAbertura(); - $atividadeDTO->retStrNomeTarefa(); - $atividadeDTO->retNumIdAtividade(); - $atividadeDTO->retNumIdUsuarioOrigem(); - $atividadeDTO->retStrSiglaUsuarioOrigem(); - $atividadeDTO->retStrSiglaUnidade(); - $atividadeDTO->retStrNomeUsuarioOrigem(); - $atividadeDTO->retNumIdUsuarioConclusao(); - $atividadeDTO->retStrNomeUsuarioConclusao(); + if($atividadeDTOParam->getNumMaxRegistrosRetorno()){ + $atividadeDTOConsulta->setNumMaxRegistrosRetorno($atividadeDTOParam->getNumMaxRegistrosRetorno()); + }else{ + $atividadeDTOConsulta->setNumMaxRegistrosRetorno(0); + } + $atividadeDTOConsulta->retDblIdProtocolo(); + $atividadeDTOConsulta->retDthAbertura(); + $atividadeDTOConsulta->retNumIdUsuarioOrigem(); + $atividadeDTOConsulta->retStrNomeTarefa(); + $atividadeDTOConsulta->retNumIdAtividade(); + $atividadeDTOConsulta->retStrSiglaUsuarioOrigem(); + $atividadeDTOConsulta->retStrSiglaUnidade(); + $atividadeDTOConsulta->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC); $atividadeRN = new AtividadeRN(); - $result = $atividadeRN->listarRN0036($atividadeDTO); - if (!empty($result)) { - foreach($result as $value) { - $dateTime = explode(' ', $value->getDthAbertura()); - $informacao = $this->traduzirTemplate($value, $protocoloDTO); - $arrayResult[] = [ - "id" => $value->getNumIdAtividade(), - "atributos" => [ - "idProcesso" => $value->getDblIdProtocolo(), - "usuario" => ($value->getNumIdUsuarioOrigem())? $value->getStrSiglaUsuarioOrigem() : null, - "data" => $dateTime[0], - "hora" => $dateTime[1], - "unidade" => $value->getStrSiglaUnidade(), - "informacao" => $informacao - ] - ]; - } + $ret = $atividadeRN->listarRN0036($atividadeDTOConsulta); + /** @var AtividadeDTO $atividadeDTO */ + foreach($ret as $atividadeDTO) { + $dateTime = explode(' ', $atividadeDTO->getDthAbertura()); + $informacao = null; + $mdWsSeiProcessoDTO = new MdWsSeiProcessoDTO(); + $mdWsSeiProcessoDTO->setStrTemplate($atividadeDTO->getStrNomeTarefa()); + $mdWsSeiProcessoDTO->setNumIdAtividade($atividadeDTO->getNumIdAtividade()); + $mdWsSeiProcessoRN = new MdWsSeiProcessoRN(); + + $result[] = [ + "id" => $atividadeDTO->getNumIdAtividade(), + "atributos" => [ + "idProcesso" => $atividadeDTO->getDblIdProtocolo(), + "usuario" => ($atividadeDTO->getNumIdUsuarioOrigem())? $atividadeDTO->getStrSiglaUsuarioOrigem() : null, + "data" => $dateTime[0], + "hora" => $dateTime[1], + "unidade" => $atividadeDTO->getStrSiglaUnidade(), + "informacao" => $mdWsSeiProcessoRN->traduzirTemplate($mdWsSeiProcessoDTO) + ] + ]; } - return MdWsSeiRest::formataRetornoSucessoREST(null, $arrayResult, $atividadeDTO->getNumTotalRegistros()); + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $atividadeDTOConsulta->getNumTotalRegistros()); }catch (Exception $e){ return MdWsSeiRest::formataRetornoErroREST($e); } diff --git a/rn/MdWsSeiDocumentoRN.php b/rn/MdWsSeiDocumentoRN.php index f5df680..6b06a20 100644 --- a/rn/MdWsSeiDocumentoRN.php +++ b/rn/MdWsSeiDocumentoRN.php @@ -10,6 +10,129 @@ class MdWsSeiDocumentoRN extends InfraRN { } /** + * Método que retorna os documentos de um processo + * @param DocumentoDTO $documentoDTOParam + * @return array + */ + protected function listarDocumentosProcessoConectado(DocumentoDTO $documentoDTOParam){ + try{ + $result = array(); + $documentoDTOConsulta = new DocumentoDTO(); + if(!$documentoDTOParam->isSetDblIdProcedimento()){ + throw new InfraException('O procedimento deve ser informado.'); + } + $documentoDTOConsulta->setDblIdProcedimento($documentoDTOParam->getDblIdProcedimento()); + if($documentoDTOParam->getNumMaxRegistrosRetorno()){ + $documentoDTOConsulta->setNumMaxRegistrosRetorno($documentoDTOParam->getNumMaxRegistrosRetorno()); + }else{ + $documentoDTOConsulta->setNumMaxRegistrosRetorno(10); + } + if(is_null($documentoDTOParam->getNumPaginaAtual())){ + $documentoDTOConsulta->setNumPaginaAtual(0); + }else{ + $documentoDTOConsulta->setNumPaginaAtual($documentoDTOParam->getNumPaginaAtual()); + } + $documentoDTOConsulta->retStrStaNivelAcessoLocalProtocolo(); + $documentoDTOConsulta->retDblIdDocumento(); + $documentoDTOConsulta->retDblIdProcedimento(); + $documentoDTOConsulta->retStrProtocoloDocumentoFormatado(); + $documentoDTOConsulta->retStrNumero(); + $documentoDTOConsulta->retStrNomeSerie(); + $documentoDTOConsulta->retStrSiglaUnidadeGeradoraProtocolo(); + $documentoDTOConsulta->retStrSiglaUnidadeGeradoraProtocolo(); + $documentoDTOConsulta->retNumIdUnidadeGeradoraProtocolo(); + $documentoDTOConsulta->retStrCrcAssinatura(); + $documentoRN = new DocumentoRN(); + $ret = $documentoRN->listarRN0008($documentoDTOConsulta); + + $anexoRN = new AnexoRN(); + $observacaoRN = new ObservacaoRN(); + $publicacaoRN = new PublicacaoRN(); + $relProtocoloProtocoloRN = new RelProtocoloProtocoloRN(); + /** @var DocumentoDTO $documentoDTO */ + foreach($ret as $documentoDTO){ + $mimetype = null; + $nomeAnexo = null; + $informacao = null; + $tamanhoAnexo = null; + $ciencia = 'N'; + + $anexoDTOConsulta = new AnexoDTO(); + $anexoDTOConsulta->retStrNome(); + $anexoDTOConsulta->retNumTamanho(); + $anexoDTOConsulta->setDblIdProtocolo($documentoDTO->getDblIdDocumento()); + $anexoDTOConsulta->setStrSinAtivo('S'); + $anexoDTOConsulta->setNumMaxRegistrosRetorno(1); + $resultAnexo = $anexoRN->listarRN0218($anexoDTOConsulta); + if($resultAnexo){ + /** @var AnexoDTO $anexoDTO */ + $anexoDTO = $resultAnexo[0]; + $mimetype = $anexoDTO->getStrNome(); + $mimetype = substr($mimetype, strrpos($mimetype, '.')+1); + $nomeAnexo = $anexoDTO->getStrNome(); + $tamanhoAnexo = $anexoDTO->getNumTamanho(); + } + $observacaoDTOConsulta = new ObservacaoDTO(); + $observacaoDTOConsulta->setNumMaxRegistrosRetorno(1); + $observacaoDTOConsulta->setOrdNumIdObservacao(InfraDTO::$TIPO_ORDENACAO_DESC); + $observacaoDTOConsulta->retStrDescricao(); + $resultObservacao = $observacaoRN->listarRN0219($observacaoDTOConsulta); + if($resultObservacao){ + /** @var ObservacaoDTO $observacaoDTO */ + $observacaoDTO = $resultObservacao[0]; + $informacao = substr($observacaoDTO->getStrDescricao(), 0, 250); + } + $publicacaoDTOConsulta = new PublicacaoDTO(); + $publicacaoDTOConsulta->setDblIdDocumento($documentoDTO->getDblIdDocumento()); + $publicacaoDTOConsulta->retDblIdDocumento(); + $publicacaoDTOConsulta->setNumMaxRegistrosRetorno(1); + $resultPublicacao = $publicacaoRN->listarRN1045($publicacaoDTOConsulta); + $documentoPublicado = $resultPublicacao ? 'S' : 'N'; + + $relProtocoloProtocoloDTOConsulta = new RelProtocoloProtocoloDTO(); + $relProtocoloProtocoloDTOConsulta->setDblIdProtocolo2($documentoDTO->getDblIdDocumento()); + $relProtocoloProtocoloDTOConsulta->retStrSinCiencia(); + $relProtocoloProtocoloDTOConsulta->setNumMaxRegistrosRetorno(1); + $resultRelProtProt = $relProtocoloProtocoloRN->listarRN0187($relProtocoloProtocoloDTOConsulta); + if($resultRelProtProt){ + /** @var RelProtocoloProtocoloDTO $relProtocoloProtocoloDTO */ + $relProtocoloProtocoloDTO = $resultRelProtProt[0]; + $ciencia = $relProtocoloProtocoloDTO->getStrSinCiencia(); + } + + $result[] = array( + 'id' => $documentoDTO->getDblIdDocumento(), + 'atributos' => array( + 'idProcedimento' => $documentoDTO->getDblIdProcedimento(), + 'idProtocolo' => $documentoDTO->getDblIdDocumento(), + 'protocoloFormatado' => $documentoDTO->getStrProtocoloDocumentoFormatado(), + 'nome' => $nomeAnexo, + 'titulo' => $documentoDTO->getStrNumero(), + 'tipo' => $documentoDTO->getStrNomeSerie(), + 'mimeType' => $mimetype ? $mimetype : 'html', + 'informacao' => $informacao, + 'tamanho' => $tamanhoAnexo, + 'idUnidade' => $documentoDTO->getNumIdUnidadeGeradoraProtocolo(), + 'siglaUnidade' => $documentoDTO->getStrSiglaUnidadeGeradoraProtocolo(), + 'status' => array( + 'sinBloqueado' => $documentoDTO->getStrStaNivelAcessoLocalProtocolo() == 1 ? 'S' : 'N', + 'documentoSigiloso' => $documentoDTO->getStrStaNivelAcessoLocalProtocolo() == 2 ? 'S' : 'N', + 'documentoRestrito' => $documentoDTO->getStrStaNivelAcessoLocalProtocolo() == 1 ? 'S' : 'N', + 'documentoPublicado' => $documentoPublicado, + 'documentoAssinado' => $documentoDTO->getStrCrcAssinatura() ? 'S' : 'N', + 'ciencia' => $ciencia + ) + ) + ); + } + + return MdWsSeiRest::formataRetornoSucessoREST(null, $result, $documentoDTOConsulta->getNumTotalRegistros()); + }catch (Exception $e){ + return MdWsSeiRest::formataRetornoErroREST($e); + } + } + + /** * Metodo simplificado (abstraido) de assinatura de documentos * @param array $arrIdDocumento * @param $idOrgao diff --git a/teste.php b/teste.php index 8ce656f..681962c 100644 --- a/teste.php +++ b/teste.php @@ -14,6 +14,22 @@ echo '
'; $b->autenticarToken($token); + + +class TesteAtividade { + + public function listarAtividadesProcessoConectado(){ + $rn = new MdWsSeiAtividadeRN(); + $dto = new AtividadeDTO(); + $dto->setDblIdProtocolo(1); + $dto->setNumMaxRegistrosRetorno(10); + $dto->setNumPaginaAtual(0); + + var_dump($rn->listarAtividades($dto)); + } + +} + class TesteBloco { public function listarBlocoUnidadeConectado(){ @@ -129,6 +145,18 @@ class TesteProcedimento { var_dump($rn->listarSobrestamentoProcesso($dto)); } + public function listarProcessosConectado(){ + $rn = new MdWsSeiProcedimentoRN(); + $dto = new MdWsSeiProtocoloDTO(); + $dto->setNumIdUsuarioAtribuicaoAtividade('100000001'); + $dto->setNumIdUnidadeAtividade('110000001'); + $dto->setStrSinTipoBusca(MdWsSeiProtocoloDTO::SIN_TIPO_BUSCA_M); + $dto->setNumPaginaAtual(0); + $dto->setNumMaxRegistrosRetorno(10); + + var_dump($rn->listarProcessos($dto)); + } + //o----- public function concluirProcessoControlado(){ @@ -156,18 +184,6 @@ class TesteProcedimento { var_dump($rn->listarProcedimentoAcompanhamento($dto)); } - - public function listarProcessosConectado(){ - $rn = new MdWsSeiProcedimentoRN(); - $dto = new MdWsSeiProtocoloDTO(); - $dto->setNumIdUsuarioAtribuicaoAtividade('100000001'); - $dto->setNumIdUnidadeAtividade('110000001'); - $dto->setStrSinTipoBusca(MdWsSeiProtocoloDTO::SIN_TIPO_BUSCA_M); - $dto->setNumPaginaAtual(0); - $dto->setNumMaxRegistrosRetorno(10); - - var_dump($rn->listarProcessos($dto)); - } } -- libgit2 0.21.2