/** * Admin: Kalenderverwaltung (plan.md Abschnitt 13: /admin/calendars/[id]). * Bearbeiten, deaktivieren und Mitglieder verwalten. */ import { redirect } from 'next/navigation'; import { prisma } from '@/lib/db/client'; import { requireCalendarContext } from '@/lib/api/context'; import { canManageCalendar } from '@/lib/permissions/permissions'; import { displayName } from '@/lib/privacy/display'; import { Card } from '@/components/ui/ui'; import { EditCalendarForm } from '@/components/admin/EditCalendarForm'; import { MemberSection } from '@/components/admin/MemberSection'; import { AppShell } from '@/components/layout/AppShell'; interface PageProps { params: Promise<{ id: string }>; } export default async function AdminCalendarPage({ params }: PageProps) { const { id } = await params; const context = await requireCalendarContext(id).catch(() => null); if (!context) { redirect('/login'); } if (!canManageCalendar(context.user, context.calendar)) { redirect('/dashboard'); } const reservations = await prisma.reservation.findMany({ where: { calendarId: id, status: 'CONFIRMED' }, orderBy: { startAt: 'desc' }, take: 50, select: { id: true, title: true, startAt: true, endAt: true, user: { select: { email: true, username: true } }, }, }); return (

{context.calendar.title} verwalten

Letzte Reservierungen

{reservations.length === 0 ? (

Noch keine Reservierungen.

) : (
    {reservations.map((reservation) => (
  • {reservation.startAt.toLocaleString('de-DE')} –{' '} {reservation.endAt.toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit', })} {' '} {reservation.title} {displayName(reservation.user.username, reservation.user.email)}
  • ))}
)}
); }