'use client' import { useState, useEffect } from 'react' import { Button } from '@/components/ui/button' import { Card, CardContent } from '@/components/ui/card' import { CheckCircle2, Calendar, Clock, MapPin, User, Mail } from 'lucide-react' import { format } from 'date-fns' import { es } from 'date-fns/locale' /** @description Booking confirmation page component displaying appointment details and important information after successful booking. */ export default function ConfirmacionPage() { const [bookingDetails, setBookingDetails] = useState(null) const [loading, setLoading] = useState(true) const [verified, setVerified] = useState(false) useEffect(() => { const params = new URLSearchParams(window.location.search) const shortId = params.get('short_id') if (shortId) { fetchBookingDetails(shortId) } }, []) const fetchBookingDetails = async (shortId: string) => { setLoading(true) try { const response = await fetch(`/api/bookings?short_id=${shortId}`) const data = await response.json() if (data.success && data.bookings && data.bookings[0]) { setBookingDetails(data.bookings[0]) setVerified(true) } else { alert('No se encontró la reserva con el código proporcionado') } } catch (error) { console.error('Error fetching booking details:', error) alert('Error al cargar los detalles de la reserva') } finally { setLoading(false) } } if (loading) { return (

Cargando detalles de la reserva...

) } if (!verified) { return (

Código no válido o reserva no encontrada.

) } return (

¡Reserva Confirmada!

Tu cita ha sido confirmada exitosamente.

Detalles de la Cita

Fecha

{format(new Date(bookingDetails.start_time_utc), 'EEEE, d MMMM yyyy', { locale: es })}

Hora

{format(new Date(bookingDetails.start_time_utc), 'HH:mm', { locale: es })} - {format(new Date(bookingDetails.end_time_utc), 'HH:mm', { locale: es })}

Servicio

{bookingDetails.service?.name}

Duración: {bookingDetails.service?.duration_minutes} minutos

{bookingDetails.staff && (

Estilista

{bookingDetails.staff.display_name}

)}

Ubicación

{bookingDetails.location?.name}

{bookingDetails.resource && (

Estación

{bookingDetails.resource.name}

)}

Tu Código de Reserva

{bookingDetails.short_id}

Guarda este código para tu referencia y confirma tu llegada en el kiosko.

Información Importante

Llega 10 minutos antes de tu cita para garantizar el mejor servicio.

Cancelaciones deben hacerse con al menos 24 horas de anticipación.

Kiosko: Confirma tu llegada al llegar usando el código de 6 caracteres.

{bookingDetails.service?.base_price && (

Pago: El pago se realiza en el salón al término del servicio.

)}
) }