/** * Admin: Kalenderverwaltung (Cards-Ansicht). * Zeigt alle Kalender als Karten - eigene und die anderer Benutzer. * Verwaltung direkt im Bearbeiten-Modal oder auf der Detailseite * /admin/calendars/[id] (Invites, Mitglieder, Reservierungen). */ import { redirect } from 'next/navigation'; import { prisma } from '@/lib/db/client'; import { requireDbUser } from '@/lib/api/context'; import { AppShell } from '@/components/layout/AppShell'; import { CalendarManager } from '@/components/admin/CalendarManager'; export default async function ManageCalendarsPage() { const user = await requireDbUser().catch(() => null); if (!user || user.role !== 'ADMIN') { redirect('/dashboard'); } const calendars = await prisma.calendar.findMany({ orderBy: { createdAt: 'desc' }, select: { id: true, title: true, description: true, timezone: true, isActive: true, maxReservationMinutes: true, showTitleToMembers: true, showNotesToMembers: true, ownerId: true, owner: { select: { email: true, username: true } }, _count: { select: { members: true, reservations: true } }, }, }); return ( ({ id: calendar.id, title: calendar.title, description: calendar.description, timezone: calendar.timezone, isActive: calendar.isActive, ownerEmail: calendar.owner.username ?? calendar.owner.email, isOwn: calendar.ownerId === user.id, memberCount: calendar._count.members, reservationCount: calendar._count.reservations, maxReservationMinutes: calendar.maxReservationMinutes, showTitleToMembers: calendar.showTitleToMembers, showNotesToMembers: calendar.showNotesToMembers, }))} /> ); }