summaryrefslogtreecommitdiff
path: root/alarm/node_modules/pronote-api/src/fetch/menu.js
blob: 6f2872cbea1410742912090c4ef4747b19ab59bb (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
const getMenu = require('./pronote/menu');

async function menu(session, user, from = new Date(), to = null)
{
    if (!to || to < from) {
        to = new Date(from.getTime());
        to.setDate(to.getDate() + 1);
        to.setHours(to.getHours() - 1);
    }

    const result = [];
    const date = new Date(from.getTime());

    // eslint-disable-next-line no-unmodified-loop-condition
    while (date < to) {
        const menus = await getMenu(session, user, date);
        if (!menus) {
            return null;
        }

        for (const menu of menus.menus) {
            if (menu.date < from || menu.date > to) {
                continue;
            }

            result.push({
                date: menu.date,
                meals: menu.meals.map(m => m.content.map(c => c.lines.map(({ name, labels }) => ({
                    name,
                    labels: labels.map(({ name, color }) => ({ name, color }))
                }))))
            });
        }

        date.setDate(date.getDate() + 7);
    }

    return result;
}

module.exports = menu;