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;
|
Loading…
Reference in New Issue