Agenda refactor

This commit is contained in:
alma 2026-01-15 18:11:01 +01:00
parent 0f6c48b0a8
commit 986f66ac92
2 changed files with 56 additions and 2 deletions

View File

@ -44,10 +44,38 @@ export default async function CalendarPage() {
const userId = session.user.username || session.user.email || '';
// Ensure user has a default private calendar (created automatically if missing)
// This is the user's personal calendar, distinct from Microsoft synced calendars
const defaultPrivateCalendarName = "Mon Calendrier";
const existingDefaultCalendar = await prisma.calendar.findFirst({
where: {
userId: session?.user?.id || '',
name: defaultPrivateCalendarName,
missionId: null, // Not a mission calendar
syncConfig: null, // Not a synced calendar
}
});
if (!existingDefaultCalendar) {
// Create default private calendar for the user
await prisma.calendar.create({
data: {
name: defaultPrivateCalendarName,
color: "#4f46e5", // Indigo color
description: "Votre calendrier personnel",
userId: session?.user?.id || '',
missionId: null,
}
});
console.log(`[AGENDA] Created default private calendar for user ${session?.user?.id}`);
}
// Get all calendars for the user with mission relation and sync configuration
// This includes:
// 1. Personal calendars (userId = session.user.id)
// 2. Mission calendars where user is associated via MissionUser
// 1. Personal calendars (userId = session.user.id) - including the default private calendar
// 2. Microsoft synced calendars (named "Privée" with syncConfig)
// 3. Mission calendars where user is associated via MissionUser
// 4. Group calendars where user is a member
// Exclude "Privée" and "Default" calendars that are not synced (they should only exist if synced from courrier)
// Get personal calendars

View File

@ -48,6 +48,32 @@ export async function GET(req: NextRequest) {
userId: session.user.id,
});
// Ensure user has a default private calendar (created automatically if missing)
const defaultPrivateCalendarName = "Mon Calendrier";
const existingDefaultCalendar = await prisma.calendar.findFirst({
where: {
userId: session.user.id,
name: defaultPrivateCalendarName,
missionId: null,
syncConfig: null,
}
});
if (!existingDefaultCalendar) {
await prisma.calendar.create({
data: {
name: defaultPrivateCalendarName,
color: "#4f46e5",
description: "Votre calendrier personnel",
userId: session.user.id,
missionId: null,
}
});
logger.debug('[CALENDAR] Created default private calendar', {
userId: session.user.id,
});
}
// Get user's personal calendars
// Include syncConfig to filter "Privée"/"Default" calendars that don't have active sync
const personalCalendars = await prisma.calendar.findMany({