import { createClient } from "@/lib/supabase/server"; import { getCurrentProfile } from "@/lib/auth/profile"; import { PageHeader } from "@/components/dashboard/page-header"; import { GlassCard } from "@/components/ui/glass-card"; import Link from "next/link"; import { parseLeagueRules, defaultLeagueRules } from "@/lib/rules/schema"; export default async function ManagerRulesPage() { const supabase = await createClient(); const ctx = await getCurrentProfile(); const { data: memberships } = await supabase .from("team_members") .select("teams(competition_id, competitions(league_id, name, leagues(name)))") .eq("user_id", ctx!.user.id) .eq("role", "manager"); const leagueIds = new Set(); const leagueNames = new Map(); memberships?.forEach((m) => { const team = m.teams as { competitions: { league_id: string; leagues: { name: string } | null } | null; } | null; const leagueId = team?.competitions?.league_id; const name = team?.competitions?.leagues?.name; if (leagueId) { leagueIds.add(leagueId); if (name) leagueNames.set(leagueId, name); } }); const rulesBlocks = await Promise.all( [...leagueIds].map(async (leagueId) => { const { data: latest } = await supabase .from("league_rules") .select("rules, version") .eq("league_id", leagueId) .order("version", { ascending: false }) .limit(1) .single(); const rules = latest?.rules ? parseLeagueRules(latest.rules) : defaultLeagueRules; return { leagueId, name: leagueNames.get(leagueId) ?? "League", rules, version: latest?.version ?? 0 }; }) ); return (
{rulesBlocks.length === 0 ? (

No league rules available yet. You need to be assigned as a team manager.

) : ( rulesBlocks.map((block) => (
Win points
{block.rules.points_win}
Draw points
{block.rules.points_draw}
Format
{block.rules.round_robin_format}
Auto-qualify (CL)
{block.rules.auto_qualify_count}
View full rules page
)) )}
); }