diff --git a/app/agenda/page.tsx b/app/agenda/page.tsx index e24f422..4af70b3 100644 --- a/app/agenda/page.tsx +++ b/app/agenda/page.tsx @@ -594,13 +594,25 @@ export default async function CalendarPage() { syncMicrosoftCalendar(syncConfig.id, true).then((result) => { console.log(`[AGENDA] Microsoft sync completed:`, { calendarSyncId: syncConfig.id, + calendarId: syncConfig.calendarId, synced: result.synced, created: result.created, updated: result.updated, + deleted: result.deleted, + }); + + // Verify events were created by checking the database + prisma.event.count({ + where: { calendarId: syncConfig.calendarId } + }).then((count) => { + console.log(`[AGENDA] Total events in calendar ${syncConfig.calendarId} after sync: ${count}`); + }).catch((err) => { + console.error('[AGENDA] Error counting events:', err); }); }).catch((error) => { console.error('[AGENDA] Background sync failed for Microsoft calendar', { calendarSyncId: syncConfig.id, + calendarId: syncConfig.calendarId, error: error instanceof Error ? error.message : String(error), stack: error instanceof Error ? error.stack : undefined, }); @@ -738,7 +750,16 @@ export default async function CalendarPage() { const calendarsWithSync = calendars.filter(cal => cal.syncConfig); console.log(`[AGENDA] Total calendars with syncConfig: ${calendarsWithSync.length}`); calendarsWithSync.forEach(cal => { - console.log(`[AGENDA] Calendar: ${cal.name}, provider: ${cal.syncConfig?.provider}, syncEnabled: ${cal.syncConfig?.syncEnabled}, hasMailCredential: ${!!cal.syncConfig?.mailCredential}`); + const eventCount = cal.events?.length || 0; + console.log(`[AGENDA] Calendar: ${cal.name}, provider: ${cal.syncConfig?.provider}, syncEnabled: ${cal.syncConfig?.syncEnabled}, hasMailCredential: ${!!cal.syncConfig?.mailCredential}, events: ${eventCount}`); + if (eventCount > 0 && cal.syncConfig?.provider === 'microsoft') { + console.log(`[AGENDA] Microsoft calendar events:`, cal.events.slice(0, 5).map(e => ({ + id: e.id, + title: e.title, + start: e.start, + end: e.end + }))); + } }); const now = new Date(); diff --git a/lib/services/microsoft-calendar-sync.ts b/lib/services/microsoft-calendar-sync.ts index a351d03..a9939f3 100644 --- a/lib/services/microsoft-calendar-sync.ts +++ b/lib/services/microsoft-calendar-sync.ts @@ -163,18 +163,28 @@ export async function fetchMicrosoftEvents( }); // Get events from Microsoft Graph API - const response = await axios.get( - `https://graph.microsoft.com/v1.0/me/calendars/${calendarId}/events`, - { - headers: { - Authorization: `Bearer ${accessToken}`, - 'Content-Type': 'application/json', - }, - params, - } - ); + const url = `https://graph.microsoft.com/v1.0/me/calendars/${calendarId}/events`; + logger.debug('Fetching Microsoft events', { + url, + params: JSON.stringify(params), + }); + + const response = await axios.get(url, { + headers: { + Authorization: `Bearer ${accessToken}`, + 'Content-Type': 'application/json', + }, + params, + }); - return response.data.value || []; + const events = response.data.value || []; + logger.debug('Microsoft Graph API response', { + calendarId, + eventCount: events.length, + hasValue: !!response.data.value, + }); + + return events; } catch (error) { logger.error('Error fetching Microsoft events', { userId, @@ -307,6 +317,15 @@ export async function syncMicrosoftCalendar( end: e.end.dateTime || e.end.date })), }); + + if (microsoftEvents.length === 0) { + logger.warn('No Microsoft events found', { + calendarSyncId, + email: creds.email, + externalCalendarId: syncConfig.externalCalendarId, + dateRange: { start: startDate.toISOString(), end: endDate.toISOString() }, + }); + } // Convert Microsoft events to CalDAV-like format const caldavEvents = microsoftEvents.map(convertMicrosoftEventToCalDAV); @@ -419,10 +438,22 @@ export async function syncMicrosoftCalendar( logger.info('Microsoft calendar sync completed', { calendarSyncId, calendarId: syncConfig.calendarId, + email: creds.email, synced: caldavEvents.length, created, updated, + deleted, }); + + // Log summary of created/updated events + if (created > 0 || updated > 0) { + logger.info('Microsoft calendar sync summary', { + calendarSyncId, + newEventsCreated: created, + eventsUpdated: updated, + totalEventsInCalendar: caldavEvents.length, + }); + } return { synced: caldavEvents.length,