From 68292d907671067dfa48e5b55b061008e236c423 Mon Sep 17 00:00:00 2001 From: Alma Date: Sun, 13 Apr 2025 15:39:35 +0200 Subject: [PATCH] calendar 20 --- app/api/events/route.ts | 18 ++-- components/calendar/calendar-client.tsx | 136 +++++++++++++----------- 2 files changed, 81 insertions(+), 73 deletions(-) diff --git a/app/api/events/route.ts b/app/api/events/route.ts index d3ffdf23..0e4255ea 100644 --- a/app/api/events/route.ts +++ b/app/api/events/route.ts @@ -6,7 +6,7 @@ import { prisma } from "@/lib/prisma"; export async function POST(req: NextRequest) { const session = await getServerSession(authOptions); - if (!session?.user?.username) { + if (!session?.user?.id) { return NextResponse.json({ error: "Non authentifié" }, { status: 401 }); } @@ -25,7 +25,7 @@ export async function POST(req: NextRequest) { const calendar = await prisma.calendar.findFirst({ where: { id: calendarId, - userId: session.user.username, + userId: session.user.id, }, }); @@ -46,8 +46,8 @@ export async function POST(req: NextRequest) { isAllDay: allDay || false, location: location || null, calendarId, - userId: session.user.username, - } as any, // Temporary type assertion to bypass the type error + userId: session.user.id, + }, }); console.log("Created event:", event); @@ -61,7 +61,7 @@ export async function POST(req: NextRequest) { export async function PUT(req: NextRequest) { const session = await getServerSession(authOptions); - if (!session?.user?.username) { + if (!session?.user?.id) { return NextResponse.json({ error: "Non authentifié" }, { status: 401 }); } @@ -80,7 +80,7 @@ export async function PUT(req: NextRequest) { const calendar = await prisma.calendar.findFirst({ where: { id: calendarId, - userId: session.user.username, + userId: session.user.id, }, include: { events: { @@ -107,11 +107,7 @@ export async function PUT(req: NextRequest) { end: new Date(end), isAllDay: allDay || false, location, - calendar: { - connect: { - id: calendarId - } - } + calendarId, }, }); diff --git a/components/calendar/calendar-client.tsx b/components/calendar/calendar-client.tsx index 40be9ac9..8e951cf8 100644 --- a/components/calendar/calendar-client.tsx +++ b/components/calendar/calendar-client.tsx @@ -620,21 +620,20 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend const handleEventSubmit = async () => { try { setLoading(true); - console.log("Submitting event:", { + const eventData = { ...eventForm, + id: selectedEvent?.id, calendarId: selectedCalendarId, userId, - }); + }; + console.log("Submitting event:", eventData); + const response = await fetch("/api/events", { method: selectedEvent ? "PUT" : "POST", headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ - ...eventForm, - calendarId: selectedCalendarId, - userId, - }), + body: JSON.stringify(eventData), }); if (!response.ok) { @@ -648,11 +647,8 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend // Refresh calendars and update the view await fetchCalendars(); - if (calendarRef.current) { - const calendarApi = calendarRef.current.getApi(); - calendarApi.refetchEvents(); - } + // Reset form and close modal setIsEventModalOpen(false); setEventForm({ title: "", @@ -663,6 +659,13 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend location: null, calendarId: selectedCalendarId }); + setSelectedEvent(null); + + // Force calendar refresh + if (calendarRef.current) { + const calendarApi = calendarRef.current.getApi(); + calendarApi.refetchEvents(); + } } catch (error) { console.error("Error saving event:", error); setError(error instanceof Error ? error.message : "Failed to save event"); @@ -922,66 +925,75 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend /> +
+ + +
+
-
- } - showTimeSelectOnly={false} - inline={false} - timeClassName={() => "text-primary"} - popperModifiers={[ - { - name: "preventOverflow", - options: { - padding: 10 - } - } - ]} - popperPlacement="bottom-start" +
+
+ } + /> +
+ { + const [hours, minutes] = e.target.value.split(':'); + const date = getDateFromString(eventForm.start); + date.setHours(parseInt(hours), parseInt(minutes)); + handleStartDateChange(date); + }} + className="w-32" />
-
- } - showTimeSelectOnly={false} - inline={false} - timeClassName={() => "text-primary"} - popperModifiers={[ - { - name: "preventOverflow", - options: { - padding: 10 - } - } - ]} - popperPlacement="bottom-start" +
+
+ } + minDate={getDateFromString(eventForm.start)} + /> +
+ { + const [hours, minutes] = e.target.value.split(':'); + const date = getDateFromString(eventForm.end); + date.setHours(parseInt(hours), parseInt(minutes)); + handleEndDateChange(date); + }} + className="w-32" />