Tela: Criar Nova Turma (/Turmas/Create)
? 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