arnaucube
arnaucube/openworktimePublic Self-hosted repository
openworktime/controllers/projectController.js
controllers/projectController.jsRaw
  1//File: controllers/projectController.js
  2var mongoose = require('mongoose');
  3var moment = require('moment');
  4var projectModel  = mongoose.model('projectModel');
  5
  6var userModel  = mongoose.model('userModel');
  7
  8//GET
  9exports.findAllProjects = function(req, res) {
 10
 11	projectModel.find(function(err, projects) {
 12	    if(err) res.send(500, err.message);
 13
 14		res.status(200).jsonp(projects);
 15	});
 16
 17
 18};
 19
 20//GET
 21exports.findById = function(req, res) {
 22	projectModel.findById(req.params.id, function(err, project) {
 23    if(err) return res.send(500, err.message);
 24
 25    console.log('GET /project/' + req.params.id);
 26		res.status(200).jsonp(project);
 27	});
 28};
 29
 30exports.findAllProjectsFromUsername = function(req, res) {
 31    projectModel.find({
 32      owner: req.params.username
 33  }, function(err, projects) {
 34
 35      if (err) throw err;
 36
 37      if (!projects) {
 38        res.json({ success: false, message: 'no projects for user' });
 39    } else if (projects) {
 40        console.log(projects);
 41          // return the information including token as JSON
 42          res.jsonp(projects);
 43
 44
 45      }
 46
 47    });
 48};
 49
 50exports.addProject = function(req, res) {
 51	console.log('POST new project, title: ' + req.body.title);
 52	var project = new projectModel({
 53		title: req.body.title,
 54	    description:   req.body.description,
 55	    icon:   req.body.icon,
 56	    users:   req.body.users,
 57	    chart:   req.body.chart,
 58	    dateCreation:   req.body.dateCreation,
 59	    github:   req.body.github,
 60	    refnum:   req.body.refnum
 61	});
 62
 63	project.save(function(err, project) {
 64		if(err) return res.send(500, err.message);
 65	    /*res.status(200).jsonp(project);*/
 66		projectModel.find(function(err, projects) {
 67			if(err) res.send(500, err.message);
 68
 69			res.status(200).jsonp(projects);
 70		});
 71	});
 72};
 73
 74exports.addUserToProject = function(req, res) {
 75	console.log("addUserToProject");
 76	console.log(req.body);
 77	projectModel.findById(req.params.id, function(err, project) {
 78		console.log(project);
 79		var auxUser={
 80			username: req.body.username,
 81			time: 0
 82		};
 83		project.users.push(auxUser);
 84		console.log(project.users);
 85		project.save(function(err) {
 86			if(err) return res.send(500, err.message);
 87
 88			projectModel.find(function(err, projects) {
 89			    if(err) res.send(500, err.message);
 90
 91				res.status(200).jsonp(projects);
 92			});
 93		});
 94	});
 95};
 96exports.userStartWorking = function(req, res) {
 97	console.log("userStartWorking");
 98	projectModel.findById(req.params.id, function(err, project) {
 99		var workstrike={
100			username: req.body.username,
101			start: new Date(),
102			end: "",
103		};
104		project.workStrikes.push(workstrike);
105		console.log(project);
106		project.save(function(err) {
107			if(err) return res.send(500, err.message);
108
109			projectModel.find(function(err, projects) {
110			    if(err) res.send(500, err.message);
111
112				res.status(200).jsonp(projects);
113			});
114		});
115	});
116};
117exports.userStopWorking = function(req, res) {
118	console.log("userStopWorking");
119	projectModel.findById(req.params.id, function(err, project) {
120		for(var i=0; i<project.workStrikes.length; i++)
121		{
122			if((project.workStrikes[i].username==req.body.username)&&(project.workStrikes[i].end==null))
123			{
124				project.workStrikes[i].end= new Date();
125				project.workStrikes[i].time=moment(project.workStrikes[i].end).diff(project.workStrikes[i].start, 'seconds');
126				for(var j=0; j<project.users.length; j++)
127				{
128					if(project.users[j].username==req.body.username)
129					{
130						project.users[j].time+=project.workStrikes[i].time;
131					}
132				}
133			}
134		}
135		console.log(project);
136		project.save(function(err) {
137			if(err) return res.send(500, err.message);
138
139			projectModel.find(function(err, projects) {
140			    if(err) res.send(500, err.message);
141
142				res.status(200).jsonp(projects);
143			});
144		});
145	});
146};
147//PUT
148exports.updateProject = function(req, res) {
149	ActivityModel.findById(req.params.id, function(err, tvshow) {
150		tvshow.title   = req.body.petId;
151		tvshow.year    = req.body.year;
152		tvshow.country = req.body.country;
153		tvshow.poster  = req.body.poster;
154		tvshow.seasons = req.body.seasons;
155		tvshow.genre   = req.body.genre;
156		tvshow.summary = req.body.summary;
157
158		tvshow.save(function(err) {
159			if(err) return res.send(500, err.message);
160      res.status(200).jsonp(tvshow);
161		});
162	});
163};
164
165//DELETE
166exports.deleteProject = function(req, res) {
167	projectModel.findById(req.params.id, function(err, project) {
168		project.remove(function(err) {
169			if(err) return res.send(500, err.message);
170
171      		/*res.status(200).jsonp(req.params.id);*/
172		    console.log('DELETE /projects/' + req.params.id);
173			projectModel.find(function(err, projects) {
174			    if(err) res.send(500, err.message);
175
176				res.status(200).jsonp(projects);
177			});
178		})
179	});
180};