'use client' import { useState, useEffect } 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 { Search, Plus, MoreHorizontal, Eye, Edit, Trash2, ArrowLeft, } from "lucide-react" import { DoctorRegistrationForm } from "@/components/forms/doctor-registration-form" import { getMedicos, DoctorFormData } from "@/lib/api" export default function MedicosPage() { const [searchTerm, setSearchTerm] = useState("") const [medicos, setMedicos] = useState([]) const [loading, setLoading] = useState(true) const [showDoctorForm, setShowDoctorForm] = useState(false) const [editingDoctor, setEditingDoctor] = useState(null) async function fetchMedicos() { try { setLoading(true) const data = await getMedicos() setMedicos(data) } catch (error) { console.error("Erro ao buscar médicos:", error) } finally { setLoading(false) } } useEffect(() => { fetchMedicos() }, []) const filteredMedicos = medicos.filter((medico) => medico.nome.toLowerCase().includes(searchTerm.toLowerCase()) || (medico.crm && medico.crm.toLowerCase().includes(searchTerm.toLowerCase())) || (medico.especialidade && medico.especialidade.toLowerCase().includes(searchTerm.toLowerCase())) ) const handleViewDetails = (doctorId: number) => { console.log("[v0] Ver detalhes do médico:", doctorId) } const handleEditDoctor = (doctor: DoctorFormData) => { setEditingDoctor(doctor) setShowDoctorForm(true) } const handleDeleteDoctor = (doctorId: number) => { setMedicos(medicos.filter(m => m.id !== doctorId)) } const handleAddDoctor = () => { setEditingDoctor(null) setShowDoctorForm(true) } const handleFormClose = () => { setShowDoctorForm(false) setEditingDoctor(null) fetchMedicos() // Recarrega os dados após fechar o formulário } if (showDoctorForm) { return (

{editingDoctor ? "Editar Médico" : "Cadastrar Novo Médico"}

{editingDoctor ? "Atualize as informações do médico" : "Preencha os dados do novo médico"}

) } return (

Médicos

Gerencie os médicos da clínica

setSearchTerm(e.target.value)} className="pl-10" />
Nome CRM Especialidade Celular E-mail Ações {loading ? ( Carregando... ) : filteredMedicos.map((medico) => (
{medico.nome.charAt(0).toUpperCase()}
{medico.crm} - {medico.crmUf} {medico.especialidade} {medico.celular} {medico.email} handleViewDetails(medico.id!)}> Ver detalhes handleEditDoctor(medico)}> Editar handleDeleteDoctor(medico.id!)} className="text-destructive"> Excluir
))}
Mostrando {filteredMedicos.length} de {medicos.length} médicos
) }