diff options
Diffstat (limited to 'models')
-rw-r--r-- | models/activities.js | 1 | ||||
-rw-r--r-- | models/boards.js | 7 | ||||
-rw-r--r-- | models/cards.js | 34 |
3 files changed, 35 insertions, 7 deletions
diff --git a/models/activities.js b/models/activities.js index cb1dddaf..19e3fb7d 100644 --- a/models/activities.js +++ b/models/activities.js @@ -289,6 +289,7 @@ if (Meteor.isServer) { activities: { $in: [description, 'all'] }, }).fetch(); if (integrations.length > 0) { + params.watchers = watchers; integrations.forEach(integration => { Meteor.call( 'outgoingWebhooks', diff --git a/models/boards.js b/models/boards.js index af7685ae..a9348478 100644 --- a/models/boards.js +++ b/models/boards.js @@ -699,6 +699,13 @@ Boards.helpers({ return result; }, + cardsDueInBetween(start, end) { + return Cards.find({ + boardId: this._id, + dueAt: { $gte: start, $lte: end }, + }); + }, + cardsInInterval(start, end) { return Cards.find({ boardId: this._id, diff --git a/models/cards.js b/models/cards.js index d30baaf1..371ad185 100644 --- a/models/cards.js +++ b/models/cards.js @@ -1579,18 +1579,38 @@ const findDueCards = days => { const now = new Date(), aday = 3600 * 24 * 1e3, then = day => new Date(now.setHours(0, 0, 0, 0) + day * aday); - seekDue(then(1), then(days), 'almostdue'); - seekDue(then(0), then(1), 'duenow'); - seekDue(then(-days), now, 'pastdue'); + if (!days) return; + if (!days.map) days = [days]; + days.map(day => { + let args = []; + if (day === 0) { + args = [then(0), then(1), 'duenow']; + } else if (day > 0) { + args = [then(1), then(day), 'almostdue']; + } else { + args = [then(day), now, 'pastdue']; + } + seekDue(...args); + }); }; const addCronJob = _.debounce( Meteor.bindEnvironment(function findDueCardsDebounced() { - const notifydays = - parseInt(process.env.NOTIFY_DUE_DAYS_BEFORE_AND_AFTER, 10) || 2; // default as 2 days before and after - if (!(notifydays > 0 && notifydays < 15)) { - // notifying due is disabled + const envValue = process.env.NOTIFY_DUE_DAYS_BEFORE_AND_AFTER; + if (!envValue) { return; } + const notifydays = envValue + .split(',') + .map(value => { + const iValue = parseInt(value, 10); + if (!(iValue > 0 && iValue < 15)) { + // notifying due is disabled + return false; + } else { + return iValue; + } + }) + .filter(Boolean); const notifyitvl = process.env.NOTIFY_DUE_AT_HOUR_OF_DAY; //passed in the itvl has to be a number standing for the hour of current time const defaultitvl = 8; // default every morning at 8am, if the passed env variable has parsing error use default const itvl = parseInt(notifyitvl, 10) || defaultitvl; |