diff options
author | Lauri Ojansivu <x@xet7.org> | 2018-04-16 21:27:24 +0300 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2018-04-16 21:27:24 +0300 |
commit | e402200b872026d0a01b89cf50578ab6b49bf103 (patch) | |
tree | 614bf240fd85826ab990ace8ba8ec2c5a9dc64d4 /models | |
parent | aede4dd9c5c5a1f1654c4251dbf949761ff9b811 (diff) | |
parent | ea289c781075c893a0e3a6f05e96f3b3263f0466 (diff) | |
download | wekan-e402200b872026d0a01b89cf50578ab6b49bf103.tar.gz wekan-e402200b872026d0a01b89cf50578ab6b49bf103.tar.bz2 wekan-e402200b872026d0a01b89cf50578ab6b49bf103.zip |
Merge branch 'devel'
Diffstat (limited to 'models')
-rw-r--r-- | models/checklistItems.js | 50 | ||||
-rw-r--r-- | models/checklists.js | 116 |
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, + }, + }); }); } |