backend_adaptive_learning/controllers/learningControllers/stdExercise.js

104 lines
2.8 KiB
JavaScript
Raw Normal View History

2024-09-13 13:03:35 +00:00
import response from "../../response.js";
import models from "../../models/index.js";
export const getStdExercises = async (req, res) => {
try {
const stdExercise = await models.StdExercise.findAll();
response(200, stdExercise, "Success", res);
} catch (error) {
console.log(error);
response(500, null, "Error retrieving student exercise data!", res);
}
};
export const getStdExerciseById = async (req, res) => {
try {
const { id } = req.params;
const stdExercise = await models.StdExercise.findByPk(id);
if (!stdExercise) {
return response(404, null, "Student exercise data not found", res);
}
response(200, stdExercise, "Success", res);
} catch (error) {
console.log(error);
res.status(500).json({ message: "Internal Server Error" });
}
};
export const stdAnswerExercise = async (req, res, next) => {
try {
const { answers } = req.body;
2024-09-13 13:03:35 +00:00
if (!Array.isArray(answers) || answers.length === 0) {
return response(400, null, "Answers array is required", res);
2024-09-13 13:03:35 +00:00
}
for (const answer of answers) {
const { ID_STUDENT_LEARNING, ID_ADMIN_EXERCISE, ANSWER_STUDENT } = answer;
2024-09-13 13:03:35 +00:00
if (!ID_STUDENT_LEARNING) {
return response(400, null, "Id student learning is required", res);
}
2024-09-13 13:03:35 +00:00
const existingStdLearning = await models.StdLearning.findByPk(
ID_STUDENT_LEARNING
);
if (!existingStdLearning) {
return response(404, null, "Id student learning not found", res);
}
2024-09-13 13:03:35 +00:00
if (!ID_ADMIN_EXERCISE) {
return response(400, null, "Id exercise is required", res);
}
2024-09-13 13:03:35 +00:00
const exercise = await models.Exercise.findOne({
where: {
ID_ADMIN_EXERCISE: ID_ADMIN_EXERCISE,
ID_LEVEL: existingStdLearning.ID_LEVEL,
},
});
if (!exercise) {
return response(404, null, "Exercise not found in this level", res);
}
2024-09-13 13:03:35 +00:00
if (!ANSWER_STUDENT) {
return response(400, null, "Answer is required", res);
}
2024-09-13 13:03:35 +00:00
const existingStdExercise = await models.StdExercise.findOne({
where: {
ID_STUDENT_LEARNING: ID_STUDENT_LEARNING,
ID_ADMIN_EXERCISE: ID_ADMIN_EXERCISE,
},
2024-09-13 13:03:35 +00:00
});
if (existingStdExercise) {
existingStdExercise.ANSWER_STUDENT = ANSWER_STUDENT;
await existingStdExercise.save();
} else {
await models.StdExercise.create({
ID_STUDENT_LEARNING,
ID_ADMIN_EXERCISE,
ANSWER_STUDENT,
});
}
2024-09-13 13:03:35 +00:00
}
req.params.id = answers[0].ID_STUDENT_LEARNING;
2024-09-13 13:03:35 +00:00
next();
} catch (error) {
console.log(error);
return response(
500,
null,
"Error creating or updating student exercise data!",
res
);
}
};
export const getStudentAnswersByStdLearningId = async (req, res) => {
}