summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
Diffstat (limited to 'models')
-rw-r--r--models/activities.js1
-rw-r--r--models/boards.js7
-rw-r--r--models/cards.js34
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;