diff options
Diffstat (limited to 'alarm/node_modules/pronote-api/src/fetch/pronote/menu.js')
-rw-r--r-- | alarm/node_modules/pronote-api/src/fetch/pronote/menu.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/alarm/node_modules/pronote-api/src/fetch/pronote/menu.js b/alarm/node_modules/pronote-api/src/fetch/pronote/menu.js new file mode 100644 index 0000000..988c168 --- /dev/null +++ b/alarm/node_modules/pronote-api/src/fetch/pronote/menu.js @@ -0,0 +1,42 @@ +const { toPronoteDate } = require('../../data/dates'); +const parse = require('../../data/types'); + +const navigate = require('./navigate'); + +const PAGE_NAME = 'PageMenus'; +const TAB_ID = 10; +const ACCOUNTS = ['student', 'parent']; + +async function getMenu(session, user, day = new Date()) +{ + const menu = await navigate(session, user, PAGE_NAME, TAB_ID, ACCOUNTS, { + date: { + _T: 7, + V: toPronoteDate(day) + } + }); + + if (!menu) { + return null; + } + + return { + hasLunch: menu.AvecRepasMidi, + hasDiner: menu.AvecRepasSoir, + filledWeeks: parse(menu.DomaineDePresence), + menus: parse(menu.ListeJours, false).map(({ Date, ListeRepas }) => ({ + date: parse(Date), + meals: parse(ListeRepas, ({ ListePlats }) => ({ + content: parse(ListePlats, ({ ListeAliments }) => ({ + lines: parse(ListeAliments, ({ listeLabelsAlimentaires }) => ({ + labels: parse(listeLabelsAlimentaires, ({ couleur }) => ({ + color: couleur + })) + })) + })) + })) + })) + }; +} + +module.exports = getMenu; |