'use client'; import React, { useState, useEffect } from 'react'; import { useParams, useRouter } from 'next/navigation'; import Link from 'next/link'; import { useEvents } from '../../../../hooks/useEvents'; export default function EventDetailsPage() { const params = useParams(); const router = useRouter(); const eventId = params.id as string; const { getEventById, deleteEvent } = useEvents(); const [event, setEvent] = useState(null); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(''); const [isDeleting, setIsDeleting] = useState(false); useEffect(() => { const loadEvent = async () => { setIsLoading(true); setError(''); try { const eventData = await getEventById(eventId); if (eventData) { setEvent(eventData); } else { setError('Event not found'); } } catch (err) { console.error('Error loading event:', err); setError('Failed to load event data. Please try again.'); } finally { setIsLoading(false); } }; loadEvent(); }, [eventId, getEventById]); const handleDelete = async () => { if (!window.confirm('Are you sure you want to delete this event?')) { return; } setIsDeleting(true); try { const success = await deleteEvent(eventId); if (success) { router.push('/admin/events'); } else { setError('Failed to delete event. Please try again.'); } } catch (err) { console.error('Error deleting event:', err); setError('An unexpected error occurred. Please try again later.'); } finally { setIsDeleting(false); } }; if (isLoading) { return (
Loading event data...
); } if (error) { return (

Error

{error}

Return to Events
); } if (!event) { return null; } // Format date for display const formatDate = (dateString: string) => { const date = new Date(dateString); return date.toLocaleDateString('en-US', { weekday: 'long', month: 'long', day: 'numeric', year: 'numeric' }); }; return (

{event.title}

Back to Events Edit Event
{/* Event details */}

Event Details

{event.description}

{/* Tags */} {event.tags && event.tags.length > 0 && (

Tags

{event.tags.map((tag: string, index: number) => ( {tag} ))}
)} {/* Recurring info */} {event.recurring && (

Recurrence

{event.recurrencePattern}

)}
{/* Event metadata */}

Event Information

Date

{formatDate(event.date)}

Time

{event.time}

Location

{event.location}

Category

{event.category}

Status

{event.status.charAt(0).toUpperCase() + event.status.slice(1)}
{/* Registration info */}

Registration

{event.registrationRequired ? (

Registration is required for this event.

Current Registrations

{event.registeredCount}

{event.maxAttendees && (

Maximum Attendees

{event.maxAttendees}

)} {event.maxAttendees && (

{event.registeredCount} of {event.maxAttendees} spots filled ({Math.round((event.registeredCount / event.maxAttendees) * 100)}%)

)}
) : (

Registration is not required for this event.

)}
{/* Danger zone */}

Danger Zone

Deleting this event will permanently remove it and cannot be undone.

); }