var express = require('express');
|
|
var app = express();
|
|
var runModel = require('../models/runModel');
|
|
var publicationModel = require('../models/publicationModel');
|
|
var userModel = require('../models/userModel');
|
|
//var trainerModel = require('../models/trainerModel');
|
|
var crypto = require('crypto');
|
|
|
|
|
|
/**POST '/publications' **/
|
|
exports.postRun = function (req, res) {
|
|
userModel.findOne({'tokens.token': req.headers['x-access-token']}, function (err, user) {
|
|
if (err) return res.send(500, err.message);
|
|
if (!user) {
|
|
res.json({success: false, message: 'user not found.'});
|
|
} else if (user) {
|
|
//aquí ja hem agafat el user a partir del seu token
|
|
var run = new runModel(req.body.newRun);
|
|
run.user=user._id;
|
|
//fins aquí tenim la variable publication amb els continguts
|
|
//ara cal 1r guardar el model publication a la base de dades
|
|
run.save(function (err, run) {
|
|
if (err) return res.send(500, err.message);
|
|
|
|
//i 2n, afegir la id de la publicació generada al user.publications
|
|
user.runs.push(run._id);
|
|
/* gamification */
|
|
var reward = {
|
|
concept: "added new run to user",
|
|
date: Date(),
|
|
value: +1
|
|
};
|
|
user.points.history.push(reward);
|
|
user.points.total = user.points.total + 1;
|
|
/* end of gamification */
|
|
user.save(function (err, user) {
|
|
if (err) return res.send(500, err.message);
|
|
|
|
//res.status(200).jsonp(user);
|
|
//ara farem una publicació ensenyant que ha fet aquest run
|
|
var publication = new publicationModel({
|
|
title: "new run '" + run.title + "'!",
|
|
content: "distance of: " + run.distance + ". View my runs at my profile",
|
|
date: new Date(),
|
|
user: user._id,
|
|
photo: run.photo
|
|
});
|
|
//fins aquí tenim la variable publication amb els continguts
|
|
//ara cal 1r guardar el model publication a la base de dades
|
|
publication.save(function (err, publication) {
|
|
if (err) return res.send(500, err.message);
|
|
|
|
//i 2n, afegir la id de la publicació generada al user.publications
|
|
user.publications.push(publication._id);
|
|
/* gamification */
|
|
var reward = {
|
|
concept: "added new publication to Timeline",
|
|
date: Date(),
|
|
value: +1
|
|
};
|
|
user.points.history.push(reward);
|
|
user.points.total = user.points.total + 1;
|
|
/* end of gamification */
|
|
|
|
if(!user.totalkm)
|
|
{
|
|
user.totalkm=0;
|
|
}
|
|
user.totalkm=user.totalkm + run.distance;
|
|
|
|
user.save(function (err, user) {
|
|
if (err) return res.send(500, err.message);
|
|
res.status(200).jsonp(user);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}//end else if
|
|
});
|
|
};
|
|
|
|
/**GET '/users/:userid/publications' **/
|
|
exports.getRunsByUserId = function (req, res) {
|
|
userModel.findOne({
|
|
_id: req.params.userid
|
|
})
|
|
.populate('runs')
|
|
.exec(function (error, user) {
|
|
if (error !== null) res.send(500, error.message);
|
|
|
|
res.status(200).jsonp(user);
|
|
});
|
|
};
|
|
/** GET '/run/getById/:publicationid' **/
|
|
exports.getRunByRunId = function (req, res) {
|
|
runModel.findOne({_id: req.params.runid})
|
|
.lean()
|
|
.populate('user', 'name avatar')
|
|
.exec(function (err, run) {
|
|
if (err) return res.send(500, err.message);
|
|
if (!run) {
|
|
res.json({success: false, message: 'run not found.'});
|
|
} else if (run) {
|
|
res.status(200).jsonp(run);
|
|
}
|
|
});
|
|
};
|