diff --git a/prisma/migrations/20250312191621_gng/migration.sql b/prisma/migrations/20250312191621_gng/migration.sql new file mode 100644 index 00000000..d6f2e9e5 --- /dev/null +++ b/prisma/migrations/20250312191621_gng/migration.sql @@ -0,0 +1,47 @@ +-- AlterTable +ALTER TABLE "Anteilshaber" ALTER COLUMN "uid" SET DEFAULT 'ant-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "Aufnahme" ALTER COLUMN "uid" SET DEFAULT 'auf-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "BedarfsausweisGewerbe" ALTER COLUMN "uid" SET DEFAULT 'bag-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "BedarfsausweisWohnen" ALTER COLUMN "uid" SET DEFAULT 'baw-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "Bild" ALTER COLUMN "uid" SET DEFAULT 'img-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "Event" ALTER COLUMN "uid" SET DEFAULT 'evt-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "GEGEinpreisung" ALTER COLUMN "uid" SET DEFAULT 'gge-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "GEGNachweisGewerbe" ALTER COLUMN "uid" SET DEFAULT 'gng-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "GEGNachweisWohnen" ALTER COLUMN "uid" SET DEFAULT 'gnw-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "Objekt" ALTER COLUMN "uid" SET DEFAULT 'obj-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "Rechnung" ALTER COLUMN "uid" SET DEFAULT 'inv-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "Tickets" ALTER COLUMN "uid" SET DEFAULT 'tkt-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "Unterlage" ALTER COLUMN "uid" SET DEFAULT 'pln-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "VerbrauchsausweisGewerbe" ALTER COLUMN "uid" SET DEFAULT 'vag-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "VerbrauchsausweisWohnen" ALTER COLUMN "uid" SET DEFAULT 'vaw-' || gen_random_uuid(); + +-- AlterTable +ALTER TABLE "benutzer" ALTER COLUMN "uid" SET DEFAULT 'usr-' || gen_random_uuid(); diff --git a/prisma/schema/GEGNachweisGewerbe.prisma b/prisma/schema/GEGNachweisGewerbe.prisma index 236e5824..cdcb9bdf 100644 --- a/prisma/schema/GEGNachweisGewerbe.prisma +++ b/prisma/schema/GEGNachweisGewerbe.prisma @@ -1,6 +1,6 @@ model GEGNachweisGewerbe { id Int @id @default(autoincrement()) - uid String @unique @default(dbgenerated("'gnw-' || gen_random_uuid()")) + uid String @unique @default(dbgenerated("'gng-' || gen_random_uuid()")) /// @zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf") ausstellgrund Ausstellgrund? diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts index 2409471b..38206f31 100644 --- a/src/astro-typesafe-api-caller.ts +++ b/src/astro-typesafe-api-caller.ts @@ -5,6 +5,7 @@ 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"), + "aufnahme": await import("../src/pages/api/aufnahme/index.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"), @@ -12,13 +13,13 @@ 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"), - "aufnahme": await import("../src/pages/api/aufnahme/index.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"), + "ausweise": await import("../src/pages/api/ausweise/index.ts"), "bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"), "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"), + "aufnahme": await import("../src/pages/api/aufnahme/index.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"), @@ -31,10 +32,10 @@ export const createCaller = createCallerFactory({ "ticket": await import("../src/pages/api/ticket/index.ts"), "user": await import("../src/pages/api/user/index.ts"), "user/self": await import("../src/pages/api/user/self.ts"), - "verbrauchsausweis-gewerbe/[uid]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[uid].ts"), - "verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"), "verbrauchsausweis-wohnen/[uid]": await import("../src/pages/api/verbrauchsausweis-wohnen/[uid].ts"), "verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"), + "verbrauchsausweis-gewerbe/[uid]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[uid].ts"), + "verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"), "webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"), "aufnahme/[uid]/bilder": await import("../src/pages/api/aufnahme/[uid]/bilder.ts"), "aufnahme/[uid]": await import("../src/pages/api/aufnahme/[uid]/index.ts"), diff --git a/src/client/lib/nachweisSpeichern.ts b/src/client/lib/nachweisSpeichern.ts index 59b2deda..082383bf 100644 --- a/src/client/lib/nachweisSpeichern.ts +++ b/src/client/lib/nachweisSpeichern.ts @@ -16,7 +16,11 @@ export async function nachweisSpeichern( ) { if (objekt.uid) { await api.objekt._uid.PATCH.fetch({ - ...exclude(objekt, ["uid"]) + adresse: objekt.adresse, + latitude: 0, + longitude: 0, + ort: objekt.ort, + plz: objekt.plz }, { params: { uid: objekt.uid @@ -27,7 +31,11 @@ export async function nachweisSpeichern( }) } else { const { uid } = await api.objekt.PUT.fetch({ - ...exclude(objekt, ["uid"]) + adresse: objekt.adresse, + latitude: 0, + longitude: 0, + ort: objekt.ort, + plz: objekt.plz }, { headers: { "Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}` @@ -41,10 +49,58 @@ export async function nachweisSpeichern( if (aufnahme.uid) { await api.aufnahme._uid.PATCH.fetch({ - ...exclude(aufnahme, ["uid"]), baujahr_gebaeude: aufnahme.baujahr_gebaeude || [], - baujahr_klima: aufnahme.baujahr_klima || [], baujahr_heizung: aufnahme.baujahr_heizung || [], + baujahr_klima: aufnahme.baujahr_klima || [], + alternative_heizung: aufnahme.alternative_heizung, + alternative_kuehlung: aufnahme.alternative_kuehlung, + alternative_lueftung: aufnahme.alternative_lueftung, + alternative_warmwasser: aufnahme.alternative_warmwasser, + aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt, + aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt, + ausweisart: aufnahme.ausweisart, + brennstoff_1: aufnahme.brennstoff_1, + brennstoff_2: aufnahme.brennstoff_2, + brennwert_kessel: aufnahme.brennwert_kessel, + dachgeschoss: aufnahme.dachgeschoss, + dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt, + dachgeschoss_min_12cm_gedaemmt: aufnahme.dachgeschoss_min_12cm_gedaemmt, + doppel_verglasung: aufnahme.doppel_verglasung, + dreifach_verglasung: aufnahme.dreifach_verglasung, + durchlauf_erhitzer: aufnahme.durchlauf_erhitzer, + einfach_verglasung: aufnahme.einfach_verglasung, + einheiten: aufnahme.einheiten, + einzelofen: aufnahme.einzelofen, + energieeffizienzklasse: aufnahme.energieeffizienzklasse, + fenster_dicht: aufnahme.fenster_dicht, + fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht, + flaeche: aufnahme.flaeche, + gebaeudeteil: aufnahme.gebaeudeteil, + gebaeudetyp: aufnahme.gebaeudetyp, + heizungsrohre_gedaemmt: aufnahme.heizungsrohre_gedaemmt, + isolier_verglasung: aufnahme.isolier_verglasung, + keller: aufnahme.keller, + keller_decke_gedaemmt: aufnahme.keller_decke_gedaemmt, + keller_wand_gedaemmt: aufnahme.keller_wand_gedaemmt, + kuehlung: aufnahme.kuehlung, + leerstand: aufnahme.leerstand, + lueftung: aufnahme.lueftung, + niedertemperatur_kessel: aufnahme.niedertemperatur_kessel, + nutzflaeche: aufnahme.nutzflaeche, + oberste_geschossdecke_gedaemmt: aufnahme.oberste_geschossdecke_gedaemmt, + oberste_geschossdecke_min_12cm_gedaemmt: aufnahme.oberste_geschossdecke_min_12cm_gedaemmt, + photovoltaik: aufnahme.photovoltaik, + raum_temperatur_regler: aufnahme.raum_temperatur_regler, + rolllaeden_kaesten_gedaemmt: aufnahme.rolllaeden_kaesten_gedaemmt, + saniert: aufnahme.saniert, + solarsystem_warmwasser: aufnahme.solarsystem_warmwasser, + standard_kessel: aufnahme.standard_kessel, + tueren_dicht: aufnahme.tueren_dicht, + tueren_undicht: aufnahme.tueren_undicht, + waermepumpe: aufnahme.waermepumpe, + warmwasser_rohre_gedaemmt: aufnahme.warmwasser_rohre_gedaemmt, + zentralheizung: aufnahme.zentralheizung, + zirkulation: aufnahme.zirkulation }, { params: { uid: aufnahme.uid @@ -55,7 +111,61 @@ export async function nachweisSpeichern( }) } else { const { uid } = await api.aufnahme.PUT.fetch({ - aufnahme, + aufnahme: { + baujahr_gebaeude: aufnahme.baujahr_gebaeude, + baujahr_heizung: aufnahme.baujahr_heizung, + alternative_heizung: aufnahme.alternative_heizung, + alternative_kuehlung: aufnahme.alternative_kuehlung, + alternative_lueftung: aufnahme.alternative_lueftung, + alternative_warmwasser: aufnahme.alternative_warmwasser, + aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt, + aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt, + ausweisart: aufnahme.ausweisart, + baujahr_klima: aufnahme.baujahr_klima, + brennstoff_1: aufnahme.brennstoff_1, + brennstoff_2: aufnahme.brennstoff_2, + brennwert_kessel: aufnahme.brennwert_kessel, + dachgeschoss: aufnahme.dachgeschoss, + dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt, + dachgeschoss_min_12cm_gedaemmt: aufnahme.dachgeschoss_min_12cm_gedaemmt, + doppel_verglasung: aufnahme.doppel_verglasung, + dreifach_verglasung: aufnahme.dreifach_verglasung, + durchlauf_erhitzer: aufnahme.durchlauf_erhitzer, + einfach_verglasung: aufnahme.einfach_verglasung, + einheiten: aufnahme.einheiten, + einzelofen: aufnahme.einzelofen, + energieeffizienzklasse: aufnahme.energieeffizienzklasse, + erstellungsdatum: aufnahme.erstellungsdatum, + fenster_dicht: aufnahme.fenster_dicht, + fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht, + flaeche: aufnahme.flaeche, + gebaeudeteil: aufnahme.gebaeudeteil, + gebaeudetyp: aufnahme.gebaeudetyp, + heizungsrohre_gedaemmt: aufnahme.heizungsrohre_gedaemmt, + isolier_verglasung: aufnahme.isolier_verglasung, + keller: aufnahme.keller, + keller_decke_gedaemmt: aufnahme.keller_decke_gedaemmt, + keller_wand_gedaemmt: aufnahme.keller_wand_gedaemmt, + kuehlung: aufnahme.kuehlung, + leerstand: aufnahme.leerstand, + lueftung: aufnahme.lueftung, + niedertemperatur_kessel: aufnahme.niedertemperatur_kessel, + nutzflaeche: aufnahme.nutzflaeche, + oberste_geschossdecke_gedaemmt: aufnahme.oberste_geschossdecke_gedaemmt, + oberste_geschossdecke_min_12cm_gedaemmt: aufnahme.oberste_geschossdecke_min_12cm_gedaemmt, + photovoltaik: aufnahme.photovoltaik, + raum_temperatur_regler: aufnahme.raum_temperatur_regler, + rolllaeden_kaesten_gedaemmt: aufnahme.rolllaeden_kaesten_gedaemmt, + saniert: aufnahme.saniert, + solarsystem_warmwasser: aufnahme.solarsystem_warmwasser, + standard_kessel: aufnahme.standard_kessel, + tueren_dicht: aufnahme.tueren_dicht, + tueren_undicht: aufnahme.tueren_undicht, + waermepumpe: aufnahme.waermepumpe, + warmwasser_rohre_gedaemmt: aufnahme.warmwasser_rohre_gedaemmt, + zentralheizung: aufnahme.zentralheizung, + zirkulation: aufnahme.zirkulation + }, uid_objekt: objekt.uid }, { headers: { @@ -114,25 +224,4 @@ export async function nachweisSpeichern( uid_aufnahme: aufnahme.uid, uid_objekt: objekt.uid } - - - // await client.v1.tickets.erstellen.mutate({ - // titel: "Ausweis konnte nicht gespeichert werden", - // beschreibung: e.stack, - // email: user.email ?? "", - // metadata: JSON.stringify({ - // ausweis, - // }), - // }); - - // addNotification({ - // dismissable: false, - // message: - // "Ausweis konnte nicht gespeichert werden, bitte versuchen sie es erneut.", - // subtext: - // "Sollte das Problem weiterhin bestehen, kontaktieren sie bitte den Support.", - // timeout: 6000, - // type: "error", - // }); - return null; } diff --git a/src/components/Ausweis/Ausweisart.svelte b/src/components/Ausweis/Ausweisart.svelte index 7cdf51a5..0084a7f2 100644 --- a/src/components/Ausweis/Ausweisart.svelte +++ b/src/components/Ausweis/Ausweisart.svelte @@ -24,6 +24,8 @@ export let aufnahme: AufnahmeClient; export let ausweisart: Enums.Ausweisart; + + export let ausstellgrund: string[] = Object.values(Enums.Ausstellgrund);
- {#each Object.entries(Enums.Ausstellgrund) as [name, ausstellgrund]} - + {#each ausstellgrund as name} + {/each} diff --git a/src/components/Ausweis/ButtonWeiterHilfe.svelte b/src/components/Ausweis/ButtonWeiterHilfe.svelte index 95f606a9..635c412e 100644 --- a/src/components/Ausweis/ButtonWeiterHilfe.svelte +++ b/src/components/Ausweis/ButtonWeiterHilfe.svelte @@ -69,7 +69,7 @@ loginOverlayHidden = true - let result: Awaited> | null = null; + let result: Awaited> | Awaited> | null = null; if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisGewerbe || ausweisart === Enums.Ausweisart.GEGNachweisBedarfsausweis) { result = await nachweisSpeichern(ausweis, objekt, aufnahme, bilder, unterlagen, ausweisart) } else { diff --git a/src/components/Ausweis/StromVerbrauch.svelte b/src/components/Ausweis/StromVerbrauch.svelte index 6e449ad2..c269137e 100644 --- a/src/components/Ausweis/StromVerbrauch.svelte +++ b/src/components/Ausweis/StromVerbrauch.svelte @@ -97,49 +97,63 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8 > -
- + +
+
+ -
-
- - -
- -
- {#if !ausweis.zusaetzliche_heizquelle} +
+
- - {/if} + +
+ +
+ +
+ Sie haben die Möglichkeit neben der Hauptheizung die Verbräuche weiterer Heizquellen + (z.B. Einzelöfen, Kamin, Nachtspeicher, Wärmepumpe, zweiter Heizkessel etc.) einzugeben. + Dazu setzen Sie den Haken bei zusätzlicher Heizquelle. Eine weiterer Bereich zur Eingabe der + Verbräuche öffnet sich dann.
- -
- Sie haben die Möglichkeit neben der Hauptheizung die Verbräuche weiterer Heizquellen - (z.B. Einzelöfen, Kamin, Nachtspeicher, Wärmepumpe, zweiter Heizkessel etc.) einzugeben. - Dazu setzen Sie den Haken bei zusätzlicher Heizquelle. Eine weiterer Bereich zur Eingabe der - Verbräuche öffnet sich dann. + {#if !ausweis.zusaetzliche_heizquelle} +
+ +
+
+ + + +
+
+
+ Bitte geben Sie das Startjahr der ersten Verbrauchsperiode ein. Weitere Zeitangaben müssen nichht + gemacht werden, da alle 3 Verbrauchsjahre zusammenhängend sein sollen. +
+ {/if} +
@@ -214,7 +228,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
- + -
+
-
+
-
+
+ class="hidden xl:block col-span-3 order-[16] md:order-[16] xl:order-[16] h-[4px] bg-white mt-[-10px]"> +
-
+
-
+
-
+
-
Enthält Stromverbrauch für:
+
Enthält Stromverbrauch für:
@@ -648,7 +671,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8 -
+
@@ -425,13 +425,13 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
- +
- + +
@@ -181,14 +223,14 @@
- - + bind:ausweis={nachweis} + bind:bilder + bind:unterlagen + bind:user + bind:objekt + bind:aufnahme + ausweisart={Enums.Ausweisart.GEGNachweisGewerbe} + {form} + {skala} + > diff --git a/src/modules/angebot-anfragen/GEGNachweisWohnenModule.svelte b/src/modules/angebot-anfragen/GEGNachweisWohnenModule.svelte index 6b8c0ae3..2d05d14e 100644 --- a/src/modules/angebot-anfragen/GEGNachweisWohnenModule.svelte +++ b/src/modules/angebot-anfragen/GEGNachweisWohnenModule.svelte @@ -1,13 +1,12 @@ -
- - - -
- -
+ +
+ +
- + @@ -112,7 +141,11 @@ title="Angaben zur Heizung, Lüftung, Energieerezugung, Qualität und Aufbau der Gebäudehülle usw." > - +
@@ -185,16 +218,14 @@
- - + bind:ausweis={nachweis} + bind:bilder + bind:unterlagen + bind:user + bind:objekt + bind:aufnahme + ausweisart={Enums.Ausweisart.GEGNachweisWohnen} + {form} + {skala} + > diff --git a/src/pages/angebot-anfragen/geg-nachweis-wohnen-anfragen/index.astro b/src/pages/angebot-anfragen/geg-nachweis-wohnen-anfragen/index.astro index b96d11b4..e8718bea 100644 --- a/src/pages/angebot-anfragen/geg-nachweis-wohnen-anfragen/index.astro +++ b/src/pages/angebot-anfragen/geg-nachweis-wohnen-anfragen/index.astro @@ -1,6 +1,6 @@ --- import AusweisLayout from "#layouts/AusweisLayoutDaten.astro"; -import { AufnahmeClient, GEGNachweisWohnenClient, ObjektClient, UnterlageClient, UploadedGebaeudeBild } from "#components/Ausweis/types"; +import { AufnahmeClient, BildClient, GEGNachweisWohnenClient, ObjektClient, UnterlageClient } from "#components/Ausweis/types"; import { createCaller } from "src/astro-typesafe-api-caller"; import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js"; import { validateAccessTokenServer } from "#server/lib/validateAccessToken.js"; @@ -10,7 +10,7 @@ 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 bilder: BildClient[] = [] let unterlagen: UnterlageClient[] = [] const valid = validateAccessTokenServer(Astro); diff --git a/src/pages/api/aufnahme/index.ts b/src/pages/api/aufnahme/index.ts index 439fe1ff..1c54363f 100644 --- a/src/pages/api/aufnahme/index.ts +++ b/src/pages/api/aufnahme/index.ts @@ -1,7 +1,8 @@ import { UUidWithPrefix } from "#components/Ausweis/types.js" import { authorizationMiddleware } from "#lib/middleware/authorization.js" -import { AufnahmeSchema, ObjektSchema, prisma } from "#lib/server/prisma.js" +import { prisma } from "#lib/server/prisma.js" import { APIError, defineApiRoute } from "astro-typesafe-api/server" +import { AufnahmeSchema } from "src/generated/zod/aufnahme.js" import { z } from "zod" export const PUT = defineApiRoute({ diff --git a/src/pages/api/geg-nachweis-gewerbe/index.ts b/src/pages/api/geg-nachweis-gewerbe/index.ts index aebdbefc..612350a0 100644 --- a/src/pages/api/geg-nachweis-gewerbe/index.ts +++ b/src/pages/api/geg-nachweis-gewerbe/index.ts @@ -1,7 +1,8 @@ import { UUidWithPrefix } from "#components/Ausweis/types.js"; import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js"; -import { GEGNachweisGewerbeSchema, GEGNachweisWohnenSchema, prisma } from "#lib/server/prisma"; +import { prisma } from "#lib/server/prisma.js"; import { APIError, defineApiRoute } from "astro-typesafe-api/server"; +import { GEGNachweisGewerbeSchema } from "src/generated/zod/gegnachweisgewerbe.js"; import { z } from "zod"; export const PUT = defineApiRoute({ @@ -18,6 +19,7 @@ export const PUT = defineApiRoute({ uid: true, aufnahme_id: true, geg_einpreisung_id: true, + rechnung_id: true }), uid_aufnahme: UUidWithPrefix }), @@ -109,7 +111,6 @@ export const GET = defineApiRoute({ benutzer: true, aufnahme: { include: { - rechnungen: true, events: { include: { benutzer: { diff --git a/src/pages/api/geg-nachweis-wohnen/index.ts b/src/pages/api/geg-nachweis-wohnen/index.ts index 53c0471e..c8a8b968 100644 --- a/src/pages/api/geg-nachweis-wohnen/index.ts +++ b/src/pages/api/geg-nachweis-wohnen/index.ts @@ -1,7 +1,8 @@ import { UUidWithPrefix } from "#components/Ausweis/types.js"; import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js"; -import { GEGNachweisWohnenSchema, prisma } from "#lib/server/prisma"; +import { prisma } from "#lib/server/prisma.js"; import { APIError, defineApiRoute } from "astro-typesafe-api/server"; +import { GEGNachweisWohnenSchema } from "src/generated/zod/gegnachweiswohnen.js"; import { z } from "zod"; export const PUT = defineApiRoute({ @@ -17,7 +18,8 @@ export const PUT = defineApiRoute({ benutzer_id: true, uid: true, aufnahme_id: true, - geg_einpreisung_id: true + geg_einpreisung_id: true, + rechnung_id: true }), uid_aufnahme: UUidWithPrefix }), @@ -109,7 +111,6 @@ export const GET = defineApiRoute({ benutzer: true, aufnahme: { include: { - rechnungen: true, events: { include: { benutzer: { diff --git a/src/pages/api/rechnung/anfordern.ts b/src/pages/api/rechnung/anfordern.ts index a73f7a29..21a50ce6 100644 --- a/src/pages/api/rechnung/anfordern.ts +++ b/src/pages/api/rechnung/anfordern.ts @@ -2,7 +2,7 @@ import { getAusweisartFromUUID, UUidWithPrefix } from "#components/Ausweis/types import { omit } from "#lib/helpers.js"; import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js"; import { sendGEGAnforderungsMail } from "#lib/server/mail/geg-anfordern.js"; -import { Enums, prisma } from "#lib/server/prisma.js"; +import { Enums, GEGNachweisGewerbe, GEGNachweisWohnen, prisma } from "#lib/server/prisma.js"; import { APIError, defineApiRoute } from "astro-typesafe-api/server"; import { GEGEinpreisungSchema } from "src/generated/zod/gegeinpreisung.js"; import { z } from "zod"; @@ -22,21 +22,35 @@ export const PUT = defineApiRoute({ const ausweisart = getAusweisartFromUUID(input.nachweis_uid); let einpreisung; + let nachweis: GEGNachweisWohnen | GEGNachweisGewerbe; if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) { - const nachweis = await prisma.gEGNachweisWohnen.findUnique({ + nachweis = await prisma.gEGNachweisWohnen.findUnique({ where: { uid: input.nachweis_uid } }) + } else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) { + nachweis = await prisma.gEGNachweisGewerbe.findUnique({ + where: { + uid: input.nachweis_uid + } + }) + } else { + throw new APIError({ + "code": "BAD_REQUEST", + "message": `Ausweisart wird nicht unterstützt: ${ausweisart}` + }) + } + - if (!nachweis || nachweis.benutzer_id !== user.id) { - throw new APIError({ - code: "BAD_REQUEST", - message: "Ausweis existiert nicht oder gehört einem anderen Benutzer." - }) - } - + if (!nachweis || nachweis.benutzer_id !== user.id) { + throw new APIError({ + code: "BAD_REQUEST", + message: "Ausweis existiert nicht oder gehört einem anderen Benutzer." + }) + } + if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) { einpreisung = await prisma.gEGEinpreisung.create({ data: { ...omit(input, ["nachweis_uid"]), @@ -53,16 +67,26 @@ export const PUT = defineApiRoute({ } } }) - await sendGEGAnforderungsMail(nachweis, user) - } else { - throw new APIError({ - "code": "BAD_REQUEST", - "message": `Ausweisart wird nicht unterstützt: ${ausweisart}` + } else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) { + einpreisung = await prisma.gEGEinpreisung.create({ + data: { + ...omit(input, ["nachweis_uid"]), + status: Enums.Einpreisungsstatus.open, + benutzer: { + connect: { + id: user.id + } + }, + geg_nachweis_gewerbe: { + connect: { + uid: input.nachweis_uid + } + } + } }) } - - + await sendGEGAnforderungsMail(nachweis, user) return { uid: einpreisung.uid diff --git a/src/pages/kundendaten.astro b/src/pages/kundendaten.astro index e11cda87..9a829cee 100644 --- a/src/pages/kundendaten.astro +++ b/src/pages/kundendaten.astro @@ -35,6 +35,6 @@ try { --- - +