You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

107 lines
4.2 KiB

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);
}
});
};