From 5def59357c2ef4d64b3645b477f06d379fcdcb51 Mon Sep 17 00:00:00 2001 From: matt Date: Mon, 18 Apr 2022 19:13:58 +0000 Subject: [PATCH] Implement TestResult.setMark --- lib/TestResult.js | 31 ++++++++++++++++++++++--------- routes/singleTest.js | 2 +- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/lib/TestResult.js b/lib/TestResult.js index 0ef0133..0e67d1b 100644 --- a/lib/TestResult.js +++ b/lib/TestResult.js @@ -1,5 +1,7 @@ 'use strict'; +const MySQLDate = require('./MySQLDate'); + class TestResult { id; @@ -17,7 +19,7 @@ class TestResult { time; - #mark; + mark; #conn; @@ -76,18 +78,29 @@ class TestResult { this.#loaded = true; } - set mark(mark) { - //TODO handle saving mark - this.#mark = mark; - } + async setMark(mark) { + const sql = ` + update + testResult + set + mark = ?, + time = ? + where + testResultId = ?; + `; - get mark() { - return this.#mark; + await this.#conn.runQuery(sql, [ + mark, + new MySQLDate(), + this.id + ]); + + this.mark = mark; } get percentage() { - return ( - parseInt(this.#mark) / + return Math.round( + parseInt(this.mark) / parseInt(this.test.template.maxMark) * 100 ); diff --git a/routes/singleTest.js b/routes/singleTest.js index d7aec6d..a509193 100644 --- a/routes/singleTest.js +++ b/routes/singleTest.js @@ -95,7 +95,7 @@ router.post('/:id/results/:resultId/edit', async (req, res) => { return res.redirect(returnURL); } - tr.mark = fields.get('mark'); + await tr.setMark(fields.get('mark')); res.redirect(returnURL); });