Pular para o conteúdo principal

Negócio Base (ENB)

Introdução

A API Negócio Base é responsável por concentrar e permitir a reutilização de regras de negócio comuns a vários módulos do sistema, de forma a evitar que a mesma regra de negócio seja implementada em vários lugares, o que dificulta a manutenção e evolução do sistema, bem como aumenta a possibilidade de bugs ao potencializar a implementação de versões diferentes da mesma regra.


Documentos

Acesso

Endpoint

`/v1/documento-acesso/{idDocumento}/{guidUsuario}/pode-ver`

Verificar se o usuário informado tem permissão para visualizar o documento informado no E-Docs, levando em conta seu nível de acesso, autoria, credenciamento, entre outros fatores.

Regras de Negócio

PodeVer:

  • Busca os dados do documento através do método ObterDadosPodeVer.
  • Inicia processo de verificação de permissão:
    • Se o documento for público, é retornado true, permitindo a visualização do documento.
    • Caso não seja, verifica se o usuário possui permissão de acordo com o nivel de acesso do documento (VerificarPodeVerByNivelAcesso).
  • Se o usuário for um cidadão e houver uma via associada:
    • O método PodeVer é chamado recursivamente, agora verificando a permissão com base no guidVia.
    • Se essa verificação também falhar, a operação retorna falha.
    • Caso contrário, o valor retornado da verificação da via é considerado no resultado final.
  • Se até esse ponto o usuário ainda não tiver acesso liberado, o sistema faz uma verificação adicional com DocumentoRegrasAcesso.IsSistemaCapturador. Essa regra garante que usuários vinculados ao sistema capturador do documento tenham acesso mesmo que não tenham permissão explícita de nível.

ObterDadosPodeVer (privado):

  • Valida os parâmetros, nenhum parâmetro pode ser vazio ou nulo.
  • Busca documento e seu capturador, o resultad da busca não pode ser nulo.
  • Busca usuário a ser verificada a permissão. (a busca do usuário é feita através da API EAQ)
  • Caso a via tenha sido informada, busca seus dados. (a busca é feita através da API EAQ, e caso retorne com valor nulo é gerado erro)
  • Monta a estrutura de retorno com o agente capturador e a lista de credenciamentos do documento.

Captura

Endpoint

`/v1/documento-captura/{guidUsuario}/papeis-permitidos`

Obtém todos os papéis permitidos do usuário logado para captura de um documento.

Regras de Negócio

ObterPapeisPermitidosCaptura:

  • Verifica se o guidUsuario foi informado corretamente.
  • Busca os papéis de captura do usuário (_documentoPermissaoHelper.ObterPapeisCaptura).
  • Retorna o resultado.

ObterPapeisCaptura:

  • Obtem papéis de servidor, advogado e cidadão através da API EAQ(ObterUsuarioPapeisServidor, ObterUsuarioPapeisAdvogado e ObterAgenteAtivo).
  • Todos os resultados são verificados, os válidos são adicionados à lista de credenciados (o papel de cidadão sempre será o último da lista).

Endpoint

`/v1/documento-captura-valor-original/{guidUsuario}/papeis-permitidos`

Obtém todos os papéis permitidos do usuário logado para captura com valor original de um documento.

Regras de Negócio

ObterPapeisPermitidosCapturaValorOriginal:

  • Verifica se o guidUsuario foi informado corretamente.
  • Busca os papéis para capturas com valor original (_documentoPermissaoHelper.ObterPapeisCapturaValorOriginal).
  • Retorna o resultado.

ObterPapeisCapturaValorOriginal:

  • Busca papéis se ação do usuário passando "AcoesConfig.CAPTURAR_DIGITALIZADO_VALOR_ORIGINAL" como parâmetro.
  • Verifica se o resultado é válido e adiciona à lista de credenciados.

Credenciamento

Endpoint

`/v1/documento-credenciamento/{guidUsuario}/papeis-permitidos`

Obtém todos os papéis permitidos do usuário logado para credenciamento a um documento.

Regras de Negócio

ObterPapeisPermitidosCredenciamento:

  • Verifica se o guidUsuario foi informado corretamente.
  • Obtem os papéis de credenciamento (_documentoPermissaoHelper.ObterPapeisCredenciamento).
  • Retorna o resultado.

ObterPapeisCredenciamento:

  • Obtem papéis de servidor e de cidadão através da API EAQ(ObterUsuarioPapeisServidor e ObterAgenteAtivo).
  • Os resultados são verificados, os válidos são adicionados à lista de credenciados (o papel de cidadão sempre será o último da lista).

Elaboração

Endpoint

`/v1/documento-elaboracao/{guidUsuario}/papeis-permitidos`

Obtém todos os papéis permitidos do usuário logado para elaboração de um documento.

Regras de Negócio

ObterPapeisPermitidosElaboracao:

  • Verifica se o guidUsuario foi informado corretamente.
  • Obtem papéis de elaboração (_documentoPermissaoHelper.ObterPapeisElaboracao).
  • Retorna o resultado.

ObterPapeisElaboracao:

  • Obtem papéis de servidor e de cidadão através da API EAQ(ObterUsuarioPapeisServidor e ObterAgenteAtivo).
  • Os resultados são verificados, os válidos são adicionados à lista de credenciados (o papel de cidadão sempre será o último da lista).

Encaminhamentos

Encaminhamento

Endpoint

`/v1/encaminhamento/{guidUsuario}/todas-caixas`

Obtém todas as caixas de encaminhamento nas quais o usuário informado tem permissão de caixa de encaminhamento.

Regras de Negócio

ObterTodasCaixasEncaminhamento:

  • Verifica se o guidUsuario foi informado corretamente.
  • Busca todos os locais de acesso (_permissaoHelper.ObterTodosLocaisAcessoIncluindoCidadaoByAcao).
  • Retorna o resultado.

ObterTodosLocaisAcessoIncluindoCidadaoByAcao:

  • Busca agente ativo através da API EAQ (ObterAgenteAtivo).
  • Busca todos os locais de acesso por ação (ObterTodosLocaisAcessoByAcao).
  • Os resultados são verificados e adicionados à lista de locais.

ObterTodosLocaisAcessoByAcao:

  • Busca papéis de servidor através da API EAQ (ObterUsuarioPapeisServidor).
    • Caso o usuário não seja servidor a busca para aqui.
  • Busca locais por ação usando API EAQ (ObterUsuarioLocalizacoesByAcao).
  • Busca locais onde o usuário é gestor usando API EAQ (ObterUsuarioConjuntosGestor).
  • Busca locais onde o usuário é delegado (_usuarioManagerApiClient.ObterLocaisDelegacaoAcessoPorUsuario).
  • Busca grupos usando API EAQ (ObterUsuarioGrupos).
  • Todos os resultados são verificados, os válidos são adicionados à lista de locais.

Endpoint

`/v1/encaminhamento/caixa/{guidAgenteCaixa}/papeis-permitidos`

Obtém todos os papéis permitidos de acesso à caixa de encaminhamento informada.

Regras de Negócio

ObterPapeisPermitidosCaixaEncaminhamento:

  • Verifica se o guidUsuario foi informado corretamente.
  • Busca papéis que permitem o usuário acessar a caixa de encaminhamento (_permissaoHelper.ObterPapeisPermitidosCaixa).
  • Retorna o resultado.

ObterPapeisPermitidosCaixa:

  • Verifica a caixa usando API EAQ ObterAgentesAtivos.
  • Caso não tenha agentes ativos na caixa, finaliza a busca e retorna lista de papéis vazia.
  • Se o agente for cidadão (caso a busca inclua cidadão), ou tenha papel de servidor:
    • Adiciona papel à lista de papéis permitidos especificando o motivo do acesso (se cidadão ou servidor).
  • Se o agente for um grupo:
    • Busca membros do grupo relacionado a caixa usando API EAQ ObterMembrosGrupo.
    • Adiciona os papéis dos membros do grupo à lista especificando o motivo do acesso (GrupoMembro).
  • Caso o agente seja uma Unidade ou Órgão:
    • Busca papéis de gestor usando API EAQ ObterPapelGestorEmConjunto.
    • Adiciona os papéis de gestor à lista especificando motivo do acesso (se gestor da unidade ou do órgão).
    • Busca delegação de acesso à caixa usando API EAQ ObterDelegacoesAcessoParaLocal, e adiciona à lista os papéis encontrados especificando o motivo (se acesso delegado para unidade ou órgão).
    • Busca papéis com permissões para ações usando API EAQ ObterPapeisPermissaoOrgaoUnidadeByAcao, e adiciona à lista os papéis encontrados especificando o motivo (se permissão para unidade ou órgão).

Ação

Endpoint

`/v1/encaminhamento-acao/novo/{guidUsuario}/papeis-permitidos`

Obtém os papéis com os quais o usuário informado pode criar um encaminhamento.

Regras de Negócio

ObterPapeisPermitidoNovo:

  • Verifica se o guidUsuario foi informado corretamente.
  • Busca papéis permitidos para novo encaminhamento (_permissaoEncaminhamentoHelper.ObterPapeisNovoEncaminhamento).
  • Retorna o resultado.

ObterPapeisNovoEncaminhamento:

  • Busca os papéis de servidor e agente ativo (API EAQ ObterUsuarioPapeisServidor, ObterAgenteAtivo).
  • Verifica os resultados e adiciona à lista de papéis credenciados.

Endpoint

`/v1/encaminhamento-acao/tramitar/{idEncaminhamento}/{guidUsuario}/papeis-permitidos`

Obtém os papéis com os quais o usuário informado pode tramitar (responder e reencaminhar) um determinado encaminhamento.

Regras de Negócio

ObterPapeisPermitidoTramitar:

  • Verifica se guidUsuario e idEncaminhamento são válidos.
  • Busca destinos do encaminhamento (_encaminhamentoRepository.ObterDestinosEncaminhamento).
  • Busca papéis permitidos (_permissaoEncaminhamentoHelper.ObterPapeisTramitarEncaminhamento).

ObterDestinosEncaminhamento:

  • Busca na tabela "DestinoEncaminhamentos" todos os registros ligados ao ID e inclui a navegação para Agente.
  • Converte cada Agente encontrado em AgenteDto usando "MapFromAgente".
  • Retorna a lista de agentes.

MapFromAgente:

  • Trata valores nulos.
  • Ajusta atributos do "patriarca" com valores padrão (AjustarPatriarca).
  • Monta um objeto Dto padronizado.

AjustarPatriarca:

  • Detecta quando o agente é de um tipo que deveria ter patriarca.
  • Verifica se os dados estão nulos.
  • Se estiverem, atribui valores padrão do GOVES.
Detalhes AjustarPatriarca
  • O conceito de patriarca foi incorporado no sistema durante a sua utilização em produção, sendo assim, existem vários Agentes que não possuem informações sobre o patriarca.
  • Atualmente os dados do patriarca no Agente é obrigatório para os tipos diferentes de Cidadão e Sistema.
  • Então para os dados antigos que estão com as informações do patriarca nulos, por convensão, é atribuido deliberadamente os dados do GOVES

ObterPapeisTramitarEncaminhamento:

  • Verifica se o encaminhamento possui destinatário, se não possuir, retorna sucesso com a lista vazia.
  • Recupera todas as caixas de encaminhamento do usuário, através de "_permissaoHelper.ObterTodosLocaisAcessoIncluindoCidadaoByAcao".
  • Busca locais com ação delegada, através de "_usuarioManagerApiClient.ObterLocaisDelegacaoAcessoPorUsuario".
  • Busca os papeis para verificar se é servidor (API EAQ ObterLocaisDelegacaoAcessoPorUsuario).
  • Caso os papéis sejam de servidor, percorre lista de destinos:
    • Se o destino atual não estiver na lista de credenciamentos do usuário, passa para o próximo.
    • Caso o destino seja Unidade ou Organização:
      • Busca locais com ação delegada usando "_usuarioManagerApiClient.ObterPapelDelegadoAcessoParaLocalUsuario".
      • Verifica se o usuário é chefe da unidade ou órgão e caso seja, inclui na lista de papéis.
      • Buscar papéis ação e localização (API EAQ ObterPapeisUsuarioByAcaoELocalizacao).
      • Remover Advogados (garante que, mesmo que um advogado receba permissão para acessar a caixa do setor pelo AC Admin, o E-Docs vai bloquear este caso).
    • Caso o destino seja Grupo:
      • Busca todos os papéis do usuário que pertencem ao grupo (API EAQ ObterPapeisServidorEmGrupo).
    • Caso o destino seja Papel:
      • Busca o papel que corresponde ao destino e adiciona à lista de papéis credenciados.
    • Caso o destino seja Cidadão:
      • Busca o agente cidadão para adicionar à lista de papéis credenciados (API EAQ ObterAgenteAtivo).
  • Todos os resultados são verificados, os válidos são adicionados à lista "guidsCredenciamentosUsuario".
  • Remove os papéis repetidos da lista e retorna.

ObterTodosLocaisAcessoIncluindoCidadaoByAcao:

  • Obtem agente (API EAQ ObterAgenteAtivo).
  • Verifica se o resultado é válido e adiciona à lista de locais.
  • Busca locais por ação (ObterTodosLocaisAcessoByAcao).
  • Verifica se o resultado é válido e adiciona à lista de locais.
  • Retorna a lista.

ObterTodosLocaisAcessoByAcao:

  • Verifica se usuário possui papel servidor (API EAQ ObterUsuarioPapeisServidor), caso não possua, para a pesquisa aqui.
  • Busca locais por ação, locais onde é gestor, locais onde é delegado e grupos. Verifica os resultados, os válidos são adicionados à lista de locais. (as buscas são feitas atraves da API EAQ ObterUsuarioLocalizacoesByAcao, ObterUsuarioConjuntosGestor, ObterLocaisDelegacaoAcessoPorUsuario, ObterUsuarioGrupos)

Endpoint

`/v1/encaminhamento-acao/complementar/{idEncaminhamento}/{guidUsuario}/papeis-permitidos`

Obtém os papéis com os quais o usuário informado pode complementar um determinado encaminhamento.

Regras de Negócio

ObterPapeisPermitidoComplementar:

  • Verifica se guidUsuario e isEncaminhamento são válidos.
  • Busca o remetente do encaminhamento (_encaminhamentoRepository.ObterRemetenteEncaminhamento).
  • Busca os papéis com permissão para complementar encaminhamento (_permissaoEncaminhamentoHelper.ObterPapeisComplementarEncaminhamento).
  • Retorna lista com os papéis permitidos.

ObterRemetenteEncaminhamento:

  • Busca na tabela "Encaminhamentos" todos os registros ligados ao ID e inclui a navegação para Agente.
  • Converte cada Agente encontrado em AgenteDto usando "MapFromAgente" (mesmo método usado no Endpoint anterior).
  • Retorna a lista de agentes.

ObterPapeisComplementarEncaminhamento:

  • Caso o remetente seja cidadão e o usuário seja o remetente:
    • Busca agente ativo (API EAQ ObterAgenteAtivo), caso seja válido, adiciona à lista de papéis credenciados.
  • Se não, busca papel de servidor (API EAQ ObterUsuarioPapeisServidor).
  • Verifica se algum desses papéis tem o mesmo ID do remetente do encaminhamento.
  • Se encontrar, adiciona à lista. Se não, retorna lista vazia.

Permissões

Endpoint

`/v1/permissao/usuario/{guidUsuario}/perfil/desenvolvedor`

Verifica se o usuário é desenvolvedor no E-Docs.

Regras de Negócio

IsDeveloper:

  • Busca usuário logado no cache (ObterUsuarioLogadoCache), caso não encontre, retorna false.
  • Verifica se possui perfil de desenvolvedor (usuarioLogadoCache.PossuiPerfil). Caso tenha, retorna true.

ObterUsuarioLogadoCache:

  • Valída parâmetros.
  • Busca o usuário logado no cache, caso não exista ou expirou monta o build (MontarUsuarioLogadoCache).

MontarUsuarioLogadoCache:

  • Verifica se existe um cache para o usuário com menos de 1 minuto de criação (ObterUsuarioLogadoCacheDelay).
  • Caso exista, retorna ele e não tenta montar novamente o usuário.
  • Caso não exista cache novo registrado, realiza a montagem do novo cache para o usuário.

ObterUsuarioLogadoCacheDelay: (Tratativa para evitar chamadas sucessivas devido a loops no login do E-Docs.)

  • Verifica se o UsuarioLogadoCache tem menos de 1 minuto de criação.
  • Se sim, retorna o usuário logado no cache.
  • Caso tenha mais de 1 minuto de criação, retorna nulo.

Processos

Processo

Endpoint

`/v1/processo/{idProcesso}/status`

Obtém o status do processo informado, contendo ultimo ato, ultimo ato de movimentação, se está encerrado ou não, entre outras informações calculadas.

Regras de Negócio

ObterStatus:

  • Constrói o status do processo usando (_processoStatusBuilder.BuildProcessoStatus).
  • BuildProcessoStatus faz uma série de buscas e validações para obter informações como:
    • Custódia;
    • Edições;
    • Autuação;
    • Último ato, etc.
  • Caso alguma busca retorne falha, é gerado erro.

Endpoint

`/v1/processo/{guidUsuario}/todas-caixas`

Obtém todas as caixas de processo nas quais o usuário informado tem permissão de caixa de processo.

Regras de Negócio

ObterTodasCaixasProcesso:

  • Verifica se guidUsuario é válido.
  • Busca todos os locais de acesso usando (ObterTodosLocaisAcessoByAcao).

ObterTodosLocaisAcessoByAcao:

  • Verifica se o usuário possui papel de servidor (API EAQ ObterUsuarioPapeisServidor), caso não possua, retorna a lista de locais vazia.
  • Realiza uma série de buscas:
    • Locais onde o usuário possui permissão para ações (API EAQ ObterUsuarioLocalizacoesByAcao);
    • Locais onde o usuário é gestor (API EAQ ObterUsuarioConjuntosGestor);
    • Locais onde é delegado (_usuarioManagerApiClient.ObterLocaisDelegacaoAcessoPorUsuario);
    • Locais onde os grupos do usuário foram criados (API EAQ ObterUsuarioGrupos).
  • Caso alguma dessas buscas falhe, é gerado erro.
  • Todos os resultados são validados e adicionados à lista de locais.

Endpoint

`/v1/processo/{guidUsuario}/todas-caixas-encerrados`

Obtém todas as caixas de processo encerrados nas quais o usuário informado tem permissão.

Regras de Negócio

ObterTodasCaixasProcessosEncerrados:

  • Verifica se guidUsuario é válido.
  • Busca todos os locais com processos encerrados usando (ObterTodasCaixasProcessosEncerrados).

ObterTodosLocaisAcessoProcessosEncerrados:

  • Verifica se o usuário possui papel de servidor (API EAQ ObterUsuarioPapeisServidor), caso não possua, retorna a lista de locais vazia.
  • Realiza uma série de buscas:
    • Locais onde o usuário é gestor (API EAQ ObterUsuarioConjuntosGestor);
    • Locais onde é delegado (_usuarioManagerApiClient.ObterLocaisDelegacaoAcessoPorUsuario);
    • Locais onde os grupos do usuário foram criados (API EAQ ObterUsuarioGrupos).
    • Locais onde o usuário possui permissão para reabrir (API EAQ ObterUsuarioLocalizacoesByAcao);
  • Caso alguma dessas buscas falhe, é gerado erro.
  • Todos os resultados são validados e adicionados à lista de locais.
  • Valida os locais usando API EAQ ObterAgentesAtivos.

Endpoint

`/v1/processo/caixa/{guidAgenteCaixa}/papeis-permitidos`

Obtém todos os papéis permitidos de acesso à caixa de processo informada.

Regras de Negócio

ObterPapeisPermitidosCaixaProcesso:

  • Verifica se guidCaixa é válido.
  • Busca papéis com permissões para acessar a caixa (ObterPapeisPermitidosCaixa).

ObterPapeisPermitidosCaixa:

  • Verifica a caixa usando API EAQ ObterAgentesAtivos.
  • Caso não tenha agentes ativos na caixa, finaliza a busca e retorna lista de papéis vazia.
  • Se o agente for cidadão (caso a busca inclua cidadão), ou tenha papel de servidor:
    • Adiciona papel à lista de papéis permitidos especificando o motivo do acesso (se cidadão ou servidor).
  • Se o agente for um grupo:
    • Busca membros do grupo relacionado a caixa usando API EAQ ObterMembrosGrupo.
    • Adiciona os papéis dos membros do grupo à lista especificando o motivo do acesso (GrupoMembro).
  • Caso o agente seja uma Unidade ou Órgão:
    • Busca papéis de gestor usando API EAQ ObterPapelGestorEmConjunto.
    • Adiciona os papéis de gestor à lista especificando motivo do acesso (se gestor da unidade ou do órgão).
    • Busca delegação de acesso à caixa usando API EAQ ObterDelegacoesAcessoParaLocal, e adiciona à lista os papéis encontrados especificando o motivo (se acesso delegado para unidade ou órgão).
    • Busca papéis com permissões para ações usando API EAQ ObterPapeisPermissaoOrgaoUnidadeByAcao, e adiciona à lista os papéis encontrados especificando o motivo (se permissão para unidade ou órgão).

Endpoint

`/v1/processo/detalhe/{idProcesso}/permissoes/{guidUsuario}`

Obtém todas as permissões do usuário para exibir as ações de atos e ações na tela de detalhe do processo.

Regras de Negócio

ObterProcessoDetalhePermissoes:

  • Busca status do processo usando (ObterStatus). Caso o resultado da busca seja nulo, retorna lista vazia (sem permissões para o usuário).
  • Realiza busca a papéis com permissão para todas as ações e atos relacionados ao processo e o usuário, os resultados válidos são adicionados às respectivas flags do objeto "processoDetalhePermissoes".
  • Retorna o objeto com as permissões.

Ação

Endpoint

`/v1/processo-acao/credenciamento-leitura-pecas/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão para realizar o credencimento de leitura às peças do processo informado.

Regras de Negócio

ObterPapeisPermitidosCredenciamentoLeituraPeca:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis com credenciamento para leitura da peça (ObterPapeisAcaoCredenciamentoLeituraPeca).

ObterPapeisAcaoCredenciamentoLeituraPeca:

  • Busca status do processo (_processoStatusBuilder.BuildProcessoStatus).
  • Verifica custódia do processo (ObterPapeisCustodiaProcessoEmAndamento).
  • Caso o status do processo não seja nulo, verifica se está encerrado.
    • Se sim, busca papéis com permissão para reabertura do processo (ObterPapeisAtoReabertura), caso encontre adiciona à lista.
    • Se não estiver encerrado, adiciona os papéis de custódia à lista de papéis credenciados.

ObterPapeisCustodiaProcessoEmAndamento/LogicaPapeisCustodiaProcessoEmAndamento:

  • Caso processoStatus não seja fornecido, busca novamente (_processoStatusBuilder.BuildProcessoStatus) e valída o resultado.
  • Se o processo estiver encerrado, retorna lista de credenciados vazia. (não tem papel permitido para a custódia para processos em andamento)
  • Caso não passe a lista de papéis do usuário realiza a busca (API EAQ ObterUsuarioPapeisServidor) e valída o resultado.
  • Se o ultimo ato tenha sido Autuação:
    • Caso o processo tenha Autuação ou local da Autuação igual a null, retorna erro.
    • Se a Autuação foi feita pelo próprio usuário, o próprio papel pode fazer o despacho.
    • Busca e verifica se o usuário possui papel de gestor em conjunto (API EAQ ObterPapelGestorEmConjunto), caso possua, adiciona à lista de credenciados para despacho.
    • Se a custódia for uma Unidade ou Órgão, verifica se o usuário possui papel delegado (_usuarioManagerApiClient.ObterPapelDelegadoAcessoParaLocalUsuario). Caso possua, adiciona à lista.
    • Busca papéis do usuário relacionados a ação e a localização do processo, caso encontre, adiciona à lista.
  • Para demais atos de movimentação (exceto Encerramento):
    • Caso a custódia do processo não tenha sido informada, retorna erro.
    • Se o avocamento foi feito pelo próprio usuário, então o próprio papel pode despachar se ainda estiver ativo.
    • Caso a custódia seja uma Unidade ou Órgão:
      • Busca papel gestor em conjunto (API EAQ ObterPapelGestorEmConjunto) e verifica se o usuário possui este papel. Caso possua, adiciona à lista.
      • Busca papéis com ação delegada (_usuarioManagerApiClient.ObterPapelDelegadoAcessoParaLocalUsuario), caso o usuário possua papel delegado com acesso para o local do processo, adiciona à lista de credenciados para despacho.
      • Busca papéis do usuário relacionados a ação e a localização do processo, caso encontre, adiciona à lista.
    • Caso a custódia seja um grupo:
      • Busca os papéis de servidor no grupo (API EAQ ObterPapeisServidorEmGrupo), caso o usuário possua papel ativo nesse grupo, adiciona o papel à lista.
    • Caso a custódia seja um papel:
      • Limita ao papel de destino.

ObterPapeisAtoReabertura/LogicaPapeisAtoReabertura:

  • Caso processoStatus não seja fornecido, busca novamente (_processoStatusBuilder.BuildProcessoStatus) e valída o resultado.
  • Se o processo não estiver encerrado, ou se a unidade de reabertura ou a custódia sejam nulas, retorna lista de credenciados vazia.
  • Caso papeisUsuario não seja fornecido, busca novamente (API EAQ ObterUsuarioPapeisServidor) e valída o resultado.
  • Busca e verifica se o usuário possui papel de gestor na custódia do processo, caso tenha adiciona papel à lista de credenciados.
  • Verifica se a custódia do processo está em uma unidade ou em um órgão, e se o usuário possui papel delegado no local (_usuarioManagerApiClient.ObterPapelDelegadoAcessoParaLocalUsuario).
  • Verifica se o usuário possui algum papel que permita a reabertura do processo pela localização (API EAQ ObterPapeisUsuarioByAcaoELocalizacao), caso possua, o papel é adicionado à lista de credenciados.

Endpoint

`/v1/processo-acao/gerar-copia/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão para realizar a geração de cópia do processo informado.

**Regras de Negócio

ObterPapeisPermitidosGerarCopia:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis com permissão para gerar cópias do processo (ObterPapeisAcaoGerarCopia).

ObterPapeisAcaoGerarCopia:

  • Contrói status do processo com "BuildProcessoStatus".
  • Verifica se o status é válido e se o processo possui custódia informada. Caso não sejam válidos, retorna erro.
  • Busca papéis credenciados para a ação usando (LogicaPapeisAcaoGerarCopia).

LogicaPapeisAcaoGerarCopia:

  • Verifica se o usuário possui papel de servidor usando API EAQ ObterUsuarioPapeisServidor. Caso não possua, retorna lista vazia (usuário sem permissão para a ação).
  • Caso o processo esteja em andamento, verifica se o usuário possui custódia do processo usando (LogicaPapeisCustodiaProcessoEmAndamento, método já documentado anteriormente).
  • Se o processo esteja encerrado, verifica se o usuário possui custódia do processo usando (LogicaPapeisCustodiaProcessoEncerrado).
  • Verifica se o usuário possui permissão específica para gerar cópias usando API EAQ ObterPapeisUsuarioByAcaoELocalizacao.
  • Se possui permissão especial para a ação sem ter a custódia do processo usando API EAQ PossuiAcao. (ex.: Auditor da SECONT)
  • Se o usuário possui papel com interesse no processo usando (ObterInteressadosByProcesso).
  • Todas as buscas são validadas e adicionadas à lista de papéis credenciados.

LogicaPapeisCustodiaProcessoEncerrado:

  • Verifica se o custodiante do processo possui papel de gestor (API EAQ ObterPapelGestorEmConjunto). Caso possua, adiciona o papel à lista de papéis credenciados.
  • Caso a custódia seja de uma Unidade ou de um Órgão:
    • Verifica se o usuário possui papel com acesso delegado para o processo (_usuarioManagerApiClient.ObterPapelDelegadoAcessoParaLocalUsuario). Caso possua, adiciona à lista.

Endpoint

`/v1/processo-acao/pas-gerar-copia/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão para realizar a geração de cópia do processo do tipo PAS informado.

Regras de Negócio

ObterPapeisPermitidosGerarCopiaPAS:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis com permissão para gerar cópias do processo (API EAQ (ObterPapeisAcaoGerarCopiaPAS)).

ObterPapeisAcaoGerarCopiaPAS:

  • Contrói status do processo com "BuildProcessoStatus", se o resultado for nulo, gera erro.
  • Caso o processo não seja do tipo sancionatório ou não tenha custódia informada, gera erro.
  • Busca papéis com permissão para gerar cópia (LogicaPapeisAcaoGerarCopia, método já documentado). Valida o resultado e adiciona à lista de papéis credenciados.
  • Busca papéis com custódia do processo (LogicaPapeisCustodiaPAS). Valida o resultado e adiciona à lista de papéis credenciados.
  • Remove duplicatas entre custodiantes e requeridos.

LogicaPapeisCustodiaPAS:

  • Busca papéis de advogado no guidUsuario ObterUsuarioPapeisAdvogado.
  • Caso possua papel válido, busca os representantes legais do processo (_processoRepository.ObterRepresentantesLegaisAdvogadosByProcesso), verifica se coincide com o papel do usuário, se sim, adiciona à lista.
  • Busca papéis de servidor do usuário (API EAQ (ObterUsuarioPapeisServidor)).
  • Caso possua papel válido, busca papéis requeridos no processo (a busca inclui papéis de servidor e guid cidadão).
  • Os resultados são validados e adicionados à lista.

Endpoint

`/v1/processo-acao/gerir-nivel-acesso-pecas/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão para gerir o nível de acesso das peças do processo informado.

Regras de Negócio ObterPapeisPermitidosGerirNivelAcessoPecas:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis com permissão para gerir nível (_permissaoProcessoHelper.ObterPapeisAcaoGerirNivelAcessoPecas).

ObterPapeisAcaoGerirNivelAcessoPecas:

  • Constrói status do processo com "BuildProcessoStatus", se o resultado for nulo, gera erro.
  • Busca papéis de servidor (API EAQ (ObterUsuarioPapeisServidor)).
  • Caso o processo não esteja encerrado, busca papéis de custódia do processo (LogicaPapeisCustodiaProcessoEmAndamento, método já documentado). Papéis válidos são adicionados à lista.
  • Se estiver encerrado:
    • Verifica se o responsavel pelo encerramento foi o usuário. Caso tenha sido, ele pode gerir o nível de acesso do processo.
    • Busca papéis com permissão para reabrir o processo (LogicaPapeisAtoReabertura, método já documentado).
    • Os papéis são validados e adicionados à lista de credenciados para a ação.

Endpoint

`/v1/processo-acao/auto-credenciamento/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão para realizar o auto credenciamento no processo.

Regras de Negócio

ObterPapeisPermitidosAutoCredenciamento:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis com permissão para auto credenciamento (ObterPapeisAcaoAutoCredenciamento).

ObterPapeisAcaoAutoCredenciamento:

  • Constrói status do processo com "BuildProcessoStatus", se o resultado for nulo, gera erro.
  • Caso não encontre informações sobre o patriarca no status do processo, retorna lista vazia e finaliza a busca.
  • Busca papéis específicos para a ação (API EAQ ObterPapeisUsuarioByAcaoELocalizacao)).
    • O resultados é validado e adicionado à lista de credenciados (exceto duplicatas).

Endpoint

`/v1/processo-acao/sinalizacao/{idProcesso}/{guidUsuario}/patriarcas-permitidos`

Obtém os patriarcas permitidos para que o usuário informado tenha permissão para realizar a sinalização do processo.

Regras de Negócio

ObterPatriarcasPermitidosSinalizacao:

  • Verifica se guidUsuario é válido.
  • Busca patriarcas com permissão para sinalizar processo (ObterPatriarcasAcaoSinalizar).

ObterPatriarcasAcaoSinalizar:

  • Busca locais onde o usuário possui permissão para sinalizar o processo (API EAQ (ObterUsuarioLocalizacoesByAcao)).
    • Caso não possua, finaliza a busca e retorna lista vazia.
  • Desses locais, seleciona os que são de patriarcas.
    • Caso não encontre, finaliza a busca e retorna lista vazia.
  • Busca patriarcas habilitados (API EAQ (ObterPatriarcasHabilitados)).
    • Caso não encontre, finaliza a busca e retorna lista vazia.
  • Verifica quais dos patriarcas dos locais estão habilitados e adiciona à lista de credenciados (exceto as duplicatas).

Endpoint

`/v1/processo-acao/sinalizacao/{guidUsuario}/patriarcas-permitidos`

Obtém os patriarcas permitidos para que o usuário informado tenha permissão para realizar a sinalização do processo.

Regras de Negócio

Chama o mesmo método do Endpoint anterior (ObterPatriarcasPermitidosSinalizacao).

Associação

Endpoint

`/v1/processo-associacao/{guidUsuario}/locais`

Obtém os locais nos quais o usuário pode criar associação de processos.

Regras de Negócio

ObterLocaisPermitidosAssociacao:

  • Verifica se guidUsuario é válido.
  • Busca locais onde o usuário tem permissão para criar associação de processos (ObterLocaisAssociacaoProcesso).

ObterLocaisAssociacaoProcesso:

  • Busca papéis de servidor do usuário (API EAQ (ObterUsuarioPapeisServidor)).
    • Caso não encontre, finaliza a busca e retorna lista vazia.
  • Desses papéis, encontra os que possuem valor de Unidade ou Órgão, seleciona seus ids e adiciona à lista de locais (exceto as duplicatas).
  • Buscam agentes ativos nesses locais (API EAQ (ObterAgentesAtivos)) e adiciona à lista de locais permitidos.
  • Busca locais pela ação (API EAQ (ObterUsuarioLocalizacoesByAcao)) e adiciona à lista de locais permitidos.
  • Busca locais onde o usuário possui delegação de acesso (_usuarioManagerApiClient.ObterLocaisDelegacaoAcessoPorUsuario) e adiciona à lista de locais permitidos.
  • Busca grupos de trabalho e comissões (API EAQ (ObterUsuarioGruposTrabalhoEComissoes)) e adiciona à lista de locais permitidos.
  • Remove duplicatas e retorna a lista.

Endpoint

`v1/processo-associacao/gerir-associacao/{guidLocal}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos do usuário para realizar a associação de processo no local informado.

Regras de Negócio

ObterPapeisPermitidosAssociacao:

  • Verifica se guidUsuario e guidLocal são válidos.
  • Busca papéis do usuário com permissão para criar associação de processos (ObterPapeisAssociacaoProcesso).

ObterPapeisAssociacaoProcesso:

  • Busca papéis de servidor do usuário (API EAQ (ObterUsuarioPapeisServidor)).
    • Caso não encontre, finaliza a busca e retorna lista vazia.
  • Busca agentes ativos ou inativos no local (API EAQ (ObterAgenteAtivoOuInativo)).
  • Caso o local seja um grupo:
    • Busca papéis de servidor do usuário nesse grupo.
      • Caso não encontre, finaliza a busca e retorna lista vazia.
  • Se não:
    • Verifica se usuário é gestor (API EAQ (ObterPapelGestorEmConjunto)).
    • Se possui papel com acesso delegado (API EAQ (ObterPapelDelegadoAcessoParaLocalUsuario)).
    • Se possui papel com permissão específica por ação ou localização (API EAQ (ObterPapeisUsuarioByAcaoELocalizacao)).
  • Todos os resultados são validados, removido as duplicatas e adicionados à lista de papeis permitidos.

Ato

Endpoint

`/v1/processo-ato/autuacao/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão de autuar um processo.

Regras de Negócio

ObterPapeisPermitidosAutuacao:

  • Verifica se guidUsuario é válido.
  • Busca papéis com permissão para autuação de processo (ObterPapeisAtoAutuacao).

ObterPapeisAtoAutuacao:

  • Busca papéis de servidos relacionados ao usuário (API EAQ (ObterUsuarioPapeisServidor)).
  • Busca papéis com qualquer delegação de acesso (_usuarioManagerApiClient.ObterPapeisComQualquerDelegacaoAcessoPorUsuario).
  • Todos os papéis são validados e adicionados a lista de papéis credenciados (exceto duplicatas).

Endpoint

`/v1/processo-ato/edicao/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão para realizar a edição do processo informado.

Regras de Negócio

ObterPapeisPermitidosEdicao:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis de custódia de processos em andamento (ObterPapeisCustodiaProcessoEmAndamento, método já documentado anteriormente).

Endpoint

`/v1/processo-ato/despacho/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão para realizar o despacho do processo informado.

Regras de Negócio

ObterPapeisPermitidosDespacho:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis de custódia de processos em andamento (ObterPapeisCustodiaProcessoEmAndamento, método já documentado anteriormente).

Endpoint

`/v1/processo-ato/avocamento/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão para realizar o avocamento do processo informado.

Regras de Negócio

ObterPapeisPermitidosAvocamento:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis com permissão para avocamento (ObterPapeisAtoAvocamento).

ObterPapeisAtoAvocamento:

  • Constrói status do processo com "BuildProcessoStatus", se o resultado for nulo, gera erro.
  • Caso o último ato não tenha sido despacho, finaliza a busca e retorna lista vazia (não permite o avocamento).
  • Busca papéis de servidor e adiciona à lista de credenciados.
  • Caso o usuário possua papel responsável pelo último ato do processo, adiciona esse papel à lista.
  • Se o penúltimo ato de movimentação não for nulo:
    • Se esse ato foi feito por uma Unidade ou por um Órgão:
      • Verifica se o usuário possui papel de Gestor (API EAQ (ObterPapelGestorEmConjunto)). Caso possua, adiciona papel à lista de credenciados.
      • Verifica se o usuário possui papel com acesso delegado (API EAQ (ObterPapelDelegadoAcessoParaLocalUsuario)). Caso possua, adiciona papel à lista de credenciados.
      • Verifica se o usuário possui algum papel especifico para avocamento do processo (API EAQ (ObterPapeisUsuarioByAcaoELocalizacao)). Caso possua, adiciona papel à lista de credenciados.
    • Caso tenha sido de um grupo:
      • Verifica se o usuário possui papel de servidor nesse grupo (API EAQ (ObterPapeisServidorEmGrupo)). Caso possua, adiciona o papel à lista de credenciados.
  • Remove possíveis duplicatas da lista de credenciados.

Endpoint

`/v1/processo-ato/entranhamento/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão para reaizar o entranhamento de um documento/encaminhamento no processo informado.

Regras de Negócio

ObterPapeisPermitidosEntranhamento:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis com permissão para entranhamento em processos (ObterPapeisCustodiaProcessoEmAndamento, método já documentado anteriormente).

Endpoint

`/v1/processo-ato/desentranhamento/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis prmitidos para que o usuário informado tenha permissão para realizar o desentranhamento de um documento do processo informado.

Regras de Negócio

ObterPapeisPermitidosDesentranhamento:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis com permissão para entranhamento em processos (ObterPapeisCustodiaProcessoEmAndamento, método já documentado anteriormente).

Endpoint

`/v1/processo-ato/encerramento/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão de realizar o encerramento do processo informado.

Regras de Negócio

ObterPapeisPermitidosEncerramento:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis com permissão para entranhamento em processos (ObterPapeisCustodiaProcessoEmAndamento, método já documentado anteriormente).

Endpoint

`/v1/processo-ato/encerramento/{idProcesso}/{guidUsuario}/unidade-guarda`

Obtém a unidade de guarda para realizar o encerramento do processo informado.

Regras de Negócio

ObterUnidadeGuardaProcesso:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca a unidade de guarda do processo (ObterUnidadeGuardaProcesso).

ObterUnidadeGuardaProcesso:

  • Constrói status do processo com "BuildProcessoStatus", se o resultado for nulo, gera erro.
  • Caso o processo não tenha custódia informada, gera erro.
  • Verifica se possui agente ativo ou inativo na unidade responsável pela custódia do processo.
  • Retorna AgenteUnidade.

Endpoint

`/v1/processo-ato/reabertura/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão de realizar a reabertura do processo informado.

Regras de Negócio

ObterPapeisPermitidosReabertura:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis com permissão para reabertura (ObterPapeisAtoReabertura, método já documentado anteriormente).

Endpoint

`/v1/processo-ato/entranhamento-especial/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão de realizar o entranhamento especial no processo informado.

Regras de Negócio

ObterPapeisPermitidosEntranhamentoEspecial:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis com permissão para entranhamento especial (ObterPapeisAtoEntranhamentoEspecial).

ObterPapeisAtoEntranhamentoEspecial:

  • Constrói status do processo com "BuildProcessoStatus", se o resultado for nulo, gera erro.
  • Caso o processo não tenha custódia informada, gera erro.
  • Busca papéis do usuário com permissão para a ação específica (API EAQ (PossuiAcao).
  • Filtra os papéis retornados para manter apenas os vinculados ao mesmo patriarca da custódia do processo.
  • Remove possíveis duplicatas da lista de credenciados.

Endpoint

`/v1/processo-ato/pas-autuacao/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão de autuar um processo do tipo PAS.

Regras de Negócio

ObterPapeisPermitidosAutuacaoPAS:

  • Verifica se guidUsuario é válido.
  • Busca papéis com permissão para realizar autuação de processos do tipo PAS (ObterPapeisAtoAutuacaoPAS).

ObterPapeisAtoAutuacaoPAS:

  • Realiza busca através de (ObterPapeisAtoAutuacao, método já documentado anteriormente).

Endpoint

`/v1/processo-ato/pas-edicao/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão para realizar a edição do processo do tipo PAS informado.

Regras de Negócio

ObterPapeisPermitidosEdicaoPAS:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis com permissão para realizar edição em processos do tipo PAS (ObterPapeisAtoEdicaoPAS).

ObterPapeisAtoEdicaoPAS:

  • Constrói status do processo através de "BuildProcessoStatus". Caso o resultado seja nulo, gera erro.
  • Verifica se o processo é do tipo Sancionatório. Caso não seja, gera erro.
  • Busca papéis com custódia do processo em andamento (LogicaPapeisCustodiaProcessoEmAndamento, método já documentado anteriormente).

Endpoint

`/v1/processo-ato/pas-entranhamento/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papéis permitidos para que o usuário informado tenha permissão para realizar o entranhamento em um processo do tipo PAS informado.

Regras de Negócio

ObterPapeisPermitidosEntranhamentoPAS:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis com permissão para entranhamento em processos do tipo PAS (ObterPapeisCustodiaProcessoPAS).

ObterPapeisCustodiaProcessoPAS:

  • Constrói status do processo com "BuildProcessoStatus".
  • Verifica se o processo é do tipo sancionatório e se possui custódia informada. Caso contrário, gera erro.
  • Obtém os papéis de custódia do processo relacionados ao usuário (LogicaPapeisCustodiaProcessoEmAndamento, método já documentado anteriormente).
  • Obtém papéis de custódia do processos tipo PAS relacionados ao usuário (LogicaPapeisCustodiaPAS, método já documentado anteriormente).
  • Todos os papéis são validados e adicionados a lista de papéis credenciados (exceto duplicatas).

Endpoint

`/v1/processo-ato/pas-gerir-representantes-legais/{idProcesso}/{guidUsuario}/papeis-permitidos`

Obtém os papeis permitidos para que o usuário informado tenha permissão para realizar a gestão dos representantes legais de um processo do tipo PAS informado.

Regras de Negócio

ObterPapeisPermitidosGerirRepresentantesLegais:

  • Verifica se guidUsuario e idProcesso são válidos.
  • Busca papéis com permissão para a ação gerir representantes (ObterPapeisAcaoGerirRepresentantesPAS).

ObterPapeisAcaoGerirRepresentantesPAS:

  • Constrói status do processo com "BuildProcessoStatus".
  • Verifica se o processo é do tipo sancionatório e se possui custódia informada. Caso contrário, gera erro.
  • Obtém os papéis de custódia do processo relacionados ao usuário (LogicaPapeisCustodiaProcessoEmAndamento, método já documentado anteriormente).
  • Obtém papéis de advogado vinculados ao usuário (API EAQ (ObterUsuarioPapeisAdvogado)).
  • Todos os resultados são validados e adicionados à lista de papéis credenciados. (exceto duplicatas)

Usuários

Endpoint

`/v1/usuario/emails-notificacao`

Obtém o e-mail válido pelas diretrizes do E-Docs para cada guid de usuário informado. Caso o usuário não tenha nenhum e-mail considerado válido, ele não constará na lista de retorno.

Regras de Negócio

ObterEmailsCalculados:

  • Verifica se a lista de guids é válida.
  • Busca email do usuário (API EAQ (ObterUsuarioEmailsByGuid)).
  • Cada email encontrado é validado através de "CalcularEmailValido", e adicionado à lista de emails calculados.

CalcularEmailValido:

  • Caso o objeto emailDto seja nulo, o método termina imediatamente e retorna sucesso com null.
  • Busca papéis de servidor (API EAQ (ObterUsuarioPapeisServidor)).
  • Verifica se o agente existe:
    • Pega o primeiro agente retornado, caso não tenha nenhum agente associado, retorna null.
  • Determina se o cidadão é servidor ou se pertence à SESA ou à SEDU.
  • Caso seja servidor e não da SESA/SEDU:
    • Aceita apenas emails corporativos/gorvernamentais. (caso o email seja pessoal, ele verifica usando as mesmas regras do email corporativo/governamental)
  • Em qualquer outro caso, prioriza o email corporativo. Caso não exista, usa o email pessoal.
  • Cria o objeto de retorno somente se encontrar algum email válido.

Endpoint

`/v1/usuario/{guidUsuario}/cache/limpar`

Limpar dados do cache do usuário logado. (Principal uso no logoff do E-Docs)

Regras de Negócio

Building...

Endpoint

`/v1/usuario/{guidUsuario}/cache/iniciar`

Iniciar no cache o objeto do usuário logado cache, caso exista o objeto é mantido. (Principal uso no login do E-Docs).

Regras de Negócio

Building...

Endpoint

`/v1/usuario/{guidUsuario}/cache/gerar`

Gera os dados do usuário logado no cache com todas as informações de permissao.

Regras de Negócio

MontarUsuarioLogadoCache (método já documentado anteriormente).

Endpoint

`/v1/usuario/{guidUsuario}/cache`

Obtém os dados do usuário logado cache com todas as informações de permissão e detalhes.

Regras de Negócio

ObterUsuarioLogadoCache (método já documentado anteriormente).

Endpoints V2
  • Usam os dados do usuário em cache.