summaryrefslogtreecommitdiff
path: root/alarm/node_modules/pronote-api/src/fetch/pronote/contents.js
blob: 7525e3d125fc2887e79b5d913e0fed01be301b7d (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
const parse = require('../../data/types');
const { fromPronote } = require('../../data/objects');

const navigate = require('./navigate');

const PAGE_NAME = 'PageCahierDeTexte';
const TAB_ID = 89;
const ACCOUNTS = ['student', 'parent'];

async function getContents(session, user, fromWeek = 1, toWeek = null)
{
    if (!toWeek || toWeek < fromWeek) {
        toWeek = fromWeek;
    }

    const contents = await navigate(session, user, PAGE_NAME, TAB_ID, ACCOUNTS, {
        domaine: {
            _T: 8,
            V: `[${fromWeek}..${toWeek}]`
        }
    });

    if (!contents) {
        return null;
    }

    return {
        lessons: parse(contents.ListeCahierDeTextes, ({
            cours, verrouille, listeGroupes, Matiere, CouleurFond, listeProfesseurs, Date, DateFin,
            listeContenus, listeElementsProgrammeCDT
        }) => ({
            lesson: parse(cours),
            locked: verrouille,
            groups: parse(listeGroupes), // TODO: Check values
            subject: parse(Matiere),
            color: CouleurFond,
            teachers: parse(listeProfesseurs),
            from: parse(Date),
            to: parse(DateFin),
            content: parse(listeContenus, ({
                descriptif, categorie, parcoursEducatif, ListePieceJointe, training
            }) => ({
                description: parse(descriptif),
                category: parse(categorie),
                path: parcoursEducatif,
                files: parse(ListePieceJointe),
                training: parse(training).ListeExecutionsQCM.map(o => fromPronote(o)) // TODO: Check values
            })),
            skills: parse(listeElementsProgrammeCDT)
        })),
        resources: (({ listeRessources, listeMatieres }) => ({
            resources: parse(listeRessources), // TODO: Check values
            subjects: parse(listeMatieres) // TODO: Check values
        }))(parse(contents.ListeRessourcesPedagogiques)),
        // TODO: Check values
        numericalResources: parse(parse(contents.ListeRessourcesNumeriques).listeRessources)
    };
}

module.exports = getContents;