import { prisma } from "@/lib/prisma" import Navigation from "@/components/Navigation" import Link from "next/link" import { getSession } from "@/lib/auth-simple" import { redirect } from "next/navigation" import { getTournamentStatus } from "@/lib/tournamentUtils" export default async function AdminTournamentsPage() { const session = await getSession() if (!session) { redirect("/auth/login") } // Fetch user role from database const user = await prisma.user.findUnique({ where: { id: session.user.id }, select: { role: true }, }); const isAdmin = user?.role === "club_admin" const tournaments = await prisma.event.findMany({ orderBy: { createdAt: "desc" }, include: { participants: true, teams: { include: { player1: true, player2: true, }, }, }, }) // Update tournament statuses based on event date const updatedTournaments = await Promise.all( tournaments.map(async (tournament) => { const calculatedStatus = getTournamentStatus(tournament.eventDate); // Only update if the calculated status differs from the stored status if (tournament.status !== calculatedStatus) { await prisma.event.update({ where: { id: tournament.id }, data: { status: calculatedStatus }, }); return { ...tournament, status: calculatedStatus }; } return tournament; }) ) return (

{isAdmin ? 'Tournament Management' : 'Tournaments'}

{isAdmin && ( Create Tournament )}
{updatedTournaments.map((tournament) => ( ))}
Tournament Format Status Participants Actions
{tournament.name} {tournament.eventDate && (

{new Date(tournament.eventDate).toLocaleDateString()}

)}
{tournament.format} {tournament.status} {tournament.participants.length} View {isAdmin && ( Edit )}
{updatedTournaments.length === 0 && (

No tournaments found.

{isAdmin && ( Create your first tournament )}
)}
) }