From 6b409bca416aadb1a70423692d8f60074a4bbca7 Mon Sep 17 00:00:00 2001 From: matt Date: Mon, 18 Apr 2022 15:53:31 +0000 Subject: [PATCH] Added route functionality for testResults and testResults/edit --- routes/singleTest.js | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/routes/singleTest.js b/routes/singleTest.js index 597431a..d7aec6d 100644 --- a/routes/singleTest.js +++ b/routes/singleTest.js @@ -3,6 +3,10 @@ const express = require('express'); const router = express.Router(); +const validator = require('../lib/validator'); + +const TestResult = require('../lib/TestResult'); + router.get('/:id', async (req, res) => { const t = req.test; const linkRoot = `/admin/test/${t.id}`; @@ -24,6 +28,7 @@ router.get('/:id', async (req, res) => { subject: t.class.subject.name, maxMark: t.template.maxMark, reportsLink: `${linkRoot}/reports`, + resultsLink: `${linkRoot}/results`, deleteLink: `${linkRoot}/delete`, userType: req.session.userType, testResults: results, @@ -52,6 +57,49 @@ router.get('/:id', async (req, res) => { }); }); +router.get('/:id/results', async (req, res) => { + const t = req.test; + const linkRoot = `/admin/test/${t.id}/results`; + + if (!req.session.userType === 'account') + return res.redirect(linkRoot); + + const results = await t.getTestResults(); + + return res.render('testResults', { + title: `Stratos - ${t.template.name}`, + current: 'Tests', + name: req.session.fullName, + testName: t.template.name, + userType: req.session.userType, + testResults: results, + linkRoot: linkRoot + }); +}); + +router.post('/:id/results/:resultId/edit', async (req, res) => { + const t = req.test; + const tr = await new TestResult(req.db, req.params.resultId); + + const returnURL = `/admin/test/${t.id}/results`; + + let fields; + try { + fields = validator.validate(req.body, + [ + 'mark', + ] + ).fields; + } catch (e) { + console.error(e); + return res.redirect(returnURL); + } + + tr.mark = fields.get('mark'); + + res.redirect(returnURL); +}); + module.exports = { priority: 50, root: '/admin/test',