36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
import { auth } from '@/lib/auth';
|
|
import { prisma } from '@/lib/db';
|
|
import type { Slot } from '@/lib/schedule/types';
|
|
import { toDraft } from '@/lib/schedule/week';
|
|
|
|
import WeekEditor from './WeekEditor';
|
|
|
|
export const metadata = { title: 'Horaires fixes — ITA ITO' };
|
|
|
|
export default async function HoursPage() {
|
|
const [session, rows] = await Promise.all([
|
|
auth(),
|
|
prisma.weeklySchedule.findMany({ orderBy: { dayOfWeek: 'asc' } }),
|
|
]);
|
|
|
|
const initial = toDraft(
|
|
rows.map((row) => ({
|
|
dayOfWeek: row.dayOfWeek,
|
|
isClosed: row.isClosed,
|
|
slots: (row.slots as Slot[] | null) ?? [],
|
|
})),
|
|
);
|
|
|
|
return (
|
|
<main className="mx-auto max-w-3xl px-4 py-10">
|
|
<h1 className="text-2xl">Horaires fixes</h1>
|
|
<p className="mt-2 max-w-prose text-[var(--ink-muted)]">
|
|
La semaine de référence. Les fermetures ponctuelles, les vacances et les jours fériés se
|
|
règlent ailleurs et priment sur ces horaires.
|
|
</p>
|
|
|
|
<WeekEditor initial={initial} canEdit={session?.user?.role === 'admin'} />
|
|
</main>
|
|
);
|
|
}
|