- Sistema FOT (Formatura Operations Tracking): * Tela de Gestão FOT (/cursos) com tabela Excel-style * Modal CourseForm com 10 campos (FOT, Empresa, Instituição, etc) * Validação de FOT (5 dígitos numéricos) * Edição de turmas ao clicar na linha * Integração com API backend (empresas, níveis educacionais, universidades) - Dashboard renovado (/painel): * Tabela com 8 colunas (FOT, Data, Curso, Instituição, Ano, Empresa, Tipo, Status) * Filtros avançados: FOT (busca numérica), Data, Tipo de Evento * Removidos filtros de Estado e Cidade * Página de detalhes com tabela vertical (12 informações) * Botão Aprovar redireciona para modal de equipe - Sistema de Aprovação Dupla (/aprovacao): * 2 tabelas separadas por abas (Usuários Normais e Profissionais) * Coluna Universidade renomeada para Empresa * Coluna Função nos profissionais * Workflow de aprovação com atribuição de equipe - Cadastro Profissional (/cadastro-profissional): * Formulário específico para fotógrafos * Dropdown de Função Profissional da API * Tratamento de erro quando backend offline - Modal de Criar Evento: * Tipo de Evento como primeiro campo * Nome do Evento (Opcional) como segundo campo - Componentes novos: * EventTable.tsx - Tabela de eventos com ordenação * EventFiltersBar.tsx - Filtros avançados (3 filtros) * CourseForm.tsx - Formulário FOT completo * ProfessionalForm.tsx - Cadastro profissional - API Service: * Integração com backend Go * Endpoints: /api/empresas, /api/funcoes, /api/niveis-educacionais, /api/universidades, /graduation-years - Documentação: * README.md principal atualizado * frontend/README.md atualizado * Documentação completa de componentes e features
79 lines
2.5 KiB
TypeScript
79 lines
2.5 KiB
TypeScript
import React, { useState } from "react";
|
|
import {
|
|
ProfessionalForm,
|
|
ProfessionalData,
|
|
} from "../components/ProfessionalForm";
|
|
import { useAuth } from "../contexts/AuthContext";
|
|
|
|
interface ProfessionalRegisterProps {
|
|
onNavigate: (page: string) => void;
|
|
}
|
|
|
|
export const ProfessionalRegister: React.FC<ProfessionalRegisterProps> = ({
|
|
onNavigate,
|
|
}) => {
|
|
const { register } = useAuth();
|
|
const [isSuccess, setIsSuccess] = useState(false);
|
|
|
|
const handleSubmit = async (professionalData: ProfessionalData) => {
|
|
try {
|
|
// Aqui você pode fazer a chamada para o backend para cadastrar o profissional
|
|
// Por enquanto, vamos apenas mostrar mensagem de sucesso
|
|
console.log("Dados do profissional:", professionalData);
|
|
setIsSuccess(true);
|
|
} catch (error) {
|
|
console.error("Erro ao cadastrar profissional:", error);
|
|
alert("Erro ao cadastrar profissional. Tente novamente.");
|
|
}
|
|
};
|
|
|
|
if (isSuccess) {
|
|
return (
|
|
<div
|
|
className="min-h-screen flex items-center justify-center"
|
|
style={{ backgroundColor: "#B9CF33" }}
|
|
>
|
|
<div className="bg-white rounded-2xl shadow-2xl p-8 max-w-md w-full mx-4 text-center">
|
|
<div className="w-16 h-16 bg-green-500 rounded-full flex items-center justify-center mx-auto mb-4">
|
|
<svg
|
|
className="w-8 h-8 text-white"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
viewBox="0 0 24 24"
|
|
>
|
|
<path
|
|
strokeLinecap="round"
|
|
strokeLinejoin="round"
|
|
strokeWidth={2}
|
|
d="M5 13l4 4L19 7"
|
|
/>
|
|
</svg>
|
|
</div>
|
|
<h2 className="text-2xl font-bold text-gray-900 mb-2">
|
|
Cadastro Realizado!
|
|
</h2>
|
|
<p className="text-gray-600 mb-6">
|
|
Seu cadastro de profissional foi realizado com sucesso e está
|
|
aguardando aprovação.
|
|
</p>
|
|
<button
|
|
onClick={() => onNavigate("entrar")}
|
|
className="w-full px-6 py-3 text-white font-semibold rounded-lg transition-colors"
|
|
style={{ backgroundColor: "#B9CF33" }}
|
|
>
|
|
Ir para Login
|
|
</button>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<div className="min-h-screen flex items-center justify-center bg-gradient-to-br from-gray-50 to-white p-4 py-8 pt-24">
|
|
<ProfessionalForm
|
|
onSubmit={handleSubmit}
|
|
onCancel={() => onNavigate("cadastro")}
|
|
/>
|
|
</div>
|
|
);
|
|
};
|