send or print newsletter preview
This commit is contained in:
parent
5a59a63e4a
commit
5f827fb177
15 changed files with 355 additions and 28 deletions
|
@ -1,3 +1,4 @@
|
|||
import { newsletterDemoData } from "../demodata/newsletter.data";
|
||||
import { protocolDemoData } from "../demodata/protocol.data";
|
||||
import { PermissionModule } from "../type/permissionTypes";
|
||||
|
||||
|
@ -6,6 +7,8 @@ export abstract class DemoDataHelper {
|
|||
switch (scope) {
|
||||
case "protocol":
|
||||
return protocolDemoData;
|
||||
case "newsletter":
|
||||
return newsletterDemoData;
|
||||
default:
|
||||
return {};
|
||||
}
|
||||
|
|
|
@ -24,6 +24,9 @@ export abstract class FileSystemHelper {
|
|||
|
||||
static getFilesInDirectory(directoryPath: string, filetype?: string): string[] {
|
||||
const fullPath = join(process.cwd(), directoryPath);
|
||||
if (!existsSync(fullPath)) {
|
||||
return [];
|
||||
}
|
||||
return readdirSync(fullPath, { withFileTypes: true })
|
||||
.filter((dirent) => !dirent.isDirectory() && (!filetype || dirent.name.endsWith(filetype)))
|
||||
.map((dirent) => dirent.name);
|
||||
|
|
|
@ -1,20 +1,16 @@
|
|||
import { Transporter, createTransport, TransportOptions } from "nodemailer";
|
||||
import { CLUB_NAME, MAIL_HOST, MAIL_PASSWORD, MAIL_PORT, MAIL_SECURE, MAIL_USERNAME } from "../env.defaults";
|
||||
|
||||
export default class MailHelper {
|
||||
private readonly transporter: Transporter;
|
||||
|
||||
constructor() {
|
||||
this.transporter = createTransport({
|
||||
host: MAIL_HOST,
|
||||
port: MAIL_PORT,
|
||||
secure: (MAIL_SECURE as "true" | "false") == "true",
|
||||
auth: {
|
||||
user: MAIL_USERNAME,
|
||||
pass: MAIL_PASSWORD,
|
||||
},
|
||||
} as TransportOptions);
|
||||
}
|
||||
export default abstract class MailHelper {
|
||||
private static readonly transporter: Transporter = createTransport({
|
||||
host: MAIL_HOST,
|
||||
port: MAIL_PORT,
|
||||
secure: (MAIL_SECURE as "true" | "false") == "true",
|
||||
auth: {
|
||||
user: MAIL_USERNAME,
|
||||
pass: MAIL_PASSWORD,
|
||||
},
|
||||
} as TransportOptions);
|
||||
|
||||
/**
|
||||
* @description send mail
|
||||
|
@ -23,7 +19,7 @@ export default class MailHelper {
|
|||
* @param {string} content
|
||||
* @returns {Prmose<*>}
|
||||
*/
|
||||
async sendMail(target: string, subject: string, content: string): Promise<any> {
|
||||
static async sendMail(target: string, subject: string, content: string): Promise<any> {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.transporter
|
||||
.sendMail({
|
||||
|
@ -31,6 +27,7 @@ export default class MailHelper {
|
|||
to: target,
|
||||
subject,
|
||||
text: content,
|
||||
html: content,
|
||||
})
|
||||
.then((info) => resolve(info.messageId))
|
||||
.catch((e) => reject(e));
|
||||
|
|
|
@ -26,7 +26,9 @@ export abstract class PdfExport {
|
|||
|
||||
const { header, footer, body } = await TemplateHelper.renderFileForModule({
|
||||
module: template,
|
||||
headerData: data,
|
||||
bodyData: data,
|
||||
footerData: data,
|
||||
title: title,
|
||||
});
|
||||
|
||||
|
|
|
@ -48,15 +48,15 @@ export abstract class TemplateHelper {
|
|||
|
||||
if (moduleTemplates.headerId) {
|
||||
header = await this.getTemplateFromStore(moduleTemplates.headerId);
|
||||
header = this.applyDataToTemplate(header, headerData);
|
||||
header = this.applyDataToTemplate(header, { title, ...headerData });
|
||||
}
|
||||
|
||||
if (moduleTemplates.footerId) {
|
||||
footer = await this.getTemplateFromStore(moduleTemplates.footerId);
|
||||
footer = this.applyDataToTemplate(footer, footerData);
|
||||
} else {
|
||||
footer = this.getTemplateFromFile(module + ".footer");
|
||||
}
|
||||
footer = this.applyDataToTemplate(footer, footerData);
|
||||
|
||||
if (moduleTemplates.bodyId) {
|
||||
body = await this.getTemplateFromStore(moduleTemplates.bodyId);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue