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
48
49
50
51
|
const { toPronoteWeek } = require('../data/dates');
const { getFileURL } = require('../data/files');
const fromHTML = require('../data/html');
const { withId, checkDuplicates } = require('../data/id');
const getContents = require('./pronote/contents');
async function contents(session, user, from = new Date(), to = null)
{
if (!to || to < from) {
to = new Date(from.getTime());
to.setDate(to.getDate() + 1);
}
const fromWeek = toPronoteWeek(session, from);
const toWeek = toPronoteWeek(session, to);
const contents = await getContents(session, user, fromWeek, toWeek);
if (!contents) {
return null;
}
const result = [];
for (const lesson of contents.lessons) {
if (lesson.from < from || lesson.to > to) {
continue;
}
const content = lesson.content[0]; // Maybe on some instances there will be multiple entries ? Check this
if (typeof content === 'undefined') {
continue;
}
result.push(withId({
subject: lesson.subject.name,
teachers: lesson.teachers.map(t => t.name),
from: lesson.from,
to: lesson.to,
color: lesson.color,
title: content.name,
description: fromHTML(content.description),
htmlDescription: content.htmlDescription,
files: content.files.map(f => withId({ name: f.name, url: getFileURL(session, f) }, ['name'])),
category: content.category.name
}, ['subject', 'from', 'to']));
}
return checkDuplicates(result).sort((a, b) => a.from - b.from);
}
module.exports = contents;
|