start refactoring basejumps and ziplines to just be normal challenges, make all timestamps miliseconds
This commit is contained in:
@ -224,26 +224,26 @@ exports.generateChallenge = function(req, res) {
|
||||
|
||||
exports.completedBonfire = function (req, res) {
|
||||
var isCompletedWith = req.body.bonfireInfo.completedWith || undefined;
|
||||
var isCompletedDate = Math.round(+new Date() / 1000);
|
||||
var isCompletedDate = Math.round(+new Date());
|
||||
var bonfireHash = req.body.bonfireInfo.bonfireHash;
|
||||
var isSolution = req.body.bonfireInfo.solution;
|
||||
|
||||
if (isCompletedWith) {
|
||||
var paired = User.find({"profile.username": isCompletedWith.toLowerCase()}).limit(1);
|
||||
var paired = User.find({"profile.username": isCompletedbWith.toLowerCase()}).limit(1);
|
||||
paired.exec(function (err, pairedWith) {
|
||||
if (err) {
|
||||
return err;
|
||||
} else {
|
||||
var index = req.user.uncompletedBonfires.indexOf(bonfireHash);
|
||||
if (index > -1) {
|
||||
req.user.progressTimestamps.push(Date.now() / 1000 | 0);
|
||||
req.user.progressTimestamps.push(Date.now() || 0);
|
||||
req.user.uncompletedBonfires.splice(index, 1)
|
||||
}
|
||||
pairedWith = pairedWith.pop();
|
||||
|
||||
index = pairedWith.uncompletedBonfires.indexOf(bonfireHash);
|
||||
if (index > -1) {
|
||||
pairedWith.progressTimestamps.push(Date.now() / 1000 | 0);
|
||||
pairedWith.progressTimestamps.push(Date.now() || 0);
|
||||
pairedWith.uncompletedBonfires.splice(index, 1);
|
||||
|
||||
}
|
||||
@ -260,7 +260,7 @@ exports.completedBonfire = function (req, res) {
|
||||
completedWith: pairedWith._id,
|
||||
completedDate: isCompletedDate,
|
||||
solution: isSolution
|
||||
})
|
||||
});
|
||||
|
||||
req.user.save(function (err, user) {
|
||||
pairedWith.save(function (err, paired) {
|
||||
@ -285,7 +285,7 @@ exports.completedBonfire = function (req, res) {
|
||||
|
||||
var index = req.user.uncompletedBonfires.indexOf(bonfireHash);
|
||||
if (index > -1) {
|
||||
req.user.progressTimestamps.push(Date.now() / 1000 | 0);
|
||||
req.user.progressTimestamps.push(Date.now() || 0);
|
||||
req.user.uncompletedBonfires.splice(index, 1)
|
||||
}
|
||||
|
||||
|
@ -91,8 +91,6 @@ exports.returnIndividualCourseware = function(req, res, next) {
|
||||
details: courseware.description.slice(1),
|
||||
tests: courseware.tests,
|
||||
challengeSeed: courseware.challengeSeed,
|
||||
cc: !!req.user,
|
||||
progressTimestamps: req.user ? req.user.progressTimestamps : undefined,
|
||||
verb: resources.randomVerb(),
|
||||
phrase: resources.randomPhrase(),
|
||||
compliment: resources.randomCompliment(),
|
||||
@ -110,13 +108,10 @@ exports.returnIndividualCourseware = function(req, res, next) {
|
||||
details: courseware.description.slice(1),
|
||||
tests: courseware.tests,
|
||||
challengeSeed: courseware.challengeSeed,
|
||||
cc: !!req.user,
|
||||
progressTimestamps: req.user ? req.user.progressTimestamps : undefined,
|
||||
verb: resources.randomVerb(),
|
||||
phrase: resources.randomPhrase(),
|
||||
compliment: resources.randomCompliment(),
|
||||
coursewareHash: courseware._id,
|
||||
environment: resources.whichEnvironment()
|
||||
|
||||
});
|
||||
},
|
||||
@ -129,13 +124,43 @@ exports.returnIndividualCourseware = function(req, res, next) {
|
||||
details: courseware.description,
|
||||
tests: courseware.tests,
|
||||
video: courseware.challengeSeed[0],
|
||||
cc: !!req.user,
|
||||
progressTimestamps: req.user ? req.user.progressTimestamps : undefined,
|
||||
verb: resources.randomVerb(),
|
||||
phrase: resources.randomPhrase(),
|
||||
compliment: resources.randomCompliment(),
|
||||
coursewareHash: courseware._id,
|
||||
environment: resources.whichEnvironment()
|
||||
challengeType: 'video'
|
||||
});
|
||||
},
|
||||
|
||||
3: function() {
|
||||
res.render('coursewares/showVideo', {
|
||||
title: courseware.name,
|
||||
dashedName: dashedName,
|
||||
name: courseware.name,
|
||||
details: courseware.description,
|
||||
tests: courseware.tests,
|
||||
video: courseware.challengeSeed[0],
|
||||
verb: resources.randomVerb(),
|
||||
phrase: resources.randomPhrase(),
|
||||
compliment: resources.randomCompliment(),
|
||||
coursewareHash: courseware._id,
|
||||
challengeType: 'zipline'
|
||||
});
|
||||
},
|
||||
|
||||
4: function() {
|
||||
res.render('coursewares/showVideo', {
|
||||
title: courseware.name,
|
||||
dashedName: dashedName,
|
||||
name: courseware.name,
|
||||
details: courseware.description,
|
||||
tests: courseware.tests,
|
||||
video: courseware.challengeSeed[0],
|
||||
verb: resources.randomVerb(),
|
||||
phrase: resources.randomPhrase(),
|
||||
compliment: resources.randomCompliment(),
|
||||
coursewareHash: courseware._id,
|
||||
challengeType: 'basejump'
|
||||
});
|
||||
}
|
||||
};
|
||||
@ -212,9 +237,9 @@ exports.generateChallenge = function(req, res) {
|
||||
res.send(response);
|
||||
};
|
||||
|
||||
exports.completedCourseware = function (req, res) {
|
||||
exports.completedCourseware = function (req, res, next) {
|
||||
|
||||
var isCompletedDate = Math.round(+new Date() / 1000);
|
||||
var isCompletedDate = Math.round(+new Date());
|
||||
var coursewareHash = req.body.coursewareInfo.coursewareHash;
|
||||
|
||||
debug('this is the coursewarehash we got', coursewareHash);
|
||||
@ -226,18 +251,100 @@ exports.completedCourseware = function (req, res) {
|
||||
});
|
||||
|
||||
var index = req.user.completedCoursewares.indexOf(coursewareHash);
|
||||
debug('this is the index of the found courseware', index);
|
||||
|
||||
if (index === -1) {
|
||||
req.user.progressTimestamps.push(Date.now() / 1000 | 0);
|
||||
req.user.progressTimestamps.push(Date.now() || 0);
|
||||
req.user.uncompletedCoursewares.splice(index, 1);
|
||||
}
|
||||
|
||||
req.user.save(function (err, user) {
|
||||
if (err) {
|
||||
throw err;
|
||||
return next(err);
|
||||
}
|
||||
if (user) {
|
||||
res.send(true);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
exports.completedZiplineOrBasejump = function (req, res, next) {
|
||||
var isCompletedWith = req.body.bonfireInfo.completedWith || undefined;
|
||||
var isCompletedDate = Math.round(+new Date());
|
||||
var coursewareHash = req.body.coursewareInfo.coursewareHash;
|
||||
var solutionLink = req.body.coursewareInfo.solutionLink;
|
||||
if(!solutionLink) {
|
||||
// flash error and redirect
|
||||
}
|
||||
|
||||
if (isCompletedWith) {
|
||||
var paired = User.find({"profile.username": isCompletedWith.toLowerCase()}).limit(1);
|
||||
paired.exec(function (err, pairedWith) {
|
||||
if (err) {
|
||||
return err;
|
||||
} else {
|
||||
var index = req.user.uncompletedBonfires.indexOf(bonfireHash);
|
||||
if (index > -1) {
|
||||
req.user.progressTimestamps.push(Date.now() || 0);
|
||||
req.user.uncompletedBonfires.splice(index, 1)
|
||||
}
|
||||
pairedWith = pairedWith.pop();
|
||||
|
||||
index = pairedWith.uncompletedBonfires.indexOf(bonfireHash);
|
||||
if (index > -1) {
|
||||
pairedWith.progressTimestamps.push(Date.now() || 0);
|
||||
pairedWith.uncompletedBonfires.splice(index, 1);
|
||||
|
||||
}
|
||||
|
||||
pairedWith.completedBonfires.push({
|
||||
_id: bonfireHash,
|
||||
completedWith: req.user._id,
|
||||
completedDate: isCompletedDate,
|
||||
solution: isSolution
|
||||
});
|
||||
|
||||
req.user.completedBonfires.push({
|
||||
_id: bonfireHash,
|
||||
completedWith: pairedWith._id,
|
||||
completedDate: isCompletedDate,
|
||||
solution: isSolution
|
||||
});
|
||||
|
||||
req.user.save(function (err, user) {
|
||||
pairedWith.save(function (err, paired) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
if (user && paired) {
|
||||
res.send(true);
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
})
|
||||
} else {
|
||||
|
||||
req.user.completedBonfires.push({
|
||||
_id: bonfireHash,
|
||||
completedWith: null,
|
||||
completedDate: isCompletedDate,
|
||||
solution: isSolution
|
||||
});
|
||||
|
||||
var index = req.user.uncompletedCourse.indexOf(bonfireHash);
|
||||
if (index > -1) {
|
||||
req.user.progressTimestamps.push(Date.now() || 0);
|
||||
req.user.uncompletedBonfires.splice(index, 1)
|
||||
}
|
||||
|
||||
req.user.save(function (err, user) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
if (user) {
|
||||
debug('Saving user');
|
||||
res.send(true)
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
@ -199,7 +199,7 @@ module.exports = {
|
||||
var date1 = new Date('10/15/2014');
|
||||
var date2 = new Date();
|
||||
var progressTimestamps = req.user.progressTimestamps;
|
||||
var now = Date.now() / 1000 | 0;
|
||||
var now = Date.now() || 0;
|
||||
if (req.user.pointsNeedMigration) {
|
||||
var challengesHash = req.user.challengesHash;
|
||||
for (var key in challengesHash) {
|
||||
@ -211,7 +211,8 @@ module.exports = {
|
||||
var timeStamps = [];
|
||||
R.keys(req.user.challengesHash).forEach(function(key) {
|
||||
"use strict";
|
||||
timeStamps.push({timeStamp: challengesHash[key]});
|
||||
var timeStamp = parseInt(challengesHash[key], 10);
|
||||
timeStamps.push({timeStamp: timeStamp.length !== 13 ? (+timeStamp) : (+timeStamp * 1000)});
|
||||
});
|
||||
|
||||
req.user.completedCoursewares = Array.zip(timeStamps, coursewares,
|
||||
|
@ -1,161 +0,0 @@
|
||||
var _ = require('lodash'),
|
||||
debug = require('debug')('freecc:cntr:zipline'),
|
||||
Zipline = require('./../models/Zipline'),
|
||||
User = require('./../models/User'),
|
||||
resources = require('./resources'),
|
||||
R = require('ramda');
|
||||
|
||||
/**
|
||||
* Bonfire controller
|
||||
*/
|
||||
|
||||
exports.showAllZiplines = function(req, res) {
|
||||
var completedZiplines = req.user.completedZiplines.map(function(elem) {
|
||||
return elem._id;
|
||||
});
|
||||
|
||||
var noDuplicateZiplines = R.uniq(completedZiplines);
|
||||
var data = {};
|
||||
data.ziplineList = resources.allZiplineNames();
|
||||
data.completedList = noDuplicateZiplines;
|
||||
res.send(data);
|
||||
};
|
||||
|
||||
exports.index = function(req, res) {
|
||||
res.render('ziplines/show.jade', {
|
||||
completedWith: null,
|
||||
title: 'Choose Your Zipline',
|
||||
name: 'Choose Your Zipline',
|
||||
difficulty: 0,
|
||||
//cc: req.user ? req.user.bonfiresHash : undefined,
|
||||
verb: resources.randomVerb(),
|
||||
phrase: resources.randomPhrase(),
|
||||
compliments: resources.randomCompliment(),
|
||||
ziplines: []
|
||||
//ziplineHash: 'test'
|
||||
});
|
||||
};
|
||||
|
||||
exports.returnIndividualZipline = function(req, res, next) {
|
||||
var dashedName = req.params.ziplineName;
|
||||
|
||||
ziplineName = dashedName.replace(/\-/g, ' ');
|
||||
|
||||
Zipline.find({"name" : new RegExp(ziplineName, 'i')}, function(err, zipline) {
|
||||
if (err) {
|
||||
next(err);
|
||||
}
|
||||
|
||||
|
||||
if (zipline.length < 1) {
|
||||
req.flash('errors', {
|
||||
msg: "404: We couldn't find a bonfire with that name. Please double check the name."
|
||||
});
|
||||
|
||||
return res.redirect('/ziplines');
|
||||
}
|
||||
|
||||
zipline = zipline.pop();
|
||||
var dashedNameFull = zipline.name.toLowerCase().replace(/\s/g, '-');
|
||||
if (dashedNameFull != dashedName) {
|
||||
return res.redirect('../ziplines/' + dashedNameFull);
|
||||
}
|
||||
|
||||
res.render('ziplines/show', {
|
||||
completedWith: null,
|
||||
title: zipline.name,
|
||||
dashedName: dashedName,
|
||||
name: zipline.name,
|
||||
difficulty: Math.floor(+zipline.difficulty),
|
||||
details: zipline.details,
|
||||
tests: zipline.tests,
|
||||
challengeSeed: zipline.challengeSeed,
|
||||
//cc: !!req.user,
|
||||
progressTimestamps: req.user ? req.user.progressTimestamps : undefined,
|
||||
verb: resources.randomVerb(),
|
||||
phrase: resources.randomPhrase(),
|
||||
compliment: resources.randomCompliment(),
|
||||
ziplines: zipline
|
||||
//ziplineHash: zipline._id
|
||||
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.completedZipline = function (req, res) {
|
||||
var isCompletedWith = req.body.bonfireInfo.completedWith || undefined;
|
||||
var isCompletedDate = Math.round(+new Date() / 1000);
|
||||
//var ziplineHash = req.body.bonfireInfo.bonfireHash;
|
||||
|
||||
if (isCompletedWith) {
|
||||
var paired = User.find({"profile.username": isCompletedWith.toLowerCase()}).limit(1);
|
||||
paired.exec(function (err, pairedWith) {
|
||||
if (err) {
|
||||
return err;
|
||||
} else {
|
||||
//var index = req.user.uncompletedZiplines.indexOf(ziplineHash);
|
||||
//if (index > -1) {
|
||||
// req.user.progressTimestamps.push(Date.now() / 1000 | 0);
|
||||
// req.user.uncompletedZiplines.splice(index, 1)
|
||||
//}
|
||||
//pairedWith = pairedWith.pop();
|
||||
//
|
||||
//index = pairedWith.uncompletedZiplines.indexOf(bonfiHash);
|
||||
//if (index > -1) {
|
||||
// pairedWith.progressTimestamps.push(Date.now() / 1000 | 0);
|
||||
// pairedWith.uncompletedZiplines.splice(index, 1);
|
||||
//
|
||||
//}
|
||||
//
|
||||
//pairedWith.completedBonfires.push({
|
||||
// _id: bonfireHash,
|
||||
// completedWith: req.user._id,
|
||||
// completedDate: isCompletedDate,
|
||||
// solution: isSolution
|
||||
//});
|
||||
//
|
||||
//req.user.completedBonfires.push({
|
||||
// _id: bonfireHash,
|
||||
// completedWith: pairedWith._id,
|
||||
// completedDate: isCompletedDate,
|
||||
// solution: isSolution
|
||||
//})
|
||||
//
|
||||
//req.user.save(function (err, user) {
|
||||
// pairedWith.save(function (err, paired) {
|
||||
// if (err) {
|
||||
// throw err;
|
||||
// }
|
||||
// if (user && paired) {
|
||||
// res.send(true);
|
||||
// }
|
||||
// })
|
||||
//});
|
||||
}
|
||||
})
|
||||
} else {
|
||||
|
||||
//req.user.completedBonfires.push({
|
||||
// _id: bonfireHash,
|
||||
// completedWith: null,
|
||||
// completedDate: isCompletedDate,
|
||||
// solution: isSolution
|
||||
//});
|
||||
//
|
||||
//var index = req.user.uncompletedBonfires.indexOf(bonfireHash);
|
||||
//if (index > -1) {
|
||||
// req.user.progressTimestamps.push(Date.now() / 1000 | 0);
|
||||
// req.user.uncompletedBonfires.splice(index, 1)
|
||||
//}
|
||||
//
|
||||
//req.user.save(function (err, user) {
|
||||
// if (err) {
|
||||
// throw err;
|
||||
// }
|
||||
// if (user) {
|
||||
// debug('Saving user');
|
||||
// res.send(true)
|
||||
// }
|
||||
//});
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user