"use client"; import { useEffect, 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 } from "@/components/forms/doctor-registration-form"; // >>> IMPORTES DA API <<< import { listarMedicos, excluirMedico, Medico } from "@/lib/api"; export default function DoutoresPage() { const [doctors, setDoctors] = useState([]); const [loading, setLoading] = useState(false); const [search, setSearch] = useState(""); const [showForm, setShowForm] = useState(false); const [editingId, setEditingId] = useState(null); // Carrega da API async function load() { setLoading(true); try { const list = await listarMedicos({ limit: 50 }); setDoctors(list ?? []); } finally { setLoading(false); } } useEffect(() => { load(); }, []); 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); } // Excluir via API e recarregar async function handleDelete(id: string) { if (!confirm("Excluir este médico?")) return; await excluirMedico(id); await load(); } // Após salvar/criar/editar no form, fecha e recarrega async function handleSaved() { setShowForm(false); await load(); } 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 {loading ? ( Carregando… ) : 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}
); }