Merge pull request #518 from IBCornelsen/dev

Fix Bedarfsausweis
This commit is contained in:
Jens Cornelsen
2025-04-23 00:12:45 +02:00
committed by GitHub
13 changed files with 162 additions and 91 deletions

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 10 MiB

After

Width:  |  Height:  |  Size: 10 MiB

View File

@@ -443,13 +443,17 @@
<span class="font-bold">Gebäude (Bj {aufnahme.baujahr_gebaeude})</span> mit
{#if aufnahme.flaeche > 0 && aufnahme.flaeche !== null}
{aufnahme.flaeche} m² Wohnfläche
sowie
{/if}
{aufnahme.nutzflaeche} m² energetische Nutzfläche. Als Ausstellgrund wurde {ausweis.ausstellgrund} angegeben.
{#if aufnahme.nutzflaeche === 0}
. Die energetische Nutzfläche wurde nach §82 GEG aus der Wohnfläche ermittelt.
{:else}
sowie {aufnahme.nutzflaeche} m² energetische Nutzfläche.
{/if}
Als Ausstellgrund wurde {ausweis.ausstellgrund} angegeben.
{aufnahme.gebaeudeteil === "Wohnen"
? "Die eingegebenen Daten beziehen sich auf den Wohnteil eines gemischt genutzten Gebäudes."
: "Die eingegebenen Daten beziehen sich auf das gesamte Gebäude."}
{aufnahme.saniert ? "Das Gebäude ist in unsaniertem Zustand." : "Das Gebäude ist in saniertem Zustand."}
{aufnahme.saniert ? "Das Gebäude ist in saniertem Zustand." : "Das Gebäude ist in unsaniertem Zustand."}
</div>
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe}
<div class="text-sm">
@@ -523,7 +527,6 @@
{aufnahme.standard_kessel ? "Standardkessel, " : ""}
{aufnahme.durchlauf_erhitzer ? "Durchlauferhitzer, " : ""}
{aufnahme.solarsystem_warmwasser ? "Solarsystem für Warmwasser, " : ""}
{aufnahme.waermepumpe ? "Wärmepumpe, " : ""}
{aufnahme.brennwert_kessel ? "Brennwertkessel, " : ""}
{aufnahme.standard_kessel ? "Standardkessel, " : ""}
{aufnahme.warmwasser_rohre_gedaemmt ? "Warmwasserrohre gedämmt, " : ""}

View File

@@ -15,10 +15,11 @@
BenutzerClient,
ObjektKomplettClient,
} from "#components/Ausweis/types.js";
import { RechnungSchema } from "src/generated/zod/rechnung.js";
import { Benutzer } from "#lib/server/prisma.js";
export let lightTheme: boolean;
export let benutzer: BenutzerClient;
export let benutzer: Benutzer;
export let besteller: Benutzer;
let id: string;
</script>
@@ -70,14 +71,14 @@
</div>
<div>
<div>
{benutzer.vorname} {benutzer.name}
{besteller.vorname} {besteller.name}
</div>
<div class="text-xs text-gray-500">
Eigentümer oder im Auftrag
</div>
<div class="text-xs text-gray-500">
<!-- Soll für den Aussteller sichtbar sein -->
Telefon {benutzer.telefon}
Telefon {besteller.telefon}
</div>
</div>
</div>

View File

@@ -18,19 +18,19 @@ const { title } = Astro.props;
---
<script>
import { H } from "highlight.run";
// import { H } from "highlight.run";
if (import.meta.env.PROD) {
H.init("1jdkoe52", {
serviceName: "online-energieausweis",
backendUrl: "https://highlight-backend.online-energieausweis.org/public",
tracingOrigins: true,
networkRecording: {
enabled: true,
recordHeadersAndBody: true
}
});
}
// if (import.meta.env.PROD) {
// H.init("1jdkoe52", {
// serviceName: "online-energieausweis",
// backendUrl: "https://highlight-backend.online-energieausweis.org/public",
// tracingOrigins: true,
// networkRecording: {
// enabled: true,
// recordHeadersAndBody: true
// }
// });
// }
window.addEventListener("scroll", () => {
const skala = document.getElementById("skala");

View File

@@ -18,19 +18,19 @@ const { title } = Astro.props;
---
<script>
import { H } from "highlight.run";
// import { H } from "highlight.run";
if (import.meta.env.PROD) {
H.init("1jdkoe52", {
serviceName: "online-energieausweis",
backendUrl: "https://highlight-backend.online-energieausweis.org/public",
tracingOrigins: true,
networkRecording: {
enabled: true,
recordHeadersAndBody: true
}
})
}
// if (import.meta.env.PROD) {
// H.init("1jdkoe52", {
// serviceName: "online-energieausweis",
// backendUrl: "https://highlight-backend.online-energieausweis.org/public",
// tracingOrigins: true,
// networkRecording: {
// enabled: true,
// recordHeadersAndBody: true
// }
// })
// }
</script>

View File

@@ -35,19 +35,19 @@ const schema = JSON.stringify({
---
<script>
import { H } from "highlight.run";
// import { H } from "highlight.run";
if (import.meta.env.PROD) {
H.init("1jdkoe52", {
serviceName: "online-energieausweis",
backendUrl: "https://highlight-backend.online-energieausweis.org/public",
tracingOrigins: true,
networkRecording: {
enabled: true,
recordHeadersAndBody: true
}
})
}
// if (import.meta.env.PROD) {
// H.init("1jdkoe52", {
// serviceName: "online-energieausweis",
// backendUrl: "https://highlight-backend.online-energieausweis.org/public",
// tracingOrigins: true,
// networkRecording: {
// enabled: true,
// recordHeadersAndBody: true
// }
// })
// }
</script>
<!DOCTYPE html>

View File

@@ -3,14 +3,15 @@
import "../style/global.css";
import "../../svelte-dialogs.config.js";
import DashboardSidebar from "../components/Dashboard/DashboardSidebar.svelte";
import { BenutzerClient } from "#components/Ausweis/types";
import { Benutzer } from "#lib/server/prisma";
export interface Props {
title: string;
user: BenutzerClient;
user: Benutzer;
besteller: Benutzer;
}
const { title, user } = Astro.props;
const { title, user, besteller } = Astro.props;
if (!user) {
Astro.redirect("/auth/login", 302);
@@ -45,20 +46,28 @@ let lightTheme = Astro.cookies.get("theme")?.value === "light";
---
<script >
import { H } from "highlight.run";
// import { H } from "highlight.run";
if (import.meta.env.PROD) {
H.init("1jdkoe52", {
serviceName: "online-energieausweis",
backendUrl:
"https://highlight-backend.online-energieausweis.org/public",
tracingOrigins: true,
networkRecording: {
enabled: true,
recordHeadersAndBody: true,
},
});
}
// const user = JSON.parse(document.body.dataset.user);
// if (import.meta.env.PROD) {
// H.init("1jdkoe52", {
// serviceName: "online-energieausweis",
// backendUrl:
// "https://highlight-backend.online-energieausweis.org/public",
// tracingOrigins: true,
// networkRecording: {
// enabled: true,
// recordHeadersAndBody: true,
// }
// });
// if (user) {
// H.identify(user.email, {
// id: user.id
// })
// }
// }
</script>
<html lang="de">
@@ -108,7 +117,7 @@ let lightTheme = Astro.cookies.get("theme")?.value === "light";
</title>
</head>
<body>
<body data-user={JSON.stringify({ id: user.id, email: user.email })}>
<main
class="p-0 grid max-w-[1920px]
xs:grid-cols-[minmax(1fr,1fr)] xs:gap-1 xs:p-0
@@ -121,6 +130,7 @@ let lightTheme = Astro.cookies.get("theme")?.value === "light";
<DashboardSidebar
lightTheme={lightTheme}
benutzer={user}
besteller={besteller}
client:load
/>

View File

@@ -19,19 +19,19 @@ const { title } = Astro.props;
---
<script>
import { H } from "highlight.run";
// import { H } from "highlight.run";
if (import.meta.env.PROD) {
H.init("1jdkoe52", {
serviceName: "online-energieausweis",
backendUrl: "https://highlight-backend.online-energieausweis.org/public",
tracingOrigins: true,
networkRecording: {
enabled: true,
recordHeadersAndBody: true
}
})
}
// if (import.meta.env.PROD) {
// H.init("1jdkoe52", {
// serviceName: "online-energieausweis",
// backendUrl: "https://highlight-backend.online-energieausweis.org/public",
// tracingOrigins: true,
// networkRecording: {
// enabled: true,
// recordHeadersAndBody: true
// }
// })
// }
/*
window.addEventListener("scroll", (event) => {

View File

@@ -167,21 +167,21 @@
><GebaeudeDaten bind:aufnahme bind:objekt {ausweisart} /></Bereich
>
<!-- C - Berechnungshilfe und Tabelle der Hüllflächen, U-Werte und Gebäudevolumen -->
<!-- C - Berechnungshilfe und Tabelle der Hüllflächen, U-Werte und Gebäudevolumen
<Bereich
bereich="C"
title="Berechnungshilfe und Tabelle der Hüllflächen, U-Werte und Gebäudevolumen"
><GebaeudeVolumen bind:ausweis /></Bereich
>
> -->
<!-- D - Eingabe der Fensterflächen und Konstruktion von Dach, Wänden und Boden -->
<!-- D - Eingabe der Fensterflächen und Konstruktion von Dach, Wänden und Boden
<Bereich
bereich="D"
title="Eingabe der Fensterflächen und Konstruktion von Dach, Wänden und Boden"
><Fensterflaechen bind:ausweis /></Bereich
>
> -->
<!-- E - Angabe zu Lüftung und Kühlung -->
@@ -190,7 +190,7 @@
>
<!-- F Angaben zur Heizungsanlage -->
<!-- <Bereich bereich="D" title="Angaben zur Heizunganlage"
<Bereich bereich="D" title="Angaben zur Heizunganlage"
><SanierungszustandHeizungsanlage
bind:images={bilder}
bind:objekt

View File

@@ -56,7 +56,7 @@
{#if ausweis.aufnahme.bilder.length > 0}
<Carousel perPage={1}>
{#each ausweis.aufnahme.bilder as bild, i (i)}
<img src="/bilder/{bild.id}.jpg" alt={bild.kategorie} class="max-h-[15vh] h-full w-full object-contain">
<img src="/bilder/{bild.id}.jpg" alt={bild.kategorie} loading="lazy" class="max-h-[15vh] h-full w-full object-contain">
{/each}
<span slot="left-control" class="p-2.5 bg-opacity-50 bg-white block rounded-full"><ChevronLeft size={24}></ChevronLeft></span>
<span slot="right-control" class="p-2.5 bg-opacity-50 bg-white block rounded-full"><ChevronRight size={24}></ChevronRight></span>

View File

@@ -1,8 +1,9 @@
import { UUidWithPrefix } from "#components/Ausweis/types.js";
import { transport } from "#lib/mail.js";
import { adminMiddleware } from "#lib/middleware/authorization.js";
import { mollieClient } from "#lib/mollie.js";
import { getPrismaAusweisAdapter } from "#lib/server/ausweis.js";
import { Prisma, prisma } from "#lib/server/prisma.js";
import { Benutzer, Prisma, prisma } from "#lib/server/prisma.js";
import { RefundStatus } from "@mollie/api-client";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { z } from "zod";
@@ -35,6 +36,12 @@ export const PUT = defineApiRoute({
})
}
const user = await prisma.benutzer.findUnique({
where: {
id: ausweis.benutzer_id as string
}
}) as Benutzer;
const response = await adapter.findUnique({
where: {
id: input.ausweis_id
@@ -107,5 +114,38 @@ export const PUT = defineApiRoute({
})
}
}
await transport.sendMail({
from: `"IBCornelsen" <info@online-energieausweis.org>`,
to: rechnung.email || user.email,
bcc: "info@online-energieausweis.org",
subject: `Stornierung des Energieausweises vom Ingenieurbüro Cornelsen (ID: ${ausweis.id})`,
html: `<p>Sehr geehrte*r ${user.vorname} ${user.name},</p>
<p>Ihr Energieausweis wurde soeben storniert.
<br>
<p>
<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>`
});
},
})

View File

@@ -36,6 +36,7 @@ if (user.rolle === Enums.BenutzerRolle.USER) {
},
include: {
rechnung: true,
benutzer: true,
aufnahme: {
include: {
bilder: true,
@@ -53,6 +54,7 @@ if (user.rolle === Enums.BenutzerRolle.USER) {
},
include: {
rechnung: true,
benutzer: true,
aufnahme: {
include: {
bilder: true,
@@ -70,7 +72,7 @@ if (!ausweis) {
---
<UserLayout title="Objekte" {user}>
<UserLayout title="Objekte" {user} besteller={ausweis.benutzer}>
<DashboardAufnahmeModule
{ausweis}
benutzer={user}

View File

@@ -54,3 +54,5 @@ if (!result) {
return Astro.redirect(`/dashboard/objekte/${result[0].id}?p=${page}`)
---
<script></script>