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