Fix exam mode
[qomet.git] / entities / assessment.js
index 2104193..b4e3092 100644 (file)
@@ -106,9 +106,27 @@ const AssessmentEntity =
                );
        },
 
+       getPaperByNumber: function(aid, number, callback)
+       {
+               db.assessments.findOne(
+                       {
+                               _id: aid,
+                               "papers.number": number,
+                       },
+                       (err,a) => {
+                               if (!!err || !a)
+                                       return callback(err,a);
+                               for (let p of a.papers)
+                               {
+                                       if (p.number == number)
+                                               return callback(null,p); //reached for sure
+                               }
+                       }
+               );
+       },
+
        startSession: function(aid, number, password, callback)
        {
-               // TODO: security, do not re-do tasks if already done
                db.assessments.update(
                        { _id: aid },
                        { $push: { papers: {
@@ -123,6 +141,29 @@ const AssessmentEntity =
                );
        },
 
+
+       hasInput: function(aid, number, password, idx, cb)
+       {
+               db.assessments.findOne(
+                       {
+                               _id: aid,
+                               "papers.number": number,
+                               "papers.password": password,
+                       },
+                       (err,a) => {
+                               if (!!err || !a)
+                                       return cb(err,a);
+                               let papIdx = a.papers.findIndex( item => { return item.number == number; });
+                               for (let i of a.papers[papIdx].inputs)
+                               {
+                                       if (i.index == idx)
+                                               return cb(null,true);
+                               }
+                               cb(null,false);
+                       }
+               );
+       },
+
        // https://stackoverflow.com/questions/27874469/mongodb-push-in-nested-array
        setInput: function(aid, number, password, input, callback) //input: index + arrayOfInt (or txt)
        {