mirror of
https://github.com/vale981/Vulcan
synced 2025-03-10 12:36:39 -04:00
74 lines
1.7 KiB
JavaScript
74 lines
1.7 KiB
JavaScript
![]() |
Later = Npm.require('later');
|
||
|
|
||
|
defaultFrequency = 7; // once a week
|
||
|
|
||
|
getSchedule = function (parser) {
|
||
|
var frequency = getSetting('newsletterFrequency', defaultFrequency);
|
||
|
switch (frequency) {
|
||
|
case 1: // every day
|
||
|
// sched = {schedules: [{dw: [1,2,3,4,5,6,0]}]};
|
||
|
return parser.recur().on(1,2,3,4,5,6,0).dayOfWeek();
|
||
|
|
||
|
case 2: // Mondays, Wednesdays, Fridays
|
||
|
// sched = {schedules: [{dw: [2,4,6]}]};
|
||
|
return parser.recur().on(2,4,6).dayOfWeek();
|
||
|
|
||
|
case 3: // Mondays, Thursdays
|
||
|
// sched = {schedules: [{dw: [2,5]}]};
|
||
|
return parser.recur().on(2,5).dayOfWeek();
|
||
|
|
||
|
case 7: // Once a week (Mondays)
|
||
|
// sched = {schedules: [{dw: [2]}]};
|
||
|
return parser.recur().on(2).dayOfWeek();
|
||
|
|
||
|
default: // Don't send
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
SyncedCron.getNext = function (jobName) {
|
||
|
var scheduledAt;
|
||
|
try {
|
||
|
this._entries.some(function(entry) {
|
||
|
if(entry.name === jobName){
|
||
|
var schedule = entry.schedule(Later.parse);
|
||
|
scheduledAt = Later.schedule(schedule).next(1);
|
||
|
return true;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
catch (error) {
|
||
|
console.log(error)
|
||
|
scheduledAt = 'No job scheduled';
|
||
|
}
|
||
|
return scheduledAt;
|
||
|
}
|
||
|
|
||
|
getNextCampaignSchedule = function () {
|
||
|
return SyncedCron.getNext('Schedule newsletter');
|
||
|
}
|
||
|
|
||
|
SyncedCron.add({
|
||
|
name: 'Schedule newsletter',
|
||
|
schedule: function(parser) {
|
||
|
// parser is a later.parse object
|
||
|
// var sched;
|
||
|
return getSchedule(parser)
|
||
|
|
||
|
},
|
||
|
job: function() {
|
||
|
scheduleNextCampaign();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
Meteor.startup(function() {
|
||
|
if(getSetting('newsletterFrequency', defaultFrequency) != 0) {
|
||
|
SyncedCron.start();
|
||
|
};
|
||
|
});
|
||
|
|
||
|
Meteor.methods({
|
||
|
getNextJob: function (jobName) {
|
||
|
return SyncedCron.getNext(jobName);
|
||
|
}
|
||
|
});
|