import type { Metadata } from 'next' import { notFound } from 'next/navigation' import { db } from '@/lib/db' import { requireUser } from '@/lib/auth/current' import { listLadders } from '@/lib/roles/ladders' import { de } from '@/lib/i18n/de' import { LadderEditor } from './LadderEditor' import { NewLadderForm } from './NewLadderForm' export const metadata: Metadata = { title: de.ladderAdmin.heading } export const dynamic = 'force-dynamic' /** * Ranggefüge verwalten. * * Eigene Seite und nicht ein weiterer Block auf der Rollenseite: dort steht * jede Rolle für sich mit zweiundzwanzig Kästchen, hier steht die Ordnung * zwischen den Rollen. Das sind zwei verschiedene Fragen, und beide brauchen * Platz. */ export default async function LadderAdminPage() { const user = await requireUser() if (!user.permissions.isAdmin && !user.permissions.permissions.has('roles.manage')) { notFound() } const [leitern, rollen, stufen] = await Promise.all([ listLadders(user.permissions), db.roleMapping.findMany({ orderBy: [{ sortOrder: 'desc' }, { label: 'asc' }], select: { discordRoleId: true, label: true, ladderId: true, isPresent: true, clearanceLevel: true, permissions: true, grantsMembership: true, }, }), db.clearanceLevelConfig.findMany({ orderBy: { level: 'asc' } }), ]) return (

{de.ladderAdmin.heading}

{de.ladderAdmin.intro}

{de.ladderAdmin.why}

{rollen.length === 0 ? (

{de.ladderAdmin.noRoles}

) : ( <>
{leitern.length === 0 ? (

{de.ladderAdmin.empty}

) : (
{leitern.map((leiter) => ( rolle.discordRoleId)} allRoles={rollen} levels={stufen.map((stufe) => ({ level: stufe.level, name: stufe.name }))} /> ))}
)} )}
) }