diff --git a/app/agenda/page.tsx b/app/agenda/page.tsx index b8e1450..3461ec8 100644 --- a/app/agenda/page.tsx +++ b/app/agenda/page.tsx @@ -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 diff --git a/app/api/calendars/route.ts b/app/api/calendars/route.ts index cc6298e..f78e6c3 100644 --- a/app/api/calendars/route.ts +++ b/app/api/calendars/route.ts @@ -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({