2014-10-20 22:35:42 +00:00
|
|
|
/**
|
2014-11-04 22:57:00 +00:00
|
|
|
* GET /
|
2014-11-10 18:29:16 +00:00
|
|
|
* Challenges.
|
2014-11-04 22:57:00 +00:00
|
|
|
*/
|
2014-12-23 16:48:28 +00:00
|
|
|
var _ = require('lodash'),
|
|
|
|
debug = require('debug')('freecc:cntr:challenges'),
|
2015-01-25 07:03:25 +00:00
|
|
|
Challenge = require('./../models/Challenge'),
|
2015-01-25 15:02:41 +00:00
|
|
|
resources = require('./resources');
|
2014-10-20 22:35:42 +00:00
|
|
|
|
2015-01-22 02:32:13 +00:00
|
|
|
var highestChallengeNumber = 53;
|
|
|
|
|
2015-02-16 07:59:03 +00:00
|
|
|
|
|
|
|
exports.returnNextChallenge = function(req, res) {
|
|
|
|
if (req.user) {
|
|
|
|
ch = req.user.challengesHash;
|
|
|
|
if (req.user.challengesHash[0] > 0) {
|
|
|
|
var max = Object.keys(ch).reduce(function(max, key) {
|
|
|
|
return (max === undefined || ch[key] > ch[max]) ? +key : max;
|
|
|
|
});
|
|
|
|
nextChallenge = max + 1;
|
|
|
|
res.redirect('challenges/' + nextChallenge);
|
|
|
|
} else {
|
|
|
|
res.redirect('challenges/0');
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
res.render('home', {
|
|
|
|
title: 'Learn to Code and Become a Software Engineer',
|
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.returnChallenge = function(req, res) {
|
2014-11-18 05:16:32 +00:00
|
|
|
var challengeNumber = parseInt(req.params.challengeNumber) || 0;
|
2015-03-03 19:31:16 +00:00
|
|
|
if (challengeNumber === 2) {
|
|
|
|
return res.redirect('../challenges/3');
|
|
|
|
}
|
2015-02-08 17:39:00 +00:00
|
|
|
if (challengeNumber > highestChallengeNumber) {
|
|
|
|
req.flash('errors', {
|
|
|
|
msg: "It looks like you've either completed all the challenges we have available or requested a challenge we don't have."
|
|
|
|
});
|
|
|
|
return res.redirect('../challenges/0');
|
|
|
|
}
|
2014-12-23 21:30:20 +00:00
|
|
|
Challenge.find({}, null, { sort: { challengeNumber: 1 } }, function(err, c) {
|
2014-11-18 03:26:55 +00:00
|
|
|
if (err) {
|
2014-12-23 20:34:09 +00:00
|
|
|
debug('Challenge err: ', err);
|
2014-11-18 03:26:55 +00:00
|
|
|
next(err);
|
|
|
|
}
|
2014-11-07 00:27:18 +00:00
|
|
|
res.render('challenges/show', {
|
2014-12-23 05:07:50 +00:00
|
|
|
title: 'Challenge: ' + c[challengeNumber].name,
|
|
|
|
name: c[challengeNumber].name,
|
|
|
|
video: c[challengeNumber].video,
|
|
|
|
time: c[challengeNumber].time,
|
|
|
|
steps: c[challengeNumber].steps,
|
2014-12-23 20:16:23 +00:00
|
|
|
number: challengeNumber,
|
2014-12-23 05:07:50 +00:00
|
|
|
cc: req.user ? req.user.challengesHash : undefined,
|
2014-12-24 22:34:52 +00:00
|
|
|
points: req.user ? req.user.points : undefined,
|
2015-01-25 15:02:41 +00:00
|
|
|
verb: resources.randomVerb(),
|
|
|
|
phrase: resources.randomPhrase(),
|
|
|
|
compliment: resources.randomCompliment(),
|
2014-12-23 05:07:50 +00:00
|
|
|
challenges: c
|
2014-11-06 23:26:38 +00:00
|
|
|
});
|
2014-10-20 22:35:42 +00:00
|
|
|
});
|
2014-12-23 16:48:28 +00:00
|
|
|
};
|