//File: controllers/projectController.js
|
|
var mongoose = require('mongoose');
|
|
var moment = require('moment');
|
|
var projectModel = mongoose.model('projectModel');
|
|
|
|
var userModel = mongoose.model('userModel');
|
|
|
|
//GET
|
|
exports.findAllProjects = function(req, res) {
|
|
|
|
projectModel.find(function(err, projects) {
|
|
if(err) res.send(500, err.message);
|
|
|
|
res.status(200).jsonp(projects);
|
|
});
|
|
|
|
|
|
};
|
|
|
|
//GET
|
|
exports.findById = function(req, res) {
|
|
projectModel.findById(req.params.id, function(err, project) {
|
|
if(err) return res.send(500, err.message);
|
|
|
|
console.log('GET /project/' + req.params.id);
|
|
res.status(200).jsonp(project);
|
|
});
|
|
};
|
|
|
|
exports.findAllProjectsFromUsername = function(req, res) {
|
|
projectModel.find({
|
|
owner: req.params.username
|
|
}, function(err, projects) {
|
|
|
|
if (err) throw err;
|
|
|
|
if (!projects) {
|
|
res.json({ success: false, message: 'no projects for user' });
|
|
} else if (projects) {
|
|
console.log(projects);
|
|
// return the information including token as JSON
|
|
res.jsonp(projects);
|
|
|
|
|
|
}
|
|
|
|
});
|
|
};
|
|
|
|
exports.addProject = function(req, res) {
|
|
console.log('POST new project, title: ' + req.body.title);
|
|
var project = new projectModel({
|
|
title: req.body.title,
|
|
description: req.body.description,
|
|
icon: req.body.icon,
|
|
users: req.body.users,
|
|
chart: req.body.chart,
|
|
dateCreation: req.body.dateCreation,
|
|
github: req.body.github,
|
|
refnum: req.body.refnum
|
|
});
|
|
|
|
project.save(function(err, project) {
|
|
if(err) return res.send(500, err.message);
|
|
/*res.status(200).jsonp(project);*/
|
|
projectModel.find(function(err, projects) {
|
|
if(err) res.send(500, err.message);
|
|
|
|
res.status(200).jsonp(projects);
|
|
});
|
|
});
|
|
};
|
|
|
|
exports.addUserToProject = function(req, res) {
|
|
console.log("addUserToProject");
|
|
console.log(req.body);
|
|
projectModel.findById(req.params.id, function(err, project) {
|
|
console.log(project);
|
|
var auxUser={
|
|
username: req.body.username,
|
|
time: 0
|
|
};
|
|
project.users.push(auxUser);
|
|
console.log(project.users);
|
|
project.save(function(err) {
|
|
if(err) return res.send(500, err.message);
|
|
|
|
projectModel.find(function(err, projects) {
|
|
if(err) res.send(500, err.message);
|
|
|
|
res.status(200).jsonp(projects);
|
|
});
|
|
});
|
|
});
|
|
};
|
|
exports.userStartWorking = function(req, res) {
|
|
console.log("userStartWorking");
|
|
projectModel.findById(req.params.id, function(err, project) {
|
|
var workstrike={
|
|
username: req.body.username,
|
|
start: new Date(),
|
|
end: "",
|
|
};
|
|
project.workStrikes.push(workstrike);
|
|
console.log(project);
|
|
project.save(function(err) {
|
|
if(err) return res.send(500, err.message);
|
|
|
|
projectModel.find(function(err, projects) {
|
|
if(err) res.send(500, err.message);
|
|
|
|
res.status(200).jsonp(projects);
|
|
});
|
|
});
|
|
|
|
userModel.findById(req.body._id, function(err, user) {
|
|
user.working=true;
|
|
|
|
user.save(function(err) {
|
|
if(err) return res.send(500, err.message);
|
|
console.log("user working=true");
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
|
|
};
|
|
exports.userStopWorking = function(req, res) {
|
|
console.log("userStopWorking");
|
|
projectModel.findById(req.params.id, function(err, project) {
|
|
for(var i=0; i<project.workStrikes.length; i++)
|
|
{
|
|
if((project.workStrikes[i].username==req.body.username)&&(project.workStrikes[i].end==null))
|
|
{
|
|
project.workStrikes[i].end= new Date();
|
|
project.workStrikes[i].time=moment(project.workStrikes[i].end).diff(project.workStrikes[i].start, 'seconds');
|
|
for(var j=0; j<project.users.length; j++)
|
|
{
|
|
if(project.users[j].username==req.body.username)
|
|
{
|
|
project.users[j].time+=project.workStrikes[i].time;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
console.log(project);
|
|
project.save(function(err) {
|
|
if(err) return res.send(500, err.message);
|
|
|
|
projectModel.find(function(err, projects) {
|
|
if(err) res.send(500, err.message);
|
|
|
|
res.status(200).jsonp(projects);
|
|
});
|
|
});
|
|
|
|
userModel.findById(req.body._id, function(err, user) {
|
|
user.working=false;
|
|
|
|
user.save(function(err) {
|
|
if(err) return res.send(500, err.message);
|
|
console.log("user working=false");
|
|
});
|
|
});
|
|
});
|
|
};
|
|
//PUT
|
|
exports.updateProject = function(req, res) {
|
|
ActivityModel.findById(req.params.id, function(err, tvshow) {
|
|
tvshow.title = req.body.petId;
|
|
tvshow.year = req.body.year;
|
|
tvshow.country = req.body.country;
|
|
tvshow.poster = req.body.poster;
|
|
tvshow.seasons = req.body.seasons;
|
|
tvshow.genre = req.body.genre;
|
|
tvshow.summary = req.body.summary;
|
|
|
|
tvshow.save(function(err) {
|
|
if(err) return res.send(500, err.message);
|
|
res.status(200).jsonp(tvshow);
|
|
});
|
|
});
|
|
};
|
|
|
|
//DELETE
|
|
exports.deleteProject = function(req, res) {
|
|
projectModel.findById(req.params.id, function(err, project) {
|
|
project.remove(function(err) {
|
|
if(err) return res.send(500, err.message);
|
|
|
|
/*res.status(200).jsonp(req.params.id);*/
|
|
console.log('DELETE /projects/' + req.params.id);
|
|
projectModel.find(function(err, projects) {
|
|
if(err) res.send(500, err.message);
|
|
|
|
res.status(200).jsonp(projects);
|
|
});
|
|
})
|
|
});
|
|
};
|