From 624fd3c045079b075d952876e48889d10662e60d Mon Sep 17 00:00:00 2001 From: Moritz Utcke Date: Sun, 6 Apr 2025 13:27:08 -0400 Subject: [PATCH] Bedarfsausweis Gewerbe --- src/client/lib/nachweisSpeichern.ts | 9 ++-- src/components/Ausweis/types.ts | 10 +++-- src/lib/server/ausweis.ts | 10 ++++- .../Dashboard/DashboardAufnahmeModule.svelte | 6 +++ src/modules/KundendatenModule.svelte | 20 ++++----- .../BedarfsausweisGewerbeModule.svelte | 42 +++++-------------- src/pages/api/bedarfsausweis-gewerbe/index.ts | 2 +- src/pages/api/rechnung/anfordern.ts | 2 + src/pages/api/unterlage.ts | 4 +- src/pages/speichern-erfolgreich.astro | 7 +++- 10 files changed, 58 insertions(+), 54 deletions(-) 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/components/Ausweis/types.ts b/src/components/Ausweis/types.ts index da6f287e..cde604f9 100644 --- a/src/components/Ausweis/types.ts +++ b/src/components/Ausweis/types.ts @@ -12,6 +12,8 @@ import { VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen, GEGNachweisWohnen, + BedarfsausweisGewerbe, + GEGNachweisGewerbe, } from "#lib/client/prisma.js"; import { z, ZodSchema } from "zod"; @@ -143,7 +145,7 @@ export type AufnahmeKomplettClient = AufnahmeClient & { bedarfsausweise_wohnen: (BedarfsausweisWohnenClient & { rechnung: RechnungClient })[], verbrauchsausweise_wohnen: (VerbrauchsausweisWohnenClient & { rechnung: RechnungClient })[], verbrauchsausweise_gewerbe: (VerbrauchsausweisGewerbeClient & { rechnung: RechnungClient })[], - geg_nachweise_wohnen: (GEGNachweisWohnenClient & { rechnung: RechnungClient })[] -} - -export type GEGNachweisWohnenClient = GEGNachweisWohnen \ No newline at end of file + geg_nachweise_wohnen: (GEGNachweisWohnen & { rechnung: RechnungClient })[], + geg_nachweise_gewerbe: (GEGNachweisGewerbe & { rechnung: RechnungClient })[], + bedarfsausweise_gewerbe: (BedarfsausweisGewerbe & { rechnung: RechnungClient })[], +} \ No newline at end of file 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/Dashboard/DashboardAufnahmeModule.svelte b/src/modules/Dashboard/DashboardAufnahmeModule.svelte index 8ac25f75..264b631f 100644 --- a/src/modules/Dashboard/DashboardAufnahmeModule.svelte +++ b/src/modules/Dashboard/DashboardAufnahmeModule.svelte @@ -88,6 +88,12 @@ {#each aufnahme.geg_nachweise_wohnen as nachweis} {/each} + {#each aufnahme.geg_nachweise_gewerbe as nachweis} + + {/each} + {#each aufnahme.bedarfsausweise_gewerbe as nachweis} + + {/each}
diff --git a/src/modules/KundendatenModule.svelte b/src/modules/KundendatenModule.svelte index cef36f63..f762d8dc 100644 --- a/src/modules/KundendatenModule.svelte +++ b/src/modules/KundendatenModule.svelte @@ -174,16 +174,16 @@ let result: Awaited> | null = null; - try { - result = await nachweisSpeichern(ausweis, objekt, aufnahme, bilder, unterlagen, ausweisart) - } catch(e) { - addNotification({ - dismissable: true, - message: "Ups... Das hat nicht geklappt.", - subtext: "Speichern ist fehlgeschlagen, bitte versuchen sie es erneut oder kontaktieren sie unseren Support." - }) - return; - } + try { + result = await nachweisSpeichern(ausweis as unknown as GEGNachweisWohnen | GEGNachweisGewerbe | BedarfsausweisGewerbe, objekt, aufnahme, bilder, unterlagen, ausweisart) + } catch(e) { + addNotification({ + dismissable: true, + message: "Ups... Das hat nicht geklappt.", + subtext: "Speichern ist fehlgeschlagen, bitte versuchen sie es erneut oder kontaktieren sie unseren Support." + }) + return; + } try { const { id } = await api.rechnung.anfordern.PUT.fetch( diff --git a/src/modules/angebot-anfragen/BedarfsausweisGewerbeModule.svelte b/src/modules/angebot-anfragen/BedarfsausweisGewerbeModule.svelte index eb7899ba..b74271cb 100644 --- a/src/modules/angebot-anfragen/BedarfsausweisGewerbeModule.svelte +++ b/src/modules/angebot-anfragen/BedarfsausweisGewerbeModule.svelte @@ -8,7 +8,7 @@ BildClient, } from "#components/Ausweis/types.js"; import Bereich from "#components/labels/Bereich.svelte"; - import { BedarfsausweisGewerbe, Enums } from "#lib/client/prisma.js"; + import { BedarfsausweisGewerbe, Enums, Unterlage } from "#lib/client/prisma.js"; import Progressbar from "#components/Ausweis/Progressbar.svelte"; import FileGrid from "#components/FileGrid.svelte"; import ButtonWeiterHilfe from "#components/Ausweis/ButtonWeiterHilfe.svelte"; @@ -24,8 +24,7 @@ export let aufnahme: AufnahmeClient; export let user: BenutzerClient = {} as BenutzerClient; export let bilder: BildClient[] = []; - export let plaene: UnterlageClient[] = []; - export let unterlagen: UnterlageClient[] = []; + export let unterlagen: Unterlage[] = []; export let ausweistyp: Enums.AusweisTyp; export let id: string | null; @@ -151,35 +150,6 @@ > -
-
-
Pläne
- -
- Hier können sie Grundrisspläne, Ansichtspläne und - Schnitte hochladen. Die Dateien können entweder im PDF - Format oder als Bild hochgeladen werden. -
-
- -
-
- Bitte laden Sie hier mind. 1 Dokument hoch: -
- -
-
@@ -193,6 +163,14 @@ können entweder im PDF Format oder als Bild hochgeladen werden.
+ +
Pläne
+ +
+ Hier können sie Grundrisspläne, Ansichtspläne und + Schnitte hochladen. Die Dateien können entweder im PDF + Format oder als Bild hochgeladen werden. +
diff --git a/src/pages/api/bedarfsausweis-gewerbe/index.ts b/src/pages/api/bedarfsausweis-gewerbe/index.ts index 92e486cc..6239e444 100644 --- a/src/pages/api/bedarfsausweis-gewerbe/index.ts +++ b/src/pages/api/bedarfsausweis-gewerbe/index.ts @@ -46,7 +46,7 @@ export const PUT = defineApiRoute({ }) } - const id = generatePrefixedId(6, VALID_UUID_PREFIXES.GEGNachweisGewerbe) + const id = generatePrefixedId(6, VALID_UUID_PREFIXES.BedarfsausweisGewerbe) const nachweis = await prisma.bedarfsausweisGewerbe.create({ data: { diff --git a/src/pages/api/rechnung/anfordern.ts b/src/pages/api/rechnung/anfordern.ts index 27fbd3f2..815b72a8 100644 --- a/src/pages/api/rechnung/anfordern.ts +++ b/src/pages/api/rechnung/anfordern.ts @@ -52,6 +52,8 @@ export const PUT = defineApiRoute({ }) } + console.log(nachweis); + if (!nachweis || nachweis.benutzer_id !== user.id) { throw new APIError({ diff --git a/src/pages/api/unterlage.ts b/src/pages/api/unterlage.ts index d46abde8..72a0d972 100644 --- a/src/pages/api/unterlage.ts +++ b/src/pages/api/unterlage.ts @@ -40,7 +40,9 @@ export const PUT = defineApiRoute({ } }); - const buffer = Buffer.from(data, "base64"); + // Wir kriegen die Daten als dataURL + const base64 = data.split(',')[1]; + const buffer = Buffer.from(base64, "base64"); try { const command = new PutObjectCommand({ diff --git a/src/pages/speichern-erfolgreich.astro b/src/pages/speichern-erfolgreich.astro index ec36fc40..ae1f82a8 100644 --- a/src/pages/speichern-erfolgreich.astro +++ b/src/pages/speichern-erfolgreich.astro @@ -7,9 +7,14 @@ import { getCurrentUser } from "#lib/server/user"; const user = await getCurrentUser(Astro) const id = Astro.url.searchParams.get("id"); + +if (!user || !id) { + return Astro.redirect("/") +} + const adapter = getPrismaAusweisAdapter(id || "") -if (!user || !id || !adapter) { +if (!adapter) { return Astro.redirect("/") }