Add support for answers in Polish
This commit is contained in:
parent
c53c517855
commit
6bb7e5ee89
|
@ -149,4 +149,42 @@ router.post('/submitAnswer', authenticateJWT, (req, res) => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
router.post('/submitPolishAnswer', authenticateJWT, (req, res) => {
|
||||||
|
const answers = req.body as { id: number, answer: string }[];
|
||||||
|
const promises = answers.map(answer => db.query('SELECT * FROM words WHERE wordId = ?', [answer.id]));
|
||||||
|
|
||||||
|
Promise.all(promises)
|
||||||
|
.then(async (results: Word[][]) => {
|
||||||
|
const verified = results.map((result, index) => {
|
||||||
|
return {id: result[0].wordID, correct: result[0].polishWord === answers[index].answer }
|
||||||
|
});
|
||||||
|
|
||||||
|
const accuracy = verified.filter((v) => v.correct).length / verified.length;
|
||||||
|
const xp = accuracy * 10 + (accuracy === 1 ? 10 : 0);
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
|
const time = times.find((time) => time.userId === req.user.userId);
|
||||||
|
if(!time) return res.status(404).json({ code: 404, error: 'Test not started' });
|
||||||
|
|
||||||
|
times.splice(times.indexOf(time), 1);
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
|
await db.updateUserXP(req.user.userId, xp);
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
|
await db.addScore(req.user.userId, Math.floor((Date.now() - time.start) / 1000), xp, verified.filter((v) => !v.correct).length);
|
||||||
|
|
||||||
|
res.json({ code: 200, results: {
|
||||||
|
questions: verified,
|
||||||
|
timeElapsed: Math.floor((Date.now() - time.start) / 1000),
|
||||||
|
accuracy,
|
||||||
|
experienceEarned: xp
|
||||||
|
}});
|
||||||
|
})
|
||||||
|
.catch((err: any) => {
|
||||||
|
console.log(err);
|
||||||
|
res.status(500).json({ code: 500, error: 'Internal server error' });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
export default router;
|
export default router;
|
Loading…
Reference in New Issue