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