Class ConfiguracaoAdminViewController

java.lang.Object
br.com.vantroba.bi.transporte.configuracao.ConfiguracaoAdminViewController

@Controller("/admin/configuracoes") public class ConfiguracaoAdminViewController extends Object
Tela admin de configurações globais (bi_configuracao).

Proteção real via micronaut-security (ViewSecurityRule) em /admin/** (exige sessão; gate de email @xadm.com.br no login). O controller não declara @Secured — a regra de view decide o acesso.

Forma de URL e contrato dos endpoints:

  • GET /admin/configuracoes → lista (JTE admin/configuracoes).
  • POST /admin/configuracoes → cria nova chave (form-urlencoded).
  • POST /admin/configuracoes/{id} → edita o valor (form-urlencoded).

O controller fala com ConfiguracaoAdminService, nunca com o repositório diretamente — ArchUnit (controllersDoNotDependOnRepositories).

Exceções de domínio (NotFoundException=404, ForbiddenException=403, BadRequestException=400, ConflictException=409) propagam direto pro cliente; o Micronaut traduz HttpStatusException no status correspondente. UI usa query string (?erro=.../?ok=...) pra mensagens em redirects do happy path.

  • Constructor Details

    • ConfiguracaoAdminViewController

      public ConfiguracaoAdminViewController(ConfiguracaoAdminService service)
      Cria o controller injetando o serviço admin.
      Parameters:
      service - serviço de configurações.
  • Method Details

    • listar

      @Get @View("admin/configuracoes") public Map<String,Object> listar(@Nullable @QueryValue String ok, @Nullable @QueryValue String erro)
      Página de lista — mostra todas as configurações, com badge "sistema" e edição desabilitada nas rows sistema=TRUE.
      Parameters:
      ok - id da chave alterada/criada (mensagem verde de sucesso).
      erro - código de erro para mensagem amarela (ex.: sistema, parse).
      Returns:
      modelo da view admin/configuracoes.
    • editar

      @Post(value="/{id}", consumes="application/x-www-form-urlencoded") public io.micronaut.http.HttpResponse<?> editar(io.micronaut.http.HttpRequest<?> request, @PathVariable String id, @Body("valor") @Nullable String valor, @Body("_csrf") @Nullable String csrf)
      Edita o valor de uma chave existente. POST → redirect 302 para a lista (PRG).
      Parameters:
      request - a requisição HTTP (CSRF).
      id - a chave da configuração a editar.
      valor - o novo valor.
      csrf - token CSRF do form.
      Returns:
      redirect 302.
    • criar

      @Post(consumes="application/x-www-form-urlencoded") public io.micronaut.http.HttpResponse<?> criar(io.micronaut.http.HttpRequest<?> request, @Body("id") @Nullable String id, @Body("tipo") @Nullable String tipo, @Body("valor") @Nullable String valor, @Body("descricao") @Nullable String descricao, @Body("_csrf") @Nullable String csrf)
      Cria uma chave nova. POST → redirect 302 para a lista (PRG).
      Parameters:
      request - a requisição HTTP (CSRF).
      id - chave nova.
      tipo - tipo (STRING/INT/BOOL/TIMESTAMP/JSON).
      valor - valor inicial.
      descricao - descrição humana (opcional).
      csrf - token CSRF.
      Returns:
      redirect 302.