calendar 29
This commit is contained in:
parent
0a982dd218
commit
d85df3e8ce
@ -9,37 +9,43 @@ export async function DELETE(
|
|||||||
) {
|
) {
|
||||||
const session = await getServerSession(authOptions);
|
const session = await getServerSession(authOptions);
|
||||||
|
|
||||||
if (!session?.user?.username) {
|
if (!session?.user?.id) {
|
||||||
return NextResponse.json({ error: "Non authentifié" }, { status: 401 });
|
return NextResponse.json({ error: "Non authentifié" }, { status: 401 });
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Verify event ownership through calendar
|
// First, find the event and its associated calendar
|
||||||
const event = await prisma.event.findFirst({
|
const event = await prisma.event.findUnique({
|
||||||
where: {
|
where: { id: params.id },
|
||||||
id: params.id,
|
include: { calendar: true },
|
||||||
},
|
|
||||||
include: {
|
|
||||||
calendar: true
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!event || event.calendar.userId !== session.user.username) {
|
if (!event) {
|
||||||
return NextResponse.json(
|
return NextResponse.json(
|
||||||
{ error: "Événement non trouvé ou non autorisé" },
|
{ error: "Événement non trouvé" },
|
||||||
{ status: 404 }
|
{ status: 404 }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Verify that the user owns the calendar
|
||||||
|
if (event.calendar.userId !== session.user.id) {
|
||||||
|
return NextResponse.json(
|
||||||
|
{ error: "Non autorisé" },
|
||||||
|
{ status: 403 }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete the event
|
||||||
await prisma.event.delete({
|
await prisma.event.delete({
|
||||||
where: {
|
where: { id: params.id },
|
||||||
id: params.id,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return NextResponse.json({ success: true });
|
return new NextResponse(null, { status: 204 });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Erreur lors de la suppression de l'événement:", error);
|
console.error("Erreur lors de la suppression de l'événement:", error);
|
||||||
return NextResponse.json({ error: "Erreur serveur" }, { status: 500 });
|
return NextResponse.json(
|
||||||
|
{ error: "Erreur serveur" },
|
||||||
|
{ status: 500 }
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -495,7 +495,9 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
|||||||
const response = await fetch("/api/calendars");
|
const response = await fetch("/api/calendars");
|
||||||
if (!response.ok) throw new Error("Failed to fetch calendars");
|
if (!response.ok) throw new Error("Failed to fetch calendars");
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
console.log("Fetched calendars with events:", data);
|
console.log("Fetched calendars:", data);
|
||||||
|
|
||||||
|
let calendarsData = data;
|
||||||
|
|
||||||
// Create principal calendar if it doesn't exist
|
// Create principal calendar if it doesn't exist
|
||||||
if (data.length === 0 || !data.some((cal: Calendar) => cal.name === "Calendrier principal")) {
|
if (data.length === 0 || !data.some((cal: Calendar) => cal.name === "Calendrier principal")) {
|
||||||
@ -513,13 +515,23 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (principalCalendar.ok) {
|
if (principalCalendar.ok) {
|
||||||
const newData = await principalCalendar.json();
|
const newCalendar = await principalCalendar.json();
|
||||||
data.push(newData);
|
calendarsData = [newCalendar, ...data];
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// Remove any duplicate "Calendrier principal" and "Default" calendars
|
||||||
|
const seenPrincipal = false;
|
||||||
|
calendarsData = data.filter((cal: Calendar) => {
|
||||||
|
if (cal.name === "Calendrier principal") {
|
||||||
|
if (seenPrincipal) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return cal.name !== "Default";
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure events array exists for each calendar and convert dates
|
// Ensure events array exists for each calendar and convert dates
|
||||||
const calendarsWithEvents = data.map((cal: Calendar & { events: Event[] }) => ({
|
const calendarsWithEvents = calendarsData.map((cal: Calendar & { events: Event[] }) => ({
|
||||||
...cal,
|
...cal,
|
||||||
events: (cal.events || []).map(event => ({
|
events: (cal.events || []).map(event => ({
|
||||||
...event,
|
...event,
|
||||||
@ -531,16 +543,16 @@ export function CalendarClient({ initialCalendars, userId, userProfile }: Calend
|
|||||||
console.log("Setting calendars with processed events:", calendarsWithEvents);
|
console.log("Setting calendars with processed events:", calendarsWithEvents);
|
||||||
setCalendars(calendarsWithEvents);
|
setCalendars(calendarsWithEvents);
|
||||||
|
|
||||||
if (calendarsWithEvents.length > 0 && !selectedCalendarId) {
|
// Set initial selected calendar
|
||||||
setSelectedCalendarId(calendarsWithEvents[0].id);
|
if (calendarsWithEvents.length > 0) {
|
||||||
|
const principalCalendar = calendarsWithEvents.find(cal => cal.name === "Calendrier principal");
|
||||||
|
setSelectedCalendarId(principalCalendar?.id || calendarsWithEvents[0].id);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update visible calendars if not set
|
// Update visible calendars
|
||||||
if (visibleCalendarIds.length === 0) {
|
|
||||||
setVisibleCalendarIds(calendarsWithEvents.map(cal => cal.id));
|
setVisibleCalendarIds(calendarsWithEvents.map(cal => cal.id));
|
||||||
}
|
|
||||||
|
|
||||||
// Force calendar refresh after updating state
|
// Force calendar refresh
|
||||||
if (calendarRef.current) {
|
if (calendarRef.current) {
|
||||||
const calendarApi = calendarRef.current.getApi();
|
const calendarApi = calendarRef.current.getApi();
|
||||||
calendarApi.refetchEvents();
|
calendarApi.refetchEvents();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user