diff --git a/src/common/emails/EmailBuilder.ts b/src/common/emails/EmailBuilder.ts index 5dcfb7b8..d8b642f0 100644 --- a/src/common/emails/EmailBuilder.ts +++ b/src/common/emails/EmailBuilder.ts @@ -1,11 +1,13 @@ import DocumentsService from "@Services/super-admin/DocumentsService/DocumentsService"; import { Documents } from "@prisma/client"; -import User, { Document } from "le-coffre-resources/dist/SuperAdmin"; +import Customer, { Document } from "le-coffre-resources/dist/SuperAdmin"; import { Service } from "typedi"; import { ETemplates } from "./Templates/EmailTemplates"; import MailchimpService from "@Services/common/MailchimpService/MailchimpService"; import { BackendVariables } from "@Common/config/variables/Variables"; import UsersService from "@Services/super-admin/UsersService/UsersService"; +import User from "le-coffre-resources/dist/SuperAdmin"; +import CustomersService from "@Services/super-admin/CustomersService/CustomersService"; @Service() export default class EmailBuilder { @@ -14,6 +16,7 @@ export default class EmailBuilder { private documentsService: DocumentsService, protected variables: BackendVariables, private usersService: UsersService, + private customerService: CustomersService, ) {} public async sendDocumentEmails(documentEntity: Documents) { @@ -102,6 +105,50 @@ export default class EmailBuilder { }); } + public async sendRecapEmailsCustomers() { + const customersToEmailEntities = await this.customerService.get({ + where:{ + documents: { + some: { + document_status: "ASKED" + } + } + }, + distinct: ["uid"], + include: { contact: true }, + }); + + const customersToEmail = Customer.hydrateArray(customersToEmailEntities, { strategy: "excludeAll" }); + console.log(customersToEmail); + + + // customersToEmail.forEach((customer) => { + // const to = customer.contact!.email; + + // const templateVariables = { + // last_name: customer.contact!.last_name, + // link: this.variables.APP_HOST, + // }; + + // const templateName = ETemplates.DOCUMENT_RECAP; + // const subject = "Il vous reste des documents à déposer pour votre dossier"; + + // this.mailchimpService.create({ + // templateName, + // to, + // subject, + // templateVariables, + // uid: "", + // from: null, + // cc: [], + // cci: [], + // sentAt: null, + // nbTrySend: null, + // lastTrySendDate: null, + // }); + // }); + } + public getCivility(civility: string) { if (civility === "MALE") return "Mr"; else return "Mme"; diff --git a/src/entries/Cron.ts b/src/entries/Cron.ts index 760eaa9c..c6c61f6a 100644 --- a/src/entries/Cron.ts +++ b/src/entries/Cron.ts @@ -15,7 +15,8 @@ import CronService from "@Services/common/CronService/CronService"; Container.get(CronService).checkDocumentsExpiration(); if (variables.ENV !== "dev") { Container.get(CronService).sendMails(); - Container.get(CronService).sendRecapMails(); + Container.get(CronService).sendRecapMailsCustomers(); + Container.get(CronService).sendRecapMailsClient(); } } catch (e) { console.error(e); diff --git a/src/services/common/CronService/CronService.ts b/src/services/common/CronService/CronService.ts index 94584f54..a5d6bede 100644 --- a/src/services/common/CronService/CronService.ts +++ b/src/services/common/CronService/CronService.ts @@ -36,11 +36,27 @@ export default class CronService { } } - public async sendRecapMails() { + public async sendRecapMailsCustomers() { const cronJob = new CronJob("0 20 * * FRI", async () => { // Every friday at 20:00 try { - await this.emailBuilder.sendRecapEmails(); + await this.emailBuilder.sendRecapEmailsCustomers(); + } catch (e) { + console.error(e); + } + }); + + // Start job + if (!cronJob.running) { + cronJob.start(); + } + } + + public async sendRecapMailsClient() { + const cronJob = new CronJob("0 20 * * FRI", async () => { + // Every friday at 20:00 + try { + await this.emailBuilder.sendRecapEmailsCustomers(); } catch (e) { console.error(e); }