From 2a47b8f4824547c0706cf8d3b6ef8fccfd182e84 Mon Sep 17 00:00:00 2001 From: Moritz Utcke Date: Thu, 13 Mar 2025 17:12:45 -0300 Subject: [PATCH] Email Betreff --- src/lib/server/mail/geg-bestellung.ts | 4 ++- src/lib/server/mail/helpers.ts | 32 +++++++++++++++++++ src/lib/server/mail/invoice.ts | 7 +++- src/lib/server/mail/payment-success.ts | 10 ++++-- src/pages/api/ausweise/index.ts | 14 +++++--- .../admin/ausweise-pruefen/index.astro | 2 +- 6 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 src/lib/server/mail/helpers.ts diff --git a/src/lib/server/mail/geg-bestellung.ts b/src/lib/server/mail/geg-bestellung.ts index f6a710ed..342e04a0 100644 --- a/src/lib/server/mail/geg-bestellung.ts +++ b/src/lib/server/mail/geg-bestellung.ts @@ -3,6 +3,7 @@ import { Benutzer, GEGNachweisWohnen, } from "#lib/client/prisma.js"; +import { getPaymentSuccessSubject } from "./helpers.js"; export async function sendGEGBestellungsMail( nachweis: GEGNachweisWohnen, @@ -11,7 +12,8 @@ export async function sendGEGBestellungsMail( await transport.sendMail({ from: `"IBCornelsen" `, to: user.email, - subject: `Bestellbestätigung vom IBCornelsen (ID: ${nachweis.uid})`, + // subject: getPaymentSuccessSubject(nachweis, ), + // TODO cc: { address: user.email || "", name: user.name || "", diff --git a/src/lib/server/mail/helpers.ts b/src/lib/server/mail/helpers.ts new file mode 100644 index 00000000..89c8ee62 --- /dev/null +++ b/src/lib/server/mail/helpers.ts @@ -0,0 +1,32 @@ +import { shortenUID } from "#server/lib/hash.js"; +import { BedarfsausweisWohnen, Enums, Rechnung, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "../prisma.js"; + +export function getPaymentSuccessSubject(ausweis: VerbrauchsausweisWohnen | VerbrauchsausweisGewerbe | BedarfsausweisWohnen, rechnung: Rechnung, ausweisart: Enums.Ausweisart) { + const id = shortenUID(ausweis.uid); + + let subject: string = ""; + if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) { + subject = `Bestellbestätigung vom IB Cornelsen - Verbrauchsausweis Wohnen (ID: ${id})` + if (rechnung.ausweistyp === Enums.AusweisTyp.Beratung) { + subject = `Bestellbestätigung vom IB Cornelsen - Verbrauchsausweis Wohnen mit Beratung (ID: ${id})` + } else if (rechnung.ausweistyp === Enums.AusweisTyp.Offline) { + subject = `Bestellbestätigung vom IB Cornelsen - Verbrauchsausweis Wohnen - offline Service (ID: ${id})` + } + } else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) { + subject = `Bestellbestätigung vom IB Cornelsen - Verbrauchsausweis Gewerbe (ID: ${id})` + if (rechnung.ausweistyp === Enums.AusweisTyp.Beratung) { + subject = `Bestellbestätigung vom IB Cornelsen - Verbrauchsausweis Gewerbe mit Beratung (ID: ${id})` + } else if (rechnung.ausweistyp === Enums.AusweisTyp.Offline) { + subject = `Bestellbestätigung vom IB Cornelsen - Verbrauchsausweis Gewerbe - offline Service (ID: ${id})` + } + } else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) { + subject = `Bestellbestätigung vom IB Cornelsen - Bedarfsausweis Wohnen (ID: ${id})` + if (rechnung.ausweistyp === Enums.AusweisTyp.Beratung) { + subject = `Bestellbestätigung vom IB Cornelsen - Bedarfsausweis Wohnen mit Beratung (ID: ${id})` + } else if (rechnung.ausweistyp === Enums.AusweisTyp.Offline) { + subject = `Bestellbestätigung vom IB Cornelsen - Bedarfsausweis Wohnen - offline Service (ID: ${id})` + } + } + + return subject; +} \ No newline at end of file diff --git a/src/lib/server/mail/invoice.ts b/src/lib/server/mail/invoice.ts index 0e387d3e..2ae0816a 100644 --- a/src/lib/server/mail/invoice.ts +++ b/src/lib/server/mail/invoice.ts @@ -11,6 +11,7 @@ import { prisma } from "#lib/server/prisma.js"; import { getAnsichtsausweis } from "../ausweis.js"; import Mail from "nodemailer/lib/mailer/index.js"; import { shortenUID } from "#server/lib/hash.js"; +import { getPaymentSuccessSubject } from "./helpers.js"; export async function sendInvoiceMail( ausweis: VerbrauchsausweisWohnen, @@ -33,6 +34,10 @@ export async function sendInvoiceMail( const ausweisart = getAusweisartFromUUID(ausweis.uid); + if (!ausweisart) { + return + } + const attachments: Mail.Attachment[] = []; const id = shortenUID(ausweis.uid) @@ -65,7 +70,7 @@ export async function sendInvoiceMail( attachments, from: `"IBCornelsen" `, to: user.email, - subject: `Bestellbestätigung vom IBCornelsen (ID: ${id})`, + subject: getPaymentSuccessSubject(ausweis, rechnung, ausweisart), cc: { address: rechnung.email || "", name: rechnung.empfaenger || "", diff --git a/src/lib/server/mail/payment-success.ts b/src/lib/server/mail/payment-success.ts index 8c106159..c039c9f4 100644 --- a/src/lib/server/mail/payment-success.ts +++ b/src/lib/server/mail/payment-success.ts @@ -10,6 +10,7 @@ import { prisma } from "#lib/server/prisma.js"; import { getAnsichtsausweis } from "../ausweis.js"; import Mail from "nodemailer/lib/mailer/index.js"; import { shortenUID } from "#server/lib/hash.js"; +import { getPaymentSuccessSubject } from "./helpers.js"; export async function sendPaymentSuccessMail( ausweis: VerbrauchsausweisWohnen, @@ -32,6 +33,11 @@ export async function sendPaymentSuccessMail( let info: string = ""; const ausweisart = getAusweisartFromUUID(ausweis.uid); + + if (!ausweisart) { + return; + } + const attachments: Mail.Attachment[] = []; const id = shortenUID(ausweis.uid) @@ -63,12 +69,12 @@ export async function sendPaymentSuccessMail( info = "Die Erstellung des Bedarfsausweises dauert momentan leider etwas länger. Bitte kontaktieren Sie uns in dringenden Fällen telefonisch (9 - 12 Uhr)."; } - + await transport.sendMail({ attachments, from: `"IBCornelsen" `, to: user.email, - subject: `Bestellbestätigung vom IBCornelsen (ID: ${id})`, + subject: getPaymentSuccessSubject(ausweis, rechnung, ausweisart), cc: { address: rechnung.email || "", name: rechnung.empfaenger || "", diff --git a/src/pages/api/ausweise/index.ts b/src/pages/api/ausweise/index.ts index 573adb25..e183b74b 100644 --- a/src/pages/api/ausweise/index.ts +++ b/src/pages/api/ausweise/index.ts @@ -2,7 +2,7 @@ import { AufnahmeClient, ObjektClient, UploadedGebaeudeBild, UUidWithPrefix, Ver import { filterAusweise } from "#lib/filters.js"; import { omit } from "#lib/helpers.js"; import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js"; -import { Enums, prisma, VerbrauchsausweisWohnenSchema } from "#lib/server/prisma"; +import { Enums, prisma } from "#lib/server/prisma.js"; import { defineApiRoute } from "astro-typesafe-api/server"; import { z } from "zod"; @@ -15,12 +15,16 @@ export const GET = defineApiRoute({ skip: z.number().optional() }), async fetch(input, context, user) { + if (user.rolle !== Enums.BenutzerRolle.ADMIN) { + input.filters = input.filters || {} + input.filters["benutzer"] = { + uid: user.uid + } + } + const ausweise = await prisma.verbrauchsausweisWohnen.findMany({ where: { - ...input.filters, - benutzer: { - uid: user.uid - }, + ...input.filters }, include: { aufnahme: { diff --git a/src/pages/dashboard/admin/ausweise-pruefen/index.astro b/src/pages/dashboard/admin/ausweise-pruefen/index.astro index 4c3455a3..4eaa6708 100644 --- a/src/pages/dashboard/admin/ausweise-pruefen/index.astro +++ b/src/pages/dashboard/admin/ausweise-pruefen/index.astro @@ -1,3 +1,3 @@ --- -return Astro.redirect("/dashboard/admin/ausweise-pruefen/1") +return Astro.redirect("/dashboard/admin/ausweise-pruefen/1"); --- \ No newline at end of file