"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { Calendar, AlertCircle } from "lucide-react"; import { notifications } from "@/lib/notifications"; interface AppointmentModalFromChatProps { open: boolean; onClose: () => void; onSuccess?: () => void; } export const AppointmentModalFromChat = ({ open, onClose, onSuccess, }: AppointmentModalFromChatProps) => { const [motivoConsulta, setMotivoConsulta] = useState(""); const [isSubmitting, setIsSubmitting] = useState(false); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!motivoConsulta.trim()) { notifications.validation.requiredField("motivo de consulta"); return; } setIsSubmitting(true); try { const response = await fetch("/api/appointments", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ motivoConsulta: motivoConsulta.trim(), // No enviamos fechaSolicitada - el doctor la asignará }), }); if (!response.ok) { const error = await response.json(); throw new Error(error.error || "Error al crear cita"); } notifications.appointments.created(); setMotivoConsulta(""); onClose(); onSuccess?.(); } catch (error) { const message = error instanceof Error ? error.message : undefined; notifications.appointments.createError(message); } finally { setIsSubmitting(false); } }; const handleClose = () => { if (!isSubmitting) { setMotivoConsulta(""); onClose(); } }; return (
Solicitar Cita Médica
Describe el motivo de tu consulta. Un médico revisará tu solicitud y te asignará una fecha y hora para la cita telemática.