1+ var express = require ( 'express' ) ;
2+ var router = express . Router ( ) ;
3+ var authHelper = require ( '../helpers/auth' ) ;
4+ var graph = require ( '@microsoft/microsoft-graph-client' ) ;
5+
6+ /* GET /calendar */
7+ router . get ( '/' , async function ( req , res , next ) {
8+ let parms = { title : 'Calendar' , active : { calendar : true } } ;
9+
10+ const accessToken = await authHelper . getAccessToken ( req . cookies , res ) ;
11+ const userName = req . cookies . graph_user_name ;
12+
13+ if ( accessToken && userName ) {
14+ parms . user = userName ;
15+
16+ // Initialize Graph client
17+ const client = graph . Client . init ( {
18+ authProvider : ( done ) => {
19+ done ( null , accessToken ) ;
20+ }
21+ } ) ;
22+
23+ // Set start of the calendar view to today at midnight
24+ const start = new Date ( new Date ( ) . setHours ( 0 , 0 , 0 ) ) ;
25+ // Set end of the calendar view to 7 days from start
26+ const end = new Date ( new Date ( start ) . setDate ( start . getDate ( ) + 7 ) ) ;
27+
28+ try {
29+ // Get the first 10 events for the coming week
30+ const result = await client
31+ . api ( `/me/calendarView?startDateTime=${ start . toISOString ( ) } &endDateTime=${ end . toISOString ( ) } ` )
32+ . top ( 10 )
33+ . select ( 'subject,start,end,attendees' )
34+ . orderby ( 'start/dateTime DESC' )
35+ . get ( ) ;
36+
37+ parms . events = result . value ;
38+ res . render ( 'calendar' , parms ) ;
39+ } catch ( err ) {
40+ parms . message = 'Error retrieving events' ;
41+ parms . error = { status : `${ err . code } : ${ err . message } ` } ;
42+ parms . debug = JSON . stringify ( err . body , null , 2 ) ;
43+ res . render ( 'error' , parms ) ;
44+ }
45+
46+ } else {
47+ // Redirect to home
48+ res . redirect ( '/' ) ;
49+ }
50+ } ) ;
51+
52+ module . exports = router ;
0 commit comments