From b98d9da464eaa9d28788560468f54ad616cf9a31 Mon Sep 17 00:00:00 2001 From: matt Date: Mon, 18 Apr 2022 20:21:11 +0000 Subject: [PATCH] Added route for creating testResults --- routes/singleTest.js | 51 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/routes/singleTest.js b/routes/singleTest.js index a509193..cc7471e 100644 --- a/routes/singleTest.js +++ b/routes/singleTest.js @@ -73,7 +73,8 @@ router.get('/:id/results', async (req, res) => { testName: t.template.name, userType: req.session.userType, testResults: results, - linkRoot: linkRoot + linkRoot: linkRoot, + addLink: `${linkRoot}/add` }); }); @@ -100,6 +101,54 @@ router.post('/:id/results/:resultId/edit', async (req, res) => { res.redirect(returnURL); }); + +router.get('/:id/results/add', async (req, res) => { + const t = req.test; + const linkRoot = `/admin/test/${t.id}/results`; + + const existingResults = (await t.getTestResults()) + .map(r => r.student.id); + + const students = t.class.students + .filter(s => !existingResults.includes(s.id)); + + return res.render('addTestResult', { + title: `Stratos - ${t.template.name}`, + current: 'Tests', + name: req.session.fullName, + testName: t.template.name, + linkRoot: linkRoot, + students: students, + maxMark: t.template.maxMark + }); +}); + +router.post('/:id/results/add', async (req, res) => { + const t = req.test; + const returnURL = `/admin/test/${t.id}/results`; + + let fields; + try { + fields = validator.validate(req.body, + [ + 'student', + 'mark' + ] + ).fields; + } catch (e) { + console.error(e); + return res.redirect(returnURL); + } + + await t.addResult( + req.session.userId, + fields.get('student'), + fields.get('mark') + ); + + return res.redirect(returnURL); +}); + module.exports = { priority: 50, root: '/admin/test',