import DocumentsService from "@Services/super-admin/DocumentsService/DocumentsService"; import { Documents } from "@prisma/client"; import User, { 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"; @Service() export default class EmailBuilder { public constructor(private mailchimpService: MailchimpService ,private documentsService: DocumentsService, protected variables: BackendVariables){} public async sendDocumentEmails(documentEntity: Documents){ if(documentEntity.document_status !== "ASKED" && documentEntity.document_status !== "REFUSED") return; const documentPrisma = await this.documentsService.getByUid(documentEntity.uid, { depositor: {include: {contact: true}}, folder:{include:{ office: true}} }); if(!documentPrisma) throw new Error("Document not found"); const document = Document.hydrate(documentPrisma); const to = document.depositor!.contact!.email; const civility = this.getCivility(document.depositor!.contact!.civility); const templateVariables = { civility: civility, last_name: document.depositor!.contact!.last_name, office_name: document.folder!.office!.name, link: this.variables.APP_HOST }; let templateName = ETemplates.DOCUMENT_ASKED; let subject = "Votre notaire vous demande de déposer des pièces pour traiter votre dossier."; if(documentEntity.document_status === "REFUSED"){ templateName = ETemplates.DOCUMENT_REFUSED; subject = "Un ou plusieurs documents ne sont pas validés. Vous avez une nouvelle action à réaliser."; } this.mailchimpService.create({ templateName, to, subject, templateVariables, uid: "", from: null, cc: [], cci: [], sentAt: null, nbTrySend: null, lastTrySendDate: null, }); } public async sendRecapEmails(usersToEmail: User[]){ usersToEmail.forEach(user => { const to = user.contact!.email; const civility = this.getCivility(user.contact!.civility); const templateVariables = { civility: civility, last_name: user.contact!.last_name, link: this.variables.APP_HOST }; const templateName = ETemplates.DOCUMENT_RECAP; const subject = "Des clients vous ont envoyé des documents qui n'ont pas été validés."; 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" } }