Verbesserungen
This commit is contained in:
6
bun.lock
6
bun.lock
@@ -61,6 +61,7 @@
|
|||||||
"@types/jsonwebtoken": "^9.0.7",
|
"@types/jsonwebtoken": "^9.0.7",
|
||||||
"@types/mime-types": "^2.1.4",
|
"@types/mime-types": "^2.1.4",
|
||||||
"@types/nodemailer": "^6.4.17",
|
"@types/nodemailer": "^6.4.17",
|
||||||
|
"@types/papaparse": "^5.3.15",
|
||||||
"@types/siema": "^1.4.11",
|
"@types/siema": "^1.4.11",
|
||||||
"@types/uuid": "^9.0.8",
|
"@types/uuid": "^9.0.8",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
||||||
@@ -72,6 +73,7 @@
|
|||||||
"cypress-vite": "^1.6.0",
|
"cypress-vite": "^1.6.0",
|
||||||
"eslint": "~8.15.0",
|
"eslint": "~8.15.0",
|
||||||
"eslint-config-prettier": "8.1.0",
|
"eslint-config-prettier": "8.1.0",
|
||||||
|
"papaparse": "^5.5.2",
|
||||||
"postcss": "^8.5.1",
|
"postcss": "^8.5.1",
|
||||||
"postcss-import": "^16.1.0",
|
"postcss-import": "^16.1.0",
|
||||||
"postcss-nesting": "^13.0.1",
|
"postcss-nesting": "^13.0.1",
|
||||||
@@ -556,6 +558,8 @@
|
|||||||
|
|
||||||
"@types/nodemailer": ["@types/nodemailer@6.4.17", "", { "dependencies": { "@types/node": "*" } }, "sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww=="],
|
"@types/nodemailer": ["@types/nodemailer@6.4.17", "", { "dependencies": { "@types/node": "*" } }, "sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww=="],
|
||||||
|
|
||||||
|
"@types/papaparse": ["@types/papaparse@5.3.15", "", { "dependencies": { "@types/node": "*" } }, "sha512-JHe6vF6x/8Z85nCX4yFdDslN11d+1pr12E526X8WAfhadOeaOTx5AuIkvDKIBopfvlzpzkdMx4YyvSKCM9oqtw=="],
|
||||||
|
|
||||||
"@types/pug": ["@types/pug@2.0.10", "", {}, "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA=="],
|
"@types/pug": ["@types/pug@2.0.10", "", {}, "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA=="],
|
||||||
|
|
||||||
"@types/qs": ["@types/qs@6.9.18", "", {}, "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA=="],
|
"@types/qs": ["@types/qs@6.9.18", "", {}, "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA=="],
|
||||||
@@ -1658,6 +1662,8 @@
|
|||||||
|
|
||||||
"pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="],
|
"pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="],
|
||||||
|
|
||||||
|
"papaparse": ["papaparse@5.5.2", "", {}, "sha512-PZXg8UuAc4PcVwLosEEDYjPyfWnTEhOrUfdv+3Bx+NuAb+5NhDmXzg5fHWmdCh1mP5p7JAZfFr3IMQfcntNAdA=="],
|
||||||
|
|
||||||
"parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="],
|
"parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="],
|
||||||
|
|
||||||
"parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="],
|
"parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="],
|
||||||
|
|||||||
@@ -75,6 +75,7 @@
|
|||||||
"@types/jsonwebtoken": "^9.0.7",
|
"@types/jsonwebtoken": "^9.0.7",
|
||||||
"@types/mime-types": "^2.1.4",
|
"@types/mime-types": "^2.1.4",
|
||||||
"@types/nodemailer": "^6.4.17",
|
"@types/nodemailer": "^6.4.17",
|
||||||
|
"@types/papaparse": "^5.3.15",
|
||||||
"@types/siema": "^1.4.11",
|
"@types/siema": "^1.4.11",
|
||||||
"@types/uuid": "^9.0.8",
|
"@types/uuid": "^9.0.8",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
||||||
@@ -86,6 +87,7 @@
|
|||||||
"cypress-vite": "^1.6.0",
|
"cypress-vite": "^1.6.0",
|
||||||
"eslint": "~8.15.0",
|
"eslint": "~8.15.0",
|
||||||
"eslint-config-prettier": "8.1.0",
|
"eslint-config-prettier": "8.1.0",
|
||||||
|
"papaparse": "^5.5.2",
|
||||||
"postcss": "^8.5.1",
|
"postcss": "^8.5.1",
|
||||||
"postcss-import": "^16.1.0",
|
"postcss-import": "^16.1.0",
|
||||||
"postcss-nesting": "^13.0.1",
|
"postcss-nesting": "^13.0.1",
|
||||||
|
|||||||
@@ -5,19 +5,21 @@ export const createCaller = createCallerFactory({
|
|||||||
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
|
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
|
||||||
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
|
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
|
||||||
"unterlage": await import("../src/pages/api/unterlage.ts"),
|
"unterlage": await import("../src/pages/api/unterlage.ts"),
|
||||||
|
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
|
||||||
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
|
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
|
||||||
"admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"),
|
"admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"),
|
||||||
"admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"),
|
"admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"),
|
||||||
"admin/nicht-ausstellen": await import("../src/pages/api/admin/nicht-ausstellen.ts"),
|
"admin/nicht-ausstellen": await import("../src/pages/api/admin/nicht-ausstellen.ts"),
|
||||||
"admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"),
|
"admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"),
|
||||||
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
|
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
|
||||||
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
|
|
||||||
"auth/access-token": await import("../src/pages/api/auth/access-token.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/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"),
|
||||||
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
|
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
|
||||||
"bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"),
|
"bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"),
|
||||||
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
||||||
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
|
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
|
||||||
|
"geg-nachweis-gewerbe/[uid]": await import("../src/pages/api/geg-nachweis-gewerbe/[uid].ts"),
|
||||||
|
"geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"),
|
||||||
"geg-nachweis-wohnen/[uid]": await import("../src/pages/api/geg-nachweis-wohnen/[uid].ts"),
|
"geg-nachweis-wohnen/[uid]": await import("../src/pages/api/geg-nachweis-wohnen/[uid].ts"),
|
||||||
"geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"),
|
"geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"),
|
||||||
"objekt": await import("../src/pages/api/objekt/index.ts"),
|
"objekt": await import("../src/pages/api/objekt/index.ts"),
|
||||||
@@ -33,5 +35,6 @@ export const createCaller = createCallerFactory({
|
|||||||
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
|
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
|
||||||
"aufnahme/[uid]/bilder": await import("../src/pages/api/aufnahme/[uid]/bilder.ts"),
|
"aufnahme/[uid]/bilder": await import("../src/pages/api/aufnahme/[uid]/bilder.ts"),
|
||||||
"aufnahme/[uid]": await import("../src/pages/api/aufnahme/[uid]/index.ts"),
|
"aufnahme/[uid]": await import("../src/pages/api/aufnahme/[uid]/index.ts"),
|
||||||
|
"aufnahme/[uid]/unterlagen": await import("../src/pages/api/aufnahme/[uid]/unterlagen.ts"),
|
||||||
"objekt/[uid]": await import("../src/pages/api/objekt/[uid]/index.ts"),
|
"objekt/[uid]": await import("../src/pages/api/objekt/[uid]/index.ts"),
|
||||||
})
|
})
|
||||||
@@ -71,6 +71,9 @@ export async function nachweisSpeichern(
|
|||||||
if (ausweisart == Enums.Ausweisart.GEGNachweisWohnen) {
|
if (ausweisart == Enums.Ausweisart.GEGNachweisWohnen) {
|
||||||
patchRoute = api["geg-nachweis-wohnen"]._uid.PATCH
|
patchRoute = api["geg-nachweis-wohnen"]._uid.PATCH
|
||||||
putRoute = api["geg-nachweis-wohnen"].PUT
|
putRoute = api["geg-nachweis-wohnen"].PUT
|
||||||
|
} else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) {
|
||||||
|
patchRoute = api["geg-nachweis-gewerbe"]._uid.PATCH
|
||||||
|
putRoute = api["geg-nachweis-gewerbe"].PUT
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nachweis.uid) {
|
if (nachweis.uid) {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
loginOverlayHidden = true
|
loginOverlayHidden = true
|
||||||
|
|
||||||
let result: Awaited<ReturnType<typeof ausweisSpeichern>> | null = null;
|
let result: Awaited<ReturnType<typeof ausweisSpeichern>> | null = null;
|
||||||
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) {
|
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisGewerbe || ausweisart === Enums.Ausweisart.GEGNachweisBedarfsausweis) {
|
||||||
result = await nachweisSpeichern(ausweis, objekt, aufnahme, bilder, unterlagen, ausweisart)
|
result = await nachweisSpeichern(ausweis, objekt, aufnahme, bilder, unterlagen, ausweisart)
|
||||||
} else {
|
} else {
|
||||||
result = await ausweisSpeichern(ausweis, objekt, aufnahme, bilder, ausweisart)
|
result = await ausweisSpeichern(ausweis, objekt, aufnahme, bilder, ausweisart)
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
import { addNotification } from "#components/Notifications/shared.js";
|
import { addNotification } from "#components/Notifications/shared.js";
|
||||||
import NotificationWrapper from "#components/Notifications/NotificationWrapper.svelte";
|
import NotificationWrapper from "#components/Notifications/NotificationWrapper.svelte";
|
||||||
import { nachweisSpeichern } from "#client/lib/nachweisSpeichern.js";
|
import { nachweisSpeichern } from "#client/lib/nachweisSpeichern.js";
|
||||||
|
import { EnterFullScreen } from "radix-svelte-icons";
|
||||||
|
|
||||||
export let user: Partial<BenutzerClient>;
|
export let user: Partial<BenutzerClient>;
|
||||||
export let ausweis: VerbrauchsausweisWohnenClient;
|
export let ausweis: VerbrauchsausweisWohnenClient;
|
||||||
@@ -225,7 +226,7 @@
|
|||||||
loginOverlayHidden = true
|
loginOverlayHidden = true
|
||||||
|
|
||||||
let result: Awaited<ReturnType<typeof ausweisSpeichern>> | null = null;
|
let result: Awaited<ReturnType<typeof ausweisSpeichern>> | null = null;
|
||||||
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) {
|
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisGewerbe || ausweisart === Enums.Ausweisart.GEGNachweisBedarfsausweis) {
|
||||||
result = await nachweisSpeichern(ausweis, objekt, aufnahme, bilder, unterlagen, ausweisart)
|
result = await nachweisSpeichern(ausweis, objekt, aufnahme, bilder, unterlagen, ausweisart)
|
||||||
} else {
|
} else {
|
||||||
result = await ausweisSpeichern(ausweis, objekt, aufnahme, bilder, ausweisart)
|
result = await ausweisSpeichern(ausweis, objekt, aufnahme, bilder, ausweisart)
|
||||||
|
|||||||
204
src/modules/angebot-anfragen/GEGNachweisGewerbeModule.svelte
Normal file
204
src/modules/angebot-anfragen/GEGNachweisGewerbeModule.svelte
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import Ausweisart from "#components/Ausweis/Ausweisart.svelte";
|
||||||
|
import GebaeudeDaten from "#components/Ausweis/GebaeudeDaten.svelte";
|
||||||
|
import {
|
||||||
|
ObjektClient,
|
||||||
|
AufnahmeClient,
|
||||||
|
BenutzerClient,
|
||||||
|
UploadedGebaeudeBild,
|
||||||
|
UnterlageClient,
|
||||||
|
GEGNachweisWohnenClient,
|
||||||
|
} from "#components/Ausweis/types.js";
|
||||||
|
import Bereich from "#components/labels/Bereich.svelte";
|
||||||
|
import { Enums } from "@ibcornelsen/database/client";
|
||||||
|
import InputLabel from "#components/labels/InputLabel.svelte";
|
||||||
|
import HelpLabel from "#components/labels/HelpLabel.svelte";
|
||||||
|
import Progressbar from "#components/Ausweis/Progressbar.svelte";
|
||||||
|
import FileGrid from "#components/FileGrid.svelte";
|
||||||
|
import ButtonWeiterHilfe from "#components/Ausweis/ButtonWeiterHilfe.svelte";
|
||||||
|
|
||||||
|
|
||||||
|
export let nachweis: GEGNachweisWohnenClient;
|
||||||
|
export let objekt: ObjektClient;
|
||||||
|
export let aufnahme: AufnahmeClient;
|
||||||
|
export let user: BenutzerClient = {} as BenutzerClient;
|
||||||
|
export let bilder: UploadedGebaeudeBild[] = [];
|
||||||
|
export let plaene: UnterlageClient[] =
|
||||||
|
[];
|
||||||
|
export let unterlagen: UnterlageClient[] = [];
|
||||||
|
|
||||||
|
if (Object.keys(nachweis).length === 0) {
|
||||||
|
const localStorageAusweis = localStorage.getItem("ausweis");
|
||||||
|
if (localStorageAusweis) {
|
||||||
|
nachweis = JSON.parse(localStorageAusweis)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Object.keys(aufnahme).length === 0) {
|
||||||
|
const localStorageAufnahme = localStorage.getItem("aufnahme");
|
||||||
|
if (localStorageAufnahme) {
|
||||||
|
aufnahme = JSON.parse(localStorageAufnahme)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Object.keys(objekt).length === 0) {
|
||||||
|
const localStorageObjekt = localStorage.getItem("objekt");
|
||||||
|
if (localStorageObjekt) {
|
||||||
|
objekt = JSON.parse(localStorageObjekt)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Object.keys(bilder).length === 0) {
|
||||||
|
const localStorageBilder = localStorage.getItem("bilder");
|
||||||
|
if (localStorageBilder) {
|
||||||
|
bilder = JSON.parse(localStorageBilder)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Object.keys(unterlagen).length === 0) {
|
||||||
|
const localStorageUnterlagen = localStorage.getItem("unterlagen");
|
||||||
|
if (localStorageUnterlagen) {
|
||||||
|
unterlagen = JSON.parse(localStorageUnterlagen)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$: {
|
||||||
|
localStorage.setItem("ausweis", JSON.stringify(nachweis))
|
||||||
|
localStorage.setItem("aufnahme", JSON.stringify(aufnahme))
|
||||||
|
localStorage.setItem("objekt", JSON.stringify(objekt))
|
||||||
|
localStorage.setItem("bilder", JSON.stringify(bilder))
|
||||||
|
localStorage.setItem("unterlagen", JSON.stringify(unterlagen))
|
||||||
|
}
|
||||||
|
|
||||||
|
const ausweisart = Enums.Ausweisart.GEGNachweisGewerbe;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div
|
||||||
|
id="skala"
|
||||||
|
class="bg-white grid grid-cols-1 p-4 lg:grid-cols-2 lg:gap-x-6 no-scroll"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
id="progress-box"
|
||||||
|
class="w-full box relative px-4 py-3 text-center order-2 self-stretch"
|
||||||
|
>
|
||||||
|
<h1 class="text-secondary text-3xl m-0">GEG Nachweis Anfragen</h1>
|
||||||
|
<h2 class="text-primary text-xl">Verbrauchsausweis Wohnen</h2>
|
||||||
|
<Progressbar
|
||||||
|
active={0}
|
||||||
|
steps={["Gebäudedaten", "Kundendaten", "Bestätigung"]}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form
|
||||||
|
id="formInput-1"
|
||||||
|
name="ausweis"
|
||||||
|
data-test="ausweis"
|
||||||
|
>
|
||||||
|
<div id="formular-box" class="formular-boxen ring-0">
|
||||||
|
<!-- A Prüfung der Ausweisart -->
|
||||||
|
|
||||||
|
<Bereich bereich="A" title="Prüfung der Ausweisart">
|
||||||
|
<Ausweisart bind:objekt bind:aufnahme bind:ausweis={nachweis} {ausweisart} />
|
||||||
|
</Bereich>
|
||||||
|
|
||||||
|
<!-- B Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgeschoss -->
|
||||||
|
|
||||||
|
<Bereich
|
||||||
|
bereich="B"
|
||||||
|
title="Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgeschoss"
|
||||||
|
><GebaeudeDaten bind:aufnahme bind:objekt {ausweisart} /></Bereich
|
||||||
|
>
|
||||||
|
|
||||||
|
<Bereich bereich="C" title="Beschreibung des Bauvorhabens">
|
||||||
|
<div class="bereich-box">
|
||||||
|
<div class="input-standard order-3 md:order-5 xl:order-3">
|
||||||
|
<InputLabel
|
||||||
|
title="Angaben zur Heizung, Lüftung, Energieerezugung, Qualität und Aufbau der Gebäudehülle usw."
|
||||||
|
></InputLabel>
|
||||||
|
|
||||||
|
<textarea class="rounded-e-none" rows="10" bind:value={nachweis.beschreibung}></textarea>
|
||||||
|
|
||||||
|
<div class="help-label">
|
||||||
|
<HelpLabel>
|
||||||
|
Geben Sie kurz an: Heizung, Lüftung, regenerative
|
||||||
|
Energie (Solar, PV) und die Gebäudehülle (Qualität,
|
||||||
|
Aufbau).
|
||||||
|
</HelpLabel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Bereich>
|
||||||
|
|
||||||
|
<Bereich bereich="D" title="Gebäudepläne & Unterlagen">
|
||||||
|
<div
|
||||||
|
class="bereich-box grid grid-cols-1 lg:grid-cols-2 gap-x-6 mt-6"
|
||||||
|
>
|
||||||
|
<div class="md:box md:card mb-0">
|
||||||
|
<div class="font-bold mb-2">Pläne</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
Hier können sie Grundrisspläne, Ansichtspläne und
|
||||||
|
Schnitte hochladen. Die Dateien können entweder im PDF
|
||||||
|
Format oder als Bild hochgeladen werden.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="md:box md:card mb-0 mt-6 md:mt-0">
|
||||||
|
<div>
|
||||||
|
<strong
|
||||||
|
>Bitte laden Sie hier mind. 1 Dokument hoch:</strong
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
<FileGrid
|
||||||
|
max={Infinity}
|
||||||
|
min={1}
|
||||||
|
name={"plaene"}
|
||||||
|
bind:files={plaene}
|
||||||
|
bind:ausweis={nachweis}
|
||||||
|
bind:objekt
|
||||||
|
></FileGrid>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="bereich-box grid grid-cols-1 lg:grid-cols-2 gap-x-6 mt-6"
|
||||||
|
>
|
||||||
|
<div class="md:box md:card mb-0">
|
||||||
|
<div class="font-bold mb-2">Unterlagen</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
Hier können sie weitere Unterlagen wie z.B.
|
||||||
|
Baugenehmigungen, U-Wert Berechnungen, Anlagentechnik
|
||||||
|
oder ihren alten Energieausweis hochladen. Die Dateien
|
||||||
|
können entweder im PDF Format oder als Bild hochgeladen
|
||||||
|
werden.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="md:box md:card mb-0 mt-6 md:mt-0">
|
||||||
|
<FileGrid
|
||||||
|
max={Infinity}
|
||||||
|
min={0}
|
||||||
|
name={"unterlagen"}
|
||||||
|
bind:files={unterlagen}
|
||||||
|
bind:ausweis={nachweis}
|
||||||
|
bind:objekt
|
||||||
|
></FileGrid>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Bereich>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ButtonWeiterHilfe
|
||||||
|
bind:ausweis={nachweis}
|
||||||
|
bind:bilder
|
||||||
|
bind:unterlagen
|
||||||
|
bind:user
|
||||||
|
bind:objekt
|
||||||
|
bind:aufnahme
|
||||||
|
ausweisart={Enums.Ausweisart.GEGNachweisGewerbe}
|
||||||
|
>
|
||||||
|
</ButtonWeiterHilfe>
|
||||||
|
|
||||||
|
</form>
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
---
|
||||||
|
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
|
||||||
|
import { AufnahmeClient, GEGNachweisWohnenClient, ObjektClient, UnterlageClient, UploadedGebaeudeBild } from "#components/Ausweis/types";
|
||||||
|
import { createCaller } from "../../astro-typesafe-api-caller.js";
|
||||||
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
|
import { validateAccessTokenServer } from "#server/lib/validateAccessToken.js";
|
||||||
|
import GEGNachweisGewerbeModule from "#modules/angebot-anfragen/GEGNachweisGewerbeModule.svelte";
|
||||||
|
|
||||||
|
const uid = Astro.url.searchParams.get("uid");
|
||||||
|
let nachweis: GEGNachweisWohnenClient = {} as GEGNachweisWohnenClient;
|
||||||
|
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
|
||||||
|
let objekt: ObjektClient = {} as ObjektClient;
|
||||||
|
let bilder: UploadedGebaeudeBild[] = []
|
||||||
|
let unterlagen: UnterlageClient[] = []
|
||||||
|
|
||||||
|
const valid = validateAccessTokenServer(Astro);
|
||||||
|
|
||||||
|
const caller = createCaller(Astro);
|
||||||
|
|
||||||
|
if (uid) {
|
||||||
|
if (!valid) {
|
||||||
|
return Astro.redirect(
|
||||||
|
`/auth/login?redirect=${Astro.url.toString()}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
nachweis = await caller["geg-nachweis-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: nachweis.uid_aufnahme
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
objekt = await caller.objekt._uid.GET.fetch(null, {
|
||||||
|
headers: {
|
||||||
|
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||||
|
},
|
||||||
|
params: {
|
||||||
|
uid: nachweis.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: nachweis.uid_aufnahme
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
unterlagen = await caller.aufnahme._uid.unterlagen.GET.fetch(null, {
|
||||||
|
headers: {
|
||||||
|
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||||
|
},
|
||||||
|
params: {
|
||||||
|
uid: nachweis.uid_aufnahme
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!nachweis) {
|
||||||
|
// Der Ausweis scheint nicht zu existieren.
|
||||||
|
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
|
||||||
|
return Astro.redirect(
|
||||||
|
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
return Astro.redirect(
|
||||||
|
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
---
|
||||||
|
|
||||||
|
<AusweisLayout title="GEG Nachweis Wohnen anfragen">
|
||||||
|
<GEGNachweisGewerbeModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} />
|
||||||
|
</AusweisLayout>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
|
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
|
||||||
import { AufnahmeClient, GEGNachweisWohnenClient, ObjektClient, UploadedGebaeudeBild } from "#components/Ausweis/types";
|
import { AufnahmeClient, GEGNachweisWohnenClient, ObjektClient, UnterlageClient, UploadedGebaeudeBild } from "#components/Ausweis/types";
|
||||||
import { createCaller } from "../../astro-typesafe-api-caller.js";
|
import { createCaller } from "../../astro-typesafe-api-caller.js";
|
||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
import { validateAccessTokenServer } from "#server/lib/validateAccessToken.js";
|
import { validateAccessTokenServer } from "#server/lib/validateAccessToken.js";
|
||||||
@@ -11,6 +11,7 @@ let nachweis: GEGNachweisWohnenClient = {} as GEGNachweisWohnenClient;
|
|||||||
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
|
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
|
||||||
let objekt: ObjektClient = {} as ObjektClient;
|
let objekt: ObjektClient = {} as ObjektClient;
|
||||||
let bilder: UploadedGebaeudeBild[] = []
|
let bilder: UploadedGebaeudeBild[] = []
|
||||||
|
let unterlagen: UnterlageClient[] = []
|
||||||
|
|
||||||
const valid = validateAccessTokenServer(Astro);
|
const valid = validateAccessTokenServer(Astro);
|
||||||
|
|
||||||
@@ -60,6 +61,15 @@ if (uid) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
unterlagen = await caller.aufnahme._uid.unterlagen.GET.fetch(null, {
|
||||||
|
headers: {
|
||||||
|
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||||
|
},
|
||||||
|
params: {
|
||||||
|
uid: nachweis.uid_aufnahme
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
if (!nachweis) {
|
if (!nachweis) {
|
||||||
// Der Ausweis scheint nicht zu existieren.
|
// Der Ausweis scheint nicht zu existieren.
|
||||||
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
|
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
|
||||||
@@ -76,5 +86,5 @@ if (uid) {
|
|||||||
---
|
---
|
||||||
|
|
||||||
<AusweisLayout title="GEG Nachweis Wohnen anfragen">
|
<AusweisLayout title="GEG Nachweis Wohnen anfragen">
|
||||||
<GEGNachweisWohnenModule client:only {nachweis} {objekt} {aufnahme} {bilder} />
|
<GEGNachweisWohnenModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} />
|
||||||
</AusweisLayout>
|
</AusweisLayout>
|
||||||
|
|||||||
87
src/pages/api/aufnahme/[uid]/unterlagen.ts
Normal file
87
src/pages/api/aufnahme/[uid]/unterlagen.ts
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
import { authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||||
|
import { prisma, UnterlageSchema } from "@ibcornelsen/database/server";
|
||||||
|
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||||
|
import { z } from "zod";
|
||||||
|
import { UUidWithPrefix } from "#components/Ausweis/types.js";
|
||||||
|
|
||||||
|
export const PUT = defineApiRoute({
|
||||||
|
input: z.array(UUidWithPrefix),
|
||||||
|
output: z.void(),
|
||||||
|
middleware: authorizationMiddleware,
|
||||||
|
async fetch(input, ctx, user) {
|
||||||
|
const aufnahme = await prisma.aufnahme.findUnique({
|
||||||
|
where: {
|
||||||
|
uid: ctx.params.uid
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!aufnahme) {
|
||||||
|
throw new APIError({
|
||||||
|
code: "NOT_FOUND",
|
||||||
|
message: "Aufnahme existiert nicht oder gehört einem anderen Benutzer."
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
prisma.$transaction(async tx => {
|
||||||
|
for (const uid of input) {
|
||||||
|
const img = await tx.unterlage.update({
|
||||||
|
where: {
|
||||||
|
uid,
|
||||||
|
aufnahme_id: null
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
aufnahme_id: aufnahme.id
|
||||||
|
},
|
||||||
|
select: {
|
||||||
|
uid: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!img) {
|
||||||
|
throw new APIError({
|
||||||
|
code: "NOT_FOUND",
|
||||||
|
message: "Unterlage existiert nicht oder gehört bereits zu einer anderen Aufnahme."
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
export const GET = defineApiRoute({
|
||||||
|
middleware: authorizationMiddleware,
|
||||||
|
output: z.array(UnterlageSchema.pick({
|
||||||
|
kategorie: true,
|
||||||
|
uid: true
|
||||||
|
})),
|
||||||
|
async fetch(input, ctx, user) {
|
||||||
|
const { uid } = ctx.params;
|
||||||
|
|
||||||
|
const aufnahme = await prisma.aufnahme.findUnique({
|
||||||
|
where: {
|
||||||
|
uid,
|
||||||
|
benutzer_id: user.id
|
||||||
|
},
|
||||||
|
select: {
|
||||||
|
benutzer_id: true,
|
||||||
|
unterlagen: {
|
||||||
|
select: {
|
||||||
|
kategorie: true,
|
||||||
|
uid: true,
|
||||||
|
mime: true,
|
||||||
|
name: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!aufnahme) {
|
||||||
|
throw new APIError({
|
||||||
|
code: "NOT_FOUND",
|
||||||
|
message: "Aufnahme existiert nicht oder gehört einem anderen Benutzer."
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return aufnahme.unterlagen
|
||||||
|
},
|
||||||
|
})
|
||||||
211
src/pages/api/geg-nachweis-gewerbe/[uid].ts
Normal file
211
src/pages/api/geg-nachweis-gewerbe/[uid].ts
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
import { GEGNachweisWohnenClient, OptionalNullable, UUidWithPrefix, ZodOverlap } from "#components/Ausweis/types.js";
|
||||||
|
import { exclude } from "#lib/exclude.js";
|
||||||
|
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||||
|
import { GEGNachweisGewerbeSchema, GEGNachweisWohnenSchema, prisma } from "@ibcornelsen/database/server";
|
||||||
|
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||||
|
import { z } from "zod";
|
||||||
|
|
||||||
|
export const PATCH = defineApiRoute({
|
||||||
|
input: GEGNachweisGewerbeSchema.omit({
|
||||||
|
uid: true,
|
||||||
|
id: true,
|
||||||
|
benutzer_id: true,
|
||||||
|
aufnahme_id: true,
|
||||||
|
geg_einpreisung_id: true
|
||||||
|
}),
|
||||||
|
output: z.void(),
|
||||||
|
headers: {
|
||||||
|
"Authorization": z.string()
|
||||||
|
},
|
||||||
|
middleware: authorizationMiddleware,
|
||||||
|
async fetch(input, ctx, user) {
|
||||||
|
const objekt = await prisma.gEGNachweisGewerbe.findUnique({
|
||||||
|
where: {
|
||||||
|
uid: ctx.params.uid,
|
||||||
|
benutzer: {
|
||||||
|
id: user.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!objekt) {
|
||||||
|
throw new APIError({
|
||||||
|
code: "NOT_FOUND",
|
||||||
|
message: "Nachweis konnte nicht gefunden werden oder gehört einem anderen Benutzer."
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
await prisma.gEGNachweisGewerbe.update({
|
||||||
|
where: {
|
||||||
|
uid: ctx.params.uid
|
||||||
|
},
|
||||||
|
data: input
|
||||||
|
})
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
export const DELETE = defineApiRoute({
|
||||||
|
meta: {
|
||||||
|
description: "Storniert einen Nachweis"
|
||||||
|
},
|
||||||
|
headers: authorizationHeaders,
|
||||||
|
middleware: authorizationMiddleware,
|
||||||
|
async fetch(input, ctx, user) {
|
||||||
|
const { uid } = ctx.params;
|
||||||
|
|
||||||
|
if (!UUidWithPrefix.safeParse(uid).success) {
|
||||||
|
throw new APIError({
|
||||||
|
code: "BAD_REQUEST",
|
||||||
|
message: "UID konnte nicht verifiziert werden."
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wir holen uns den BedarfsNachweis
|
||||||
|
// Dieser MUSS mit dem Nutzer verknüpft sein.
|
||||||
|
const nachweis = await prisma.gEGNachweisGewerbe.findUnique({
|
||||||
|
where: {
|
||||||
|
uid,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!nachweis) {
|
||||||
|
// Falls wir den Nachweis nicht finden können, werfen wir einen Fehler
|
||||||
|
throw new APIError({
|
||||||
|
code: "NOT_FOUND",
|
||||||
|
message: "Nachweis konnte nicht gefunden werden.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wir dürfen den Nachweis nur stornieren, wenn er noch nicht ausgestellt wurde
|
||||||
|
// Außerdem müssen wir schauen, ob wir Admin oder der Besitzer des Nachweises sind.
|
||||||
|
if ((nachweis.benutzer_id !== user.id) && user.rolle !== "ADMIN") {
|
||||||
|
// Falls der Nachweis nicht dem Nutzer gehört, werfen wir einen Fehler
|
||||||
|
throw new APIError({
|
||||||
|
code: "FORBIDDEN",
|
||||||
|
message: "Nachweis gehört nicht dem Nutzer.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (Nachweis.erledigt) {
|
||||||
|
// // Falls der Nachweis bereits ausgestellt wurde, werfen wir einen Fehler
|
||||||
|
// throw new TRPCError({
|
||||||
|
// code: "BAD_REQUEST",
|
||||||
|
// message: "Nachweis wurde bereits ausgestellt.",
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
|
||||||
|
if (nachweis.storniert) {
|
||||||
|
// Falls der Nachweis bereits storniert ist, werfen wir einen Fehler
|
||||||
|
throw new APIError({
|
||||||
|
code: "BAD_REQUEST",
|
||||||
|
message: "Nachweis wurde bereits storniert.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
await prisma.gEGNachweisGewerbe.update({
|
||||||
|
where: {
|
||||||
|
id: nachweis.id
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
storniert: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// Wir erstellen ein Event, dass der Nachweis storniert wurde
|
||||||
|
// Dann können wir das in der Historie anzeigen
|
||||||
|
await prisma.event.create({
|
||||||
|
data: {
|
||||||
|
title: "Nachweis storniert",
|
||||||
|
description: ((user.rolle === "ADMIN") && (nachweis.benutzer_id !== user.id)) ? "Nachweis wurde von einem Administrator storniert." : "Nachweis wurde vom Besitzer storniert.",
|
||||||
|
benutzer: {
|
||||||
|
connect: {
|
||||||
|
id: user.id
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aufnahme: {
|
||||||
|
connect: {
|
||||||
|
id: nachweis.aufnahme_id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
export const GET = defineApiRoute({
|
||||||
|
meta: {
|
||||||
|
description: "Gibt ein spezifisches Gebäude des Benutzers zurück.",
|
||||||
|
tags: ["Gebäude"],
|
||||||
|
headers: {
|
||||||
|
"Authorization": {
|
||||||
|
description: "Ein gültiger Authentifizierungstoken",
|
||||||
|
required: true,
|
||||||
|
allowEmptyValue: false,
|
||||||
|
examples: {
|
||||||
|
Bearer: {
|
||||||
|
value: "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
output: GEGNachweisGewerbeSchema.merge(z.object({
|
||||||
|
uid_aufnahme: UUidWithPrefix,
|
||||||
|
uid_objekt: UUidWithPrefix,
|
||||||
|
uid_benutzer: UUidWithPrefix.optional()
|
||||||
|
})).omit({
|
||||||
|
id: true,
|
||||||
|
aufnahme_id: true,
|
||||||
|
benutzer_id: true
|
||||||
|
}),
|
||||||
|
middleware: authorizationMiddleware,
|
||||||
|
async fetch(input, context, user) {
|
||||||
|
const { uid } = context.params;
|
||||||
|
|
||||||
|
if (!uid) {
|
||||||
|
throw new APIError({
|
||||||
|
code: "BAD_REQUEST",
|
||||||
|
message: "Missing uid in request params"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const nachweis = await prisma.gEGNachweisGewerbe.findUnique({
|
||||||
|
where: {
|
||||||
|
uid,
|
||||||
|
benutzer_id: user.id
|
||||||
|
},
|
||||||
|
include: {
|
||||||
|
benutzer: {
|
||||||
|
select: {
|
||||||
|
uid: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
aufnahme: {
|
||||||
|
select: {
|
||||||
|
uid: true,
|
||||||
|
objekt: {
|
||||||
|
select: {
|
||||||
|
uid: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!nachweis) {
|
||||||
|
// Falls wir den Nachweis nicht finden können, werfen wir einen Fehler
|
||||||
|
throw new APIError({
|
||||||
|
code: "NOT_FOUND",
|
||||||
|
message: "Nachweis konnte nicht gefunden werden.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
uid_aufnahme: nachweis.aufnahme.uid,
|
||||||
|
uid_objekt: nachweis.aufnahme.objekt.uid,
|
||||||
|
uid_benutzer: nachweis.benutzer?.uid,
|
||||||
|
...exclude(nachweis, ["id", "aufnahme_id", "benutzer_id", "aufnahme"])
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
143
src/pages/api/geg-nachweis-gewerbe/index.ts
Normal file
143
src/pages/api/geg-nachweis-gewerbe/index.ts
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
import { UUidWithPrefix } from "#components/Ausweis/types.js";
|
||||||
|
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||||
|
import { GEGNachweisGewerbeSchema, GEGNachweisWohnenSchema, prisma } from "@ibcornelsen/database/server";
|
||||||
|
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||||
|
import { z } from "zod";
|
||||||
|
|
||||||
|
export const PUT = defineApiRoute({
|
||||||
|
meta: {
|
||||||
|
contentTypes: ["application/json"],
|
||||||
|
description:
|
||||||
|
"Erstellt einen neuen GEG Nachweis für Gewerbegebäude.",
|
||||||
|
tags: ["GEG Nachweis"],
|
||||||
|
},
|
||||||
|
input: z.object({
|
||||||
|
nachweis: GEGNachweisGewerbeSchema.omit({
|
||||||
|
id: true,
|
||||||
|
benutzer_id: true,
|
||||||
|
uid: true,
|
||||||
|
aufnahme_id: true,
|
||||||
|
geg_einpreisung_id: true,
|
||||||
|
}),
|
||||||
|
uid_aufnahme: UUidWithPrefix
|
||||||
|
}),
|
||||||
|
output: z.object({
|
||||||
|
uid: UUidWithPrefix,
|
||||||
|
objekt_uid: UUidWithPrefix,
|
||||||
|
aufnahme_uid: UUidWithPrefix,
|
||||||
|
}),
|
||||||
|
headers: authorizationHeaders,
|
||||||
|
middleware: authorizationMiddleware,
|
||||||
|
async fetch(input, ctx, user) {
|
||||||
|
const aufnahme = await prisma.aufnahme.findUnique({
|
||||||
|
where: {
|
||||||
|
uid: input.uid_aufnahme
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!aufnahme || aufnahme.benutzer_id !== user.id) {
|
||||||
|
throw new APIError({
|
||||||
|
code: "FORBIDDEN",
|
||||||
|
message: "Aufnahme konnte nicht gefunden werden oder gehört nicht zu diesem Benutzer."
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const nachweis = await prisma.gEGNachweisGewerbe.create({
|
||||||
|
data: {
|
||||||
|
...input.nachweis,
|
||||||
|
benutzer: {
|
||||||
|
connect: {
|
||||||
|
id: user.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
aufnahme: {
|
||||||
|
connect: {
|
||||||
|
id: aufnahme.id,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
select: {
|
||||||
|
uid: true,
|
||||||
|
aufnahme: {
|
||||||
|
select: {
|
||||||
|
uid: true,
|
||||||
|
objekt: {
|
||||||
|
select: {
|
||||||
|
uid: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
uid: nachweis.uid,
|
||||||
|
objekt_uid: nachweis.aufnahme.objekt.uid,
|
||||||
|
aufnahme_uid: nachweis.aufnahme.uid,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export const GET = defineApiRoute({
|
||||||
|
meta: {
|
||||||
|
description: "Gibt eine spezifische GEG Nachweis Anfrage des Benutzers zurück.",
|
||||||
|
tags: ["GEG Nachweis"],
|
||||||
|
headers: {
|
||||||
|
Authorization: {
|
||||||
|
description: "Ein gültiger Authentifizierungstoken",
|
||||||
|
required: true,
|
||||||
|
allowEmptyValue: false,
|
||||||
|
examples: {
|
||||||
|
Bearer: {
|
||||||
|
value: "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
headers: authorizationHeaders,
|
||||||
|
middleware: authorizationMiddleware,
|
||||||
|
async fetch(input, context, user) {
|
||||||
|
const { uid } = context.params;
|
||||||
|
|
||||||
|
const nachweis = await prisma.gEGNachweisGewerbe.findUnique({
|
||||||
|
where: {
|
||||||
|
uid,
|
||||||
|
},
|
||||||
|
include: {
|
||||||
|
benutzer: true,
|
||||||
|
aufnahme: {
|
||||||
|
include: {
|
||||||
|
rechnungen: true,
|
||||||
|
events: {
|
||||||
|
include: {
|
||||||
|
benutzer: {
|
||||||
|
select: {
|
||||||
|
uid: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
orderBy: {
|
||||||
|
date: "asc",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
if (
|
||||||
|
!nachweis ||
|
||||||
|
(nachweis.benutzer_id !== null && nachweis.benutzer_id !== user.id)
|
||||||
|
) {
|
||||||
|
// Falls wir den Ausweis nicht finden können, werfen wir einen Fehler
|
||||||
|
throw new APIError({
|
||||||
|
code: "NOT_FOUND",
|
||||||
|
message: "GEG Nachweis konnte nicht gefunden werden.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return nachweis;
|
||||||
|
},
|
||||||
|
});
|
||||||
@@ -10,6 +10,7 @@ export const PATCH = defineApiRoute({
|
|||||||
uid: true,
|
uid: true,
|
||||||
id: true,
|
id: true,
|
||||||
benutzer_id: true,
|
benutzer_id: true,
|
||||||
|
geg_einpreisung_id: true,
|
||||||
aufnahme_id: true,
|
aufnahme_id: true,
|
||||||
}),
|
}),
|
||||||
output: z.void(),
|
output: z.void(),
|
||||||
|
|||||||
@@ -16,7 +16,8 @@ export const PUT = defineApiRoute({
|
|||||||
id: true,
|
id: true,
|
||||||
benutzer_id: true,
|
benutzer_id: true,
|
||||||
uid: true,
|
uid: true,
|
||||||
aufnahme_id: true
|
aufnahme_id: true,
|
||||||
|
geg_einpreisung_id: true
|
||||||
}),
|
}),
|
||||||
uid_aufnahme: UUidWithPrefix
|
uid_aufnahme: UUidWithPrefix
|
||||||
}),
|
}),
|
||||||
@@ -80,8 +81,8 @@ export const PUT = defineApiRoute({
|
|||||||
|
|
||||||
export const GET = defineApiRoute({
|
export const GET = defineApiRoute({
|
||||||
meta: {
|
meta: {
|
||||||
description: "Gibt ein spezifisches Gebäude des Benutzers zurück.",
|
description: "Gibt eine spezifische GEG Nachweis Anfrage des Benutzers zurück.",
|
||||||
tags: ["Gebäude"],
|
tags: ["GEG Nachweis"],
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: {
|
Authorization: {
|
||||||
description: "Ein gültiger Authentifizierungstoken",
|
description: "Ein gültiger Authentifizierungstoken",
|
||||||
@@ -95,11 +96,12 @@ export const GET = defineApiRoute({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
headers: authorizationHeaders,
|
||||||
middleware: authorizationMiddleware,
|
middleware: authorizationMiddleware,
|
||||||
async fetch(input, context, user) {
|
async fetch(input, context, user) {
|
||||||
const { uid } = context.params;
|
const { uid } = context.params;
|
||||||
|
|
||||||
const ausweis = await prisma.verbrauchsausweisWohnen.findUnique({
|
const nachweis = await prisma.gEGNachweisGewerbe.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid,
|
uid,
|
||||||
},
|
},
|
||||||
@@ -126,16 +128,16 @@ export const GET = defineApiRoute({
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (
|
if (
|
||||||
!ausweis ||
|
!nachweis ||
|
||||||
(ausweis.benutzer_id !== null && ausweis.benutzer_id !== user.id)
|
(nachweis.benutzer_id !== null && nachweis.benutzer_id !== user.id)
|
||||||
) {
|
) {
|
||||||
// Falls wir den Ausweis nicht finden können, werfen wir einen Fehler
|
// Falls wir den Ausweis nicht finden können, werfen wir einen Fehler
|
||||||
throw new APIError({
|
throw new APIError({
|
||||||
code: "NOT_FOUND",
|
code: "NOT_FOUND",
|
||||||
message: "Ausweis konnte nicht gefunden werden.",
|
message: "GEG Nachweis konnte nicht gefunden werden.",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return ausweis;
|
return nachweis;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
0
src/testing/anfragen-umziehen.ts
Normal file
0
src/testing/anfragen-umziehen.ts
Normal file
2000
src/testing/ausweise.csv
Normal file
2000
src/testing/ausweise.csv
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -1,15 +1,11 @@
|
|||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import ausweise from "./ausweise.json" assert { type: "json" };
|
|
||||||
import users from "./users.json" assert { type: "json" };
|
|
||||||
import newUserIdMap from "./new-user-id-map.json" assert { type: "json" };
|
import newUserIdMap from "./new-user-id-map.json" assert { type: "json" };
|
||||||
import processed from "./processed.json" assert { type: "json" };
|
import processed from "./processed.json" assert { type: "json" };
|
||||||
import { Benutzer, Enums, prisma } from "@ibcornelsen/database/server";
|
import { Benutzer, Enums, prisma } from "@ibcornelsen/database/server";
|
||||||
import * as fs from "fs";
|
import * as fs from "fs";
|
||||||
import { fileURLToPath } from "url";
|
import { fileURLToPath } from "url";
|
||||||
import { hashPassword } from "#lib/password.js";
|
import { hashPassword } from "#lib/password.js";
|
||||||
|
import Papa from "papaparse"
|
||||||
const datasets = ausweise[2].data;
|
|
||||||
const datasetUsers = users[2].data;
|
|
||||||
|
|
||||||
const saveUserMap = () => {
|
const saveUserMap = () => {
|
||||||
fs.writeFileSync(
|
fs.writeFileSync(
|
||||||
@@ -18,285 +14,419 @@ const saveUserMap = () => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!datasets || !datasetUsers) {
|
const path = fileURLToPath(new URL("./ausweise.csv", import.meta.url));
|
||||||
throw new Error("Invalid dataset");
|
|
||||||
|
if (!fs.existsSync(path)) {
|
||||||
|
throw new Error(`${path} existiert nicht.`)
|
||||||
}
|
}
|
||||||
|
|
||||||
let i = 0;
|
const file = fs.createReadStream(path, "utf8");
|
||||||
for (const user of datasetUsers) {
|
Papa.parse(file, {
|
||||||
if (user.id in newUserIdMap) {
|
header: true,
|
||||||
continue;
|
step: async function(results) {
|
||||||
}
|
const dataset = results.data as any;
|
||||||
|
|
||||||
try {
|
if (dataset.id in processed) {
|
||||||
const benutzer = await prisma.benutzer.create({
|
return;
|
||||||
data: {
|
}
|
||||||
email: user.email,
|
|
||||||
passwort: user.password,
|
const user_id = dataset.user_id;
|
||||||
adresse: user.adresse,
|
|
||||||
anrede: user.anrede,
|
let user: Benutzer;
|
||||||
name: user.name,
|
if (!newUserIdMap[user_id]) {
|
||||||
vorname: user.vorname,
|
console.log(`Missing user ${user_id}`);
|
||||||
ort: user.ort,
|
|
||||||
plz: user.plz,
|
user = await prisma.benutzer.create({
|
||||||
rolle:
|
|
||||||
parseInt(user.level) == 4
|
|
||||||
? Enums.BenutzerRolle.ADMIN
|
|
||||||
: Enums.BenutzerRolle.USER,
|
|
||||||
firma: user.firma,
|
|
||||||
lex_office_id: user.lex_office_id,
|
|
||||||
telefon: user.phone,
|
|
||||||
},
|
|
||||||
select: {
|
|
||||||
uid: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
newUserIdMap[user.id] = benutzer.uid;
|
|
||||||
} catch (e) {
|
|
||||||
saveUserMap();
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Alle 50 werden gespeichert.
|
|
||||||
if (i % 50 == 0) {
|
|
||||||
saveUserMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
const saveProcessed = () => {
|
|
||||||
fs.writeFileSync(
|
|
||||||
fileURLToPath(new URL("./processed.json", import.meta.url)),
|
|
||||||
JSON.stringify(processed)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
for (const dataset of datasets) {
|
|
||||||
if (dataset.id in processed) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
let user: Benutzer;
|
|
||||||
if (!newUserIdMap[dataset.user_id]) {
|
|
||||||
user = await prisma.benutzer.create({
|
|
||||||
data: {
|
|
||||||
email: dataset.email,
|
|
||||||
passwort: hashPassword(Math.random().toString(36).slice(-8)),
|
|
||||||
adresse: dataset.strasse,
|
|
||||||
ort: dataset.ort,
|
|
||||||
plz: dataset.plz,
|
|
||||||
name: dataset.name,
|
|
||||||
vorname: dataset.vorname,
|
|
||||||
rolle: Enums.BenutzerRolle.USER,
|
|
||||||
telefon: dataset.telefonnummer,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
newUserIdMap[dataset.user_id] = user.uid;
|
|
||||||
saveUserMap();
|
|
||||||
} else {
|
|
||||||
user = await prisma.benutzer.findUnique({
|
|
||||||
where: {
|
|
||||||
uid: newUserIdMap[dataset.user_id],
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!user) {
|
|
||||||
saveProcessed();
|
|
||||||
throw new Error("Benutzer ist nicht vorhanden.");
|
|
||||||
}
|
|
||||||
|
|
||||||
await prisma.$transaction(async (tx) => {
|
|
||||||
const objekt = await prisma.objekt.create({
|
|
||||||
data: {
|
|
||||||
adresse: dataset.strasse,
|
|
||||||
erstellungsdatum: moment(dataset.erstellungsdatum).toDate(),
|
|
||||||
ort: dataset.objekt_ort,
|
|
||||||
plz: dataset.objekt_plz,
|
|
||||||
benutzer: {
|
|
||||||
connect: {
|
|
||||||
uid: user.uid,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const aufnahme = await prisma.aufnahme.create({
|
|
||||||
data: {
|
|
||||||
alternative_heizung: dataset.alheizung == "1",
|
|
||||||
alternative_kuehlung: dataset.alkuehlung == "1",
|
|
||||||
alternative_lueftung: dataset.allueftung == "1",
|
|
||||||
alternative_warmwasser: dataset.alwarmwasser == "1",
|
|
||||||
aussenwand_gedaemmt: dataset.aussenwand_gedaemmt == "1",
|
|
||||||
aussenwand_min_12cm_gedaemmt:
|
|
||||||
dataset.aussenwand_min_12cm_gedaemmt == "1",
|
|
||||||
ausstellungsdatum: moment(dataset.erstellungsdatum).toDate(),
|
|
||||||
baujahr_gebaeude: parseInt(dataset.baujahr_gebaeude) ? [parseInt(dataset.baujahr_gebaeude)] : [],
|
|
||||||
baujahr_heizung: parseInt(dataset.baujahr_anlage) ? [parseInt(dataset.baujahr_anlage)] : [],
|
|
||||||
baujahr_klima: parseInt(dataset.baujahr_klimaanlage) ? [parseInt(dataset.baujahr_klimaanlage)] : [],
|
|
||||||
benutzer: {
|
|
||||||
connect: {
|
|
||||||
uid: user.uid,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
objekt: {
|
|
||||||
connect: {
|
|
||||||
id: objekt.id,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
brennstoff_1: dataset.energietraeger_1,
|
|
||||||
brennstoff_2: dataset.energietraeger_2,
|
|
||||||
dachgeschoss:
|
|
||||||
dataset.dachgeschoss == "Beheizt"
|
|
||||||
? Enums.Heizungsstatus.BEHEIZT
|
|
||||||
: dataset.dachgeschoss == "Nicht Vorhanden"
|
|
||||||
? Enums.Heizungsstatus.NICHT_VORHANDEN
|
|
||||||
: Enums.Heizungsstatus.UNBEHEIZT,
|
|
||||||
brennwert_kessel: dataset.brennwert_kessel == "1",
|
|
||||||
dachgeschoss_gedaemmt: dataset.dachgeschoss_gedaemmt == "1",
|
|
||||||
dachgeschoss_min_12cm_gedaemmt:
|
|
||||||
dataset.dachgeschoss_min_12cm_gedaemmt == "1",
|
|
||||||
doppel_verglasung: dataset.doppel_verglasung == "1",
|
|
||||||
dreifach_verglasung: dataset.dreifach_verglasung == "1",
|
|
||||||
durchlauf_erhitzer: dataset.durchlauf_erhitzer == "1",
|
|
||||||
einfach_verglasung: dataset.einfach_verglasung == "1",
|
|
||||||
einzelofen: dataset.einzelofen == "1",
|
|
||||||
einheiten: parseInt(dataset.anzahl_einheiten),
|
|
||||||
fenster_dicht: dataset.fenster_dicht == "1",
|
|
||||||
fenster_teilweise_undicht:
|
|
||||||
dataset.fenster_teilweise_undicht == "1",
|
|
||||||
flaeche: parseFloat(dataset.wohnflaeche),
|
|
||||||
nutzflaeche: parseFloat(dataset.nutzflaeche),
|
|
||||||
gebaeudeteil: dataset.objekt_gebaeudeteil,
|
|
||||||
gebaeudetyp: dataset.objekt_typ,
|
|
||||||
heizungsrohre_gedaemmt: dataset.heizungsrohre_gedaemmt == "1",
|
|
||||||
isolier_verglasung: dataset.isolier_verglasung == "1",
|
|
||||||
keller:
|
|
||||||
dataset.keller_beheizt == "Beheizt"
|
|
||||||
? Enums.Heizungsstatus.BEHEIZT
|
|
||||||
: dataset.dachgeschoss == "Nicht Vorhanden"
|
|
||||||
? Enums.Heizungsstatus.NICHT_VORHANDEN
|
|
||||||
: Enums.Heizungsstatus.UNBEHEIZT,
|
|
||||||
keller_decke_gedaemmt: dataset.keller_decke_gedaemmt == "1",
|
|
||||||
keller_wand_gedaemmt: dataset.keller_wand_gedaemmt == "1",
|
|
||||||
kuehlung: dataset.wird_gekuehlt,
|
|
||||||
erstellungsdatum: moment(dataset.erstellungsdatum).toDate(),
|
|
||||||
rolllaeden_kaesten_gedaemmt:
|
|
||||||
dataset.rolllaeden_kaesten_gedaemmt == "1",
|
|
||||||
leerstand: parseInt(dataset.leerstand),
|
|
||||||
lueftung:
|
|
||||||
dataset.lueftungskonzept == "Fensterlüftung"
|
|
||||||
? Enums.Lueftungskonzept.Fensterlueftung
|
|
||||||
: dataset.lueftungskonzept ==
|
|
||||||
"Lüftungsanlage mit Wärmerückgewinnung"
|
|
||||||
? Enums.Lueftungskonzept
|
|
||||||
.LueftungsanlageMitWaermerueckgewinnung
|
|
||||||
: dataset.lueftungskonzept ==
|
|
||||||
"Lüftungsanlage ohne Wärmerückgewinnung"
|
|
||||||
? Enums.Lueftungskonzept
|
|
||||||
.LueftungsanlageOhneWaermerueckgewinnung
|
|
||||||
: Enums.Lueftungskonzept.Schachtlueftung,
|
|
||||||
niedertemperatur_kessel: dataset.niedertemperatur_kessel == "1",
|
|
||||||
oberste_geschossdecke_gedaemmt:
|
|
||||||
dataset.oberste_geschossdecke_gedaemmt == "1",
|
|
||||||
oberste_geschossdecke_min_12cm_gedaemmt:
|
|
||||||
dataset.oberste_geschossdecke_min_12cm_gedaemmt == "1",
|
|
||||||
photovoltaik: dataset.photovoltaik == "1",
|
|
||||||
raum_temperatur_regler: dataset.raum_temperatur_regler == "1",
|
|
||||||
saniert: dataset.objekt_saniert == "1",
|
|
||||||
solarsystem_warmwasser: dataset.solarsystem_warmwasser == "1",
|
|
||||||
standard_kessel: dataset.standard_kessel == "1",
|
|
||||||
tueren_dicht: dataset.tueren_dicht == "1",
|
|
||||||
tueren_undicht: dataset.tueren_undicht == "1",
|
|
||||||
waermepumpe: dataset.waermepumpe == "1",
|
|
||||||
warmwasser_rohre_gedaemmt:
|
|
||||||
dataset.warmwasser_rohre_gedaemmt == "1",
|
|
||||||
zentralheizung: dataset.zentralheizung == "1",
|
|
||||||
zirkulation: dataset.zirkulation == "1",
|
|
||||||
boxpruefung: dataset.boxpruefung == "1",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (dataset.ausweisart === "VA") {
|
|
||||||
const ausweis = await prisma.verbrauchsausweisWohnen.create({
|
|
||||||
data: {
|
data: {
|
||||||
alternative_heizung: dataset.alheizung == "1",
|
email: dataset.email || "nutzer@nutzeremail.com",
|
||||||
alternative_kuehlung: dataset.alkuehlung == "1",
|
passwort: hashPassword(Math.random().toString(36).slice(-8)),
|
||||||
alternative_lueftung: dataset.allueftung == "1",
|
adresse: dataset.strasse,
|
||||||
alternative_warmwasser: dataset.alwarmwasser == "1",
|
ort: dataset.ort,
|
||||||
anteil_warmwasser_1: parseFloat(
|
plz: dataset.plz,
|
||||||
dataset.anteil_warmwasser_1
|
name: dataset.name,
|
||||||
),
|
vorname: dataset.vorname,
|
||||||
anteil_warmwasser_2: parseFloat(
|
rolle: Enums.BenutzerRolle.USER,
|
||||||
dataset.anteil_warmwasser_2
|
telefon: dataset.telefonnummer,
|
||||||
),
|
},
|
||||||
aufnahme: {
|
});
|
||||||
connect: {
|
|
||||||
id: aufnahme.id,
|
newUserIdMap[user_id] = user.uid;
|
||||||
},
|
saveUserMap();
|
||||||
},
|
} else {
|
||||||
ausgestellt: dataset.erledigt == "2",
|
user = await prisma.benutzer.findUnique({
|
||||||
ausstellgrund:
|
where: {
|
||||||
dataset.ausstellgrund == "Vermietung"
|
uid: newUserIdMap[user_id],
|
||||||
? Enums.Ausstellgrund.Vermietung
|
},
|
||||||
: dataset.ausstellgrund == "Verkauf"
|
});
|
||||||
? Enums.Ausstellgrund.Verkauf
|
}
|
||||||
: dataset.ausstellgrund == "Modernisierung"
|
|
||||||
? Enums.Ausstellgrund.Modernisierung
|
if (!user) {
|
||||||
: dataset.ausstellgrund == "Neubau"
|
saveProcessed();
|
||||||
? Enums.Ausstellgrund.Neubau
|
throw new Error("Benutzer ist nicht vorhanden.");
|
||||||
: Enums.Ausstellgrund.Sonstiges,
|
}
|
||||||
bestellt: dataset.erledigt == "0",
|
|
||||||
einheit_1: dataset.energietraeger_einheit_heizquelle_1,
|
await prisma.$transaction(async (tx) => {
|
||||||
einheit_2: dataset.energietraeger_einheit_heizquelle_2,
|
const objekt = await tx.objekt.create({
|
||||||
storniert: dataset.erledigt == "4",
|
data: {
|
||||||
|
adresse: dataset.strasse,
|
||||||
|
erstellungsdatum: moment(dataset.erstellungsdatum).toDate(),
|
||||||
|
ort: dataset.objekt_ort,
|
||||||
|
plz: dataset.objekt_plz,
|
||||||
benutzer: {
|
benutzer: {
|
||||||
connect: {
|
connect: {
|
||||||
uid: user.uid,
|
uid: user.uid,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
kontrolldatei_angefragt: dataset.kontrolldatei == "1",
|
|
||||||
registriernummer: dataset.regnummer,
|
|
||||||
startdatum: moment(
|
|
||||||
`${dataset.energieverbrauch_zeitraum_jahr}-${dataset.energieverbrauch_zeitraum_monat.padStart(2, "0")}-01`
|
|
||||||
).toDate(),
|
|
||||||
verbrauch_1: parseFloat(
|
|
||||||
dataset.energieverbrauch_1_heizquelle_1
|
|
||||||
),
|
|
||||||
verbrauch_2: parseFloat(
|
|
||||||
dataset.energieverbrauch_2_heizquelle_1
|
|
||||||
),
|
|
||||||
verbrauch_3: parseFloat(
|
|
||||||
dataset.energieverbrauch_3_heizquelle_1
|
|
||||||
),
|
|
||||||
verbrauch_4: parseFloat(
|
|
||||||
dataset.energieverbrauch_1_heizquelle_2
|
|
||||||
),
|
|
||||||
verbrauch_5: parseFloat(
|
|
||||||
dataset.energieverbrauch_2_heizquelle_2
|
|
||||||
),
|
|
||||||
verbrauch_6: parseFloat(
|
|
||||||
dataset.energieverbrauch_3_heizquelle_2
|
|
||||||
),
|
|
||||||
warmwasser_anteil_bekannt:
|
|
||||||
dataset.warmwasser_anteil_bekannt == "1",
|
|
||||||
warmwasser_enthalten: dataset.warmwasser_enthalten == "1",
|
|
||||||
zurueckgestellt: dataset.zurueckGestellt == "1",
|
|
||||||
zusaetzliche_heizquelle:
|
|
||||||
dataset.zusaetzliche_heizquelle == "1",
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
const aufnahme = await tx.aufnahme.create({
|
||||||
processed[dataset.id] = true;
|
data: {
|
||||||
|
alternative_heizung: dataset.alheizung == "1",
|
||||||
if (i % 25 == 0) {
|
alternative_kuehlung: dataset.alkuehlung == "1",
|
||||||
|
alternative_lueftung: dataset.allueftung == "1",
|
||||||
|
alternative_warmwasser: dataset.alwarmwasser == "1",
|
||||||
|
aussenwand_gedaemmt: dataset.aussenwand_gedaemmt == "1",
|
||||||
|
aussenwand_min_12cm_gedaemmt:
|
||||||
|
dataset.aussenwand_min_12cm_gedaemmt == "1",
|
||||||
|
ausstellungsdatum: moment(dataset.erstellungsdatum).toDate(),
|
||||||
|
baujahr_gebaeude: parseInt(dataset.baujahr_gebaeude) ? [parseInt(dataset.baujahr_gebaeude)] : [],
|
||||||
|
baujahr_heizung: parseInt(dataset.baujahr_anlage) ? [parseInt(dataset.baujahr_anlage)] : [],
|
||||||
|
baujahr_klima: parseInt(dataset.baujahr_klimaanlage) ? [parseInt(dataset.baujahr_klimaanlage)] : [],
|
||||||
|
benutzer: {
|
||||||
|
connect: {
|
||||||
|
uid: user.uid,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
objekt: {
|
||||||
|
connect: {
|
||||||
|
id: objekt.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
brennstoff_1: dataset.energietraeger_1,
|
||||||
|
brennstoff_2: dataset.energietraeger_2,
|
||||||
|
dachgeschoss:
|
||||||
|
dataset.dachgeschoss == "Beheizt"
|
||||||
|
? Enums.Heizungsstatus.BEHEIZT
|
||||||
|
: dataset.dachgeschoss == "Nicht Vorhanden"
|
||||||
|
? Enums.Heizungsstatus.NICHT_VORHANDEN
|
||||||
|
: Enums.Heizungsstatus.UNBEHEIZT,
|
||||||
|
brennwert_kessel: dataset.brennwert_kessel == "1",
|
||||||
|
dachgeschoss_gedaemmt: dataset.dachgeschoss_gedaemmt == "1",
|
||||||
|
dachgeschoss_min_12cm_gedaemmt:
|
||||||
|
dataset.dachgeschoss_min_12cm_gedaemmt == "1",
|
||||||
|
doppel_verglasung: dataset.doppel_verglasung == "1",
|
||||||
|
dreifach_verglasung: dataset.dreifach_verglasung == "1",
|
||||||
|
durchlauf_erhitzer: dataset.durchlauf_erhitzer == "1",
|
||||||
|
einfach_verglasung: dataset.einfach_verglasung == "1",
|
||||||
|
einzelofen: dataset.einzelofen == "1",
|
||||||
|
einheiten: parseInt(dataset.anzahl_einheiten),
|
||||||
|
fenster_dicht: dataset.fenster_dicht == "1",
|
||||||
|
fenster_teilweise_undicht:
|
||||||
|
dataset.fenster_teilweise_undicht == "1",
|
||||||
|
flaeche: parseFloat(dataset.wohnflaeche),
|
||||||
|
nutzflaeche: parseFloat(dataset.nutzflaeche),
|
||||||
|
gebaeudeteil: dataset.objekt_gebaeudeteil,
|
||||||
|
gebaeudetyp: dataset.objekt_typ,
|
||||||
|
heizungsrohre_gedaemmt: dataset.heizungsrohre_gedaemmt == "1",
|
||||||
|
isolier_verglasung: dataset.isolier_verglasung == "1",
|
||||||
|
keller:
|
||||||
|
dataset.keller_beheizt == "Beheizt"
|
||||||
|
? Enums.Heizungsstatus.BEHEIZT
|
||||||
|
: dataset.dachgeschoss == "Nicht Vorhanden"
|
||||||
|
? Enums.Heizungsstatus.NICHT_VORHANDEN
|
||||||
|
: Enums.Heizungsstatus.UNBEHEIZT,
|
||||||
|
keller_decke_gedaemmt: dataset.keller_decke_gedaemmt == "1",
|
||||||
|
keller_wand_gedaemmt: dataset.keller_wand_gedaemmt == "1",
|
||||||
|
kuehlung: dataset.wird_gekuehlt,
|
||||||
|
erstellungsdatum: moment(dataset.erstellungsdatum).toDate(),
|
||||||
|
rolllaeden_kaesten_gedaemmt:
|
||||||
|
dataset.rolllaeden_kaesten_gedaemmt == "1",
|
||||||
|
leerstand: parseInt(dataset.leerstand),
|
||||||
|
lueftung:
|
||||||
|
dataset.lueftungskonzept == "Fensterlüftung"
|
||||||
|
? Enums.Lueftungskonzept.Fensterlueftung
|
||||||
|
: dataset.lueftungskonzept ==
|
||||||
|
"Lüftungsanlage mit Wärmerückgewinnung"
|
||||||
|
? Enums.Lueftungskonzept
|
||||||
|
.LueftungsanlageMitWaermerueckgewinnung
|
||||||
|
: dataset.lueftungskonzept ==
|
||||||
|
"Lüftungsanlage ohne Wärmerückgewinnung"
|
||||||
|
? Enums.Lueftungskonzept
|
||||||
|
.LueftungsanlageOhneWaermerueckgewinnung
|
||||||
|
: Enums.Lueftungskonzept.Schachtlueftung,
|
||||||
|
niedertemperatur_kessel: dataset.niedertemperatur_kessel == "1",
|
||||||
|
oberste_geschossdecke_gedaemmt:
|
||||||
|
dataset.oberste_geschossdecke_gedaemmt == "1",
|
||||||
|
oberste_geschossdecke_min_12cm_gedaemmt:
|
||||||
|
dataset.oberste_geschossdecke_min_12cm_gedaemmt == "1",
|
||||||
|
photovoltaik: dataset.photovoltaik == "1",
|
||||||
|
raum_temperatur_regler: dataset.raum_temperatur_regler == "1",
|
||||||
|
saniert: dataset.objekt_saniert == "1",
|
||||||
|
solarsystem_warmwasser: dataset.solarsystem_warmwasser == "1",
|
||||||
|
standard_kessel: dataset.standard_kessel == "1",
|
||||||
|
tueren_dicht: dataset.tueren_dicht == "1",
|
||||||
|
tueren_undicht: dataset.tueren_undicht == "1",
|
||||||
|
waermepumpe: dataset.waermepumpe == "1",
|
||||||
|
warmwasser_rohre_gedaemmt:
|
||||||
|
dataset.warmwasser_rohre_gedaemmt == "1",
|
||||||
|
zentralheizung: dataset.zentralheizung == "1",
|
||||||
|
zirkulation: dataset.zirkulation == "1",
|
||||||
|
boxpruefung: dataset.boxpruefung == "1",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
if (dataset.ausweisart === "VA") {
|
||||||
|
const ausweis = await tx.verbrauchsausweisWohnen.create({
|
||||||
|
data: {
|
||||||
|
alternative_heizung: dataset.alheizung == "1",
|
||||||
|
alternative_kuehlung: dataset.alkuehlung == "1",
|
||||||
|
alternative_lueftung: dataset.allueftung == "1",
|
||||||
|
alternative_warmwasser: dataset.alwarmwasser == "1",
|
||||||
|
anteil_warmwasser_1: parseFloat(
|
||||||
|
dataset.anteil_warmwasser_1
|
||||||
|
),
|
||||||
|
anteil_warmwasser_2: parseFloat(
|
||||||
|
dataset.anteil_warmwasser_2
|
||||||
|
),
|
||||||
|
aufnahme: {
|
||||||
|
connect: {
|
||||||
|
id: aufnahme.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ausgestellt: dataset.erledigt == "2",
|
||||||
|
ausstellgrund:
|
||||||
|
dataset.ausstellgrund == "Vermietung"
|
||||||
|
? Enums.Ausstellgrund.Vermietung
|
||||||
|
: dataset.ausstellgrund == "Verkauf"
|
||||||
|
? Enums.Ausstellgrund.Verkauf
|
||||||
|
: dataset.ausstellgrund == "Modernisierung"
|
||||||
|
? Enums.Ausstellgrund.Modernisierung
|
||||||
|
: dataset.ausstellgrund == "Neubau"
|
||||||
|
? Enums.Ausstellgrund.Neubau
|
||||||
|
: Enums.Ausstellgrund.Sonstiges,
|
||||||
|
bestellt: dataset.erledigt == "0",
|
||||||
|
einheit_1: dataset.energietraeger_einheit_heizquelle_1,
|
||||||
|
einheit_2: dataset.energietraeger_einheit_heizquelle_2,
|
||||||
|
storniert: dataset.erledigt == "4",
|
||||||
|
benutzer: {
|
||||||
|
connect: {
|
||||||
|
uid: user.uid,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
kontrolldatei_angefragt: dataset.kontrolldatei == "1",
|
||||||
|
registriernummer: dataset.regnummer,
|
||||||
|
startdatum: moment(
|
||||||
|
`${dataset.energieverbrauch_zeitraum_jahr}-${dataset.energieverbrauch_zeitraum_monat.padStart(2, "0")}-01`
|
||||||
|
).toDate(),
|
||||||
|
verbrauch_1: parseFloat(
|
||||||
|
dataset.energieverbrauch_1_heizquelle_1
|
||||||
|
),
|
||||||
|
verbrauch_2: parseFloat(
|
||||||
|
dataset.energieverbrauch_2_heizquelle_1
|
||||||
|
),
|
||||||
|
verbrauch_3: parseFloat(
|
||||||
|
dataset.energieverbrauch_3_heizquelle_1
|
||||||
|
),
|
||||||
|
verbrauch_4: parseFloat(
|
||||||
|
dataset.energieverbrauch_1_heizquelle_2
|
||||||
|
),
|
||||||
|
verbrauch_5: parseFloat(
|
||||||
|
dataset.energieverbrauch_2_heizquelle_2
|
||||||
|
),
|
||||||
|
verbrauch_6: parseFloat(
|
||||||
|
dataset.energieverbrauch_3_heizquelle_2
|
||||||
|
),
|
||||||
|
warmwasser_anteil_bekannt:
|
||||||
|
dataset.warmwasser_anteil_bekannt == "1",
|
||||||
|
warmwasser_enthalten: dataset.warmwasser_enthalten == "1",
|
||||||
|
zurueckgestellt: dataset.zurueckGestellt == "1",
|
||||||
|
zusaetzliche_heizquelle:
|
||||||
|
dataset.zusaetzliche_heizquelle == "1",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} else if (dataset.ausweisart === "VANW") {
|
||||||
|
const ausweis = await tx.verbrauchsausweisGewerbe.create({
|
||||||
|
data: {
|
||||||
|
alternative_heizung: dataset.alheizung == "1",
|
||||||
|
alternative_kuehlung: dataset.alkuehlung == "1",
|
||||||
|
alternative_lueftung: dataset.allueftung == "1",
|
||||||
|
alternative_warmwasser: dataset.alwarmwasser == "1",
|
||||||
|
anteil_warmwasser_1: parseFloat(
|
||||||
|
dataset.anteil_warmwasser_1
|
||||||
|
),
|
||||||
|
anteil_warmwasser_2: parseFloat(
|
||||||
|
dataset.anteil_warmwasser_2
|
||||||
|
),
|
||||||
|
aufnahme: {
|
||||||
|
connect: {
|
||||||
|
id: aufnahme.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ausgestellt: dataset.erledigt == "2",
|
||||||
|
ausstellgrund:
|
||||||
|
dataset.ausstellgrund == "Vermietung"
|
||||||
|
? Enums.Ausstellgrund.Vermietung
|
||||||
|
: dataset.ausstellgrund == "Verkauf"
|
||||||
|
? Enums.Ausstellgrund.Verkauf
|
||||||
|
: dataset.ausstellgrund == "Modernisierung"
|
||||||
|
? Enums.Ausstellgrund.Modernisierung
|
||||||
|
: dataset.ausstellgrund == "Neubau"
|
||||||
|
? Enums.Ausstellgrund.Neubau
|
||||||
|
: Enums.Ausstellgrund.Sonstiges,
|
||||||
|
bestellt: dataset.erledigt == "0",
|
||||||
|
einheit_1: dataset.energietraeger_einheit_heizquelle_1,
|
||||||
|
einheit_2: dataset.energietraeger_einheit_heizquelle_2,
|
||||||
|
storniert: dataset.erledigt == "4",
|
||||||
|
benutzer: {
|
||||||
|
connect: {
|
||||||
|
uid: user.uid,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
kontrolldatei_angefragt: dataset.kontrolldatei == "1",
|
||||||
|
registriernummer: dataset.regnummer,
|
||||||
|
startdatum: moment(
|
||||||
|
`${dataset.energieverbrauch_zeitraum_jahr}-${dataset.energieverbrauch_zeitraum_monat.padStart(2, "0")}-01`
|
||||||
|
).toDate(),
|
||||||
|
verbrauch_1: parseFloat(
|
||||||
|
dataset.energieverbrauch_1_heizquelle_1
|
||||||
|
),
|
||||||
|
verbrauch_2: parseFloat(
|
||||||
|
dataset.energieverbrauch_2_heizquelle_1
|
||||||
|
),
|
||||||
|
verbrauch_3: parseFloat(
|
||||||
|
dataset.energieverbrauch_3_heizquelle_1
|
||||||
|
),
|
||||||
|
verbrauch_4: parseFloat(
|
||||||
|
dataset.energieverbrauch_1_heizquelle_2
|
||||||
|
),
|
||||||
|
verbrauch_5: parseFloat(
|
||||||
|
dataset.energieverbrauch_2_heizquelle_2
|
||||||
|
),
|
||||||
|
verbrauch_6: parseFloat(
|
||||||
|
dataset.energieverbrauch_3_heizquelle_2
|
||||||
|
),
|
||||||
|
anteil_kuehlung_1: parseFloat(dataset.anteil_kuehlung_1),
|
||||||
|
anteil_kuehlung_2: parseFloat(dataset.anteil_kuehlung_2),
|
||||||
|
brennstoff_1: dataset.energietraeger_1,
|
||||||
|
brennstoff_2: dataset.energietraeger_2,
|
||||||
|
strom_1: parseFloat(dataset.vanw_strom_1),
|
||||||
|
strom_2: parseFloat(dataset.vanw_strom_2),
|
||||||
|
strom_3: parseFloat(dataset.vanw_strom_3),
|
||||||
|
kuehlung_enthalten: dataset.wird_gekuehlt == "1" ? true : false,
|
||||||
|
stromverbrauch_enthaelt_beleuchtung: dataset.nwbeleuchtung == "1",
|
||||||
|
stromverbrauch_enthaelt_heizung: dataset.nwheizung == "1",
|
||||||
|
stromverbrauch_enthaelt_kuehlung: dataset.nwkuehlung == "1",
|
||||||
|
stromverbrauch_enthaelt_lueftung: dataset.nwlueftung == "1",
|
||||||
|
stromverbrauch_enthaelt_sonstige: dataset.nwsonstiges,
|
||||||
|
stromverbrauch_enthaelt_warmwasser: dataset.nwwarmwasser == "1",
|
||||||
|
warmwasser_enthalten: dataset.warmwasser_enthalten == "1",
|
||||||
|
zurueckgestellt: dataset.zurueckGestellt == "1",
|
||||||
|
zusaetzliche_heizquelle:
|
||||||
|
dataset.zusaetzliche_heizquelle == "1"
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} else if (dataset.ausweisart === "BA") {
|
||||||
|
const ausweis = await tx.bedarfsausweisWohnen.create({
|
||||||
|
data: {
|
||||||
|
alternative_heizung: dataset.alheizung == "1",
|
||||||
|
alternative_kuehlung: dataset.alkuehlung == "1",
|
||||||
|
alternative_lueftung: dataset.allueftung == "1",
|
||||||
|
alternative_warmwasser: dataset.alwarmwasser == "1",
|
||||||
|
aufnahme: {
|
||||||
|
connect: {
|
||||||
|
id: aufnahme.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ausgestellt: dataset.erledigt == "2",
|
||||||
|
ausstellgrund:
|
||||||
|
dataset.ausstellgrund == "Vermietung"
|
||||||
|
? Enums.Ausstellgrund.Vermietung
|
||||||
|
: dataset.ausstellgrund == "Verkauf"
|
||||||
|
? Enums.Ausstellgrund.Verkauf
|
||||||
|
: dataset.ausstellgrund == "Modernisierung"
|
||||||
|
? Enums.Ausstellgrund.Modernisierung
|
||||||
|
: dataset.ausstellgrund == "Neubau"
|
||||||
|
? Enums.Ausstellgrund.Neubau
|
||||||
|
: Enums.Ausstellgrund.Sonstiges,
|
||||||
|
bestellt: dataset.erledigt == "0",
|
||||||
|
storniert: dataset.erledigt == "4",
|
||||||
|
benutzer: {
|
||||||
|
connect: {
|
||||||
|
uid: user.uid,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
kontrolldatei_angefragt: dataset.kontrolldatei == "1",
|
||||||
|
registriernummer: dataset.regnummer,
|
||||||
|
zurueckgestellt: dataset.zurueckGestellt == "1",
|
||||||
|
anteil_zusatzheizung: parseFloat(dataset.anteil_zusatzheizung),
|
||||||
|
anzahl_gauben: parseInt(dataset.anzahl_gauben),
|
||||||
|
anzahl_vollgeschosse: parseInt(dataset.anzahl_vollgeschosse),
|
||||||
|
aussenwand_bauart: dataset.aussenwand_bauart,
|
||||||
|
aussenwand_daemmung: parseFloat(dataset.aussenwand_daemmung),
|
||||||
|
aussenwand_flaeche: parseFloat(dataset.aussenwand_flaeche),
|
||||||
|
aussenwand_u_wert: parseFloat(dataset.aussenwand_u_wert),
|
||||||
|
aussenwandflaeche_unbeheizt: parseFloat(dataset.aussenwandflaeche_unbeheizt),
|
||||||
|
boden_bauart: dataset.boden_bauart,
|
||||||
|
boden_daemmung: parseFloat(dataset.boden_daemmung),
|
||||||
|
breite_gauben: parseFloat(dataset.breite_gauben),
|
||||||
|
dach_bauart: dataset.dach_bauart,
|
||||||
|
dach_daemmung: parseFloat(dataset.dach_daemmung),
|
||||||
|
dach_u_wert: parseFloat(dataset.dach_u_wert),
|
||||||
|
// TODO Das machen wir zwar so aber das ist doch scheiße....
|
||||||
|
dachfenster_art: parseFloat(dataset.dachfenster_art),
|
||||||
|
dachfenster_flaeche: parseFloat(dataset.dachfenster_flaeche),
|
||||||
|
dachflaeche: parseFloat(dataset.dachflaeche),
|
||||||
|
decke_bauart: dataset.decke_bauart,
|
||||||
|
decke_daemmung: parseFloat(dataset.decke_daemmung),
|
||||||
|
decke_u_wert: parseFloat(dataset.decke_u_wert),
|
||||||
|
dicht: dataset.dicht == "1",
|
||||||
|
fenster_art_1: parseFloat(dataset.fenster_art_1),
|
||||||
|
fenster_art_2: parseFloat(dataset.fenster_art_2),
|
||||||
|
deckenflaeche: parseFloat(dataset.deckenflaeche),
|
||||||
|
fenster_flaeche_1: parseFloat(dataset.fenster_flaeche_1),
|
||||||
|
fenster_flaeche_2: parseFloat(dataset.fenster_flaeche_2),
|
||||||
|
fensterflaeche_nw_no: parseFloat(dataset.fensterflaeche_nw_no),
|
||||||
|
fensterflaeche_so_sw: parseFloat(dataset.fensterflaeche_so_sw),
|
||||||
|
fussboden_flaeche: parseFloat(dataset.fussboden_flaeche),
|
||||||
|
fussboden_u_wert: parseFloat(dataset.fussboden_u_wert),
|
||||||
|
geschosshoehe: parseFloat(dataset.geschosshoehe),
|
||||||
|
haustuer_art: parseFloat(dataset.haustuer_art),
|
||||||
|
haustuer_flaeche: parseFloat(dataset.haustuer_flaeche),
|
||||||
|
heizung_speicherung: dataset.heizung_speicherung,
|
||||||
|
heizung_verteilung: dataset.heizung_verteilung,
|
||||||
|
heizung_zentral: dataset.heizung_zentral == "1",
|
||||||
|
masse_a: parseFloat(dataset.masse_a),
|
||||||
|
masse_b: parseFloat(dataset.masse_b),
|
||||||
|
masse_c: parseFloat(dataset.masse_c),
|
||||||
|
masse_d: parseFloat(dataset.masse_d),
|
||||||
|
masse_e: parseFloat(dataset.masse_e),
|
||||||
|
masse_f: parseFloat(dataset.masse_f),
|
||||||
|
kollektor_flaeche: parseFloat(dataset.kollektor_flaeche),
|
||||||
|
volumen: parseFloat(dataset.volumen),
|
||||||
|
waerme_erzeugung_heizung: dataset.waerme_erzeugung_heizung,
|
||||||
|
warmwasser_erzeugung: dataset.warmwasser_erzeugung,
|
||||||
|
warmwasser_speicherung: dataset.warmwasser_speicherung,
|
||||||
|
warmwasser_verteilung: dataset.warmwasser_verteilung
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
processed[dataset.id as string] = true;
|
||||||
saveProcessed()
|
saveProcessed()
|
||||||
}
|
}, {
|
||||||
});
|
maxWait: 5000,
|
||||||
}
|
timeout: 10000
|
||||||
|
});
|
||||||
|
},
|
||||||
|
complete(results, file) {
|
||||||
|
saveProcessed()
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
saveProcessed()
|
function saveProcessed() {
|
||||||
|
fs.writeFileSync(
|
||||||
|
fileURLToPath(new URL("./processed.json", import.meta.url)),
|
||||||
|
JSON.stringify(processed)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
62
src/testing/nutzer-umziehen.ts
Normal file
62
src/testing/nutzer-umziehen.ts
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
import userFile from "./users.json" assert { type: "json" };
|
||||||
|
import newUserIdMap from "./new-user-id-map.json" assert { type: "json" };
|
||||||
|
import { Enums, prisma } from "@ibcornelsen/database/server";
|
||||||
|
import * as fs from "fs";
|
||||||
|
import { fileURLToPath } from "url";
|
||||||
|
|
||||||
|
const users = userFile[2].data;
|
||||||
|
|
||||||
|
const saveUserMap = () => {
|
||||||
|
fs.writeFileSync(
|
||||||
|
fileURLToPath(new URL("./new-user-id-map.json", import.meta.url)),
|
||||||
|
JSON.stringify(newUserIdMap)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!users) {
|
||||||
|
throw new Error("Invalid dataset");
|
||||||
|
}
|
||||||
|
|
||||||
|
let i = 0;
|
||||||
|
for (const user of users) {
|
||||||
|
if (user.id in newUserIdMap) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const benutzer = await prisma.benutzer.create({
|
||||||
|
data: {
|
||||||
|
email: user.email,
|
||||||
|
passwort: user.password,
|
||||||
|
adresse: user.adresse,
|
||||||
|
anrede: user.anrede,
|
||||||
|
name: user.name,
|
||||||
|
vorname: user.vorname,
|
||||||
|
ort: user.ort,
|
||||||
|
plz: user.plz,
|
||||||
|
rolle:
|
||||||
|
parseInt(user.level) == 4
|
||||||
|
? Enums.BenutzerRolle.ADMIN
|
||||||
|
: Enums.BenutzerRolle.USER,
|
||||||
|
firma: user.firma,
|
||||||
|
lex_office_id: user.lex_office_id,
|
||||||
|
telefon: user.phone,
|
||||||
|
},
|
||||||
|
select: {
|
||||||
|
uid: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
newUserIdMap[user.id] = benutzer.uid;
|
||||||
|
} catch (e) {
|
||||||
|
saveUserMap();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Alle 50 werden gespeichert.
|
||||||
|
if (i % 50 == 0) {
|
||||||
|
saveUserMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user