From 6a0bcc90f3c8c338e1b346987945312fe91a6a9a Mon Sep 17 00:00:00 2001 From: matt Date: Thu, 21 Apr 2022 17:34:31 +0000 Subject: [PATCH] Replaced sample data with real data --- routes/report.js | 78 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 25 deletions(-) diff --git a/routes/report.js b/routes/report.js index 9f2d718..7e9fd8c 100644 --- a/routes/report.js +++ b/routes/report.js @@ -3,7 +3,24 @@ const express = require('express'); const router = express.Router(); -router.get('/reports', (req, res) => { +const User = require('../lib/User'); + +const validator = require('../lib/validator'); + +router.get('/reports', async (req, res) => { + const u = await new User(req.db, req.session.userId); + const classes = await u.getClasses(); + const tests = await u.getTests(); + + let studentIds = []; + let students = []; + classes.forEach(c => studentIds.push(...c.studentIds)); + classes.forEach(c => students.push(...c.students)); + + studentIds = studentIds.map((s, i) => + studentIds.indexOf(s) === i ? s : ''); + students = students.filter((_, i) => studentIds[i] !== ''); + return res.render('reports', { ...req.hbsContext, title: 'Stratos - Reports', @@ -16,38 +33,49 @@ router.get('/reports', (req, res) => { { key: 'class', value: 'Class' + }, + { + key: 'test', + value: 'Test' } ], targets: JSON.stringify({ - student: [ - { - id: '1', - name: 'joe' - } - ], - class: [ - { - id: '1', - name: 'joeseph' - }, - { - id: '2', - name: 'bob' - }, - { - id: '3', - name: 'fred' - }, - { - id: '4', - name: 'mike' - } - ] + student: students.map(s => ({ + id: s.id, name: s.shortName + })), + class: classes.map(c => ({ id: c.id, name: c.name })), + test: tests.map(t => ({ + id: t.id, + name: `${t.template.name} - ` + + `${t.class.name} - ` + + `${t.dateString}` + })) }) }); }); router.post('/report/generate', (req, res) => { + let fields; + try { + fields = validator.validate(req.body, + [ + 'type', + 'target' + ], + { + values: { + type: [], + target: [] + } + } + ).fields; + } catch (e) { + console.error(e); + return res.status(400).json({ status: 'Invalid' }); + } + + fields.get('type'); + return res.redirect('/admin/reports'); });