NeahFront3/app/calendar/page.tsx
2025-04-09 18:02:58 +02:00

64 lines
1.8 KiB
TypeScript

import { getServerSession } from "next-auth/next";
import { authOptions } from "@/app/api/auth/[...nextauth]/route";
import { redirect } from "next/navigation";
import { prisma } from "@/lib/prisma";
import { CalendarClient } from "@/components/calendar/calendar-client";
export const metadata = {
title: "Enkun - Calendrier",
description: "Gérez vos rendez-vous et événements",
};
export default async function CalendarPage() {
const session = await getServerSession(authOptions);
if (!session) {
redirect("/signin");
}
try {
// Récupérer tous les calendriers de l'utilisateur
const userCalendars = await prisma.calendar.findMany({
where: {
userId: session.user.username || session.user.email,
},
include: {
events: true,
},
});
// Si aucun calendrier n'existe, en créer un par défaut
let calendars = userCalendars;
if (calendars.length === 0) {
const defaultCalendar = await prisma.calendar.create({
data: {
name: "Calendrier principal",
color: "#0082c9",
description: "Calendrier par défaut",
userId: session.user.username || session.user.email,
},
});
calendars = [defaultCalendar];
}
return (
<div className='container mx-auto py-8'>
<div className='mb-6'>
<h1 className='text-3xl font-bold'>Calendrier</h1>
<p className='text-muted-foreground'>
Gérez vos rendez-vous et événements
</p>
</div>
<CalendarClient initialCalendars={calendars} />
</div>
);
} catch (error) {
console.error("Database Error:", error);
return (
<div className="p-4">
<p>Unable to load calendar data. Please try again later.</p>
</div>
);
}
}