EvalueTonSavoir/server/controllers/quizzes.js
2025-02-26 12:31:23 -05:00

74 lines
No EOL
1.8 KiB
JavaScript

const AppError = require('../middleware/AppError.js');
const { MISSING_REQUIRED_PARAMETER, QUIZ_NOT_FOUND } = require('../constants/errorCodes.js');
class QuizController {
constructor(quizModel) {
this.quizzes = quizModel;
}
create = async (req, res, next) => {
try {
const { students, questionnaire } = req.body;
if (!students || !questionnaire) {
throw new AppError(MISSING_REQUIRED_PARAMETER);
}
const result = this.quizzes.create(students, questionnaire);
return res.status(200).json({
message: 'Quiz created successfully.',
quiz: result
});
} catch (error) {
return next(error);
}
};
get = async (req, res, next) => {
try {
const { quizId } = req.params;
if (!quizId) {
throw new AppError(MISSING_REQUIRED_PARAMETER);
}
const quiz = this.quizzes.get(parseInt(quizId));
if (!quiz) {
throw new AppError(QUIZ_NOT_FOUND);
}
return res.status(200).json(quiz);
} catch (error) {
return next(error);
}
};
delete = async (req, res, next) => {
try {
const { quizId } = req.params;
if (!quizId) {
throw new AppError(MISSING_REQUIRED_PARAMETER);
}
const result = this.quizzes.delete(parseInt(quizId));
if (!result) {
throw new AppError(QUIZ_NOT_FOUND);
}
return res.status(200).json({
message: 'Quiz deleted successfully.'
});
} catch (error) {
return next(error);
}
};
}
module.exports = QuizController;