76 lines
2.7 KiB
JavaScript
76 lines
2.7 KiB
JavaScript
"use strict";
|
||
|
||
const config = require("../config/main.js");
|
||
const txt = require("../lang/"+config.adminLang+"/answer");
|
||
// !! Attention, car on teste ici des données envoyées par l'application.
|
||
// Donc ne pas afficher les messages à l'utilisateur final, mais les journaliser.
|
||
|
||
module.exports = (sequelize, DataTypes) =>
|
||
{
|
||
const Answer = sequelize.define("Answer",
|
||
{
|
||
nbQuestions:
|
||
{
|
||
type: DataTypes.INTEGER(2).UNSIGNED, allowNull: false,
|
||
comment: "The number of questions in the quiz may change between answers.",
|
||
validate:
|
||
{
|
||
notNull: { msg: txt.needNumberUserResponses },
|
||
isInt: { msg: txt.needIntegerNumberUserResponses },
|
||
min:
|
||
{
|
||
args: [1],
|
||
msg: txt.needMinNumberUserResponses
|
||
},
|
||
max:
|
||
{
|
||
args: [100],// dans le contrôleur plutôt comparer au nombre de question du questionnaire.
|
||
msg: txt.needMaxNumberUserResponses
|
||
}
|
||
}
|
||
},
|
||
nbCorrectAnswers:
|
||
{
|
||
type: DataTypes.INTEGER(2).UNSIGNED, allowNull: false,
|
||
validate:
|
||
{
|
||
notNull: { msg: txt.needNumberCorrectResponses },
|
||
isInt: { msg: txt.needIntegerNumberCorrectResponses },
|
||
min:
|
||
{
|
||
args: [0],
|
||
msg: txt.needMinNumberCorrectResponses
|
||
},
|
||
moreAnswersThanQuestions(value)
|
||
{
|
||
if(parseInt(value,10) > parseInt(this.nbQuestions,10))
|
||
throw new Error(txt.needMaxNumberCorrectResponses);
|
||
}
|
||
}
|
||
},
|
||
duration:
|
||
{
|
||
type: DataTypes.INTEGER(5).UNSIGNED,
|
||
validate:
|
||
{
|
||
isInt: { msg: txt.needIntegerNumberSecondesResponse },
|
||
min:
|
||
{
|
||
args: [0],
|
||
msg: txt.needMinNumberSecondesResponse
|
||
}
|
||
}
|
||
}
|
||
},
|
||
{
|
||
timestamps: true,
|
||
updatedAt: false
|
||
});
|
||
Answer.associate = function(models)
|
||
{
|
||
Answer.belongsTo(models.User, { foreignKey: { name: "UserId", allowNull: false }, onDelete: 'CASCADE', onUpdate: 'CASCADE' });
|
||
Answer.belongsTo(models.Questionnaire, { foreignKey: { name: "QuestionnaireId", allowNull: true }, onDelete: 'CASCADE', onUpdate: 'CASCADE' });
|
||
Answer.belongsTo(models.Group, { foreignKey: { name: "GroupId", allowNull: true }, onDelete: 'CASCADE', onUpdate: 'CASCADE' });
|
||
};
|
||
return Answer;
|
||
}; |