refactor: stdLearning and exercise model
This commit is contained in:
parent
d87be86627
commit
dfe4ab12d0
|
|
@ -221,7 +221,7 @@ export const getExerciseByLevelId = async (req, res) => {
|
|||
if (exerciseData.multipleChoices) {
|
||||
exerciseData.multipleChoices = exerciseData.multipleChoices.map(
|
||||
(choice) => {
|
||||
const { ANSWER_KEY, ...rest } = choice.dataValues; // Exclude ANSWER_KEY
|
||||
const { ANSWER_KEY, ...rest } = choice.dataValues;
|
||||
return rest;
|
||||
}
|
||||
);
|
||||
|
|
@ -231,10 +231,7 @@ export const getExerciseByLevelId = async (req, res) => {
|
|||
} else if (questionType === "MPQ") {
|
||||
if (exerciseData.matchingPairs) {
|
||||
exerciseData.matchingPairs = exerciseData.matchingPairs.map(
|
||||
(pair) => {
|
||||
const { LEFT_PAIR, RIGHT_PAIR, ...rest } = pair.dataValues; // Exclude LEFT_PAIR, RIGHT_PAIR
|
||||
return rest;
|
||||
}
|
||||
(pair) => pair.dataValues
|
||||
);
|
||||
}
|
||||
delete exerciseData.multipleChoices;
|
||||
|
|
@ -242,7 +239,7 @@ export const getExerciseByLevelId = async (req, res) => {
|
|||
} else if (questionType === "TFQ") {
|
||||
if (exerciseData.trueFalse) {
|
||||
exerciseData.trueFalse = exerciseData.trueFalse.map((tf) => {
|
||||
const { IS_TRUE, ...rest } = tf.dataValues; // Exclude IS_TRUE
|
||||
const { IS_TRUE, ...rest } = tf.dataValues;
|
||||
return rest;
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -98,3 +98,7 @@ export const stdAnswerExercise = async (req, res, next) => {
|
|||
);
|
||||
}
|
||||
};
|
||||
|
||||
export const getStudentAnswersByStdLearningId = async (req, res) => {
|
||||
|
||||
}
|
||||
|
|
@ -34,13 +34,18 @@ export const createStdLearning = async (req, res) => {
|
|||
return response(401, null, "User not authenticated", res);
|
||||
}
|
||||
|
||||
if (!ID_LEVEL) {
|
||||
return response(400, null, "Level ID is required", res);
|
||||
}
|
||||
|
||||
const ID = req.user.ID;
|
||||
|
||||
try {
|
||||
if (req.stdLearning) {
|
||||
return response(
|
||||
200,
|
||||
req.stdLearning,
|
||||
"Student Learning data found and reused",
|
||||
res
|
||||
);
|
||||
}
|
||||
|
||||
const level = await models.Level.findByPk(ID_LEVEL);
|
||||
if (!level) {
|
||||
return response(404, null, "Level not found", res);
|
||||
|
|
@ -214,7 +219,9 @@ export const learningScoreByStdLearningId = async (req, res) => {
|
|||
? stdLearning.learningUser.students.NISN
|
||||
: null,
|
||||
ID_LEVEL: stdLearning.level ? stdLearning.level.ID_LEVEL : null,
|
||||
CURRENT_LEVEL_NAME: stdLearning.level ? stdLearning.level.NAME_LEVEL : null,
|
||||
CURRENT_LEVEL_NAME: stdLearning.level
|
||||
? stdLearning.level.NAME_LEVEL
|
||||
: null,
|
||||
SCORE: stdLearning.SCORE,
|
||||
NEXT_LEARNING: stdLearning.NEXT_LEARNING,
|
||||
NEXT_LEARNING_NAME: stdLearning.nextLevel.NAME_LEVEL,
|
||||
|
|
|
|||
35
middlewares/checkStdLearning.js
Normal file
35
middlewares/checkStdLearning.js
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
import models from "../models/index.js";
|
||||
import response from "../response.js";
|
||||
|
||||
export const checkStdLearning = async (req, res, next) => {
|
||||
const { ID_LEVEL } = req.body;
|
||||
|
||||
if (!req.user) {
|
||||
return response(401, null, "User not authenticated", res);
|
||||
}
|
||||
|
||||
if (!ID_LEVEL) {
|
||||
return response(400, null, "Level ID is required", res);
|
||||
}
|
||||
|
||||
const ID = req.user.ID;
|
||||
|
||||
try {
|
||||
const existingStdLearning = await models.StdLearning.findOne({
|
||||
where: {
|
||||
ID: ID,
|
||||
ID_LEVEL: ID_LEVEL,
|
||||
},
|
||||
});
|
||||
|
||||
if (existingStdLearning && existingStdLearning.SCORE === null) {
|
||||
req.stdLearning = existingStdLearning;
|
||||
return next();
|
||||
}
|
||||
|
||||
return next();
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
return response(500, null, "Internal Server Error", res);
|
||||
}
|
||||
};
|
||||
|
|
@ -15,10 +15,7 @@ const StudentModel = (DataTypes) => {
|
|||
},
|
||||
ID_CLASS: {
|
||||
type: DataTypes.UUID,
|
||||
allowNull: false,
|
||||
validate: {
|
||||
notEmpty: true,
|
||||
},
|
||||
allowNull: true,
|
||||
references: {
|
||||
model: "class",
|
||||
key: "ID_CLASS",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import express from "express";
|
||||
import { getStdLearnings, getStdLearningById, createStdLearning, learningScoreByStdLearningId, learningHistory, learningHistoryBySectionId, learningHistoryByTopicId, getLastCreatedStdLearningByLevelId } from "../../controllers/learningControllers/stdLearning.js";
|
||||
import { checkStdLearning } from "../../middlewares/checkStdLearning.js";
|
||||
import { verifyLoginUser } from "../../middlewares/User/authUser.js";
|
||||
|
||||
const router = express.Router();
|
||||
|
|
@ -18,6 +19,6 @@ router.get("/learningHistory/topic/:topicId", verifyLoginUser, learningHistoryBy
|
|||
|
||||
router.get("/stdLearning/level/:levelId", verifyLoginUser, getLastCreatedStdLearningByLevelId);
|
||||
|
||||
router.post("/stdLearning", verifyLoginUser, createStdLearning);
|
||||
router.post("/stdLearning", verifyLoginUser, checkStdLearning, createStdLearning);
|
||||
|
||||
export default router
|
||||
Loading…
Reference in New Issue
Block a user