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