summaryrefslogtreecommitdiff
path: root/school/node_modules/pronote-api/src/fetch/homeworks.js
blob: 7f2146b270e6fe9c806fd221ec392908a6d05d83 (plain)
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
const { toPronoteWeek } = require('../data/dates');
const { getFileURL } = require('../data/files');
const fromHTML = require('../data/html');
const { withId, checkDuplicates } = require('../data/id');

const getHomeworks = require('./pronote/homeworks');

async function homeworks(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 homeworks = await getHomeworks(session, user, fromWeek, toWeek);
    if (!homeworks) {
        return null;
    }

    const result = [];

    for (const homework of homeworks) {
        if (homework.for < from || homework.for > to) {
            continue;
        }

        result.push(withId({
            description: fromHTML(homework.description),
            htmlDescription: homework.description,
            subject: homework.subject.name,
            givenAt: homework.givenAt,
            for: homework.for,
            done: homework.done,
            color: homework.color,
            files: homework.files.map(f => withId({ name: f.name, url: getFileURL(session, f) }, ['name']))
        }, 'subject', 'givenAt'));
    }

    return checkDuplicates(result).sort((a, b) => a.for - b.for);
}

module.exports = homeworks;