feature finished
This commit is contained in:
parent
dbe984b474
commit
56997f46bc
2321
package-lock.json
generated
2321
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -45,6 +45,34 @@ export default class EmailBuilder {
|
|||||||
nbTrySend: null,
|
nbTrySend: null,
|
||||||
lastTrySendDate: null,
|
lastTrySendDate: null,
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public async sendRecapEmails(usersToEmail: [{email: string, civility: string, last_name: string}]){
|
||||||
|
usersToEmail.forEach(user => {
|
||||||
|
const to = user.email;
|
||||||
|
|
||||||
|
const templateVariables = {
|
||||||
|
civility: user.civility,
|
||||||
|
last_name: user.last_name,
|
||||||
|
link: "http://localhost:3000"
|
||||||
|
};
|
||||||
|
|
||||||
|
const templateName = ETemplates.DOCUMENT_RECAP;
|
||||||
|
const subject = "Récapitulatif hebdromadaire";
|
||||||
|
|
||||||
|
this.mailchimpService.create({
|
||||||
|
templateName,
|
||||||
|
to,
|
||||||
|
subject,
|
||||||
|
templateVariables,
|
||||||
|
uid: "",
|
||||||
|
from: null,
|
||||||
|
cc: [],
|
||||||
|
cci: [],
|
||||||
|
sentAt: null,
|
||||||
|
nbTrySend: null,
|
||||||
|
lastTrySendDate: null,
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
export const ETemplates = {
|
export const ETemplates = {
|
||||||
DOCUMENT_ASKED: "DOCUMENT_ASKED",
|
DOCUMENT_ASKED: "DOCUMENT_ASKED",
|
||||||
DOCUMENT_REFUSED: "DOCUMENT_REFUSED",
|
DOCUMENT_REFUSED: "DOCUMENT_REFUSED",
|
||||||
|
DOCUMENT_RECAP: "DOCUMENT_RECAP",
|
||||||
};
|
};
|
@ -21,6 +21,7 @@ export default class DocumentsRepository extends BaseRepository {
|
|||||||
* @description : Find many documents
|
* @description : Find many documents
|
||||||
*/
|
*/
|
||||||
public async findMany(query: Prisma.DocumentsFindManyArgs) {
|
public async findMany(query: Prisma.DocumentsFindManyArgs) {
|
||||||
|
|
||||||
query.take = Math.min(query.take || this.defaultFetchRows, this.maxFetchRows);
|
query.take = Math.min(query.take || this.defaultFetchRows, this.maxFetchRows);
|
||||||
return this.model.findMany(query);
|
return this.model.findMany(query);
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,22 @@
|
|||||||
import "module-alias/register";
|
import "module-alias/register";
|
||||||
import "reflect-metadata";
|
import "reflect-metadata";
|
||||||
|
|
||||||
import { Container } from "typedi";
|
import { Container } from "typedi";
|
||||||
import { BackendVariables } from "@Common/config/variables/Variables";
|
import { BackendVariables } from "@Common/config/variables/Variables";
|
||||||
import CronService from "@Services/common/CronService/CronService";
|
import CronService from "@Services/common/CronService/CronService";
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
|
console.log("Cron started");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const variables = await Container.get(BackendVariables).validate();
|
const variables = await Container.get(BackendVariables).validate();
|
||||||
Container.get(CronService).archiveFiles();
|
Container.get(CronService).archiveFiles();
|
||||||
await Container.get(CronService).updateUsers();
|
await Container.get(CronService).updateUsers();
|
||||||
|
Container.get(CronService).sendRecapMails();
|
||||||
if(variables.ENV !== "dev"){
|
if(variables.ENV !== "dev"){
|
||||||
Container.get(CronService).sendMails();
|
Container.get(CronService).sendMails();
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,21 @@ export default class CronService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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() {
|
public async archiveFiles() {
|
||||||
const cronJob = new CronJob("0 0 * * MON", async () => { // Every monday at midnight
|
const cronJob = new CronJob("0 0 * * MON", async () => { // Every monday at midnight
|
||||||
try {
|
try {
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import EmailRepository from "@Repositories/EmailRepository";
|
import EmailRepository from "@Repositories/EmailRepository";
|
||||||
import BaseService from "@Services/BaseService";
|
import BaseService from "@Services/BaseService";
|
||||||
import { Emails } from "@prisma/client";
|
import { Emails, PrismaClient } from "@prisma/client";
|
||||||
import { Service } from "typedi";
|
import { Service } from "typedi";
|
||||||
import MailchimpClient from "@mailchimp/mailchimp_transactional";
|
import MailchimpClient from "@mailchimp/mailchimp_transactional";
|
||||||
import { BackendVariables } from "@Common/config/variables/Variables";
|
import { BackendVariables } from "@Common/config/variables/Variables";
|
||||||
|
// import DocumentsService from "@Services/super-admin/DocumentsService/DocumentsService";
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class MailchimpService extends BaseService {
|
export default class MailchimpService extends BaseService {
|
||||||
@ -113,4 +114,17 @@ export default class MailchimpService extends BaseService {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async sendRecapEmails() {
|
||||||
|
const prisma = new PrismaClient();
|
||||||
|
const usersToEmail = await prisma.$queryRaw
|
||||||
|
`SELECT DISTINCT c.email, c.civility, c.last_name
|
||||||
|
FROM Contacts c
|
||||||
|
JOIN Users u ON c.uid = u.contact_uid
|
||||||
|
JOIN office_folders of ON u.office_uid = of.office_uid
|
||||||
|
JOIN Documents d ON of.uid = d.folder_uid
|
||||||
|
WHERE d.document_status = 'DEPOSITED';`
|
||||||
|
|
||||||
|
console.log(usersToEmail);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user