Ansichtsausweis und Datenblatt
This commit is contained in:
28
Makefile
28
Makefile
@@ -1,9 +1,9 @@
|
||||
.PHONY: dev database api online-energieausweis all prod bun-install-database bun-install-api
|
||||
.PHONY: dev database online-energieausweis all prod bun-install-database # api bun-install-api
|
||||
|
||||
online-energieausweis:
|
||||
bun run dev --host
|
||||
|
||||
dev: online-energieausweis api database
|
||||
dev: database online-energieausweis # api
|
||||
|
||||
database:
|
||||
$(MAKE) -C ../database dev
|
||||
@@ -13,19 +13,19 @@ bun-install-database:
|
||||
bun link
|
||||
bun install
|
||||
|
||||
bun-install-api: bun-install-database
|
||||
cd ../api
|
||||
bun install
|
||||
bun link @ibcornelsen/database
|
||||
# bun-install-api: bun-install-database
|
||||
# cd ../api
|
||||
# bun install
|
||||
# bun link @ibcornelsen/database
|
||||
|
||||
api:
|
||||
$(MAKE) -C ../api dev
|
||||
# api:
|
||||
# $(MAKE) -C ../api dev
|
||||
|
||||
all:
|
||||
mkdir -p ~/logs
|
||||
bun run dev 2>&1 | tee ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log
|
||||
|
||||
prod: bun-install-api bun-install-database
|
||||
prod: bun-install-database # bun-install-api
|
||||
mkdir -p ~/logs
|
||||
mkdir -p ~/persistent/online-energieausweis
|
||||
|
||||
@@ -37,11 +37,11 @@ prod: bun-install-api bun-install-database
|
||||
fi
|
||||
|
||||
# Auch die API sollte bereits laufen
|
||||
@if [ $$(pm2 pid api) -eq "0" ]; then \
|
||||
cd ../api; \
|
||||
$(MAKE) prod; \
|
||||
cd ../online-energieausweis; \
|
||||
fi
|
||||
# @if [ $$(pm2 pid api) -eq "0" ]; then \
|
||||
# cd ../api; \
|
||||
# $(MAKE) prod; \
|
||||
# cd ../online-energieausweis; \
|
||||
# fi
|
||||
|
||||
- rm -f ~/online-energieausweis/.env;
|
||||
- touch ~/online-energieausweis/.env;
|
||||
|
||||
3
bun.lock
3
bun.lock
@@ -8,7 +8,6 @@
|
||||
"@astrojs/node": "^8.3.4",
|
||||
"@astrojs/svelte": "^2.2.0",
|
||||
"@astrojs/tailwind": "^3.1.3",
|
||||
"@ibcornelsen/api": "link:@ibcornelsen/api",
|
||||
"@ibcornelsen/database": "link:@ibcornelsen/database",
|
||||
"@ibcornelsen/ui": "^0.0.2",
|
||||
"@mollie/api-client": "^4.1.0",
|
||||
@@ -255,8 +254,6 @@
|
||||
|
||||
"@humanwhocodes/object-schema": ["@humanwhocodes/object-schema@1.2.1", "", {}, "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA=="],
|
||||
|
||||
"@ibcornelsen/api": ["@ibcornelsen/api@link:@ibcornelsen/api", {}],
|
||||
|
||||
"@ibcornelsen/database": ["@ibcornelsen/database@link:@ibcornelsen/database", {}],
|
||||
|
||||
"@ibcornelsen/ui": ["@ibcornelsen/ui@0.0.2", "", { "dependencies": { "@astrojs/svelte": "^2.1.1", "cookiejs": "^2.1.2", "knex": "^2.4.2", "moment": "^2.29.4", "svelte": "^3.54.0", "svelte-preprocess": "^5.0.1", "tailwindcss": "^3.0.24", "uuid": "^9.0.0", "zod": "^3.21.4" } }, "sha512-TF29f0uY6MqxQszEySKRI5RJa1FmHCqaY5SjcIJjbI/9MjUL3tB/u9m+o7t/SpzPRNT419/HMdXSo7uOATX2Aw=="],
|
||||
|
||||
@@ -14,7 +14,7 @@ export default defineConfig({
|
||||
setupNodeEvents(on, config) {
|
||||
on("file:preprocessor", vitePreprocessor({
|
||||
optimizeDeps: {
|
||||
exclude: ["@ibcornelsen/api", "@ibcornelsen/database"]
|
||||
exclude: ["@ibcornelsen/database"]
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
|
||||
@@ -13,7 +13,7 @@ services:
|
||||
- ./:/online-energieausweis
|
||||
- ./node_modules/@ibcornelsen/ui:/online-energieausweis/node_modules/@ibcornelsen/ui
|
||||
- ./node_modules/@ibcornelsen/database:/online-energieausweis/node_modules/@ibcornelsen/database
|
||||
- ./node_modules/@ibcornelsen/api:/online-energieausweis/node_modules/@ibcornelsen/api
|
||||
# - ./node_modules/@ibcornelsen/api:/online-energieausweis/node_modules/@ibcornelsen/api
|
||||
- ./node_modules/radix-svelte-icons:/online-energieausweis/node_modules/radix-svelte-icons
|
||||
- ../api/persistent:/persistent
|
||||
ibcornelsen-api:
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
"@astrojs/node": "^8.3.4",
|
||||
"@astrojs/svelte": "^2.2.0",
|
||||
"@astrojs/tailwind": "^3.1.3",
|
||||
"@ibcornelsen/api": "link:@ibcornelsen/api",
|
||||
"@ibcornelsen/database": "link:@ibcornelsen/database",
|
||||
"@ibcornelsen/ui": "^0.0.2",
|
||||
"@mollie/api-client": "^4.1.0",
|
||||
|
||||
@@ -5,8 +5,8 @@ export const createCaller = createCallerFactory({
|
||||
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
|
||||
"aufnahme/[uid]": await import("../src/pages/api/aufnahme/[uid].ts"),
|
||||
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
|
||||
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
||||
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
|
||||
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
||||
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
|
||||
"auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"),
|
||||
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
|
||||
@@ -17,9 +17,9 @@ export const createCaller = createCallerFactory({
|
||||
"user/self": await import("../src/pages/api/user/self.ts"),
|
||||
"verbrauchsausweis-gewerbe/[uid]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[uid].ts"),
|
||||
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
|
||||
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
|
||||
"verbrauchsausweis-wohnen/[uid]": await import("../src/pages/api/verbrauchsausweis-wohnen/[uid].ts"),
|
||||
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
|
||||
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
|
||||
"objekt/[uid]/bilder": await import("../src/pages/api/objekt/[uid]/bilder.ts"),
|
||||
"objekt/[uid]": await import("../src/pages/api/objekt/[uid]/index.ts"),
|
||||
})
|
||||
@@ -1,13 +1,19 @@
|
||||
<script lang="ts">
|
||||
import { Buffer } from "buffer";
|
||||
import { VerbrauchsausweisWohnenClient } from "./Ausweis/types";
|
||||
import { AufnahmeClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "./Ausweis/types.js";
|
||||
|
||||
export let ausweis: VerbrauchsausweisWohnenClient;
|
||||
export let objekt: ObjektClient;
|
||||
export let aufnahme: AufnahmeClient;
|
||||
export let bilder: UploadedGebaeudeBild[];
|
||||
|
||||
$: base64 = Buffer.from(JSON.stringify(ausweis), "utf-8").toString("base64")
|
||||
$: base64Ausweis = Buffer.from(JSON.stringify(ausweis), "utf-8").toString("base64")
|
||||
$: base64Aufnahme = Buffer.from(JSON.stringify(aufnahme), "utf-8").toString("base64")
|
||||
$: base64Objekt = Buffer.from(JSON.stringify(objekt), "utf-8").toString("base64")
|
||||
$: base64Bilder = Buffer.from(JSON.stringify(bilder), "utf-8").toString("base64")
|
||||
</script>
|
||||
|
||||
<a class="border-2 rounded-lg w-[30%] bg-white text-center hover:shadow-md no-underline p-6 cursor-pointer" target="_blank" href="/pdf/ansichtsausweis?base64={base64}">
|
||||
<a class="border-2 rounded-lg w-[30%] bg-white text-center hover:shadow-md no-underline p-6 cursor-pointer" target="_blank" href="/pdf/ansichtsausweis?ausweis={base64Ausweis}&objekt=${base64Objekt}&aufnahme={base64Aufnahme}&bilder={base64Bilder}">
|
||||
<img src="/images/ausweis.webp" alt="Ausweis" />
|
||||
<span class="text-black font-medium text-lg">Ansichtsausweis</span>
|
||||
</a>
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
} from "@ibcornelsen/database/client";
|
||||
|
||||
import {
|
||||
AufnahmeClient,
|
||||
BedarfsausweisWohnenClient,
|
||||
ObjektClient,
|
||||
UploadedGebaeudeBild,
|
||||
@@ -17,6 +18,7 @@
|
||||
} from "./types.js";
|
||||
|
||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient;
|
||||
export let aufnahme: AufnahmeClient;
|
||||
export let objekt: ObjektClient;
|
||||
export let images: UploadedGebaeudeBild[] = [];
|
||||
</script>
|
||||
@@ -58,8 +60,8 @@
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row gap-4 mt-4">
|
||||
<AnsichtsausweisButton {ausweis} />
|
||||
<DatenblattButton {ausweis} />
|
||||
<AnsichtsausweisButton {ausweis} {aufnahme} {objekt} bilder={images} />
|
||||
<DatenblattButton {ausweis} {aufnahme} {objekt} bilder={images} />
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -54,13 +54,7 @@
|
||||
let translation_2 = 0;
|
||||
$: {
|
||||
(async () => {
|
||||
const result = await endEnergieVerbrauchVerbrauchsausweis_2016({
|
||||
...ausweis,
|
||||
aufnahme: {
|
||||
...aufnahme,
|
||||
objekt: objekt,
|
||||
},
|
||||
});
|
||||
const result = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt);
|
||||
|
||||
if (!result) {
|
||||
return;
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
<!-- TODO: Metrics für den Fortschritt festlegen -->
|
||||
<span class="text-sm font-semibold text-base-content">{progress}%</span>
|
||||
</div>
|
||||
{#await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis)}
|
||||
{#await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt)}
|
||||
|
||||
{:then calculations}
|
||||
<div class="flex flex-col gap-2">
|
||||
|
||||
@@ -1,13 +1,19 @@
|
||||
<script lang="ts">
|
||||
import { Buffer } from "buffer";
|
||||
import { VerbrauchsausweisWohnenClient } from "./Ausweis/types";
|
||||
import { AufnahmeClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "./Ausweis/types.js";
|
||||
|
||||
export let ausweis: VerbrauchsausweisWohnenClient;
|
||||
export let objekt: ObjektClient;
|
||||
export let aufnahme: AufnahmeClient;
|
||||
export let bilder: UploadedGebaeudeBild[];
|
||||
|
||||
$: base64 = Buffer.from(JSON.stringify(ausweis), "utf-8").toString("base64");
|
||||
$: base64Ausweis = Buffer.from(JSON.stringify(ausweis), "utf-8").toString("base64")
|
||||
$: base64Aufnahme = Buffer.from(JSON.stringify(aufnahme), "utf-8").toString("base64")
|
||||
$: base64Objekt = Buffer.from(JSON.stringify(objekt), "utf-8").toString("base64")
|
||||
$: base64Bilder = Buffer.from(JSON.stringify(bilder), "utf-8").toString("base64")
|
||||
</script>
|
||||
|
||||
<a class="border-2 rounded-lg w-[30%] bg-white text-center hover:shadow-md no-underline p-6 cursor-pointer" target="_blank" href="/pdf/datenblatt?base64={base64}">
|
||||
<a class="border-2 rounded-lg w-[30%] bg-white text-center hover:shadow-md no-underline p-6 cursor-pointer" target="_blank" href="/pdf/datenblatt?ausweis={base64Ausweis}&objekt=${base64Objekt}&aufnahme={base64Aufnahme}&bilder={base64Bilder}">
|
||||
<img src="/images/datenblatt.webp" alt="Datenblatt" />
|
||||
<span class="text-black font-medium text-lg">Datenblatt</span>
|
||||
</a>
|
||||
@@ -3,7 +3,7 @@ import { AuditType, hidden } from "./hidden.js";
|
||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.js";
|
||||
import { getKlimafaktoren } from "#lib/Klimafaktoren.js";
|
||||
|
||||
export async function auditEndEnergie(ausweis: VerbrauchsausweisWohnenClient, gebaeude: ObjektClient, aufnahme: AufnahmeClient): Promise<boolean> {
|
||||
export async function auditEndEnergie(ausweis: VerbrauchsausweisWohnenClient, objekt: ObjektClient, aufnahme: AufnahmeClient): Promise<boolean> {
|
||||
if (hidden.has(AuditType.END_ENERGIE)) {
|
||||
return false;
|
||||
}
|
||||
@@ -11,9 +11,9 @@ export async function auditEndEnergie(ausweis: VerbrauchsausweisWohnenClient, ge
|
||||
if (aufnahme){
|
||||
if (aufnahme.flaeche && ausweis.verbrauch_1 && ausweis.verbrauch_2 && ausweis.verbrauch_3) {
|
||||
try {
|
||||
const response = await getKlimafaktoren(ausweis.startdatum, gebaeude.plz);
|
||||
const response = await getKlimafaktoren(ausweis.startdatum, objekt.plz);
|
||||
// Alle Klimfaktoren konnten abgefragt werden.
|
||||
const eevva = await endEnergieVerbrauchVerbrauchsausweis_2016({...ausweis, aufnahme: {...aufnahme, objekt: gebaeude}});
|
||||
const eevva = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt);
|
||||
if (eevva){
|
||||
if (eevva?.endEnergieVerbrauchGesamt <= 45 || eevva?.endEnergieVerbrauchGesamt >= 500) {
|
||||
return true;
|
||||
|
||||
@@ -1,33 +1,32 @@
|
||||
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
||||
import { AufnahmeClient, ObjektClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
||||
import { getKlimafaktoren } from "#lib/Klimafaktoren.js";
|
||||
import { getHeizwertfaktor } from "#lib/server/Heizwertfaktor.js";
|
||||
import { Enums } from "@ibcornelsen/database/client";
|
||||
import moment from "moment";
|
||||
|
||||
export function energetischeNutzflaecheVerbrauchsausweisWohnen_2016(
|
||||
ausweis: VerbrauchsausweisWohnenClient
|
||||
ausweis: VerbrauchsausweisWohnenClient,
|
||||
aufnahme: AufnahmeClient
|
||||
): number {
|
||||
if (!ausweis.aufnahme.objekt) {
|
||||
return 0
|
||||
}
|
||||
|
||||
let faktorKeller = 1.2;
|
||||
// Falls das Gebäude einen Keller besitzt der Beheizt ist erhöhen wir die Nutzfläche um 15%
|
||||
if (ausweis.aufnahme.keller == Enums.Heizungsstatus.BEHEIZT && (ausweis.aufnahme.einheiten || 1) <= 2) {
|
||||
if (aufnahme.keller == Enums.Heizungsstatus.BEHEIZT && (aufnahme.einheiten || 1) <= 2) {
|
||||
faktorKeller = 1.35;
|
||||
}
|
||||
|
||||
if ((ausweis.aufnahme.nutzflaeche || 0) > 0) {
|
||||
return ausweis.aufnahme.nutzflaeche || 0;
|
||||
if ((aufnahme.nutzflaeche || 0) > 0) {
|
||||
return aufnahme.nutzflaeche || 0;
|
||||
} else {
|
||||
return (ausweis.aufnahme.flaeche || 0) * faktorKeller;
|
||||
return (aufnahme.flaeche || 0) * faktorKeller;
|
||||
}
|
||||
}
|
||||
|
||||
export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
||||
ausweis: VerbrauchsausweisWohnenClient
|
||||
ausweis: VerbrauchsausweisWohnenClient,
|
||||
aufnahme: AufnahmeClient,
|
||||
objekt: ObjektClient
|
||||
) {
|
||||
if (!ausweis.aufnahme || !ausweis.aufnahme.objekt) {
|
||||
if (!aufnahme || !objekt || !ausweis) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -50,7 +49,7 @@ export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
||||
}];
|
||||
|
||||
try {
|
||||
const response = await getKlimafaktoren(ausweis.startdatum, ausweis.aufnahme.objekt.plz)
|
||||
const response = await getKlimafaktoren(ausweis.startdatum, objekt.plz)
|
||||
|
||||
if (response) {
|
||||
klimafaktoren = response
|
||||
@@ -65,16 +64,16 @@ export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
||||
// Endenergieverbrauch
|
||||
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
|
||||
let brennstoff_1 = getHeizwertfaktor(
|
||||
ausweis.aufnahme.brennstoff_1 as string,
|
||||
aufnahme.brennstoff_1 as string,
|
||||
ausweis.einheit_1 as string
|
||||
);
|
||||
let brennstoff_2 = getHeizwertfaktor(
|
||||
ausweis.aufnahme.brennstoff_2 as string,
|
||||
aufnahme.brennstoff_2 as string,
|
||||
ausweis.einheit_2 as string
|
||||
);
|
||||
|
||||
const energetischeNutzflaeche =
|
||||
energetischeNutzflaecheVerbrauchsausweisWohnen_2016(ausweis);
|
||||
energetischeNutzflaecheVerbrauchsausweisWohnen_2016(ausweis, aufnahme);
|
||||
|
||||
let energieVerbrauchGesamt_1 =
|
||||
((ausweis.verbrauch_1 || 0) +
|
||||
@@ -91,10 +90,10 @@ export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
||||
let energieVerbrauchWarmwasser_2 = 0;
|
||||
let leerstandsZuschlagWarmwasser = 0;
|
||||
// Leerstand wird in Prozent angegeben, muss hier aber in eine Zahl zwischen 0 und 1 umgerechnet werden.
|
||||
let leerstand = (ausweis.aufnahme.leerstand || 0) / 100;
|
||||
let leerstand = (aufnahme.leerstand || 0) / 100;
|
||||
|
||||
if (ausweis.warmwasser_enthalten && ausweis.warmwasser_anteil_bekannt) {
|
||||
if (ausweis.aufnahme.solarsystem_warmwasser) {
|
||||
if (aufnahme.solarsystem_warmwasser) {
|
||||
// Wenn Warmwasser enthalten und Anteil bekannt und Solarsystem
|
||||
energieVerbrauchWarmwasser_1 =
|
||||
energieVerbrauchGesamt_1 *
|
||||
@@ -117,7 +116,7 @@ export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
||||
leerstand *
|
||||
(energieVerbrauchWarmwasser_1 + energieVerbrauchWarmwasser_2);
|
||||
} else {
|
||||
if (ausweis.aufnahme.solarsystem_warmwasser) {
|
||||
if (aufnahme.solarsystem_warmwasser) {
|
||||
// Wenn Warmwasser Anteil unbekannt und Solarsystem
|
||||
energieVerbrauchWarmwasser_1 = energetischeNutzflaeche * 12 * 3;
|
||||
energieVerbrauchWarmwasser_2 = 0;
|
||||
@@ -189,7 +188,7 @@ export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
||||
let primaerfaktorww = 0;
|
||||
let primaerfaktorww_1 = 0;
|
||||
|
||||
if (!ausweis.warmwasser_enthalten && ausweis.aufnahme.durchlauf_erhitzer) {
|
||||
if (!ausweis.warmwasser_enthalten && aufnahme.durchlauf_erhitzer) {
|
||||
primaerfaktorww = 1.8;
|
||||
primaerfaktorww_1 = 1.8;
|
||||
} else {
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import type { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database/client";
|
||||
import type { VerbrauchsausweisWohnen } from "@ibcornelsen/database/client";
|
||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "./VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.js";
|
||||
import { AufnahmeClient, ObjektClient } from "#components/Ausweis/types.js";
|
||||
|
||||
export async function endEnergieVerbrauch(ausweis: VerbrauchsausweisWohnen & { objekt: GebaeudeStammdaten }): Promise<number> {
|
||||
const result = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis);
|
||||
export async function endEnergieVerbrauch(ausweis: VerbrauchsausweisWohnen, aufnahme: AufnahmeClient, objekt: ObjektClient): Promise<number> {
|
||||
const result = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt);
|
||||
|
||||
if (!result) {
|
||||
return 0;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
||||
import { AufnahmeClient, BenutzerClient, ObjektClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.js";
|
||||
import * as fs from "fs"
|
||||
import { PDFDocument, rgb, StandardFonts, TextAlignment } from "pdf-lib";
|
||||
@@ -9,14 +9,14 @@ import { Heizungsstatus } from "@ibcornelsen/database/server";
|
||||
|
||||
/* -------------------------------- Pdf Tools ------------------------------- */
|
||||
|
||||
export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohnenClient) {
|
||||
export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, benutzer: BenutzerClient) {
|
||||
const VerbrauchsausweisWohnenGEG2024PDF = fs.readFileSync(new URL("./templates/Leerseite_Datenblatt.pdf", import.meta.url), "base64");
|
||||
const pdf = await PDFDocument.load(VerbrauchsausweisWohnenGEG2024PDF)
|
||||
const pages = pdf.getPages()
|
||||
|
||||
// const template = VerbrauchsausweisWohnen2016Template as Template;
|
||||
|
||||
const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis);
|
||||
const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt);
|
||||
|
||||
const height = pages[0].getHeight()
|
||||
const width = pages[0].getWidth()
|
||||
@@ -30,7 +30,7 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau
|
||||
const marginX = 60;
|
||||
const marginY = 150;
|
||||
|
||||
const benutzer: typeof ausweis.benutzer = ausweis.benutzer || {
|
||||
benutzer = benutzer || {
|
||||
vorname: "Max",
|
||||
name: "Mustermann",
|
||||
adresse: "Musterstraße 123",
|
||||
@@ -55,7 +55,7 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau
|
||||
<text size="12">Ausweis ID: ${ausweis.uid}</text>
|
||||
</flex>
|
||||
<text size="12" lineHeight="14" font="bold" marginTop="10">Gebäudedaten</text>
|
||||
<text size="12" lineHeight="14">Adresse: ${ausweis.aufnahme.objekt.adresse}, ${ausweis.aufnahme.objekt.plz} ${ausweis.aufnahme.objekt.ort}</text>
|
||||
<text size="12" lineHeight="14">Adresse: ${objekt.adresse}, ${objekt.plz} ${objekt.ort}</text>
|
||||
|
||||
<flex direction="row" justify="space-between" width="${innerWidth}" marginTop="25">
|
||||
<flex direction="row" gap="5" align="center">
|
||||
@@ -80,29 +80,29 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau
|
||||
<flex direction="column" width="${(innerWidth) / 2 - 7.5}">
|
||||
<flex direction="row" align="center" justify="space-between" width="${(innerWidth) / 2 - 7.5}">
|
||||
<text size="12" lineHeight="14">Gebäudetyp:</text>
|
||||
<text size="12" lineHeight="14">${ausweis.aufnahme.gebaeudetyp}</text>
|
||||
<text size="12" lineHeight="14">${aufnahme.gebaeudetyp}</text>
|
||||
</flex>
|
||||
<flex direction="row" align="center" justify="space-between" width="${(innerWidth) / 2 - 7.5}">
|
||||
<text size="12" lineHeight="14">Wohnfläche:</text>
|
||||
<text size="12" lineHeight="14">DIN Wohnfläche innen ${ausweis.aufnahme.flaeche} m²</text>
|
||||
<text size="12" lineHeight="14">DIN Wohnfläche innen ${aufnahme.flaeche} m²</text>
|
||||
</flex>
|
||||
<flex direction="row" align="center" justify="space-between" width="${(innerWidth) / 2 - 7.5}">
|
||||
<text size="12" lineHeight="14">Leerstand:</text>
|
||||
<text size="12" lineHeight="14">${ausweis.aufnahme.leerstand || 0}%</text>
|
||||
<text size="12" lineHeight="14">${aufnahme.leerstand || 0}%</text>
|
||||
</flex>
|
||||
<flex direction="row" align="center" justify="space-between" width="${(innerWidth) / 2 - 7.5}">
|
||||
<text size="12" lineHeight="14">Wohnungen:</text>
|
||||
<text size="12" lineHeight="14">${ausweis.aufnahme.einheiten}</text>
|
||||
<text size="12" lineHeight="14">${aufnahme.einheiten}</text>
|
||||
</flex>
|
||||
</flex>
|
||||
<flex direction="column" width="${(innerWidth) / 2 - 7.5}">
|
||||
<flex direction="row" align="center" justify="space-between" width="${(innerWidth) / 2 - 7.5}">
|
||||
<text size="12" lineHeight="14">Dachgeschoss:</text>
|
||||
<text size="12" lineHeight="14">${translateHeizungsstatus[ausweis.aufnahme.dachgeschoss || "NICHT_VORHANDEN"]}</text>
|
||||
<text size="12" lineHeight="14">${translateHeizungsstatus[aufnahme.dachgeschoss || "NICHT_VORHANDEN"]}</text>
|
||||
</flex>
|
||||
<flex direction="row" align="center" justify="space-between" width="${(innerWidth) / 2 - 7.5}">
|
||||
<text size="12" lineHeight="14">Keller:</text>
|
||||
<text size="12" lineHeight="14">${translateHeizungsstatus[ausweis.aufnahme.keller || "NICHT_VORHANDEN"]}</text>
|
||||
<text size="12" lineHeight="14">${translateHeizungsstatus[aufnahme.keller || "NICHT_VORHANDEN"]}</text>
|
||||
</flex>
|
||||
</flex>
|
||||
</flex>
|
||||
@@ -126,14 +126,14 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau
|
||||
</flex>
|
||||
<flex direction="column" gap="4">
|
||||
<text></text>
|
||||
<text size="12" font="bold">${ausweis.aufnahme.brennstoff_1}</text>
|
||||
<text size="12" font="bold">${aufnahme.brennstoff_1}</text>
|
||||
<text size="12">${ausweis.verbrauch_1} ${ausweis.einheit_1}</text>
|
||||
<text size="12">${ausweis.verbrauch_2} ${ausweis.einheit_1}</text>
|
||||
<text size="12">${ausweis.verbrauch_3} ${ausweis.einheit_1}</text>
|
||||
</flex>
|
||||
<flex direction="column" gap="4">
|
||||
<text size="12">zusätzliche Heizquelle</text>
|
||||
<text size="12" font="bold">${ausweis.aufnahme.brennstoff_2 || ""}</text>
|
||||
<text size="12" font="bold">${aufnahme.brennstoff_2 || ""}</text>
|
||||
<text size="12">${ausweis.verbrauch_4 || ""} ${ausweis.einheit_2 || ""}</text>
|
||||
<text size="12">${ausweis.verbrauch_5 || ""} ${ausweis.einheit_2 || ""}</text>
|
||||
<text size="12">${ausweis.verbrauch_6 || ""} ${ausweis.einheit_2 || ""}</text>
|
||||
@@ -152,55 +152,55 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau
|
||||
<flex direction="row" justify="space-between" width="${pages[1].getWidth() - 120}" marginTop="15">
|
||||
<flex direction="column" gap="4">
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.zentralheizung || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.zentralheizung || false}"></checkbox>
|
||||
<text size="12">Zentralheizung</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.einzelofen || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.einzelofen || false}"></checkbox>
|
||||
<text size="12">Einzelöfen</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.durchlauf_erhitzer || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.durchlauf_erhitzer || false}"></checkbox>
|
||||
<text size="12">Durchlauferhitzer</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.standard_kessel || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.standard_kessel || false}"></checkbox>
|
||||
<text size="12">Standardkessel</text>
|
||||
</flex>
|
||||
</flex>
|
||||
<flex direction="column" gap="4">
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.solarsystem_warmwasser || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.solarsystem_warmwasser || false}"></checkbox>
|
||||
<text size="12">Solarsystem für Warmwasser</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.waermepumpe || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.waermepumpe || false}"></checkbox>
|
||||
<text size="12">Wärmepumpe</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.niedertemperatur_kessel || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.niedertemperatur_kessel || false}"></checkbox>
|
||||
<text size="12">Niedertemperaturkessel</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.brennwert_kessel || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.brennwert_kessel || false}"></checkbox>
|
||||
<text size="12">Brennwertkessel</text>
|
||||
</flex>
|
||||
</flex>
|
||||
<flex direction="column" gap="4">
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.warmwasser_rohre_gedaemmt || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.warmwasser_rohre_gedaemmt || false}"></checkbox>
|
||||
<text size="12">Warmwasserrohre gedämmt</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.heizungsrohre_gedaemmt || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.heizungsrohre_gedaemmt || false}"></checkbox>
|
||||
<text size="12">Heizungsrohre gedämmt</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.zirkulation || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.zirkulation || false}"></checkbox>
|
||||
<text size="12">Zirkulation</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.raum_temperatur_regler || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.raum_temperatur_regler || false}"></checkbox>
|
||||
<text size="12">Raumtemperaturregelung</text>
|
||||
</flex>
|
||||
</flex>
|
||||
@@ -209,15 +209,15 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau
|
||||
<flex direction="row" justify="space-between" width="${pages[1].getWidth() - 120}" marginTop="15">
|
||||
<flex direction="column" gap="4">
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.einfach_verglasung || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.einfach_verglasung || false}"></checkbox>
|
||||
<text size="12">Einfachglas</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.doppel_verglasung || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.doppel_verglasung || false}"></checkbox>
|
||||
<text size="12">Doppelverglasung</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.isolier_verglasung || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.isolier_verglasung || false}"></checkbox>
|
||||
<text size="12">Isolierverglasung</text>
|
||||
</flex>
|
||||
</flex>
|
||||
@@ -227,25 +227,25 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau
|
||||
<text size="12">Passivhausfenster</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.fenster_dicht || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.fenster_dicht || false}"></checkbox>
|
||||
<text size="12">Alle Fenster dicht</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.fenster_teilweise_undicht || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.fenster_teilweise_undicht || false}"></checkbox>
|
||||
<text size="12">Fenster teilweise undicht</text>
|
||||
</flex>
|
||||
</flex>
|
||||
<flex direction="column" gap="4">
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.tueren_undicht || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.tueren_undicht || false}"></checkbox>
|
||||
<text size="12">Türen teilweise undicht</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.tueren_dicht || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.tueren_dicht || false}"></checkbox>
|
||||
<text size="12">Alle Türen dicht</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.rolllaeden_kaesten_gedaemmt || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.rolllaeden_kaesten_gedaemmt || false}"></checkbox>
|
||||
<text size="12">Rollladenkästen gedämmt</text>
|
||||
</flex>
|
||||
</flex>
|
||||
@@ -254,33 +254,33 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau
|
||||
<flex direction="row" justify="space-between" width="${pages[1].getWidth() - 120}" marginTop="15">
|
||||
<flex direction="column" gap="4">
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.keller_wand_gedaemmt || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.keller_wand_gedaemmt || false}"></checkbox>
|
||||
<text size="12">Kelleraußenwand gedämmt</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.keller_decke_gedaemmt || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.keller_decke_gedaemmt || false}"></checkbox>
|
||||
<text size="12">Kellerdecke gedämmt</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.aussenwand_gedaemmt || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.aussenwand_gedaemmt || false}"></checkbox>
|
||||
<text size="12">Außenwand gedämmt</text>
|
||||
</flex>
|
||||
</flex>
|
||||
<flex direction="column" gap="4">
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.dachgeschoss_min_12cm_gedaemmt || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.dachgeschoss_min_12cm_gedaemmt || false}"></checkbox>
|
||||
<text size="12">Dachgeschoss min. 12cm gedämmt</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.dachgeschoss_gedaemmt || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.dachgeschoss_gedaemmt || false}"></checkbox>
|
||||
<text size="12">Dachgeschoss gedämmt</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.oberste_geschossdecke_gedaemmt || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.oberste_geschossdecke_gedaemmt || false}"></checkbox>
|
||||
<text size="12">Oberste Geschossdecke gedämmt</text>
|
||||
</flex>
|
||||
<flex direction="row" gap="4" align="center">
|
||||
<checkbox width="8" height="8" checked="${ausweis.aufnahme.oberste_geschossdecke_min_12cm_gedaemmt || false}"></checkbox>
|
||||
<checkbox width="8" height="8" checked="${aufnahme.oberste_geschossdecke_min_12cm_gedaemmt || false}"></checkbox>
|
||||
<text size="12">Oberste Geschossdecke min. 12cm gedämmt</text>
|
||||
</flex>
|
||||
</flex>
|
||||
|
||||
@@ -14,7 +14,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
||||
|
||||
// const template = VerbrauchsausweisWohnen2016Template as Template;
|
||||
|
||||
const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis);
|
||||
const berechnungen = await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt);
|
||||
|
||||
const height = pages[0].getHeight()
|
||||
|
||||
@@ -48,13 +48,13 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
||||
|
||||
const gebaeudeteil = fillFormField("gebaeudeteil", aufnahme.gebaeudeteil)
|
||||
|
||||
const baujahr_gebaeude = fillFormField("baujahr_gebaeude", aufnahme.baujahr_gebaeude.toString())
|
||||
const baujahr_gebaeude = fillFormField("baujahr_gebaeude", aufnahme.baujahr_gebaeude?.toString())
|
||||
|
||||
const baujahr_heizung = fillFormField("baujahr_heizung", aufnahme.baujahr_heizung.toString())
|
||||
const baujahr_heizung = fillFormField("baujahr_heizung", aufnahme.baujahr_heizung?.toString())
|
||||
|
||||
const einheiten = fillFormField("einheiten", aufnahme.einheiten.toString())
|
||||
const einheiten = fillFormField("einheiten", aufnahme.einheiten?.toString())
|
||||
|
||||
const nutzflaeche = fillFormField("nutzflaeche", `${aufnahme.nutzflaeche.toString()}m²`)
|
||||
const nutzflaeche = fillFormField("nutzflaeche", `${aufnahme.nutzflaeche?.toString()}m²`)
|
||||
|
||||
fillFormField("energietraeger_heizung", `${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`)
|
||||
|
||||
@@ -72,20 +72,23 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
||||
toggleCheck("anlass_modernisierung", ausweis.ausstellgrund == "Modernisierung")
|
||||
toggleCheck("anlass_sonstiges", ausweis.ausstellgrund == "Sonstiges")
|
||||
|
||||
console.log(bilder);
|
||||
|
||||
|
||||
const gebaeudeBild = bilder.find(image => image.kategorie === "Gebaeude");
|
||||
|
||||
|
||||
/* -------------------------------- Seite 2 -------------------------------- */
|
||||
|
||||
const co2Emissionen = fillFormField("co2emissionen", berechnungen.co2EmissionenGesamt.toString(), 8, TextAlignment.Center)
|
||||
const co2Emissionen = fillFormField("co2emissionen", berechnungen?.co2EmissionenGesamt.toString(), 8, TextAlignment.Center)
|
||||
|
||||
const addEnergieverbrauchSkalaPfeile = async (page: PDFPage) => {
|
||||
const pfeilNachUnten = await pdf.embedPng(fs.readFileSync(new URL("../../../public/images/pfeil-nach-unten.png", import.meta.url), "base64"))
|
||||
const pfeilNachOben = await pdf.embedPng(fs.readFileSync(new URL("../../../public/images/pfeil-nach-oben.png", import.meta.url), "base64"))
|
||||
|
||||
// Wir müssen den berechneten Wert zwischen 0 und 250 als Wert zwischen 0 und 1 festlegen
|
||||
const endenergieverbrauchTranslationPercentage = Math.min(250, Math.max(0, berechnungen?.endEnergieVerbrauchGesamt)) / 250
|
||||
const primaerenergieverbrauchTranslationPercentage = Math.min(250, Math.max(0, berechnungen?.primaerEnergieVerbrauchGesamt)) / 250
|
||||
const endenergieverbrauchTranslationPercentage = Math.min(250, Math.max(0, berechnungen?.endEnergieVerbrauchGesamt || 0)) / 250
|
||||
const primaerenergieverbrauchTranslationPercentage = Math.min(250, Math.max(0, berechnungen?.primaerEnergieVerbrauchGesamt || 0)) / 250
|
||||
|
||||
const minTranslation = 68
|
||||
const maxTranslation = 504
|
||||
@@ -182,57 +185,57 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
||||
let yOffset = 14.6;
|
||||
const initialHeight = 435
|
||||
const initialXOffset = 36;
|
||||
return (zeitraum_von: string, zeitraum_bis: string, energietraeger: string, primaerfaktor: string, energieverbrauch: string, anteil_warmwasser: string, anteil_heizung: string, klimafaktor: string) => {
|
||||
pages[2].drawText(zeitraum_von, {
|
||||
return (zeitraum_von?: string, zeitraum_bis?: string, energietraeger?: string, primaerfaktor?: string, energieverbrauch?: string, anteil_warmwasser?: string, anteil_heizung?: string, klimafaktor?: string) => {
|
||||
pages[2].drawText(zeitraum_von || "", {
|
||||
x: initialXOffset,
|
||||
y: initialHeight - (i * yOffset),
|
||||
size: 8,
|
||||
font
|
||||
})
|
||||
|
||||
pages[2].drawText(zeitraum_bis, {
|
||||
pages[2].drawText(zeitraum_bis || "", {
|
||||
x: initialXOffset + 47,
|
||||
y: initialHeight - (i * yOffset),
|
||||
size: 8,
|
||||
font
|
||||
})
|
||||
|
||||
pages[2].drawText(energietraeger, {
|
||||
pages[2].drawText(energietraeger || "", {
|
||||
x: initialXOffset + 94,
|
||||
y: initialHeight - (i * yOffset),
|
||||
size: 8,
|
||||
font
|
||||
})
|
||||
|
||||
pages[2].drawText(primaerfaktor, {
|
||||
pages[2].drawText(primaerfaktor || "", {
|
||||
x: initialXOffset + 317,
|
||||
y: initialHeight - (i * yOffset),
|
||||
size: 8,
|
||||
font
|
||||
})
|
||||
|
||||
pages[2].drawText(energieverbrauch, {
|
||||
pages[2].drawText(energieverbrauch || "", {
|
||||
x: initialXOffset + 351,
|
||||
y: initialHeight - (i * yOffset),
|
||||
size: 8,
|
||||
font
|
||||
})
|
||||
|
||||
pages[2].drawText(anteil_warmwasser, {
|
||||
pages[2].drawText(anteil_warmwasser || "", {
|
||||
x: initialXOffset + 402,
|
||||
y: initialHeight - (i * yOffset),
|
||||
size: 8,
|
||||
font
|
||||
})
|
||||
|
||||
pages[2].drawText(anteil_heizung, {
|
||||
pages[2].drawText(anteil_heizung || "", {
|
||||
x: initialXOffset + 453,
|
||||
y: initialHeight - (i * yOffset),
|
||||
size: 8,
|
||||
font
|
||||
})
|
||||
|
||||
pages[2].drawText(klimafaktor, {
|
||||
pages[2].drawText(klimafaktor || "", {
|
||||
x: initialXOffset + 504,
|
||||
y: initialHeight - (i * yOffset),
|
||||
size: 8,
|
||||
|
||||
@@ -1000,6 +1000,7 @@ title="Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgesc
|
||||
bind:images
|
||||
bind:ausweis
|
||||
bind:gebaeude
|
||||
bind:aufnahme
|
||||
/></Bereich
|
||||
>
|
||||
|
||||
|
||||
@@ -161,6 +161,7 @@
|
||||
bind:images={bilder}
|
||||
bind:ausweis
|
||||
bind:objekt
|
||||
bind:aufnahme
|
||||
/></Bereich>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -290,6 +290,7 @@ const ausweisart: Enums.Ausweisart = "VerbrauchsausweisWohnen"
|
||||
bind:images={bilder}
|
||||
bind:ausweis
|
||||
bind:objekt={objekt}
|
||||
bind:aufnahme
|
||||
/></Bereich
|
||||
>
|
||||
</div>
|
||||
|
||||
@@ -5,16 +5,20 @@ import { pdfVerbrauchsausweisWohnen } from "#lib/pdf/pdfVerbrauchsausweisWohnen"
|
||||
import { Enums } from "@ibcornelsen/database/client";
|
||||
import { createCaller } from "src/astro-typesafe-api-caller";
|
||||
|
||||
const base64 = Astro.url.searchParams.get("base64");
|
||||
const base64Ausweis = Astro.url.searchParams.get("ausweis");
|
||||
const base64Aufnahme = Astro.url.searchParams.get("aufnahme");
|
||||
const base64Objekt = Astro.url.searchParams.get("objekt");
|
||||
const base64Bilder = Astro.url.searchParams.get("bilder");
|
||||
let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | null = null;
|
||||
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
|
||||
let objekt: ObjektClient = {} as ObjektClient;
|
||||
let user: BenutzerClient = {} as BenutzerClient;
|
||||
let images: UploadedGebaeudeBild[] = []
|
||||
if (base64) {
|
||||
const buffer = Buffer.from(base64, "base64");
|
||||
const json = buffer.toString("utf-8");
|
||||
ausweis = JSON.parse(json) as VerbrauchsausweisWohnenClient;
|
||||
let bilder: UploadedGebaeudeBild[] = []
|
||||
if (base64Ausweis && base64Aufnahme && base64Objekt && base64Bilder) {
|
||||
ausweis = JSON.parse(Buffer.from(base64Ausweis, "base64").toString("utf-8")) as VerbrauchsausweisWohnenClient;
|
||||
objekt = JSON.parse(Buffer.from(base64Objekt, "base64").toString("utf-8")) as ObjektClient;
|
||||
aufnahme = JSON.parse(Buffer.from(base64Aufnahme, "base64").toString("utf-8")) as AufnahmeClient;
|
||||
bilder = JSON.parse(Buffer.from(base64Bilder, "base64").toString("utf-8")) as UploadedGebaeudeBild[];
|
||||
} else {
|
||||
const uidAusweis = Astro.url.searchParams.get("uid");
|
||||
|
||||
@@ -76,7 +80,7 @@ if (base64) {
|
||||
});
|
||||
}
|
||||
|
||||
const pdf = await pdfVerbrauchsausweisWohnen(ausweis, aufnahme, objekt, images, user);
|
||||
const pdf = await pdfVerbrauchsausweisWohnen(ausweis, aufnahme, objekt, bilder, user);
|
||||
|
||||
return new Response(pdf, {
|
||||
headers: {
|
||||
|
||||
@@ -1,14 +1,25 @@
|
||||
---
|
||||
import { BenutzerClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
import { createCaller } from "#lib/caller";
|
||||
import { AufnahmeClient, BenutzerClient, getAusweisartFromUUID, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants";
|
||||
import { pdfDatenblattVerbrauchsausweisWohnen } from "#lib/pdf/pdfDatenblattVerbrauchsausweisWohnen";
|
||||
import { pdfVerbrauchsausweisWohnen } from "#lib/pdf/pdfVerbrauchsausweisWohnen";
|
||||
import { Enums } from "@ibcornelsen/database/client";
|
||||
import { createCaller } from "src/astro-typesafe-api-caller";
|
||||
|
||||
const base64 = Astro.url.searchParams.get("base64");
|
||||
let ausweis: VerbrauchsausweisWohnenClient | null = null;
|
||||
if (base64) {
|
||||
const buffer = Buffer.from(base64, "base64");
|
||||
const json = buffer.toString("utf-8");
|
||||
ausweis = JSON.parse(json) as VerbrauchsausweisWohnenClient;
|
||||
const base64Ausweis = Astro.url.searchParams.get("ausweis");
|
||||
const base64Aufnahme = Astro.url.searchParams.get("aufnahme");
|
||||
const base64Objekt = Astro.url.searchParams.get("objekt");
|
||||
const base64Bilder = Astro.url.searchParams.get("bilder");
|
||||
let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | null = null;
|
||||
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
|
||||
let objekt: ObjektClient = {} as ObjektClient;
|
||||
let benutzer: BenutzerClient = {} as BenutzerClient;
|
||||
let bilder: UploadedGebaeudeBild[] = []
|
||||
if (base64Ausweis && base64Aufnahme && base64Objekt && base64Bilder) {
|
||||
ausweis = JSON.parse(Buffer.from(base64Ausweis, "base64").toString("utf-8")) as VerbrauchsausweisWohnenClient;
|
||||
objekt = JSON.parse(Buffer.from(base64Objekt, "base64").toString("utf-8")) as ObjektClient;
|
||||
aufnahme = JSON.parse(Buffer.from(base64Aufnahme, "base64").toString("utf-8")) as AufnahmeClient;
|
||||
bilder = JSON.parse(Buffer.from(base64Bilder, "base64").toString("utf-8")) as UploadedGebaeudeBild[];
|
||||
} else {
|
||||
const uidAusweis = Astro.url.searchParams.get("uid");
|
||||
|
||||
@@ -16,14 +27,61 @@ if (base64) {
|
||||
return Astro.redirect("/404");
|
||||
}
|
||||
|
||||
const ausweisart = getAusweisartFromUUID(uidAusweis)
|
||||
|
||||
const caller = createCaller(Astro);
|
||||
|
||||
ausweis = await caller.v1.verbrauchsausweisWohnen.get({
|
||||
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||
ausweis = await caller["verbrauchsausweis-wohnen"]._uid.GET.fetch(undefined, {
|
||||
params: {
|
||||
uid: uidAusweis
|
||||
},
|
||||
headers: {
|
||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
}
|
||||
});
|
||||
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
||||
ausweis = await caller["verbrauchsausweis-gewerbe"]._uid.GET.fetch(undefined, {
|
||||
params: {
|
||||
uid: uidAusweis
|
||||
},
|
||||
headers: {
|
||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const pdf = await pdfDatenblattVerbrauchsausweisWohnen(ausweis);
|
||||
|
||||
if (!ausweis) {
|
||||
return Astro.redirect("/");
|
||||
}
|
||||
|
||||
aufnahme = await caller.aufnahme._uid.GET.fetch(undefined, {
|
||||
params: {
|
||||
uid: ausweis.uid_aufnahme
|
||||
},
|
||||
headers: {
|
||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
}
|
||||
});
|
||||
|
||||
objekt = await caller.objekt._uid.GET.fetch(undefined, {
|
||||
params: {
|
||||
uid: ausweis.uid_objekt
|
||||
},
|
||||
headers: {
|
||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
}
|
||||
});
|
||||
|
||||
benutzer = await caller.user.self.GET.fetch(undefined, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const pdf = await pdfDatenblattVerbrauchsausweisWohnen(ausweis, aufnahme, objekt, benutzer);
|
||||
|
||||
|
||||
return new Response(pdf, {
|
||||
|
||||
Reference in New Issue
Block a user