diff --git a/app/calendar/page.tsx b/app/calendar/page.tsx index c876b973..25ef6171 100644 --- a/app/calendar/page.tsx +++ b/app/calendar/page.tsx @@ -1,116 +1,23 @@ 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"; -import { Metadata } from "next"; -import { CalendarDays, Users, Bookmark, Clock } from "lucide-react"; -import Image from "next/image"; -import { Button } from "@/components/ui/button"; -import { add } from 'date-fns'; +import { ResponsiveIframe } from "@/app/components/responsive-iframe"; -export const metadata: Metadata = { - title: "Enkun - Calendrier | Gestion d'événements professionnelle", - description: "Plateforme avancée pour la gestion de vos rendez-vous, réunions et événements professionnels", - keywords: "calendrier, rendez-vous, événements, gestion du temps, enkun", -}; - -interface Event { - id: string; - title: string; - description?: string | null; - start: Date; - end: Date; - location?: string | null; - isAllDay: boolean; - type?: string; - attendees?: { id: string; name: string }[]; -} - -interface Calendar { - id: string; - name: string; - color: string; - description?: string | null; - events: Event[]; -} - -export default async function CalendarPage() { +export default async function Page() { const session = await getServerSession(authOptions); - if (!session?.user) { - redirect("/api/auth/signin"); + if (!session) { + redirect("/signin"); } - const userId = session.user.username || session.user.email || ''; - - // Get all calendars for the user - let calendars = await prisma.calendar.findMany({ - where: { - userId: session?.user?.id || '', - }, - include: { - events: { - orderBy: { - start: 'asc' - } - } - } - }); - - // If no calendars exist, create default ones - if (calendars.length === 0) { - const defaultCalendars = [ - { - name: "Default", - color: "#4F46E5", - description: "Your default calendar" - } - ]; - - calendars = await Promise.all( - defaultCalendars.map(async (cal) => { - return prisma.calendar.create({ - data: { - ...cal, - userId: session?.user?.id || '', - }, - include: { - events: true - } - }); - }) - ); - } - - const now = new Date(); - const nextWeek = add(now, { days: 7 }); - - const upcomingEvents = calendars.flatMap(cal => - cal.events.filter(event => - new Date(event.start) >= now && - new Date(event.start) <= nextWeek - ) - ).sort((a, b) => new Date(a.start).getTime() - new Date(b.start).getTime()); - - // Calculate statistics - const totalEvents = calendars.flatMap(cal => cal.events).length; - - const totalMeetingHours = calendars - .flatMap(cal => cal.events) - .reduce((total, event) => { - const start = new Date(event.start); - const end = new Date(event.end); - const hours = (end.getTime() - start.getTime()) / (1000 * 60 * 60); - return total + (isNaN(hours) ? 0 : hours); - }, 0); - return ( -