From f1395357c58971635c12346cbd61bf6727b16d7f Mon Sep 17 00:00:00 2001
From: Julian Krauser <jkrauser209@gmail.com>
Date: Sat, 19 Apr 2025 09:42:11 +0200
Subject: [PATCH] add send none state to newsletter config

---
 .../newsletterConfigCommand.ts                |  4 ++--
 src/entity/configuration/newsletterConfig.ts  |  8 ++++----
 src/enums/newsletterConfigEnum.ts             |  5 +++++
 src/enums/newsletterConfigType.ts             |  4 ----
 src/helpers/newsletterHelper.ts               | 19 ++++++++-----------
 .../configuration/newsletterConfig.models.ts  |  4 ++--
 6 files changed, 21 insertions(+), 23 deletions(-)
 create mode 100644 src/enums/newsletterConfigEnum.ts
 delete mode 100644 src/enums/newsletterConfigType.ts

diff --git a/src/command/configuration/newsletterConfig/newsletterConfigCommand.ts b/src/command/configuration/newsletterConfig/newsletterConfigCommand.ts
index f07de54..5573062 100644
--- a/src/command/configuration/newsletterConfig/newsletterConfigCommand.ts
+++ b/src/command/configuration/newsletterConfig/newsletterConfigCommand.ts
@@ -1,8 +1,8 @@
-import { NewsletterConfigType } from "../../../enums/newsletterConfigType";
+import { NewsletterConfigEnum } from "../../../enums/newsletterConfigEnum";
 
 export interface SetNewsletterConfigCommand {
   comTypeId: number;
-  config: NewsletterConfigType;
+  config: NewsletterConfigEnum;
 }
 
 export interface DeleteNewsletterConfigCommand {
diff --git a/src/entity/configuration/newsletterConfig.ts b/src/entity/configuration/newsletterConfig.ts
index 17dde81..2d5d69c 100644
--- a/src/entity/configuration/newsletterConfig.ts
+++ b/src/entity/configuration/newsletterConfig.ts
@@ -1,5 +1,5 @@
 import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm";
-import { NewsletterConfigType } from "../../enums/newsletterConfigType";
+import { NewsletterConfigEnum } from "../../enums/newsletterConfigEnum";
 import { communicationType } from "./communicationType";
 
 @Entity()
@@ -11,15 +11,15 @@ export class newsletterConfig {
     type: "varchar",
     length: "255",
     transformer: {
-      to(value: NewsletterConfigType) {
+      to(value: NewsletterConfigEnum) {
         return value.toString();
       },
       from(value: string) {
-        return NewsletterConfigType[value as keyof typeof NewsletterConfigType];
+        return NewsletterConfigEnum[value as keyof typeof NewsletterConfigEnum];
       },
     },
   })
-  config: NewsletterConfigType;
+  config: NewsletterConfigEnum;
 
   @ManyToOne(() => communicationType, {
     nullable: false,
diff --git a/src/enums/newsletterConfigEnum.ts b/src/enums/newsletterConfigEnum.ts
new file mode 100644
index 0000000..1e7313f
--- /dev/null
+++ b/src/enums/newsletterConfigEnum.ts
@@ -0,0 +1,5 @@
+export enum NewsletterConfigEnum {
+  pdf = "pdf",
+  mail = "mail",
+  none = "none",
+}
diff --git a/src/enums/newsletterConfigType.ts b/src/enums/newsletterConfigType.ts
deleted file mode 100644
index 4703494..0000000
--- a/src/enums/newsletterConfigType.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export enum NewsletterConfigType {
-  pdf = "pdf",
-  mail = "mail",
-}
diff --git a/src/helpers/newsletterHelper.ts b/src/helpers/newsletterHelper.ts
index 5768c8a..32cdd16 100644
--- a/src/helpers/newsletterHelper.ts
+++ b/src/helpers/newsletterHelper.ts
@@ -14,7 +14,7 @@ import { CLUB_NAME } from "../env.defaults";
 import { TemplateHelper } from "./templateHelper";
 import { PdfExport } from "./pdfExport";
 import NewsletterConfigService from "../service/configuration/newsletterConfigService";
-import { NewsletterConfigType } from "../enums/newsletterConfigType";
+import { NewsletterConfigEnum } from "../enums/newsletterConfigEnum";
 import InternalException from "../exceptions/internalException";
 import EventEmitter from "events";
 
@@ -154,14 +154,11 @@ export abstract class NewsletterHelper {
     let recipients = await NewsletterRecipientsService.getAll(newsletterId);
     let config = await NewsletterConfigService.getAll();
 
-    let allowedForMail = config.filter((c) => c.config == NewsletterConfigType.mail).map((c) => c.comTypeId);
+    let allowedForMail = config.filter((c) => c.config == NewsletterConfigEnum.mail).map((c) => c.comTypeId);
 
     const members = await this.transformRecipientsToMembers(newsletter, recipients);
     const mailRecipients = members.filter(
-      (m) =>
-        m.sendNewsletter != null &&
-        m.sendNewsletter?.email != null &&
-        allowedForMail.includes(m.sendNewsletter?.type?.id)
+      (m) => m.sendNewsletter?.email != "" && allowedForMail.includes(m.sendNewsletter?.type?.id)
     );
 
     return mailRecipients;
@@ -172,12 +169,12 @@ export abstract class NewsletterHelper {
     let recipients = await NewsletterRecipientsService.getAll(newsletterId);
     let config = await NewsletterConfigService.getAll();
 
-    let notAllowedForPdf = config.filter((c) => c.config == NewsletterConfigType.mail).map((c) => c.comTypeId);
+    let notAllowedForPdf = config
+      .filter((c) => c.config == NewsletterConfigEnum.none || c.config == NewsletterConfigEnum.mail)
+      .map((c) => c.comTypeId);
 
     const members = await this.transformRecipientsToMembers(newsletter, recipients);
-    const pdfRecipients = members.filter(
-      (m) => !notAllowedForPdf.includes(m.sendNewsletter?.type?.id) || m.sendNewsletter == null
-    );
+    const pdfRecipients = members.filter((m) => !notAllowedForPdf.includes(m.sendNewsletter?.type?.id));
 
     pdfRecipients.unshift({
       id: "0",
@@ -278,7 +275,7 @@ export abstract class NewsletterHelper {
     if (error) throw new InternalException("Failed Building ICS form Pdf", error);
     this.saveIcsToFile(newsletter, value);
 
-    let printWithAdress = config.filter((c) => c.config == NewsletterConfigType.pdf).map((c) => c.comTypeId);
+    let printWithAdress = config.filter((c) => c.config == NewsletterConfigEnum.pdf).map((c) => c.comTypeId);
 
     const pdfRecipients = await this.getPrintRecipients(newsletterId);
 
diff --git a/src/viewmodel/admin/configuration/newsletterConfig.models.ts b/src/viewmodel/admin/configuration/newsletterConfig.models.ts
index 3538bfe..6bb2041 100644
--- a/src/viewmodel/admin/configuration/newsletterConfig.models.ts
+++ b/src/viewmodel/admin/configuration/newsletterConfig.models.ts
@@ -1,8 +1,8 @@
-import { NewsletterConfigType } from "../../../enums/newsletterConfigType";
+import { NewsletterConfigEnum } from "../../../enums/newsletterConfigEnum";
 import { CommunicationTypeViewModel } from "./communicationType.models";
 
 export interface NewsletterConfigViewModel {
   comTypeId: number;
-  config: NewsletterConfigType;
+  config: NewsletterConfigEnum;
   comType: CommunicationTypeViewModel;
 }