refactor challenge controller to router syntax

This commit is contained in:
Berkeley Martinez
2015-06-01 16:45:21 -07:00
parent 28f0320f18
commit d67f7c666d
3 changed files with 41 additions and 38 deletions

View File

@ -31,14 +31,34 @@
*/ */
var R = require('ramda'), var R = require('ramda'),
express = require('express'),
Challenge = require('./../../models/Challenge'), Challenge = require('./../../models/Challenge'),
User = require('./../../models/User'), User = require('./../../models/User'),
resources = require('./../resources/resources'), resources = require('./../resources/resources'),
userMigration = require('../resources/middleware').userMigration,
MDNlinks = require('./../../seed_data/bonfireMDNlinks'); MDNlinks = require('./../../seed_data/bonfireMDNlinks');
var router = express.Router();
var challengeMapWithNames = resources.getChallengeMapWithNames(); var challengeMapWithNames = resources.getChallengeMapWithNames();
var challengeMapWithIds = resources.getChallengeMapWithIds(); var challengeMapWithIds = resources.getChallengeMapWithIds();
router.get(
'/challenges/next-challenge',
userMigration,
returnNextChallenge
);
router.get(
'/challenges/:challengeName',
userMigration,
returnIndividualChallenge
);
router.get('/challenges/', userMigration, returnCurrentChallenge);
router.post('/completed-challenge/', completedChallenge);
router.post('/completed-zipline-or-basejump', completedZiplineOrBasejump);
router.post('/completed-bonfire', completedBonfire);
function getMDNlinks(links) { function getMDNlinks(links) {
// takes in an array of links, which are strings // takes in an array of links, which are strings
var populatedLinks = []; var populatedLinks = [];
@ -53,7 +73,7 @@ function getMDNlinks(links) {
return populatedLinks; return populatedLinks;
} }
exports.returnNextChallenge = function(req, res, next) { function returnNextChallenge(req, res, next) {
if (!req.user) { if (!req.user) {
return res.redirect('../challenges/learn-how-free-code-camp-works'); return res.redirect('../challenges/learn-how-free-code-camp-works');
} }
@ -105,9 +125,9 @@ exports.returnNextChallenge = function(req, res, next) {
} }
return res.redirect('../challenges/' + nameString); return res.redirect('../challenges/' + nameString);
}); });
}; }
exports.returnCurrentChallenge = function(req, res, next) { function returnCurrentChallenge(req, res, next) {
if (!req.user) { if (!req.user) {
return res.redirect('../challenges/learn-how-free-code-camp-works'); return res.redirect('../challenges/learn-how-free-code-camp-works');
} }
@ -142,9 +162,9 @@ exports.returnCurrentChallenge = function(req, res, next) {
} }
return res.redirect('../challenges/' + nameString); return res.redirect('../challenges/' + nameString);
}); });
}; }
exports.returnIndividualChallenge = function(req, res, next) { function returnIndividualChallenge(req, res, next) {
var dashedName = req.params.challengeName; var dashedName = req.params.challengeName;
var challengeName = var challengeName =
@ -309,9 +329,9 @@ exports.returnIndividualChallenge = function(req, res, next) {
return challengeType[challenge.challengeType](); return challengeType[challenge.challengeType]();
} }
}); });
}; }
exports.completedBonfire = function (req, res, next) { function completedBonfire(req, res, next) {
var isCompletedWith = req.body.challengeInfo.completedWith || ''; var isCompletedWith = req.body.challengeInfo.completedWith || '';
var isCompletedDate = Math.round(+new Date()); var isCompletedDate = Math.round(+new Date());
var challengeId = req.body.challengeInfo.challengeId; var challengeId = req.body.challengeInfo.challengeId;
@ -415,9 +435,9 @@ exports.completedBonfire = function (req, res, next) {
} }
}); });
} }
}; }
exports.completedChallenge = function (req, res, next) { function completedChallenge(req, res, next) {
var isCompletedDate = Math.round(+new Date()); var isCompletedDate = Math.round(+new Date());
var challengeId = req.body.challengeInfo.challengeId; var challengeId = req.body.challengeInfo.challengeId;
@ -445,9 +465,9 @@ exports.completedChallenge = function (req, res, next) {
res.sendStatus(200); res.sendStatus(200);
} }
}); });
}; }
exports.completedZiplineOrBasejump = function (req, res, next) { function completedZiplineOrBasejump(req, res, next) {
var isCompletedWith = req.body.challengeInfo.completedWith || false; var isCompletedWith = req.body.challengeInfo.completedWith || false;
var isCompletedDate = Math.round(+new Date()); var isCompletedDate = Math.round(+new Date());
@ -556,4 +576,6 @@ exports.completedZiplineOrBasejump = function (req, res, next) {
} }
}); });
} }
}; }
module.exports = router;

View File

@ -1,19 +1,20 @@
var R = require('ramda'); var R = require('ramda');
/** /*
* Middleware to migrate users from fragmented challenge structure to unified
* challenge structure
* *
* @param req * @param req
* @param res * @param res
* @returns null * @returns null
* Middleware to migrate users from fragmented challenge structure to unified
* challenge structure
*/ */
exports.userMigration = function(req, res, next) { exports.userMigration = function userMigration(req, res, next) {
if (!req.user || req.user.completedChallenges.length !== 0) { if (!req.user || req.user.completedChallenges.length !== 0) {
return next(); return next();
} }
req.user.completedChallenges = R.filter(function (elem) { req.user.completedChallenges = R.filter(function (elem) {
return elem; // getting rid of undefined // getting rid of undefined
return elem;
}, R.concat( }, R.concat(
req.user.completedCoursewares, req.user.completedCoursewares,
req.user.completedBonfires.map(function (bonfire) { req.user.completedBonfires.map(function (bonfire) {

View File

@ -226,32 +226,12 @@ app.use(redirectsRouter);
app.use(utilityRouter); app.use(utilityRouter);
app.use(storyRouter); app.use(storyRouter);
/*
app.all('/account', passportConf.isAuthenticated);
app.get('/challenges/next-challenge',
userController.userMigration,
challengeController.returnNextChallenge
);
app.get(
'/challenges/:challengeName',
userController.userMigration,
challengeController.returnIndividualChallenge
);
app.get('/challenges/',
userController.userMigration,
challengeController.returnCurrentChallenge);
// todo refactor these routes
app.post('/completed-challenge/', challengeController.completedChallenge);
app.post('/completed-zipline-or-basejump',
challengeController.completedZiplineOrBasejump);
app.post('/completed-bonfire', challengeController.completedBonfire);
*/
/** /**
* OAuth sign-in routes. * OAuth sign-in routes.
*/ */
app.all('/account', passportConf.isAuthenticated);
var passportOptions = { var passportOptions = {
successRedirect: '/', successRedirect: '/',
failureRedirect: '/login' failureRedirect: '/login'