var _ = require('lodash'), debug = require('debug')('freecc:cntr:coursewares'), Courseware = require('./../models/Courseware'), User = require('./../models/User'), resources = require('./resources'); /** * Courseware controller */ exports.courseware = function(req, res) { res.render('courseware/show.jade', { }); }; var highestCourswareNumber = resources.numberOfCoursewares(); exports.returnNextCourseware = function(req, res, next) { if (!req.user) { return res.redirect('coursewares/welcome-to-courseware'); } var completed = req.user.completedBonfires.map(function (elem) { return elem._id; }); req.user.uncompletedBonfires = resources.allBonfireIds().filter(function (elem) { if (completed.indexOf(elem) === -1) { return elem; } }); req.user.save(); var uncompletedCoursewares = req.user.uncompletedCoursewares; var displayedCoursewares = Courseware.find({'_id': uncompletedCoursewares[0]}); displayedCoursewares.exec(function(err, bonfire) { if (err) { next(err); } courseware = courseware.pop(); nameString = courseware[0].name.toLowerCase().replace(/\s/g, '-'); return res.redirect('/bonfires/' + nameString); //res.render('bonfire/show', { // completedWith: null, // title: bonfire[bonfireNumber].name, // name: bonfire[bonfireNumber].name, // difficulty: +bonfire[bonfireNumber].difficulty, // brief: bonfire[bonfireNumber].description[0], // details: bonfire[bonfireNumber].description.slice(1), // tests: bonfire[bonfireNumber].tests, // challengeSeed: bonfire[bonfireNumber].challengeSeed, // challengeEntryPoint: bonfire[bonfireNumber].challengeEntryPoint, // cc: req.user ? req.user.bonfiresHash : undefined, // points: req.user ? req.user.points : undefined, // verb: resources.randomVerb(), // phrase: resources.randomPhrase(), // compliments: resources.randomCompliment(), // bonfires: bonfire, // bonfireHash: bonfire[bonfireNumber]._id //}); }); }; exports.returnIndividualBonfire = function(req, res, next) { var dashedName = req.params.bonfireName; bonfireName = dashedName.replace(/\-/g, ' '); var bonfireNumber = 0; Bonfire.find({"name" : new RegExp(bonfireName, 'i')}, function(err, bonfire) { if (err) { next(err); } if (bonfire.length < 1) { req.flash('errors', { msg: "404: We couldn't find a bonfire with that name. Please double check the name." }); return res.redirect('/bonfires/meet-bonfire') } else { res.render('bonfire/show', { completedWith: null, title: bonfire[bonfireNumber].name, dashedName: dashedName, name: bonfire[bonfireNumber].name, difficulty: Math.floor(+bonfire[bonfireNumber].difficulty), brief: bonfire[bonfireNumber].description[0], details: bonfire[bonfireNumber].description.slice(1), tests: bonfire[bonfireNumber].tests, challengeSeed: bonfire[bonfireNumber].challengeSeed, challengeEntryPoint: bonfire[bonfireNumber].challengeEntryPoint, cc: !!req.user, points: req.user ? req.user.points : undefined, verb: resources.randomVerb(), phrase: resources.randomPhrase(), compliment: resources.randomCompliment(), bonfires: bonfire, bonfireHash: bonfire[bonfireNumber]._id }); } }); }; /** * Bonfire generator */ exports.returnGenerator = function(req, res) { res.render('bonfire/generator', { title: null, name: null, difficulty: null, brief: null, details: null, tests: null, challengeSeed: null, challengeEntryPoint: null, bonfireHash: randomString() }); }; /** * Post for bonfire generation */ function randomString() { var chars = "0123456789abcdef"; var string_length = 23; var randomstring = 'a'; for (var i=0; i 0) { return elem; } } exports.publicGenerator = function(req, res) { res.render('bonfire/public-generator'); } exports.generateChallenge = function(req, res) { var bonfireName = req.body.name, bonfireTests = req.body.tests, bonfireDifficulty = req.body.difficulty, bonfireDescription = req.body.description, bonfireEntryPoint = req.body.challengeEntryPoint, bonfireChallengeSeed = req.body.challengeSeed; bonfireTests = bonfireTests.split('\r\n'); bonfireDescription = bonfireDescription.split('\r\n'); bonfireTests.filter(getRidOfEmpties); bonfireDescription.filter(getRidOfEmpties); bonfireChallengeSeed = bonfireChallengeSeed.replace('\r', ''); var response = { _id: randomString(), name: bonfireName, difficulty: bonfireDifficulty, description: bonfireDescription, challengeEntryPoint: bonfireEntryPoint, challengeSeed: bonfireChallengeSeed, tests: bonfireTests }; res.send(response); }