import React, { useState, useEffect } from "react"; import { Button } from "../components/Button"; import { Input } from "../components/Input"; import { useAuth } from "../contexts/AuthContext"; import { getCompanies } from "../services/apiService"; interface RegisterProps { onNavigate: (page: string) => void; } export const Register: React.FC = ({ onNavigate }) => { const { register } = useAuth(); const [companies, setCompanies] = useState< Array<{ id: string; nome: string }> >([]); const [isLoadingCompanies, setIsLoadingCompanies] = useState(true); const [formData, setFormData] = useState({ name: "", email: "", phone: "", password: "", confirmPassword: "", empresaId: "", }); const [agreedToTerms, setAgreedToTerms] = useState(false); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(""); const [isPending, setIsPending] = useState(false); useEffect(() => { const loadCompanies = async () => { setIsLoadingCompanies(true); const result = await getCompanies(); if (result.data) { setCompanies(result.data); } setIsLoadingCompanies(false); }; loadCompanies(); }, []); const handleChange = (field: string, value: string | boolean) => { setFormData((prev) => ({ ...prev, [field]: value })); setError(""); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setIsLoading(true); setError(""); // Validação do checkbox de termos if (!agreedToTerms) { setError("Você precisa concordar com os termos de uso para continuar"); setIsLoading(false); return; } // Validações if (formData.password !== formData.confirmPassword) { setError("As senhas não coincidem"); setIsLoading(false); return; } if (formData.password.length < 6) { setError("A senha deve ter no mínimo 6 caracteres"); setIsLoading(false); return; } try { await register({ nome: formData.name, email: formData.email, senha: formData.password, telefone: formData.phone, role: "EVENT_OWNER", // Client Role }); setIsLoading(false); setIsPending(true); } catch (err: any) { setIsLoading(false); setError(err.message || "Erro ao realizar cadastro"); } }; if (isPending) { return (

Cadastro Pendente de Aprovação

Seu cadastro foi realizado com sucesso e está aguardando aprovação da empresa.

Você receberá um e-mail assim que seu cadastro for aprovado e poderá acessar o sistema.

Atenção: Enquanto seu cadastro não for aprovado, você não terá acesso ao sistema.

); } return (
{/* Logo dentro do card */}
Photum Formaturas
Comece agora

Crie sua conta

Já tem uma conta?{" "}

Você é um profissional?

handleChange("name", e.target.value)} /> handleChange("email", e.target.value)} /> handleChange("phone", e.target.value)} mask="phone" />

Se a sua empresa não estiver listada, entre em contato com a administração e selecione "Não Cadastrado"{" "} abaixo.

{isLoadingCompanies ? (

Carregando empresas...

) : ( )}
handleChange("password", e.target.value)} /> handleChange("confirmPassword", e.target.value) } error={ error && (error.includes("senha") || error.includes("coincidem")) ? error : undefined } />
setAgreedToTerms(e.target.checked)} className="mt-0.5 sm:mt-1 h-4 w-4 flex-shrink-0 border-gray-300 rounded focus:ring-2" style={{ accentColor: "#B9CF33" }} />
{error && error.includes("termos") && ( {error} )}
{error && !error.includes("termos") && !error.includes("senha") && !error.includes("coincidem") && (
{error}
)}
); };