/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-unused-vars */ 'use client' import React, { useState } from 'react' import AddGuestFromGuestBook from './AddGuestFromGuestBook' interface Creator { id: string email: string name: string | null role: 'COUPLE' | 'PLANNER' | 'GUEST' } interface EventData { id: string name: string date: Date | null location: string | null creatorId: string createdAt: string creator: Creator guests: any[] eventGuests: any[] } interface Props { event: EventData } export default function EventInfoDisplay({ event }: Props) { const [isEditing, setIsEditing] = useState(false); const [showSearch, setShowSearch] = useState(false); const eventGuests = event.eventGuests console.log(eventGuests) const [saving, setSaving] = useState(false) const [error, setError] = useState('') const [dateTime, setDateTime] = useState(() => { if (event.date) { const date = new Date(event.date); return new Date(date.getTime() - date.getTimezoneOffset() * 60000) .toISOString() .slice(0, 16); // format: "yyyy-MM-ddTHH:mm" } return ''; }); const [form, setForm] = useState({ name: event.name, date: dateTime, location: event.location || '', }) function handleChange(e: React.ChangeEvent) { const { name, value } = e.target setForm(prev => ({ ...prev, [name]: value })) } async function handleSave() { setSaving(true) setError('') try { const res = await fetch(`/api/events/${event.id}`, { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(form), }) if (!res.ok) { const data = await res.json() setError(data.message || 'Update failed') return } setIsEditing(false) } catch (err) { setError('Something went wrong.') } finally { setSaving(false) } } // async function handleChangeRsvp(e: any) { // const newRsvp = e.target.value as 'YES' | 'NO' | 'PENDING'; // try { // const res = await fetch( // `/api/events/${guest.eventId}/guests/${guest.guestBookEntryId}/rsvp`, // { // method: 'PATCH', // headers: { 'Content-Type': 'application/json' }, // body: JSON.stringify({ rsvp: newRsvp }), // } // ); // if (!res.ok) { // throw new Error('Failed to update RSVP'); // } // // Optionally trigger re-fetch or state update here // } catch (err) { // console.error('RSVP update error:', err); // // Optionally show error message in UI // } // } function formatDate(date: string) { const d = new Date(date) return `${d.toLocaleDateString()} ${d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}` } return (

{event.name}

{/* Event Date */}
{isEditing ? ( setDateTime(e.target.value)} /> ) : (

{event.date ? formatDate(event.date.toDateString()) : 'N/A'}

)}
{/* Location */}
{isEditing ? ( ) : (

{event.location || 'N/A'}

)}
{/* Creator Email */}

{event.creator.email}

{/* Created At */}

{formatDate(event.createdAt)}

{error &&

{error}

} {isEditing && (
)}

Guest List

{showSearch && }
    {eventGuests.length && eventGuests.map(guest => (
  • {guest.guestBookEntry.fName + " " + guest.guestBookEntry.lName}

  • ))}
Vendors
) }