E-Mail Text Registrierung und Speicherung

This commit is contained in:
Jens Cornelsen
2025-03-15 22:27:06 +01:00
parent 215640f57a
commit d9dfa18e28
4 changed files with 397 additions and 26 deletions

View File

@@ -20,18 +20,30 @@ export async function sendRegisterMail(
to: user.email, to: user.email,
subject: `Ihre Registrierung bei IBCornelsen`, subject: `Ihre Registrierung bei IBCornelsen`,
bcc: "info@online-energieausweis.org", bcc: "info@online-energieausweis.org",
text: `Hallo ${user.vorname}, html: `<p>Sehr geehrte*r ${user.vorname} ${user.name},</p>
<p>vielen Dank für Ihre Registrierung bei IBCornelsen. Ihr Benutzerkonto wurde erfolgreich erstellt.<br><br>
vielen Dank für Ihre Registrierung bei IBCornelsen! Ihr Benutzerkonto wurde erfolgreich erstellt.
Um Ihre Registrierung abzuschließen, klicken Sie bitte auf den folgenden Link, um Ihre E-Mail-Adresse zu bestätigen:<br><br>
Um Ihre Registrierung abzuschließen, klicken Sie bitte auf den folgenden Link, um Ihre E-Mail-Adresse zu bestätigen:
https://${BASE_URI}/auth/verify?t=${verificationJwt} <a href="${BASE_URI}/auth/verify?t=${verificationJwt}">E-Mail-Adresse bestätigen</a><br></p>
<p>
Falls Sie diese Registrierung nicht durchgeführt haben, ignorieren Sie bitte diese E-Mail. Bei Fragen oder Problemen steht Ihnen unser Support-Team jederzeit zur Verfügung. Mit freundlichen Grüßen,
<br>
Wir freuen uns, Sie beim IBC willkommen zu heißen! Dipl.-Ing. Jens Cornelsen
<br>
Mit freundlichen Grüßen <br>
Ihr IBCornelsen-Team` <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>`
}); });
} }

View File

@@ -0,0 +1,232 @@
<!-- Section A -->
<div class="bg-white shadow rounded-lg p-6 mb-6">
<h2 class="text-xl font-semibold border-b pb-2 mb-4">
A. Prüfung der Ausweisart
</h2>
<ul class="space-y-2">
<li>
<strong>Anlass:</strong> Verkauf
</li>
<li>
<strong>Gebäudetyp:</strong> Einfamilienhaus
</li>
<li>
<strong>Anzahl Wohnungen:</strong> 1
</li>
<li>
<strong>Sanierungsstatus:</strong> saniert
</li>
<li>
<strong>Baujahr:</strong> 1990
</li>
<li>
<strong>Baujahr Heizung:</strong> 1995
</li>
</ul>
</div>
<!-- Section B -->
<div class="bg-white shadow rounded-lg p-6 mb-6">
<h2 class="text-xl font-semibold border-b pb-2 mb-4">
B. Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller
und Dachgeschoss
</h2>
<ul class="space-y-2">
<li>
<strong>Straße, Hausnummer:</strong> Musterstraße 1
</li>
<li>
<strong>PLZ:</strong> 12345
</li>
<li>
<strong>Ort:</strong> Musterstadt
</li>
<li>
<strong>Wohnfläche m²:</strong> 120
</li>
<li>
<strong>Dachgeschoss:</strong> unbeheizt
</li>
<li>
<strong>Keller:</strong> beheizt
</li>
<li>
<strong>Nutzfläche m²:</strong> 150
</li>
</ul>
</div>
<!-- Section C -->
<div class="bg-white shadow rounded-lg p-6 mb-6">
<h2 class="text-xl font-semibold border-b pb-2 mb-4">
C. Eingabe von 3 zusammenhängenden Verbrauchsjahren
</h2>
<ul class="space-y-2">
<li>
<strong>Verbrauch (02.2022 - 02.2023):</strong> 3000 kWh
</li>
<li>
<strong>Verbrauch (02.2023 - 02.2024):</strong> 3200 kWh
</li>
<li>
<strong>Verbrauch (02.2024 - 02.2025):</strong> 3100 kWh
</li>
<li>
<strong>Heizquelle:</strong> Heizöl EL
</li>
<li>
<strong>Einheit:</strong> Liter
</li>
</ul>
</div>
<!-- Section D -->
<div class="bg-white shadow rounded-lg p-6 mb-6">
<h2 class="text-xl font-semibold border-b pb-2 mb-4">
D. Eingabe Warmwasseranteil und Verwendung von alternativen
Energieversorgungssystemen
</h2>
<ul class="space-y-2">
<li>
<strong>Warmwasser im Verbrauch enthalten:</strong> Ja
</li>
<li>
<strong>% Anteil Warmwasser:</strong> 18%
</li>
<li>
<strong>Zusätzliche Heizquelle:</strong> Nein
</li>
<li>
<strong>Alternative Energieversorgungssysteme:</strong>
Heizung, Warmwasser
</li>
</ul>
</div>
<!-- Section E -->
<div class="bg-white shadow rounded-lg p-6 mb-6">
<h2 class="text-xl font-semibold border-b pb-2 mb-4">
E. Eingabe von Gebäudeteil, Lüftung, Kühlung und Leerstand
</h2>
<ul class="space-y-2">
<li>
<strong>Gebäudeteil:</strong> Gesamtgebäude
</li>
<li>
<strong>Leerstand in %:</strong> 5%
</li>
<li>
<strong>Lüftung durch:</strong> Fensterlüftung
</li>
<li>
<strong>Anlage Kühlung:</strong> nicht vorhanden
</li>
</ul>
</div>
<!-- Section F -->
<div class="bg-white shadow rounded-lg p-6 mb-6">
<h2 class="text-xl font-semibold border-b pb-2 mb-4">
F. Angaben zur Heizungsanlage
</h2>
<ul class="space-y-2">
<li>
<strong>Zentral/Etage:</strong> Ja
</li>
<li>
<strong>Einzelofen:</strong> Nein
</li>
<li>
<strong>Durchlauferhitzer (elektrisch):</strong> Ja
</li>
<li>
<strong>Standardkessel:</strong> Ja
</li>
<li>
<strong>Solarsystem für Warmwasser:</strong> Ja
</li>
<li>
<strong>Wärmepumpe:</strong> Nein
</li>
<li>
<strong>Niedertemperaturkessel:</strong> Nein
</li>
<li>
<strong>Brennwertkessel:</strong> Ja
</li>
<li>
<strong>Warmwasserrohre gedämmt:</strong> Ja
</li>
<li>
<strong>Heizungsrohre gedämmt:</strong> Ja
</li>
<li>
<strong>Zirkulation:</strong> Ja
</li>
</ul>
</div>
<!-- Section G -->
<div class="bg-white shadow rounded-lg p-6 mb-6">
<h2 class="text-xl font-semibold border-b pb-2 mb-4">
G. Angaben zu Fenster, Dachfenster und Türen
</h2>
<ul class="space-y-2">
<li>
<strong>Einfachglas:</strong> Nein
</li>
<li>
<strong>Doppelverglasung:</strong> Ja
</li>
<li>
<strong>Dreifachverglasung:</strong> Nein
</li>
<li>
<strong>Isolierverglasung:</strong> Ja
</li>
<li>
<strong>Alle Fenster dicht:</strong> Ja
</li>
<li>
<strong>Fenster teilweise undicht:</strong> Nein
</li>
<li>
<strong>Rollladenkästen gedämmt, luftdicht:</strong> Ja
</li>
<li>
<strong>Alle Türen dicht:</strong> Ja
</li>
<li>
<strong>Türen teilweise undicht:</strong> Nein
</li>
</ul>
</div>
<!-- Section H -->
<div class="bg-white shadow rounded-lg p-6 mb-6">
<h2 class="text-xl font-semibold border-b pb-2 mb-4">
H. Angaben zur Wärmedämmung
</h2>
<ul class="space-y-2">
<li>
<strong>Außenwand gedämmt:</strong> Ja
</li>
<li>
<strong>Kelleraußenwand gedämmt:</strong> Ja
</li>
<li>
<strong>Kellerdecke gedämmt:</strong> Nein
</li>
<li>
<strong>Dachgeschoss gedämmt:</strong> Ja
</li>
<li>
<strong>Oberste Geschossdecke gedämmt:</strong> Ja
</li>
<li>
<strong>Oberste Geschossdecke min. 12cm gedämmt:</strong>
Ja
</li>
</ul>
</div>

View File

@@ -0,0 +1,111 @@
---
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
import DatenblattVerbrauchsausweisWohnenModule from "#modules/VerbrauchsausweisWohnen/DatenblattVerbrauchsausweisWohnen.svelte";
import { AufnahmeClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
import { createCaller } from "src/astro-typesafe-api-caller";
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants";
import { validateAccessTokenServer } from "#server/lib/validateAccessToken";
import { Enums } from "#lib/server/prisma";
const uid = Astro.url.searchParams.get("uid");
const uid_aufnahme = Astro.url.searchParams.get("aufnahme")
const ausweistyp = Astro.url.searchParams.get("ausweistyp") || Enums.AusweisTyp.Standard;
let ausweis: VerbrauchsausweisWohnenClient = {} as VerbrauchsausweisWohnenClient;
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
let objekt: ObjektClient = {} as ObjektClient;
let bilder: UploadedGebaeudeBild[] = []
const valid = validateAccessTokenServer(Astro);
const caller = createCaller(Astro);
if (uid) {
if (!valid) {
return Astro.redirect(
`/auth/login?redirect=${Astro.url.toString()}`
);
}
try {
ausweis = await caller["verbrauchsausweis-wohnen"]._uid.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid
}
});
aufnahme = await caller.aufnahme._uid.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid: ausweis.uid_aufnahme
}
})
objekt = await caller.objekt._uid.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid: ausweis.uid_objekt
}
})
bilder = await caller.aufnahme._uid.bilder.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid: ausweis.uid_aufnahme
}
})
if (!ausweis) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
);
}
} catch(e) {
return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
);
}
} else if (uid_aufnahme) {
if (!valid) {
return Astro.redirect(
`/auth/login?redirect=${Astro.url.toString()}`
);
}
let { uid_objekt, ...result} = await caller.aufnahme._uid.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid: uid_aufnahme
}
})
aufnahme = result;
objekt = await caller.objekt._uid.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid: uid_objekt
}
})
}
---
<AusweisLayout title="Datenblatt Verbrauchsausweis Wohngebäude">
<DatenblattVerbrauchsausweisWohnenModule client:only {ausweis} {objekt} {aufnahme} {bilder} {ausweistyp} />
</AusweisLayout>

View File

@@ -4,6 +4,7 @@ import { BASE_URI } from "#lib/constants";
import { transport } from "#lib/mail"; import { transport } from "#lib/mail";
import { getPrismaAusweisAdapter } from "#lib/server/ausweis"; import { getPrismaAusweisAdapter } from "#lib/server/ausweis";
import { getCurrentUser } from "#lib/server/user"; import { getCurrentUser } from "#lib/server/user";
import { shortenUID } from "#server/lib/hash.js";
const user = await getCurrentUser(Astro) const user = await getCurrentUser(Astro)
const uid = Astro.url.searchParams.get("uid"); const uid = Astro.url.searchParams.get("uid");
@@ -22,6 +23,8 @@ const ausweis = await adapter.findUnique({
} }
}) })
const id = shortenUID(ausweis.uid);
if (!ausweis) { if (!ausweis) {
return Astro.redirect("/") return Astro.redirect("/")
} }
@@ -29,18 +32,32 @@ if (!ausweis) {
transport.sendMail({ transport.sendMail({
from: `"IBCornelsen" <info@online-energieausweis.org>`, from: `"IBCornelsen" <info@online-energieausweis.org>`,
to: user.email, to: user.email,
subject: `Ihr Ausweis wurde gespeichert - IBCornelsen.`, subject: `Ihr Ausweis wurde gespeichert - IBCornelsen - (ID: ${id})`,
text: `Sehr geehrte/r ${user.name}, html: `<p>Sehr geehrte*r ${user.vorname} ${user.name},</p>
<p>Ihr Energieausweis wurde erfolgreich in Ihrem Konto gespeichert. Sie können ihn jederzeit in Ihrem Kundenbereich abrufen.<br><br>
Ihr Energieausweis wurde erfolgreich in Ihrem Konto gespeichert. Sie können ihn jederzeit in Ihrem Kundenbereich abrufen.
Ihre Vorgänge und Ausweise können Sie in Ihrem Kundenkonto einsehen und bearbeiten:<br><br>
Zum Download oder zur Verwaltung Ihrer Ausweise besuchen Sie bitte:
${BASE_URI}/dashboard <a href="${BASE_URI}/dashboard">zum Kundenkonto</a><br></p>
<p>
Falls Sie Fragen haben, stehen wir Ihnen gerne zur Verfügung. Mit freundlichen Grüßen,
<br>
Mit freundlichen Grüßen Dipl.-Ing. Jens Cornelsen
Ihr IBCornelsen` <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>`
}) })
--- ---
@@ -48,5 +65,4 @@ Ihr IBCornelsen`
<h1>Ihr Energieausweis wurde gespeichert</h1> <h1>Ihr Energieausweis wurde gespeichert</h1>
<p>Ihr Energieausweis wurde erfolgreich in Ihrem Konto gespeichert. Sie können ihn jederzeit in Ihrem Kundenbereich abrufen.</p> <p>Ihr Energieausweis wurde erfolgreich in Ihrem Konto gespeichert. Sie können ihn jederzeit in Ihrem Kundenbereich abrufen.</p>
<a href="/dashboard">👉 Jetzt ansehen</a> <a href="/dashboard">👉 Jetzt ansehen</a>
<p>Falls Sie Fragen haben, steht unser Support-Team Ihnen gerne zur Verfügung.</p>
</Layout> </Layout>