refactor challenge controller to router syntax
This commit is contained in:
@ -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;
|
||||||
|
@ -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) {
|
||||||
|
@ -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'
|
||||||
|
Reference in New Issue
Block a user