"use client"; import React, { useState, useEffect, useCallback, FormEvent } from "react"; import { useRouter, useParams } from "next/navigation"; import Link from "next/link"; import { medicosApi, Doctor } from "@/services/medicosApi"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Textarea } from "@/components/ui/textarea"; import { Checkbox } from "@/components/ui/checkbox"; import { ArrowLeft, Save, Loader2 } from "lucide-react"; // Usaremos Partial para o formulário, pois nem todos os campos são obrigatórios na edição. type DoctorFormData = Partial; export default function EditarMedicoPage() { const router = useRouter(); const params = useParams(); const doctorId = params.id as string; const [formData, setFormData] = useState({}); const [isLoading, setIsLoading] = useState(true); const [isSubmitting, setIsSubmitting] = useState(false); const [error, setError] = useState(null); const [isGuiaConvenio, setIsGuiaConvenio] = useState(false); const [validadeIndeterminada, setValidadeIndeterminada] = useState(false); const fetchDoctor = useCallback(async () => { if (!doctorId) { setError("ID do médico não fornecido."); setIsLoading(false); return; } setIsLoading(true); setError(null); try { const data = await medicosApi.getById(doctorId); if (data) { setFormData(data); } else { setError("Médico não encontrado."); } } catch (e) { console.error("Erro ao carregar dados do médico:", e); setError("Não foi possível carregar os dados do médico."); } finally { setIsLoading(false); } }, [doctorId]); useEffect(() => { fetchDoctor(); }, [fetchDoctor]); const handleInputChange = (field: keyof DoctorFormData, value: string | boolean) => { setFormData((prev) => ({ ...prev, [field]: value })); }; const handleSubmit = async (e: FormEvent) => { e.preventDefault(); setIsSubmitting(true); setError(null); try { await medicosApi.update(doctorId, formData); router.push("/medicos"); // Redireciona para a lista após o sucesso } catch (e) { console.error("Erro ao atualizar médico:", e); setError("Não foi possível salvar as alterações. Tente novamente."); } finally { setIsSubmitting(false); } }; if (isLoading) { return (
Carregando dados do médico...
); } if (error) { return (

{error}

); } return (

Editar Médico

Atualize as informações do médico

Dados Pessoais

handleInputChange("full_name", e.target.value)} required />
handleInputChange("cpf", e.target.value)} placeholder="000.000.000-00" required />
handleInputChange("rg", e.target.value)} placeholder="00.000.000-0" />
{/* Outros campos do formulário seguem o mesmo padrão, usando formData.nome_da_coluna */}
{/* Outras seções do formulário (Profissional, Contato, etc.) */} {/* Omitido para brevidade, mas a lógica de value e onChange deve seguir o padrão acima */}
); }