From b3065cfce1fd4e64bde72bb3c9d3d438b29564f9 Mon Sep 17 00:00:00 2001
From: AndrewTrieu
Date: Sun, 12 Mar 2023 16:21:18 +0200
Subject: [PATCH] Bug fix
---
.../routes/controllers/answerController.js | 4 ++--
.../routes/controllers/authController.js | 4 ++--
.../routes/controllers/questionController.js | 18 +++++++++++-------
.../routes/controllers/topicController.js | 14 +++++++-------
drill-and-practice/services/answerService.js | 1 -
drill-and-practice/services/topicService.js | 1 -
drill-and-practice/views/correct.eta | 2 +-
drill-and-practice/views/incorrect.eta | 7 ++++---
drill-and-practice/views/question.eta | 4 ++--
drill-and-practice/views/quizTopics.eta | 2 +-
10 files changed, 30 insertions(+), 27 deletions(-)
diff --git a/drill-and-practice/routes/controllers/answerController.js b/drill-and-practice/routes/controllers/answerController.js
index c5ba3ef..c15437b 100644
--- a/drill-and-practice/routes/controllers/answerController.js
+++ b/drill-and-practice/routes/controllers/answerController.js
@@ -6,10 +6,10 @@ const validationRules = {
option: [validasaur.required, validasaur.minLength(1)],
};
-const addAnswer = async ({ request, response, params, context, render }) => {
+const addAnswer = async ({ request, response, params, state, render }) => {
const topicId = params.tId;
const questionId = params.qId;
- const userId = (await context.state.session.get("user")).id;
+ const userId = (await state.session.get("user")).id;
const body = request.body({ type: "form" });
const formData = await body.value;
const answerData = {
diff --git a/drill-and-practice/routes/controllers/authController.js b/drill-and-practice/routes/controllers/authController.js
index 64682df..5bb94f9 100644
--- a/drill-and-practice/routes/controllers/authController.js
+++ b/drill-and-practice/routes/controllers/authController.js
@@ -36,7 +36,7 @@ const register = async ({ request, response, render }) => {
}
};
-const login = async ({ request, response, context, render }) => {
+const login = async ({ request, response, state, render }) => {
const body = request.body({ type: "form" });
const params = await body.value;
const userDatabase = await authService.findUser(params.get("email"));
@@ -58,7 +58,7 @@ const login = async ({ request, response, context, render }) => {
return;
}
- await context.state.session.set("user", user);
+ await state.session.set("user", user);
response.redirect("/topics");
};
diff --git a/drill-and-practice/routes/controllers/questionController.js b/drill-and-practice/routes/controllers/questionController.js
index b93f342..ac59d6a 100644
--- a/drill-and-practice/routes/controllers/questionController.js
+++ b/drill-and-practice/routes/controllers/questionController.js
@@ -7,9 +7,9 @@ const validationRules = {
question: [validasaur.required, validasaur.minLength(1)],
};
-const addQuestion = async ({ request, response, params, context, render }) => {
+const addQuestion = async ({ request, response, params, state, render }) => {
const topicId = params.tId;
- const userId = (await context.state.session.get("user")).id;
+ const userId = (await state.session.get("user")).id;
const body = request.body({ type: "form" });
const formData = await body.value;
const topicName = (await topicService.getTopicByTopicId(topicId)).name;
@@ -83,7 +83,7 @@ const getRandQuestion = async ({ params, response }) => {
if (randQuestion === null) {
response.body = "No questions in this topic!";
} else {
- response.redirect(`/topics/${topicId}/questions/${randQuestion.id}/quiz`);
+ response.redirect(`/quiz/${topicId}/questions/${randQuestion.id}`);
}
};
@@ -93,12 +93,15 @@ const listQuizTopics = async ({ render }) => {
});
};
-const storeAnswer = async ({ response, params, context }) => {
+const storeAnswer = async ({ response, params, state }) => {
const topicId = params.tId;
const questionId = params.qId;
const optionId = params.oId;
- const userId = (await context.state.session.get("user")).id;
- const correctOptionIds = await answerService.getCorrectOptionIds(questionId);
+ const userId = (await state.session.get("user")).id;
+ const correctOptionIds = (
+ await answerService.getCorrectOptionIds(questionId)
+ ).map((obj) => obj.id);
+ console.log(correctOptionIds);
const correct = correctOptionIds.includes(Number(optionId));
await answerService.storeAnswer(userId, questionId, optionId);
if (correct) {
@@ -115,9 +118,10 @@ const showCorrect = async ({ params, render }) => {
const showIncorrect = async ({ params, render }) => {
const questionId = params.qId;
const correctOptions = {
- data: [await answerService.getCorrectOptions(questionId)],
+ data: await answerService.getCorrectOptions(questionId),
tId: params.tId,
};
+ console.log(correctOptions);
render("incorrect.eta", correctOptions);
};
diff --git a/drill-and-practice/routes/controllers/topicController.js b/drill-and-practice/routes/controllers/topicController.js
index 442ddbc..ae1f51f 100644
--- a/drill-and-practice/routes/controllers/topicController.js
+++ b/drill-and-practice/routes/controllers/topicController.js
@@ -5,9 +5,9 @@ const validationRules = {
name: [validasaur.required, validasaur.minLength(1)],
};
-const addTopic = async ({ request, response, render, context }) => {
- const userId = (await context.state.session.get("user")).id;
- const admin = (await context.state.session.get("user")).admin;
+const addTopic = async ({ request, response, render, state }) => {
+ const userId = (await state.session.get("user")).id;
+ const admin = (await state.session.get("user")).admin;
const body = request.body({ type: "form" });
const params = await body.value;
const topicData = {
@@ -33,17 +33,17 @@ const addTopic = async ({ request, response, render, context }) => {
}
};
-const deleteTopic = async ({ params, response, context }) => {
+const deleteTopic = async ({ params, response, state }) => {
const topicId = params.tId;
- const admin = (await context.state.session.get("user")).admin;
+ const admin = (await state.session.get("user")).admin;
if (admin) {
await topicService.deleteTopic(topicId);
}
response.redirect("/topics");
};
-const listTopics = async ({ render, context }) => {
- const user = await context.state.session.get("user");
+const listTopics = async ({ render, state }) => {
+ const user = await state.session.get("user");
render("topics.eta", {
admin: user.admin,
topics: await topicService.getAllTopics(),
diff --git a/drill-and-practice/services/answerService.js b/drill-and-practice/services/answerService.js
index 1ee81a8..625d402 100644
--- a/drill-and-practice/services/answerService.js
+++ b/drill-and-practice/services/answerService.js
@@ -8,7 +8,6 @@ const countAnswers = async () => {
const getAnswersByQuestionId = async (questionId) => {
const result =
await sql`SELECT * FROM question_answer_options WHERE question_id = ${questionId}`;
- console.log(result);
return result;
};
diff --git a/drill-and-practice/services/topicService.js b/drill-and-practice/services/topicService.js
index 0556ab5..71feac6 100644
--- a/drill-and-practice/services/topicService.js
+++ b/drill-and-practice/services/topicService.js
@@ -6,7 +6,6 @@ const addTopic = async (userId, name) => {
const countTopics = async () => {
const result = await sql`SELECT COUNT(id) FROM topics`;
- console.log(result[0].count);
return result[0].count;
};
diff --git a/drill-and-practice/views/correct.eta b/drill-and-practice/views/correct.eta
index d06b822..0b03efe 100644
--- a/drill-and-practice/views/correct.eta
+++ b/drill-and-practice/views/correct.eta
@@ -1,4 +1,4 @@
<% layout("./layouts/layout.eta") %>
Your answer is correct!
-Next question
+Next question
diff --git a/drill-and-practice/views/incorrect.eta b/drill-and-practice/views/incorrect.eta
index 022b80e..f4ac566 100644
--- a/drill-and-practice/views/incorrect.eta
+++ b/drill-and-practice/views/incorrect.eta
@@ -4,12 +4,13 @@
Correct answer:
<% if (it.data && it.data.length > 0) { %>
-
+
<% }); %>
<% } else { %>
@@ -16,7 +16,7 @@
<% } %>
-Add an answer pption
+Add an answer option
<% if (it.errors) { %>
diff --git a/drill-and-practice/views/quizTopics.eta b/drill-and-practice/views/quizTopics.eta
index c0ca22d..0e96e70 100644
--- a/drill-and-practice/views/quizTopics.eta
+++ b/drill-and-practice/views/quizTopics.eta
@@ -8,7 +8,7 @@
<% it.topics.forEach(topic => { %>
-
- <%= item.name %>
+ <%= topic.name %>
<% }); %>