X-Git-Url: https://git.auder.net/?p=qomet.git;a=blobdiff_plain;f=models%2Fassessment.js;h=a1a41e20d682116478f01fea9ea1e62031655df6;hp=3f89cc9d401bfb1f0c25a308536013cabbece3a9;hb=f03a2ad9e0b2fa36051def18d4c19c2f293cac1d;hpb=cc7c0f5e225138cd1ba29e872d4e36fa79a67a59 diff --git a/models/assessment.js b/models/assessment.js index 3f89cc9..a1a41e2 100644 --- a/models/assessment.js +++ b/models/assessment.js @@ -57,19 +57,52 @@ const AssessmentModel = }, // Set password in responses collection - startSession: function(aid, number, cb) + startSession: function(aid, number, password, cb) { - const password = TokenGen.generate(12); //arbitrary number, 12 seems enough... - AssessmentEntity.getQuestions(aid, (err,questions) => { - AssessmentEntity.startSession(aid, number, password, (err2,ret) => { - cb(err, { - questions: questions, - password: password, + AssessmentEntity.getPaperByNumber(aid, number, (err,paper) => { + if (!!err) + return cb(err,null); + if (!!paper) + { + if (!password) + return cb({errmsg:"Missing password"}); + if (paper.password != password) + return cb({errmsg:"Wrong password"}); + } + AssessmentEntity.getQuestions(aid, (err,questions) => { + if (!!err) + return cb(err,null); + if (!!paper) + return cb(null,{paper:paper,questions:questions}); + AssessmentEntity.startSession(aid, number, password, (err2,ret) => { + const pwd = TokenGen.generate(12); //arbitrary number, 12 seems enough... + cb(err2, { + questions: questions, + password: pwd, + }); }); }); }); }, + newAnswer: function(aid, number, password, input, cb) + { + console.log(JSON.stringify(input)); + // Check that student hasn't already answered + AssessmentEntity.hasInput(aid, number, password, input.index, (err,ret) => { + if (!!err) + return cb(err,null); + if (!!ret) + return cb({errmsg:"Question already answered"},null); + AssessmentEntity.setInput(aid, number, password, input, (err2,ret2) => { + console.log(JSON.stringify(ret2)); + if (!!err2 || !ret2) + return cb(err2,ret2); + return cb(null,ret2); + }); + }); + }, + endSession: function(aid, number, password, cb) { AssessmentEntity.endAssessment(aid, number, password, (err,ret) => {