Agenda refactor
This commit is contained in:
parent
0f6c48b0a8
commit
986f66ac92
@ -44,10 +44,38 @@ export default async function CalendarPage() {
|
|||||||
|
|
||||||
const userId = session.user.username || session.user.email || '';
|
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
|
// Get all calendars for the user with mission relation and sync configuration
|
||||||
// This includes:
|
// This includes:
|
||||||
// 1. Personal calendars (userId = session.user.id)
|
// 1. Personal calendars (userId = session.user.id) - including the default private calendar
|
||||||
// 2. Mission calendars where user is associated via MissionUser
|
// 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)
|
// Exclude "Privée" and "Default" calendars that are not synced (they should only exist if synced from courrier)
|
||||||
|
|
||||||
// Get personal calendars
|
// Get personal calendars
|
||||||
|
|||||||
@ -48,6 +48,32 @@ export async function GET(req: NextRequest) {
|
|||||||
userId: session.user.id,
|
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
|
// Get user's personal calendars
|
||||||
// Include syncConfig to filter "Privée"/"Default" calendars that don't have active sync
|
// Include syncConfig to filter "Privée"/"Default" calendars that don't have active sync
|
||||||
const personalCalendars = await prisma.calendar.findMany({
|
const personalCalendars = await prisma.calendar.findMany({
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user