add send none state to newsletter config

This commit is contained in:
Julian Krauser 2025-04-19 09:42:11 +02:00
parent 63f206cc6a
commit f1395357c5
6 changed files with 21 additions and 23 deletions

View file

@ -1,8 +1,8 @@
import { NewsletterConfigType } from "../../../enums/newsletterConfigType"; import { NewsletterConfigEnum } from "../../../enums/newsletterConfigEnum";
export interface SetNewsletterConfigCommand { export interface SetNewsletterConfigCommand {
comTypeId: number; comTypeId: number;
config: NewsletterConfigType; config: NewsletterConfigEnum;
} }
export interface DeleteNewsletterConfigCommand { export interface DeleteNewsletterConfigCommand {

View file

@ -1,5 +1,5 @@
import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm"; import { Column, Entity, ManyToOne, PrimaryColumn } from "typeorm";
import { NewsletterConfigType } from "../../enums/newsletterConfigType"; import { NewsletterConfigEnum } from "../../enums/newsletterConfigEnum";
import { communicationType } from "./communicationType"; import { communicationType } from "./communicationType";
@Entity() @Entity()
@ -11,15 +11,15 @@ export class newsletterConfig {
type: "varchar", type: "varchar",
length: "255", length: "255",
transformer: { transformer: {
to(value: NewsletterConfigType) { to(value: NewsletterConfigEnum) {
return value.toString(); return value.toString();
}, },
from(value: string) { from(value: string) {
return NewsletterConfigType[value as keyof typeof NewsletterConfigType]; return NewsletterConfigEnum[value as keyof typeof NewsletterConfigEnum];
}, },
}, },
}) })
config: NewsletterConfigType; config: NewsletterConfigEnum;
@ManyToOne(() => communicationType, { @ManyToOne(() => communicationType, {
nullable: false, nullable: false,

View file

@ -0,0 +1,5 @@
export enum NewsletterConfigEnum {
pdf = "pdf",
mail = "mail",
none = "none",
}

View file

@ -1,4 +0,0 @@
export enum NewsletterConfigType {
pdf = "pdf",
mail = "mail",
}

View file

@ -14,7 +14,7 @@ import { CLUB_NAME } from "../env.defaults";
import { TemplateHelper } from "./templateHelper"; import { TemplateHelper } from "./templateHelper";
import { PdfExport } from "./pdfExport"; import { PdfExport } from "./pdfExport";
import NewsletterConfigService from "../service/configuration/newsletterConfigService"; import NewsletterConfigService from "../service/configuration/newsletterConfigService";
import { NewsletterConfigType } from "../enums/newsletterConfigType"; import { NewsletterConfigEnum } from "../enums/newsletterConfigEnum";
import InternalException from "../exceptions/internalException"; import InternalException from "../exceptions/internalException";
import EventEmitter from "events"; import EventEmitter from "events";
@ -154,14 +154,11 @@ export abstract class NewsletterHelper {
let recipients = await NewsletterRecipientsService.getAll(newsletterId); let recipients = await NewsletterRecipientsService.getAll(newsletterId);
let config = await NewsletterConfigService.getAll(); 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 members = await this.transformRecipientsToMembers(newsletter, recipients);
const mailRecipients = members.filter( const mailRecipients = members.filter(
(m) => (m) => m.sendNewsletter?.email != "" && allowedForMail.includes(m.sendNewsletter?.type?.id)
m.sendNewsletter != null &&
m.sendNewsletter?.email != null &&
allowedForMail.includes(m.sendNewsletter?.type?.id)
); );
return mailRecipients; return mailRecipients;
@ -172,12 +169,12 @@ export abstract class NewsletterHelper {
let recipients = await NewsletterRecipientsService.getAll(newsletterId); let recipients = await NewsletterRecipientsService.getAll(newsletterId);
let config = await NewsletterConfigService.getAll(); 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 members = await this.transformRecipientsToMembers(newsletter, recipients);
const pdfRecipients = members.filter( const pdfRecipients = members.filter((m) => !notAllowedForPdf.includes(m.sendNewsletter?.type?.id));
(m) => !notAllowedForPdf.includes(m.sendNewsletter?.type?.id) || m.sendNewsletter == null
);
pdfRecipients.unshift({ pdfRecipients.unshift({
id: "0", id: "0",
@ -278,7 +275,7 @@ export abstract class NewsletterHelper {
if (error) throw new InternalException("Failed Building ICS form Pdf", error); if (error) throw new InternalException("Failed Building ICS form Pdf", error);
this.saveIcsToFile(newsletter, value); 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); const pdfRecipients = await this.getPrintRecipients(newsletterId);

View file

@ -1,8 +1,8 @@
import { NewsletterConfigType } from "../../../enums/newsletterConfigType"; import { NewsletterConfigEnum } from "../../../enums/newsletterConfigEnum";
import { CommunicationTypeViewModel } from "./communicationType.models"; import { CommunicationTypeViewModel } from "./communicationType.models";
export interface NewsletterConfigViewModel { export interface NewsletterConfigViewModel {
comTypeId: number; comTypeId: number;
config: NewsletterConfigType; config: NewsletterConfigEnum;
comType: CommunicationTypeViewModel; comType: CommunicationTypeViewModel;
} }