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		userModel.findById(req.body._id, function(err, user) {
117			user.working=true;
118
119			user.save(function(err) {
120				if(err) return res.send(500, err.message);
121				console.log("user working=true");
122			});
123		});
124
125	});
126
127
128};
129exports.userStopWorking = function(req, res) {
130	console.log("userStopWorking");
131	projectModel.findById(req.params.id, function(err, project) {
132		for(var i=0; i<project.workStrikes.length; i++)
133		{
134			if((project.workStrikes[i].username==req.body.username)&&(project.workStrikes[i].end==null))
135			{
136				project.workStrikes[i].end= new Date();
137				project.workStrikes[i].time=moment(project.workStrikes[i].end).diff(project.workStrikes[i].start, 'seconds');
138				for(var j=0; j<project.users.length; j++)
139				{
140					if(project.users[j].username==req.body.username)
141					{
142						project.users[j].time+=project.workStrikes[i].time;
143					}
144				}
145			}
146		}
147		console.log(project);
148		project.save(function(err) {
149			if(err) return res.send(500, err.message);
150
151			projectModel.find(function(err, projects) {
152			    if(err) res.send(500, err.message);
153
154				res.status(200).jsonp(projects);
155			});
156		});
157
158		userModel.findById(req.body._id, function(err, user) {
159			user.working=false;
160
161			user.save(function(err) {
162				if(err) return res.send(500, err.message);
163				console.log("user working=false");
164			});
165		});
166	});
167};
168//PUT
169exports.updateProject = function(req, res) {
170	ActivityModel.findById(req.params.id, function(err, tvshow) {
171		tvshow.title   = req.body.petId;
172		tvshow.year    = req.body.year;
173		tvshow.country = req.body.country;
174		tvshow.poster  = req.body.poster;
175		tvshow.seasons = req.body.seasons;
176		tvshow.genre   = req.body.genre;
177		tvshow.summary = req.body.summary;
178
179		tvshow.save(function(err) {
180			if(err) return res.send(500, err.message);
181      res.status(200).jsonp(tvshow);
182		});
183	});
184};
185
186//DELETE
187exports.deleteProject = function(req, res) {
188	projectModel.findById(req.params.id, function(err, project) {
189		project.remove(function(err) {
190			if(err) return res.send(500, err.message);
191
192      		/*res.status(200).jsonp(req.params.id);*/
193		    console.log('DELETE /projects/' + req.params.id);
194			projectModel.find(function(err, projects) {
195			    if(err) res.send(500, err.message);
196
197				res.status(200).jsonp(projects);
198			});
199		})
200	});
201};