summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2018-04-16 21:27:24 +0300
committerLauri Ojansivu <x@xet7.org>2018-04-16 21:27:24 +0300
commite402200b872026d0a01b89cf50578ab6b49bf103 (patch)
tree614bf240fd85826ab990ace8ba8ec2c5a9dc64d4 /models
parentaede4dd9c5c5a1f1654c4251dbf949761ff9b811 (diff)
parentea289c781075c893a0e3a6f05e96f3b3263f0466 (diff)
downloadwekan-e402200b872026d0a01b89cf50578ab6b49bf103.tar.gz
wekan-e402200b872026d0a01b89cf50578ab6b49bf103.tar.bz2
wekan-e402200b872026d0a01b89cf50578ab6b49bf103.zip
Merge branch 'devel'
Diffstat (limited to 'models')
-rw-r--r--models/checklistItems.js50
-rw-r--r--models/checklists.js116
2 files changed, 106 insertions, 60 deletions
diff --git a/models/checklistItems.js b/models/checklistItems.js
index 3c01d476..e075eda2 100644
--- a/models/checklistItems.js
+++ b/models/checklistItems.js
@@ -93,3 +93,53 @@ if (Meteor.isServer) {
itemRemover(userId, doc);
});
}
+
+if (Meteor.isServer) {
+ JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId/items/:itemId', function (req, res) {
+ Authentication.checkUserId( req.userId);
+ const paramItemId = req.params.itemId;
+ const checklistItem = ChecklistItems.findOne({ _id: paramItemId });
+ if (checklistItem) {
+ JsonRoutes.sendResult(res, {
+ code: 200,
+ data: checklistItem,
+ });
+ } else {
+ JsonRoutes.sendResult(res, {
+ code: 500,
+ });
+ }
+ });
+
+ JsonRoutes.add('PUT', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId/items/:itemId', function (req, res) {
+ Authentication.checkUserId( req.userId);
+
+ const paramItemId = req.params.itemId;
+
+ if (req.body.hasOwnProperty('isFinished')) {
+ ChecklistItems.direct.update({_id: paramItemId}, {$set: {isFinished: req.body.isFinished}});
+ }
+ if (req.body.hasOwnProperty('title')) {
+ ChecklistItems.direct.update({_id: paramItemId}, {$set: {title: req.body.title}});
+ }
+
+ JsonRoutes.sendResult(res, {
+ code: 200,
+ data: {
+ _id: paramItemId,
+ },
+ });
+ });
+
+ JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId/items/:itemId', function (req, res) {
+ Authentication.checkUserId( req.userId);
+ const paramItemId = req.params.itemId;
+ ChecklistItems.direct.remove({ _id: paramItemId });
+ JsonRoutes.sendResult(res, {
+ code: 200,
+ data: {
+ _id: paramItemId,
+ },
+ });
+ });
+}
diff --git a/models/checklists.js b/models/checklists.js
index 9946f98e..c58453ef 100644
--- a/models/checklists.js
+++ b/models/checklists.js
@@ -34,9 +34,9 @@ Checklists.helpers({
return ChecklistItems.find({ checklistId: this._id }).count();
},
items() {
- return ChecklistItems.find(Filter.mongoSelector({
+ return ChecklistItems.find({
checklistId: this._id,
- }), { sort: ['sort'] });
+ }, { sort: ['sort'] });
},
finishedCount() {
return ChecklistItems.find({
@@ -106,94 +106,90 @@ if (Meteor.isServer) {
if (Meteor.isServer) {
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res) {
- try {
- Authentication.checkUserId( req.userId);
- const paramCardId = req.params.cardId;
+ Authentication.checkUserId( req.userId);
+ const paramCardId = req.params.cardId;
+ const checklists = Checklists.find({ cardId: paramCardId }).map(function (doc) {
+ return {
+ _id: doc._id,
+ title: doc.title,
+ };
+ });
+ if (checklists) {
JsonRoutes.sendResult(res, {
code: 200,
- data: Checklists.find({ cardId: paramCardId }).map(function (doc) {
- return {
- _id: doc._id,
- title: doc.title,
- };
- }),
+ data: checklists,
});
- }
- catch (error) {
+ } else {
JsonRoutes.sendResult(res, {
- code: 200,
- data: error,
+ code: 500,
});
}
});
JsonRoutes.add('GET', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res) {
- try {
- Authentication.checkUserId( req.userId);
- const paramChecklistId = req.params.checklistId;
- const paramCardId = req.params.cardId;
+ Authentication.checkUserId( req.userId);
+ const paramChecklistId = req.params.checklistId;
+ const paramCardId = req.params.cardId;
+ const checklist = Checklists.findOne({ _id: paramChecklistId, cardId: paramCardId });
+ if (checklist) {
+ checklist.items = ChecklistItems.find({checklistId: checklist._id}).map(function (doc) {
+ return {
+ _id: doc._id,
+ title: doc.title,
+ isFinished: doc.isFinished,
+ };
+ });
JsonRoutes.sendResult(res, {
code: 200,
- data: Checklists.findOne({ _id: paramChecklistId, cardId: paramCardId }),
+ data: checklist,
});
- }
- catch (error) {
+ } else {
JsonRoutes.sendResult(res, {
- code: 200,
- data: error,
+ code: 500,
});
}
});
JsonRoutes.add('POST', '/api/boards/:boardId/cards/:cardId/checklists', function (req, res) {
- try {
- Authentication.checkUserId( req.userId);
- const paramCardId = req.params.cardId;
-
- const checklistToSend = {};
- checklistToSend.cardId = paramCardId;
- checklistToSend.title = req.body.title;
- checklistToSend.items = [];
- const id = Checklists.insert(checklistToSend);
- const checklist = Checklists.findOne({_id: id});
- req.body.items.forEach(function (item) {
- checklist.addItem(item);
- }, this);
-
+ Authentication.checkUserId( req.userId);
+ const paramCardId = req.params.cardId;
+ const id = Checklists.insert({
+ title: req.body.title,
+ cardId: paramCardId,
+ sort: 0,
+ });
+ if (id) {
+ req.body.items.forEach(function (item, idx) {
+ ChecklistItems.insert({
+ cardId: paramCardId,
+ checklistId: id,
+ title: item.title,
+ sort: idx,
+ });
+ });
JsonRoutes.sendResult(res, {
code: 200,
data: {
_id: id,
},
});
- }
- catch (error) {
+ } else {
JsonRoutes.sendResult(res, {
- code: 200,
- data: error,
+ code: 400,
});
}
});
JsonRoutes.add('DELETE', '/api/boards/:boardId/cards/:cardId/checklists/:checklistId', function (req, res) {
- try {
- Authentication.checkUserId( req.userId);
- const paramCommentId = req.params.commentId;
- const paramCardId = req.params.cardId;
- Checklists.remove({ _id: paramCommentId, cardId: paramCardId });
- JsonRoutes.sendResult(res, {
- code: 200,
- data: {
- _id: paramCardId,
- },
- });
- }
- catch (error) {
- JsonRoutes.sendResult(res, {
- code: 200,
- data: error,
- });
- }
+ Authentication.checkUserId( req.userId);
+ const paramChecklistId = req.params.checklistId;
+ Checklists.remove({ _id: paramChecklistId });
+ JsonRoutes.sendResult(res, {
+ code: 200,
+ data: {
+ _id: paramChecklistId,
+ },
+ });
});
}