diff --git a/controllers/resources.js b/controllers/resources.js index 26bf8ed9c4..1b9e2570e4 100644 --- a/controllers/resources.js +++ b/controllers/resources.js @@ -25,7 +25,8 @@ var async = require('async'), * Cached values */ var allBonfireIds, allBonfireNames, allCoursewareIds, allCoursewareNames, - allFieldGuideIds, allFieldGuideNames, allNonprofitNames; + allFieldGuideIds, allFieldGuideNames, allNonprofitNames, + allBonfireIndexesAndNames; /** * GET / @@ -305,6 +306,31 @@ module.exports = { } }, + bonfiresIndexesAndNames: function() { + if (allBonfireIndexesAndNames) { + return allBonfireIndexesAndNames + } else { + var obj = {}; + bonfires.forEach(function(elem) { + obj[elem._id] = elem.name; + }); + allBonfireIndexesAndNames = obj; + return allBonfireIndexesAndNames; + } + }, + + ensureBonfireNames: function(completedBonfires) { + return completedBonfires.map(function(elem) { + return ({ + name: this.bonfiresIndexesAndNames()[elem._id], + _id: elem.id, + completedDate: elem.completedDate, + completedWith: elem.completedWith, + solution: elem.solution + }); + }.bind(this)); + }, + allFieldGuideIds: function() { if (allFieldGuideIds) { return allFieldGuideIds; diff --git a/controllers/user.js b/controllers/user.js index c7a19547da..502a2929a1 100644 --- a/controllers/user.js +++ b/controllers/user.js @@ -299,7 +299,7 @@ exports.returnUser = function(req, res, next) { var today = moment(Date.now()), currStreak = 1; if (moment(timeKeys[0]).add(1, 'd').toString === today.toString()) { for (var i = 2; i <= timeKeys.length; i++) { - if (moment(timeKeys[i-1]).add(1, 'd').toString() + if (moment(timeKeys[i - 1]).add(1, 'd').toString() === moment(timeKeys[i]).toString()) { currStreak++; } else { @@ -321,9 +321,17 @@ exports.returnUser = function(req, res, next) { data[(timeStamp / 1000)] = 1; }); - //for (var i = 0; i < progressTimestamps.length; i++) { - // data[(progressTimestamps[i] / 1000).toString()] = 1; - //} + if (!user.needsMigration) { + var currentlySolvedBonfires = user.completedBonfires; + user.completedBonfires = + resources.ensureBonfireNames(currentlySolvedBonfires); + user.needsMigration = true; + user.save(function(err) { + if (err) { + return next(err); + } + }); + } user.currentStreak = user.currentStreak || 1; user.longestStreak = user.longestStreak || 1; diff --git a/models/User.js b/models/User.js index 07804fadd8..74bbfa31bd 100644 --- a/models/User.js +++ b/models/User.js @@ -139,6 +139,9 @@ var userSchema = new mongoose.Schema({ type: Number, default: 0 }, + needsSomeDataModeled: { type: Boolean, default: false}, + + // needsMigration has been deprecated, use needsSomeDataModeled needsMigration: { type: Boolean, default: true }, finishedWaypoints: { type: Boolean, default: false }, sendMonthlyEmail: { type: Boolean, default: true },