83 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var async = require('async'),
 | 
						|
  User = require('../models/User'),
 | 
						|
  Bonfire = require('./../models/Bonfire'),
 | 
						|
  Story = require('./../models/Story'),
 | 
						|
  Nonprofit = require('./../models/Nonprofit'),
 | 
						|
  Comment = require('./../models/Comment'),
 | 
						|
  Courseware = require('./../models/Courseware'),
 | 
						|
  resources = require('./resources'),
 | 
						|
  steps = resources.steps,
 | 
						|
  secrets = require('./../config/secrets'),
 | 
						|
  bonfires = require('../seed_data/bonfires.json'),
 | 
						|
  nonprofits = require('../seed_data/nonprofits.json'),
 | 
						|
  coursewares = require('../seed_data/coursewares.json'),
 | 
						|
  moment = require('moment'),
 | 
						|
  https = require('https'),
 | 
						|
  debug = require('debug')('freecc:cntr:resources'),
 | 
						|
  cheerio = require('cheerio'),
 | 
						|
  request = require('request'),
 | 
						|
  R = require('ramda');
 | 
						|
 | 
						|
module.exports = {
 | 
						|
  challengeMap: function challengeMap(req, res) {
 | 
						|
    var completedBonfires = [];
 | 
						|
    var completedList = [];
 | 
						|
 | 
						|
    if (req.user) {
 | 
						|
      completedBonfires = req.user.completedBonfires.map(function (elem) {
 | 
						|
        return elem._id;
 | 
						|
      });
 | 
						|
    }
 | 
						|
 | 
						|
    if (req.user) {
 | 
						|
      completedList = req.user.completedCoursewares.map(function (elem) {
 | 
						|
        return elem._id;
 | 
						|
      });
 | 
						|
    }
 | 
						|
 | 
						|
    var noDuplicateBonfires = R.uniq(completedBonfires);
 | 
						|
    var noDuplicatedCoursewares = R.uniq(completedList);
 | 
						|
 | 
						|
    bonfireList = resources.allBonfireNames();
 | 
						|
    completedBonfireList = noDuplicateBonfires;
 | 
						|
    coursewareList = resources.allCoursewareNames();
 | 
						|
    completedCoursewareList = noDuplicatedCoursewares;
 | 
						|
    waypoints = coursewareList.filter(function(challenge) {
 | 
						|
      if (challenge.challengeType === 2) { return challenge }
 | 
						|
    });
 | 
						|
    ziplines = coursewareList.filter(function(challenge) {
 | 
						|
      if (challenge.challengeType === 3) { return challenge }
 | 
						|
    });
 | 
						|
    basejumps = coursewareList.filter(function(challenge) {
 | 
						|
      if (challenge.challengeType === 4) { return challenge }
 | 
						|
    });
 | 
						|
 | 
						|
    function numberWithCommas(x) {
 | 
						|
      return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
 | 
						|
    }
 | 
						|
 | 
						|
    var date1 = new Date("10/15/2014");
 | 
						|
    var date2 = new Date();
 | 
						|
    var timeDiff = Math.abs(date2.getTime() - date1.getTime());
 | 
						|
    var daysRunning = Math.ceil(timeDiff / (1000 * 3600 * 24));
 | 
						|
 | 
						|
    User.count({}, function (err, camperCount) {
 | 
						|
      if (err) {
 | 
						|
        debug('User err: ', err);
 | 
						|
        return next(err);
 | 
						|
      }
 | 
						|
      res.render('challengeMap/show', {
 | 
						|
        daysRunning: daysRunning,
 | 
						|
        camperCount: numberWithCommas(camperCount),
 | 
						|
        title: "A map of all Free Code Camp's Challenges",
 | 
						|
        bonfires: bonfireList,
 | 
						|
        waypoints: waypoints,
 | 
						|
        ziplines: ziplines,
 | 
						|
        basejumps: basejumps,
 | 
						|
        completedBonfireList: completedBonfireList,
 | 
						|
        completedCoursewareList: completedCoursewareList
 | 
						|
      });
 | 
						|
    });
 | 
						|
  }
 | 
						|
};
 |