71 lines
1.6 KiB
TypeScript
71 lines
1.6 KiB
TypeScript
import { Service } from "typedi";
|
|
import { CronJob } from "cron";
|
|
import MailchimpService from "../MailchimpService/MailchimpService";
|
|
import FilesService from "../FilesService/FilesService";
|
|
import IdNotService from "../IdNotService/IdNotService";
|
|
|
|
|
|
@Service()
|
|
export default class CronService {
|
|
constructor(private mailchimpService: MailchimpService, private filesService: FilesService, private idNotService: IdNotService) {}
|
|
|
|
public async sendMails() {
|
|
const cronJob = new CronJob("*/15 * * * *", async () => { // Every 15 minutes
|
|
try {
|
|
await this.mailchimpService.sendEmails();
|
|
} catch (e) {
|
|
console.error(e);
|
|
}
|
|
});
|
|
|
|
// Start job
|
|
if (!cronJob.running) {
|
|
cronJob.start();
|
|
}
|
|
}
|
|
|
|
public async sendRecapMails() {
|
|
const cronJob = new CronJob("0 20 * * FRI", async () => { // Every friday at 20:00
|
|
try {
|
|
await this.mailchimpService.sendRecapEmails();
|
|
} catch (e) {
|
|
console.error(e);
|
|
}
|
|
});
|
|
|
|
// Start job
|
|
if (!cronJob.running) {
|
|
cronJob.start();
|
|
}
|
|
}
|
|
|
|
public async archiveFiles() {
|
|
const cronJob = new CronJob("0 0 * * MON", async () => { // Every monday at midnight
|
|
try {
|
|
await this.filesService.archiveOldFiles();
|
|
} catch (e) {
|
|
console.error(e);
|
|
}
|
|
});
|
|
|
|
// Start job
|
|
if (!cronJob.running) {
|
|
cronJob.start();
|
|
}
|
|
}
|
|
public async updateUsers() {
|
|
const cronJob = new CronJob("0 0 * * *", async () => { // Once a day at midnight
|
|
try {
|
|
await this.idNotService.updateOffices();
|
|
await this.idNotService.updateUsers();
|
|
} catch (e) {
|
|
console.error(e);
|
|
}
|
|
});
|
|
// Start job
|
|
if (!cronJob.running) {
|
|
cronJob.start();
|
|
}
|
|
}
|
|
}
|