|
@@ -0,0 +1,85 @@
|
|
|
+ChecklistItems = new Mongo.Collection('checklistItems');
|
|
|
+
|
|
|
+ChecklistItems.attachSchema(new SimpleSchema({
|
|
|
+ title: {
|
|
|
+ type: String,
|
|
|
+ },
|
|
|
+ sort: {
|
|
|
+ type: Number,
|
|
|
+ decimal: true,
|
|
|
+ },
|
|
|
+ isFinished: {
|
|
|
+ type: Boolean,
|
|
|
+ defaultValue: false,
|
|
|
+ },
|
|
|
+ checklistId: {
|
|
|
+ type: String,
|
|
|
+ },
|
|
|
+ cardId: {
|
|
|
+ type: String,
|
|
|
+ },
|
|
|
+}));
|
|
|
+
|
|
|
+ChecklistItems.allow({
|
|
|
+ insert(userId, doc) {
|
|
|
+ return allowIsBoardMemberByCard(userId, Cards.findOne(doc.cardId));
|
|
|
+ },
|
|
|
+ update(userId, doc) {
|
|
|
+ return allowIsBoardMemberByCard(userId, Cards.findOne(doc.cardId));
|
|
|
+ },
|
|
|
+ remove(userId, doc) {
|
|
|
+ return allowIsBoardMemberByCard(userId, Cards.findOne(doc.cardId));
|
|
|
+ },
|
|
|
+ fetch: ['userId', 'cardId'],
|
|
|
+});
|
|
|
+
|
|
|
+ChecklistItems.before.insert((userId, doc) => {
|
|
|
+ if (!doc.userId) {
|
|
|
+ doc.userId = userId;
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+// Mutations
|
|
|
+ChecklistItems.mutations({
|
|
|
+ setTitle(title) {
|
|
|
+ return { $set: { title } };
|
|
|
+ },
|
|
|
+ toggleItem() {
|
|
|
+ return { $set: { isFinished: !this.isFinished } };
|
|
|
+ },
|
|
|
+});
|
|
|
+
|
|
|
+// Activities helper
|
|
|
+function itemCreation(userId, doc) {
|
|
|
+ const card = Cards.findOne(doc.cardId);
|
|
|
+ const boardId = card.boardId;
|
|
|
+ Activities.insert({
|
|
|
+ userId,
|
|
|
+ activityType: 'addChecklistItem',
|
|
|
+ cardId: doc.cardId,
|
|
|
+ boardId,
|
|
|
+ checklistId: doc.checklistId,
|
|
|
+ checklistItemId: doc._id,
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+function itemRemover(userId, doc) {
|
|
|
+ Activities.remove({
|
|
|
+ checklistItemId: doc._id,
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+// Activities
|
|
|
+if (Meteor.isServer) {
|
|
|
+ Meteor.startup(() => {
|
|
|
+ ChecklistItems._collection._ensureIndex({ checklistId: 1 });
|
|
|
+ });
|
|
|
+
|
|
|
+ ChecklistItems.after.insert((userId, doc) => {
|
|
|
+ itemCreation(userId, doc);
|
|
|
+ });
|
|
|
+
|
|
|
+ ChecklistItems.after.remove((userId, doc) => {
|
|
|
+ itemRemover(userId, doc);
|
|
|
+ });
|
|
|
+}
|