summaryrefslogtreecommitdiffstats
path: root/models/checklistItems.js
diff options
context:
space:
mode:
Diffstat (limited to 'models/checklistItems.js')
-rw-r--r--models/checklistItems.js85
1 files changed, 85 insertions, 0 deletions
diff --git a/models/checklistItems.js b/models/checklistItems.js
index e075eda2..8380bda7 100644
--- a/models/checklistItems.js
+++ b/models/checklistItems.js
@@ -44,6 +44,12 @@ ChecklistItems.mutations({
setTitle(title) {
return { $set: { title } };
},
+ check(){
+ return { $set: { isFinished: true } };
+ },
+ uncheck(){
+ return { $set: { isFinished: false } };
+ },
toggleItem() {
return { $set: { isFinished: !this.isFinished } };
},
@@ -70,21 +76,100 @@ function itemCreation(userId, doc) {
boardId,
checklistId: doc.checklistId,
checklistItemId: doc._id,
+ checklistItemName:doc.title,
});
}
function itemRemover(userId, doc) {
+ const card = Cards.findOne(doc.cardId);
+ const boardId = card.boardId;
+ Activities.insert({
+ userId,
+ activityType: 'removedChecklistItem',
+ cardId: doc.cardId,
+ boardId,
+ checklistId: doc.checklistId,
+ checklistItemId: doc._id,
+ checklistItemName:doc.title,
+ });
Activities.remove({
checklistItemId: doc._id,
});
}
+function publishCheckActivity(userId, doc){
+ const card = Cards.findOne(doc.cardId);
+ const boardId = card.boardId;
+ let activityType;
+ if(doc.isFinished){
+ activityType = 'checkedItem';
+ }else{
+ activityType = 'uncheckedItem';
+ }
+ const act = {
+ userId,
+ activityType,
+ cardId: doc.cardId,
+ boardId,
+ checklistId: doc.checklistId,
+ checklistItemId: doc._id,
+ checklistItemName:doc.title,
+ };
+ Activities.insert(act);
+}
+
+function publishChekListCompleted(userId, doc, fieldNames, modifier){
+ const card = Cards.findOne(doc.cardId);
+ const boardId = card.boardId;
+ const checklistId = doc.checklistId;
+ const checkList = Checklists.findOne({_id:checklistId});
+ if(checkList.isFinished()){
+ const act = {
+ userId,
+ activityType: 'checklistCompleted',
+ cardId: doc.cardId,
+ boardId,
+ checklistId: doc.checklistId,
+ checklistName:doc.title,
+ };
+ Activities.insert(act);
+ }
+}
+
+function publishChekListUncompleted(userId, doc, fieldNames, modifier){
+ const card = Cards.findOne(doc.cardId);
+ const boardId = card.boardId;
+ const checklistId = doc.checklistId;
+ const checkList = Checklists.findOne({_id:checklistId});
+ if(checkList.isFinished()){
+ const act = {
+ userId,
+ activityType: 'checklistUncompleted',
+ cardId: doc.cardId,
+ boardId,
+ checklistId: doc.checklistId,
+ checklistName:doc.title,
+ };
+ Activities.insert(act);
+ }
+}
+
// Activities
if (Meteor.isServer) {
Meteor.startup(() => {
ChecklistItems._collection._ensureIndex({ checklistId: 1 });
});
+ ChecklistItems.after.update((userId, doc, fieldNames, modifier) => {
+ publishCheckActivity(userId, doc);
+ publishChekListCompleted(userId, doc, fieldNames, modifier);
+ });
+
+ ChecklistItems.before.update((userId, doc, fieldNames, modifier) => {
+ publishChekListUncompleted(userId, doc, fieldNames, modifier);
+ });
+
+
ChecklistItems.after.insert((userId, doc) => {
itemCreation(userId, doc);
});