From 640604a5dfcb957dde21e743935f0dbd970a5ba7 Mon Sep 17 00:00:00 2001 From: Sidney Date: Thu, 28 May 2026 20:09:41 -0300 Subject: [PATCH] feat(prematricula): duplicate checks, draft warning, flyer banner uploader in MinIO, clean hours --- manager/components/PreMatricula.tsx | 92 ++++++++++++++++++--- manager/server.selfhosted.js | 122 ++++++++++++++++++++++------ manager/services/storage.js | 1 + manager/types.ts | 1 + 4 files changed, 182 insertions(+), 34 deletions(-) diff --git a/manager/components/PreMatricula.tsx b/manager/components/PreMatricula.tsx index a97dae3..379894c 100644 --- a/manager/components/PreMatricula.tsx +++ b/manager/components/PreMatricula.tsx @@ -3,7 +3,7 @@ import { SchoolData, PreMatriculaCampo, PreMatriculaConfig, PreMatriculaInscrica import { Plus, Trash2, Save, Eye, EyeOff, Download, GripVertical, Link2, ClipboardPen, Copy, Check, ChevronDown, ChevronRight, Users, RefreshCw, - FileText, X, Settings2, ArrowLeft, ExternalLink, AlertCircle, UserCheck, Edit + FileText, X, Settings2, ArrowLeft, ExternalLink, AlertCircle, UserCheck, Edit, Upload } from 'lucide-react'; interface Props { @@ -14,7 +14,8 @@ interface Props { const FIELD_TYPES: Record = { text: 'Texto', email: 'Email', phone: 'Telefone', cpf: 'CPF', - date: 'Data', select: 'Seleção', textarea: 'Texto Longo', number: 'Número' + date: 'Data', select: 'Seleção', textarea: 'Texto Longo', number: 'Número', + file: 'Imagem/Documento' }; const DAY_NAMES = ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado']; @@ -339,13 +340,9 @@ const PreMatricula: React.FC = ({ data, onConvert }) => { {config.turmasPermitidas.map(id => { const turma = turmas.find(t => t.id === id); if (!turma) return null; - const dayName = (turma.dia_semana !== null && turma.dia_semana !== undefined && DAY_NAMES[parseInt(turma.dia_semana)]) - ? DAY_NAMES[parseInt(turma.dia_semana)] - : (turma.horario || ''); - const timeStr = turma.horario_inicio_padrao && turma.horario_fim_padrao - ? ` das ${turma.horario_inicio_padrao} às ${turma.horario_fim_padrao}` - : ''; - const horarioStr = `${dayName}${timeStr}`.trim() || 'Horário não definido'; + const horarioStr = turma.horario_inicio_padrao && turma.horario_fim_padrao + ? `${turma.horario_inicio_padrao} às ${turma.horario_fim_padrao}` + : 'Horário não definido'; return (
@@ -391,6 +388,61 @@ const PreMatricula: React.FC = ({ data, onConvert }) => { Se nenhuma turma for adicionada, todas as turmas ativas aparecerão para seleção do aluno. Defina o limite de vagas (deixe em branco para ilimitado).

+
+ + {config?.bannerUrl ? ( +
+ Banner +
+ +
+
+ ) : ( +
+ +
+ )} +