diff --git a/bun.lock b/bun.lock index 73863ed9..36f6b9a9 100644 --- a/bun.lock +++ b/bun.lock @@ -86,7 +86,7 @@ "prisma-dbml-generator": "^0.12.0", "prisma-generator-fake-data": "^0.14.3", "tsx": "^4.19.3", - "typescript": "^4.9.5", + "typescript": "^5", "zod-prisma": "^0.5.4", }, }, @@ -2539,7 +2539,7 @@ "type-is": ["type-is@1.6.18", "", { "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" } }, "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="], - "typescript": ["typescript@4.9.5", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g=="], + "typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="], "ufo": ["ufo@1.5.4", "", {}, "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ=="], diff --git a/package.json b/package.json index cd28e355..93239d0c 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "prisma-dbml-generator": "^0.12.0", "prisma-generator-fake-data": "^0.14.3", "tsx": "^4.19.3", - "typescript": "^4.9.5", + "typescript": "^5.8.3", "zod-prisma": "^0.5.4" }, "overrides": { diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts index f3b7b0ed..e3eb22c2 100644 --- a/src/astro-typesafe-api-caller.ts +++ b/src/astro-typesafe-api-caller.ts @@ -5,10 +5,6 @@ export const createCaller = createCallerFactory({ "klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"), "postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"), "unterlage": await import("../src/pages/api/unterlage.ts"), - "ausweise": await import("../src/pages/api/ausweise/index.ts"), - "auth/access-token": await import("../src/pages/api/auth/access-token.ts"), - "auth/passwort-vergessen": await import("../src/pages/api/auth/passwort-vergessen.ts"), - "auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"), "admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"), "admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"), "admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"), @@ -16,11 +12,15 @@ export const createCaller = createCallerFactory({ "admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"), "admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"), "admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"), + "auth/access-token": await import("../src/pages/api/auth/access-token.ts"), + "auth/passwort-vergessen": await import("../src/pages/api/auth/passwort-vergessen.ts"), + "auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"), + "aufnahme": await import("../src/pages/api/aufnahme/index.ts"), "bedarfsausweis-gewerbe/[id]": await import("../src/pages/api/bedarfsausweis-gewerbe/[id].ts"), "bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"), - "aufnahme": await import("../src/pages/api/aufnahme/index.ts"), "bedarfsausweis-wohnen/[id]": await import("../src/pages/api/bedarfsausweis-wohnen/[id].ts"), "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"), + "ausweise": await import("../src/pages/api/ausweise/index.ts"), "bilder/[id]": await import("../src/pages/api/bilder/[id].ts"), "geg-nachweis-gewerbe/[id]": await import("../src/pages/api/geg-nachweis-gewerbe/[id].ts"), "geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"), diff --git a/src/client/lib/nachweisSpeichern.ts b/src/client/lib/nachweisSpeichern.ts index f8d2f38a..8ef5d24a 100644 --- a/src/client/lib/nachweisSpeichern.ts +++ b/src/client/lib/nachweisSpeichern.ts @@ -174,11 +174,14 @@ export async function nachweisSpeichern( aufnahme.id = aufnahme_id if (ausweisart == Enums.Ausweisart.GEGNachweisWohnen) { - gegNachweisWohnenSpeichern(nachweis as GEGNachweisWohnen, aufnahme_id) + const id = await gegNachweisWohnenSpeichern(nachweis as GEGNachweisWohnen, aufnahme_id) + nachweis.id = id; } else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) { - gegNachweisGewerbeSpeichern(nachweis as GEGNachweisGewerbe, aufnahme_id) + const id = await gegNachweisGewerbeSpeichern(nachweis as GEGNachweisGewerbe, aufnahme_id) + nachweis.id = id; } else if (ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) { - bedarfsausweisGewerbeSpeichern(nachweis as BedarfsausweisGewerbe, aufnahme_id) + const id = await bedarfsausweisGewerbeSpeichern(nachweis as BedarfsausweisGewerbe, aufnahme_id) + nachweis.id = id; } await api.aufnahme._id.bilder.PUT.fetch(bilder.map(bild => bild.id), { diff --git a/src/client/lib/speichern.ts b/src/client/lib/speichern.ts index b424785e..e7c83331 100644 --- a/src/client/lib/speichern.ts +++ b/src/client/lib/speichern.ts @@ -1,5 +1,5 @@ import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js"; -import { Aufnahme, Objekt } from "#lib/server/prisma.js"; +import { Aufnahme, Objekt } from "#lib/client/prisma.js"; import { api } from "astro-typesafe-api/client"; import Cookies from "js-cookie"; diff --git a/src/components/Ausweis/AngabenZurHeizunganlage.svelte b/src/components/Ausweis/AngabenZurHeizunganlage.svelte index 8347d79d..b4c705ed 100644 --- a/src/components/Ausweis/AngabenZurHeizunganlage.svelte +++ b/src/components/Ausweis/AngabenZurHeizunganlage.svelte @@ -118,7 +118,7 @@ xl:grid-cols-4 xl:gap-x-8 xl:gap-y-8 > {#each hotWaterProductionTypes as type, i} - + {/each} diff --git a/src/components/Ausweis/Ausweisart.svelte b/src/components/Ausweis/Ausweisart.svelte index b6eb8793..0b8f7f97 100644 --- a/src/components/Ausweis/Ausweisart.svelte +++ b/src/components/Ausweis/Ausweisart.svelte @@ -6,14 +6,13 @@ import { auditHeizungGebaeudeBaujahr } from "../Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js"; import { addNotification, deleteNotification } from "#components/Notifications/shared.js"; import TagInput from "../TagInput.svelte"; - import { Enums } from "#lib/client/prisma.js"; + import { BedarfsausweisGewerbe, Enums, GEGNachweisWohnen } from "#lib/client/prisma.js"; import { BedarfsausweisWohnenClient, AufnahmeClient, ObjektClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, - GEGNachweisWohnenClient, } from "./types.js"; export let objekt: ObjektClient; @@ -21,7 +20,8 @@ | VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient - | GEGNachweisWohnenClient; + | GEGNachweisWohnen + | BedarfsausweisGewerbe; export let aufnahme: AufnahmeClient; export let ausweisart: Enums.Ausweisart; @@ -75,7 +75,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8 > - {#if ausweisart==Enums.Ausweisart.VerbrauchsausweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.BedarfsausweisWohnen} + {#if ausweisart==Enums.Ausweisart.VerbrauchsausweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.BedarfsausweisWohnen || ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe} diff --git a/src/components/Ausweis/ButtonWeiterHilfe.svelte b/src/components/Ausweis/ButtonWeiterHilfe.svelte index b119c4bb..0f67425f 100644 --- a/src/components/Ausweis/ButtonWeiterHilfe.svelte +++ b/src/components/Ausweis/ButtonWeiterHilfe.svelte @@ -27,6 +27,7 @@ export let ausweistyp: AusweisTyp = Enums.AusweisTyp.Standard; async function ausweisAbschicken() { + // Wir müssen überprüfen, dass mindestens ein Baujahr eingegeben wurde. if (aufnahme.baujahr_gebaeude.length === 0) { (form.querySelector("input[name='baujahr_gebaeude']") as HTMLInputElement).setCustomValidity("Die Eingabe von mindestens einem Baujahr ist verpflichtend.") } else { @@ -39,12 +40,12 @@ (form.querySelector("input[name='baujahr_heizung']") as HTMLInputElement).setCustomValidity("") } - new FormData(form).forEach((value, key) => { - if (key === "baujahr_heizung" || key === "baujahr_gebaeude" || key === "baujahr_klima") { - return - } + // Wir holen uns die Daten aus dem Formular + const data = new FormData(form); + // Und gleichen diese mit allen Feldern ab die "required" sind, damit stellen wir sicher, dass alles richtig ausgefüllt wurde. + (form.querySelectorAll("select[name][required],input[name][required]") as NodeListOf).forEach((element) => { + const value = data.get(element.getAttribute("name") as string) - const element = (form.querySelector(`[name='${key}']`) as HTMLSelectElement); if (!value && element.required) { element.setCustomValidity("Eine Auswahl ist verpflichtend.") } else { @@ -52,6 +53,7 @@ } }) + // Falls das Formular nicht valid ist markieren wir die fehlenden Felder. if (!form.checkValidity()) { // Entferne die Klasse "2xl:mt-[370px]" falls vorhanden form.classList.remove("2xl:mt-[370px]"); @@ -98,8 +100,8 @@ let loginAction: () => any = ausweisAbschicken; - async function spaeterWeitermachen() { - loginAction = spaeterWeitermachen; + async function speichern() { + loginAction = speichern; if (!(await validateAccessTokenClient())) { loginOverlayHidden = false; return @@ -161,7 +163,7 @@ sm:grid-cols-[1fr_min-content_min-content_min-content] sm:justify-self-end"> {/if} - diff --git a/src/components/Ausweis/Fensterflaechen.svelte b/src/components/Ausweis/Fensterflaechen.svelte index 4df61d55..4db38789 100644 --- a/src/components/Ausweis/Fensterflaechen.svelte +++ b/src/components/Ausweis/Fensterflaechen.svelte @@ -154,21 +154,21 @@ xl:grid-cols-4 xl:gap-x-8 xl:gap-y-8 required > - - - - - - - - - - - - - - - + + + + + + + + + + + + + + +
diff --git a/src/components/Ausweis/SanierungszustandHeizungsanlage.svelte b/src/components/Ausweis/SanierungszustandHeizungsanlage.svelte index 589470a7..5a61aca1 100644 --- a/src/components/Ausweis/SanierungszustandHeizungsanlage.svelte +++ b/src/components/Ausweis/SanierungszustandHeizungsanlage.svelte @@ -1,5 +1,5 @@
@@ -208,6 +207,12 @@ Bedarfsausweis Wohnen {:else if ausweisart == Enums.Ausweisart.VerbrauchsausweisGewerbe} Verbrauchsausweis Gewerbe + {:else if ausweisart == Enums.Ausweisart.GEGNachweisWohnen} + GEG Nachweis Wohnen + {:else if ausweisart == Enums.Ausweisart.GEGNachweisGewerbe} + GEG Nachweis Gewerbe + {:else if ausweisart == Enums.Ausweisart.BedarfsausweisGewerbe} + Bedarfsausweis Gewerbe {/if} {#if ausweis.ausweistyp === Enums.AusweisTyp.Beratung} @@ -307,7 +312,6 @@ {#if !ausweis.ausgestellt && (!ausweis.bestellt || (ausweis.ausweistyp === Enums.AusweisTyp.Beratung || ausweis.ausweistyp === Enums.AusweisTyp.Offline))} - {#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen} Bearbeiten + {:else if ausweisart === Enums.Ausweisart.BedarfsausweisWohnen} + Bearbeiten + {:else if ausweisart === Enums.Ausweisart.GEGNachweisWohnen} + Bearbeiten + {:else if ausweisart === Enums.Ausweisart.GEGNachweisGewerbe} + Bearbeiten + {:else if ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe} + Bearbeiten {/if} {/if} diff --git a/src/components/Dashboard/DashboardObjekt.svelte b/src/components/Dashboard/DashboardObjekt.svelte index 9f2e2bbb..c2864b42 100644 --- a/src/components/Dashboard/DashboardObjekt.svelte +++ b/src/components/Dashboard/DashboardObjekt.svelte @@ -22,9 +22,40 @@
{#if objekt.aufnahmen.at(-1)?.verbrauchsausweise_wohnen.length} - + {@const ausweis = objekt.aufnahmen.at(-1)?.verbrauchsausweise_wohnen.at(-1)} +
- Energieausweis ausgestellt + {#if ausweis?.ausgestellt} + Energieausweis ausgestellt + {:else} + Energieausweis ausgestellt + {/if} +
+
Energieausweis
+
+ {/if} + {#if objekt.aufnahmen.at(-1)?.verbrauchsausweise_gewerbe.length} + {@const ausweis = objekt.aufnahmen.at(-1)?.verbrauchsausweise_gewerbe.at(-1)} + +
+ {#if ausweis?.ausgestellt} + Energieausweis ausgestellt + {:else} + Energieausweis ausgestellt + {/if} +
+
Energieausweis
+
+ {/if} + {#if objekt.aufnahmen.at(-1)?.bedarfsausweise_wohnen.length} + {@const ausweis = objekt.aufnahmen.at(-1)?.bedarfsausweise_wohnen.at(-1)} + +
+ {#if ausweis?.ausgestellt} + Energieausweis ausgestellt + {:else} + Energieausweis ausgestellt + {/if}
Energieausweis
diff --git a/src/components/GEGNachweis/GEGAusweisart.svelte b/src/components/GEGNachweis/GEGAusweisart.svelte index f6db28d5..d7fabc8f 100644 --- a/src/components/GEGNachweis/GEGAusweisart.svelte +++ b/src/components/GEGNachweis/GEGAusweisart.svelte @@ -11,7 +11,6 @@ import { AufnahmeClient, ObjektClient, - GEGNachweisWohnenClient, } from "../Ausweis/types.js"; export let objekt: ObjektClient; @@ -45,6 +44,11 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8 + {#if ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe} + + + + {/if}
diff --git a/src/lib/server/ausweis.ts b/src/lib/server/ausweis.ts index 9cb13c00..3e37c7c7 100644 --- a/src/lib/server/ausweis.ts +++ b/src/lib/server/ausweis.ts @@ -18,6 +18,12 @@ export function getPrismaAusweisAdapter(id: string) { return prisma.verbrauchsausweisGewerbe } else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) { return prisma.bedarfsausweisWohnen + } else if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) { + return prisma.gEGNachweisWohnen + } else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) { + return prisma.gEGNachweisGewerbe + } else if (ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) { + return prisma.bedarfsausweisGewerbe } } @@ -25,7 +31,7 @@ export function getPrismaAusweisAdapter(id: string) { * Gibt den richtigen Ansichtsausweis basierend auf der Ausweisart zurück. * @param ausweis */ -export async function getAnsichtsausweis(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, ausweisart = getAusweisartFromId(ausweis.uid)) { +export async function getAnsichtsausweis(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, ausweisart = getAusweisartFromId(ausweis.id)) { if (!ausweisart) { return null } @@ -43,7 +49,7 @@ export async function getAnsichtsausweis(ausweis: VerbrauchsausweisWohnenClient * Gibt das richtige Datenblatt basierend auf der Ausweisart zurück. * @param ausweis */ -export async function getDatenblatt(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, ausweisart = getAusweisartFromId(ausweis.uid)) { +export async function getDatenblatt(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, ausweisart = getAusweisartFromId(ausweis.id)) { if (!ausweisart) { return null } diff --git a/src/modules/BedarfsausweisWohnen/BedarfsausweisWohnenModule.svelte b/src/modules/BedarfsausweisWohnen/BedarfsausweisWohnenModule.svelte index 059ef7f1..111798b7 100644 --- a/src/modules/BedarfsausweisWohnen/BedarfsausweisWohnenModule.svelte +++ b/src/modules/BedarfsausweisWohnen/BedarfsausweisWohnenModule.svelte @@ -1,7 +1,6 @@