quizzer
Version:
Quizzer is a webserver for collaborative writing lab support. Based on a _fail early, fail often? approach to written language, the tool is particularly suited to second-language learners. The workflow (essay - error - quiz - exam) treats mistakes as an o
37 lines (31 loc) • 1.54 kB
JavaScript
(function () {
var cogClass = function () {};
cogClass.prototype.exec = function (params, request, response) {
var oops = this.utils.apiError;
var db = this.sys.db;
var getCommenterLanguages = this.utils.getCommenterLanguages;
var getMistakenChoices = this.utils.getMistakenChoices;
var locale = this.sys.locale;
var commenterKey = params.commenter;
getCommenterLanguages(commenterKey,getClassData);
function getClassData (commenterLangs) {
var mistakenChoices = getMistakenChoices(locale,commenterLangs);
var sql = "SELECT name,classes.classID,COUNT(CASE WHEN res.mistakeExamName IS NULL THEN res.commentNeeded ELSE NULL END) AS numberOfCommentsNeeded "
+ "FROM classes "
+ "JOIN quizzes USING(classID) "
+ "LEFT JOIN ("
+ getMistakenChoices(locale,commenterLangs).sql
+ ") as res ON res.classID=quizzes.classID AND quizzes.quizNumber=res.quizNumber "
+ "WHERE sent=1 "
+ "GROUP BY classes.classID "
+ "ORDER BY name";
var sqlVars = mistakenChoices.vars;
db.all(sql,sqlVars,function(err,rows){
if (err||!rows) {return oops(response,err,'classes/readclasses')};
response.writeHead(200, {'Content-Type': 'application/json'});
response.end(JSON.stringify(rows));
});
}
}
exports.cogClass = cogClass;
})();