Prepare Kalendartool for MPM and disable invites
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Admin: Kalenderverwaltung (plan.md Abschnitt 13: /admin/calendars/[id]).
|
||||
* Bearbeiten, deaktivieren, Invite-Links erstellen, Benutzer einsehen.
|
||||
* Bearbeiten, deaktivieren und Mitglieder verwalten.
|
||||
*/
|
||||
import { redirect } from 'next/navigation';
|
||||
import { prisma } from '@/lib/db/client';
|
||||
@@ -9,7 +9,7 @@ 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 { InviteManager } from '@/components/admin/InviteManager';
|
||||
import { MemberSection } from '@/components/admin/MemberSection';
|
||||
import { AppShell } from '@/components/layout/AppShell';
|
||||
|
||||
interface PageProps {
|
||||
@@ -26,29 +26,18 @@ export default async function AdminCalendarPage({ params }: PageProps) {
|
||||
redirect('/dashboard');
|
||||
}
|
||||
|
||||
const [members, invites, reservations] = await Promise.all([
|
||||
prisma.calendarMember.findMany({
|
||||
where: { calendarId: id },
|
||||
select: { user: { select: { email: true, username: true, createdAt: true } } },
|
||||
}),
|
||||
prisma.invite.findMany({
|
||||
where: { calendarId: id },
|
||||
orderBy: { createdAt: 'desc' },
|
||||
select: { id: true, expiresAt: true, usedAt: true, createdAt: true },
|
||||
}),
|
||||
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 } },
|
||||
},
|
||||
}),
|
||||
]);
|
||||
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 (
|
||||
<AppShell role={context.user.role} userEmail={context.user.email} username={context.user.username}>
|
||||
@@ -62,28 +51,8 @@ export default async function AdminCalendarPage({ params }: PageProps) {
|
||||
initialIsActive={context.calendar.isActive}
|
||||
/>
|
||||
|
||||
<InviteManager calendarId={id} invites={invites} />
|
||||
|
||||
<Card>
|
||||
<h2 className="mb-3 text-lg font-semibold">Mitglieder ({members.length})</h2>
|
||||
{members.length === 0 ? (
|
||||
<p className="text-sm text-slate-500">
|
||||
Noch keine Mitglieder. Erstelle einen Invite-Link.
|
||||
</p>
|
||||
) : (
|
||||
<ul className="space-y-1 text-sm">
|
||||
{members.map((member) => (
|
||||
<li key={member.user.email}>
|
||||
{displayName(member.user.username, member.user.email)}
|
||||
{member.user.username && (
|
||||
<span className="ml-2 text-xs text-slate-500">
|
||||
{member.user.email}
|
||||
</span>
|
||||
)}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
)}
|
||||
<MemberSection calendarId={id} />
|
||||
</Card>
|
||||
|
||||
<Card>
|
||||
@@ -112,4 +81,4 @@ export default async function AdminCalendarPage({ params }: PageProps) {
|
||||
</Card>
|
||||
</AppShell>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* 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).
|
||||
* /admin/calendars/[id] (Mitglieder, Reservierungen).
|
||||
*/
|
||||
import { redirect } from 'next/navigation';
|
||||
import { prisma } from '@/lib/db/client';
|
||||
@@ -55,4 +55,4 @@ export default async function ManageCalendarsPage() {
|
||||
/>
|
||||
</AppShell>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user