Files
online-energieausweis/src/lib/server/mail/invoice.ts
2025-03-13 22:23:05 +01:00

108 lines
2.6 KiB
TypeScript

import { getAusweisartFromUUID } from "#components/Ausweis/types.js";
import { BASE_URI } from "#lib/constants.js";
import { transport } from "#lib/mail.js";
import {
Benutzer,
Enums,
Rechnung,
VerbrauchsausweisWohnen,
} from "#lib/client/prisma.js";
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,
rechnung: Rechnung,
user: Benutzer
) {
const aufnahme = await prisma.aufnahme.findUnique({
where: {
id: ausweis.aufnahme_id,
},
include: {
objekt: true,
bilder: true,
},
});
if (!aufnahme) {
return;
}
const ausweisart = getAusweisartFromUUID(ausweis.uid);
if (!ausweisart) {
return
}
const attachments: Mail.Attachment[] = [];
const id = shortenUID(ausweis.uid)
if (ausweisart != Enums.Ausweisart.BedarfsausweisWohnen) {
const ansichtsausweis = await getAnsichtsausweis(
ausweis,
aufnahme,
aufnahme.objekt,
aufnahme.bilder,
user,
ausweisart
);
if (ansichtsausweis) {
attachments.push(
{
filename: `ID_${id}_Ansichtsausweis.pdf`,
encoding: "binary",
content: Buffer.from(ansichtsausweis),
contentType: "application/pdf",
contentDisposition: "attachment",
},
);
}
}
await transport.sendMail({
attachments,
from: `"IBCornelsen" <info@online-energieausweis.org>`,
to: user.email,
subject: getPaymentSuccessSubject(ausweis, rechnung, ausweisart),
cc: {
address: rechnung.email || "",
name: rechnung.empfaenger || "",
},
bcc: "info@online-energieausweis.org",
html: `<p>Sehr geehrte*r ${user.vorname} ${user.name},</p>
<p>vielen Dank für Ihre Bestellung. Im Anhang finden Sie den Ansichtsausweis als PDF-Datei. Wir werden den Ausweis nun prüfen und Originalausweis und Rechnung nach Prüfung zuschicken.</p>
<p>In der Regel erhalten Sie Ihren Ausweis innerhalb von 24 Stunden. Die Ausstellung erfolgt nach aktuellem GEG und Ihr Ausweis wird beim DIBT registriert.</p>
<br>
<p>Ihre Zahlung konnte nicht durchgeführt werden. Sie erhalten Bankverbindung und Verwendungszweck zusammen mit der Rechnung, sobald ihr Ausweis ausgestellt wurde.</p>
<br>
<br>
<p>
Mit freundlichen Grüßen,
<br>
Dipl.-Ing. Jens Cornelsen
<br>
<br>
<strong>IB Cornelsen</strong>
<br>
Katendeich 5A
<br>
21035 Hamburg
<br>
www.online-energieausweis.org
<br>
<br>
fon 040 · 209339850
<br>
fax 040 · 209339859
</p>`,
});
}