-
Notifications
You must be signed in to change notification settings - Fork 0
/
appointments.js
47 lines (44 loc) · 1.41 KB
/
appointments.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
const { google } = require('googleapis');
const scopes = ['https://www.googleapis.com/auth/calendar'];
const client = new google.auth.GoogleAuth({
keyFile: 'credentials.json',
scopes,
});
const calendar = google.calendar({ version: 'v3', auth: client });
const sdate = new Date();
const sdate2 = new Date();
sdate2.setDate(sdate.getDate() + 1);
const isDateBeforeToday = (date) => new Date(date) < new Date();
function getAppointments() {
return new Promise((resolve, reject) => retrieveAppointments(resolve, reject));
}
function retrieveAppointments(resolve, reject) {
calendar.events.list(
{
calendarId: 'mkulpok@gmail.com',
timeMin: sdate.toISOString(),
timeMax: sdate2.toISOString(),
singleEvents: true,
orderBy: 'startTime',
},
(err, res) => {
if (err) {
console.log(`The API returned an error: ${err}`);
reject(err);
}
const appointments = res.data.items
.filter((appointment) => isDateBeforeToday(appointment.start.dateTime))
.map((appointment) => ({
start: appointment.start.dateTime,
end: appointment.end.dateTime,
id: appointment.id,
status: appointment.status,
creator: appointment.creator,
description: appointment.description,
})
);
resolve(appointments.find(obj => obj.description != ""));
}
);
}
module.exports = { getAppointments };