triggers.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { Meteor } from 'meteor/meteor';
  2. Triggers = new Mongo.Collection('triggers');
  3. Triggers.mutations({
  4. rename(description) {
  5. return {
  6. $set: {
  7. description,
  8. },
  9. };
  10. },
  11. });
  12. Triggers.before.insert((userId, doc) => {
  13. doc.createdAt = new Date();
  14. doc.updatedAt = doc.createdAt;
  15. });
  16. Triggers.before.update((userId, doc, fieldNames, modifier) => {
  17. modifier.$set = modifier.$set || {};
  18. modifier.$set.updatedAt = new Date();
  19. });
  20. Triggers.allow({
  21. insert(userId, doc) {
  22. return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
  23. },
  24. update(userId, doc) {
  25. return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
  26. },
  27. remove(userId, doc) {
  28. return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId));
  29. },
  30. });
  31. Triggers.helpers({
  32. description() {
  33. return this.desc;
  34. },
  35. getRule() {
  36. return Rules.findOne({
  37. triggerId: this._id,
  38. });
  39. },
  40. fromList() {
  41. return Lists.findOne(this.fromId);
  42. },
  43. toList() {
  44. return Lists.findOne(this.toId);
  45. },
  46. findList(title) {
  47. return Lists.findOne({
  48. title,
  49. });
  50. },
  51. labels() {
  52. const boardLabels = this.board().labels;
  53. const cardLabels = _.filter(boardLabels, label => {
  54. return _.contains(this.labelIds, label._id);
  55. });
  56. return cardLabels;
  57. },
  58. });
  59. if (Meteor.isServer) {
  60. Meteor.startup(() => {
  61. Triggers._collection.createIndex({ modifiedAt: -1 });
  62. });
  63. }
  64. export default Triggers;