? Tela: Criar Nova Turma

Rota: /Turmas/Create

Tipo: Formulário de cadastro

Permissão necessária: Administrador

?? Visão Geral da Tela

Formulário completo para cadastro manual de uma nova turma com todas as informações básicas necessárias.

?? Elementos da Interface

1. Cabeçalho

  • Botão Voltar: Link para retornar à listagem de turmas
  • Título: "Nova Turma" com ícone de escola
  • Subtítulo: "Preencha os dados para criar uma nova turma"

2. Seção: Informações Básicas

Card principal com campos obrigatórios:

  • Nome da Turma * - Texto, exemplo: "Formandos 2025 - Engenharia de Software"
  • Curso * - Texto, exemplo: "Engenharia de Software"
  • Instituição * - Texto, exemplo: "Universidade Federal"
  • Ano de Formatura * - Número, range 2020-2035
  • Descrição - Textarea opcional, informações adicionais

3. Sidebar: Status e Configurações

Status da Turma:

  • Ativa (padrão)
  • Em Planejamento
  • Concluída
  • Cancelada

Visibilidade:

  • Pública (padrão)
  • Privada

Aceitar Novas Inscrições: Toggle switch (ativo por padrão)

4. Sidebar: Configurações Visuais

  • Máximo de Formandos: Campo numérico, padrão 100

5. Botões de Ação

  • Criar Turma: Botão primário azul
  • Cancelar: Botão secundário que retorna à listagem

? Funcionalidades Interativas

Validação de Formulário

  • Validação client-side antes do envio
  • Campos obrigatórios marcados com asterisco vermelho
  • Mensagens de erro inline abaixo de cada campo
  • Ano deve estar entre 2020 e 2035

Estados do Botão Enviar

  • Normal: "Criar Turma" com ícone de salvar
  • Processando: "Criando..." com spinner animado
  • Desabilitado: Durante o processamento

?? Notificações e Feedback

  • Sucesso: Alert "Turma criada com sucesso!" + redirect para Index
  • Erro: Alert com mensagem de erro específica
  • Validação: Mensagens inline em vermelho

?? Regras de Negócio

  • Nome da turma deve ser único dentro do tenant
  • Ano de formatura deve ser futuro ou presente
  • Máximo de formandos deve ser maior que 0
  • Código da turma é gerado automaticamente pelo backend
  • tenant_id é injetado automaticamente do usuário logado

?? Navegação

  • Ao criar com sucesso: Redireciona para /Turmas (Index)
  • Ao clicar em Cancelar: Volta para /Turmas
  • Ao clicar em Voltar: Volta para /Turmas

?? Integração com API

Endpoint: POST /api/admin/turmas

Payload:

{
  "nome": "string",
  "ano": number,
  "curso": "string",
  "instituicao": "string",
  "descricao": "string" | null,
  "status": "ativa" | "planejamento" | "concluida" | "cancelada",
  "visibilidade": "publica" | "privada",
  "aceita_inscricoes": boolean,
  "num_formandos": number
}

?? Responsividade

Desktop: Layout em 2 colunas (principal + sidebar)

Tablet/Mobile: Layout em 1 coluna empilhada