"use client"; import { useState, useEffect } from "react"; interface Registration { id: string; status: string; paymentStatus: string; createdAt: string; user: { email: string; firstName: string; lastName: string; }; webinar: { title: string; dateTime: string; price: number; }; } export default function AdminRegistrationsPage() { const [registrations, setRegistrations] = useState([]); const [loading, setLoading] = useState(true); const [filter, setFilter] = useState("ALL"); useEffect(() => { fetchRegistrations(); }, []); const fetchRegistrations = async () => { try { const response = await fetch("/api/registrations"); if (response.ok) { const data = await response.json(); setRegistrations(data.registrations || []); } } catch (error) { console.error("Failed to fetch registrations:", error); } finally { setLoading(false); } }; const filteredRegistrations = filter === "ALL" ? registrations : registrations.filter((reg) => reg.status === filter); const stats = { total: registrations.length, confirmed: registrations.filter((r) => r.status === "CONFIRMED").length, pending: registrations.filter((r) => r.status === "PENDING").length, cancelled: registrations.filter((r) => r.status === "CANCELLED").length, }; return (

Registrations Management

View and manage webinar registrations

{stats.total}
Total Registrations
{stats.confirmed}
Confirmed
{stats.pending}
Pending
{stats.cancelled}
Cancelled
{["ALL", "CONFIRMED", "PENDING", "CANCELLED"].map((status) => ( ))}
{loading ? (

Loading registrations...

) : (
{filteredRegistrations.length === 0 ? ( ) : ( filteredRegistrations.map((reg) => ( )) )}
User Webinar Status Payment Date
No registrations found
{reg.user.firstName} {reg.user.lastName}
{reg.user.email}
{reg.webinar.title}
{new Date(reg.webinar.dateTime).toLocaleDateString()}
{reg.status} {reg.paymentStatus} {new Date(reg.createdAt).toLocaleDateString()}
)}
); }