"use client"; import React, { useState } from "react"; import { createUserWithEmailAndPassword } from "firebase/auth"; import { ref, set } from "firebase/database"; import { auth, db } from "@/lib/firebase"; import { useRouter } from "next/navigation"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; import Link from "next/link"; export default function RegisterPage() { const [formData, setFormData] = useState({ ownerName: "", ownerPhone: "", establishmentName: "", email: "", establishmentPhone: "", password: "", }); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); const router = useRouter(); const handleChange = (e: React.ChangeEvent) => { setFormData({ ...formData, [e.target.id]: e.target.value }); }; const buildDocumentId = (email: string) => { return email.replace(/\./g, "_").replace(/@/g, "_at_"); }; const handleRegister = async (e: React.FormEvent) => { e.preventDefault(); setError(""); setLoading(true); try { // 1. Criar utilizador na Firebase Auth const userCredential = await createUserWithEmailAndPassword(auth, formData.email, formData.password); const user = userCredential.user; // 2. Preparar payload conforme a App Android const documentId = buildDocumentId(formData.email); const payload = { uid: user.uid, email: formData.email, displayName: formData.establishmentName, role: "ADMIN", accountType: "ESTABELECIMENTO", createdAt: Date.now(), ownerName: formData.ownerName, ownerEmail: formData.email, ownerPhone: formData.ownerPhone, establishmentName: formData.establishmentName, establishmentEmail: formData.email, establishmentPhone: formData.establishmentPhone, }; // 3. Gravar na Realtime Database em /Restaurantes await set(ref(db, `Restaurantes/${documentId}`), payload); router.push("/"); } catch (err: any) { console.error(err); setError(err.message || "Ocorreu um erro ao registar o restaurante."); } finally { setLoading(false); } }; return ( Novo Restaurante Crie a sua conta de gestão no ReservaMesa
{error && (
{error}
)}
Já tem conta?{" "} Iniciar sessão
); }