"use client"; import { useMemo, useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; import { MoreHorizontal, Plus, Search, Edit, Trash2, ArrowLeft, Eye } from "lucide-react"; import { Badge } from "@/components/ui/badge"; import { DoctorRegistrationForm, Medico } from "@/components/forms/doctor-registration-form"; // Mock data for doctors const initialDoctors: Medico[] = [ { id: "1", nome: "Dr. João Silva", especialidade: "Cardiologia", crm: "12345-SP", email: "joao.silva@example.com", telefone: "(11) 99999-1234", }, { id: "2", nome: "Dra. Maria Oliveira", especialidade: "Pediatria", crm: "54321-RJ", email: "maria.oliveira@example.com", telefone: "(21) 98888-5678", }, ]; export default function DoutoresPage() { const [doctors, setDoctors] = useState(initialDoctors); const [search, setSearch] = useState(""); const [showForm, setShowForm] = useState(false); const [editingId, setEditingId] = useState(null); const filtered = useMemo(() => { if (!search.trim()) return doctors; const q = search.toLowerCase(); return doctors.filter((d) => { const byName = (d.nome || "").toLowerCase().includes(q); const byCrm = (d.crm || "").toLowerCase().includes(q); const byEspecialidade = (d.especialidade || "").toLowerCase().includes(q); return byName || byCrm || byEspecialidade; }); }, [doctors, search]); function handleAdd() { setEditingId(null); setShowForm(true); } function handleEdit(id: string) { setEditingId(id); setShowForm(true); } function handleDelete(id: string) { if (!confirm("Excluir este médico?")) return; setDoctors((prev) => prev.filter((x) => String(x.id) !== String(id))); } function handleSaved(medico: Medico) { const saved = medico; setDoctors((prev) => { // Se não houver ID, é um novo médico if (!saved.id) { return [{ ...saved, id: String(Date.now()) }, ...prev]; } // Se houver ID, é uma edição const i = prev.findIndex((x) => String(x.id) === String(saved.id)); if (i < 0) return [{ ...saved, id: String(Date.now()) }, ...prev]; // Caso não encontre, adiciona const clone = [...prev]; clone[i] = saved; return clone; }); setShowForm(false); } if (showForm) { return (

{editingId ? "Editar Médico" : "Novo Médico"}

setShowForm(false)} />
); } return (

Médicos

Gerencie os médicos da sua clínica

setSearch(e.target.value)} />
Nome Especialidade CRM Contato Ações {filtered.length > 0 ? ( filtered.map((doctor) => ( {doctor.nome} {doctor.especialidade} {doctor.crm}
{doctor.email} {doctor.telefone}
alert(JSON.stringify(doctor, null, 2))}> Ver handleEdit(String(doctor.id))}> Editar handleDelete(String(doctor.id))} className="text-destructive"> Excluir
)) ) : ( Nenhum médico encontrado )}
Mostrando {filtered.length} de {doctors.length}
); }