From d0e0f4aa271b39359b9f7716eec0d369938ccd5a Mon Sep 17 00:00:00 2001 From: Moritz Utcke Date: Fri, 7 Mar 2025 14:47:09 -0300 Subject: [PATCH] Speichern --- dbml/schema.dbml | 1 + .../migration.sql | 48 +++++++++++++ prisma/schema/Benutzer.prisma | 2 + src/astro-typesafe-api-caller.ts | 2 +- src/client/lib/ausweisSpeichern.ts | 70 ++++++++++++++++++- src/components/Ausweis/Ausweisart.svelte | 6 +- .../Ausweis/ButtonWeiterHilfe.svelte | 16 ++--- src/components/Ausweis/GebaeudeDaten.svelte | 4 +- .../Ausweis/LueftungundLeerstand.svelte | 2 +- src/generated/zod/benutzer.ts | 1 + src/lib/auth/types.ts | 3 +- src/lib/server/mail/registrierung.ts | 37 ++++++++++ src/pages/api/aufnahme/index.ts | 2 +- src/pages/api/objekt/index.ts | 3 +- src/pages/api/user/index.ts | 11 +-- src/pages/auth/verify.astro | 32 +++++++++ src/types/fake-data.ts | 1 + 17 files changed, 214 insertions(+), 27 deletions(-) create mode 100644 prisma/migrations/20250307174552_user_verified/migration.sql create mode 100644 src/lib/server/mail/registrierung.ts create mode 100644 src/pages/auth/verify.astro diff --git a/dbml/schema.dbml b/dbml/schema.dbml index ecee79a8..6b5ccf2b 100644 --- a/dbml/schema.dbml +++ b/dbml/schema.dbml @@ -206,6 +206,7 @@ Table benutzer { rolle BenutzerRolle [not null, default: 'USER'] firma String lex_office_id String + verified Boolean [not null, default: false] BedarfsausweisWohnen BedarfsausweisWohnen [not null] documenttemplates documenttemplates [not null] objekte Objekt [not null] diff --git a/prisma/migrations/20250307174552_user_verified/migration.sql b/prisma/migrations/20250307174552_user_verified/migration.sql new file mode 100644 index 00000000..adf12357 --- /dev/null +++ b/prisma/migrations/20250307174552_user_verified/migration.sql @@ -0,0 +1,48 @@ +-- 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 'gnw-' || 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" ADD COLUMN "verified" BOOLEAN NOT NULL DEFAULT false, +ALTER COLUMN "uid" SET DEFAULT 'usr-' || gen_random_uuid(); diff --git a/prisma/schema/Benutzer.prisma b/prisma/schema/Benutzer.prisma index e0d28cb5..2ed48f96 100644 --- a/prisma/schema/Benutzer.prisma +++ b/prisma/schema/Benutzer.prisma @@ -21,6 +21,8 @@ model Benutzer { firma String? lex_office_id String? + verified Boolean @default(false) + Anteilshaber Anteilshaber[] @ignore BedarfsausweisWohnen BedarfsausweisWohnen[] documenttemplates documenttemplates[] diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts index 01c6a1a1..e50df546 100644 --- a/src/astro-typesafe-api-caller.ts +++ b/src/astro-typesafe-api-caller.ts @@ -12,8 +12,8 @@ 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"), + "aufnahme": await import("../src/pages/api/aufnahme/index.ts"), "auth/access-token": await import("../src/pages/api/auth/access-token.ts"), "auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"), "auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"), diff --git a/src/client/lib/ausweisSpeichern.ts b/src/client/lib/ausweisSpeichern.ts index c7c58165..f01f3315 100644 --- a/src/client/lib/ausweisSpeichern.ts +++ b/src/client/lib/ausweisSpeichern.ts @@ -15,7 +15,11 @@ export async function ausweisSpeichern( ) { 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 @@ -26,7 +30,11 @@ export async function ausweisSpeichern( }) } 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)}` @@ -50,8 +58,64 @@ export async function ausweisSpeichern( } }) } else { + console.log(aufnahme); + 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: { diff --git a/src/components/Ausweis/Ausweisart.svelte b/src/components/Ausweis/Ausweisart.svelte index b575bc2e..7cdf51a5 100644 --- a/src/components/Ausweis/Ausweisart.svelte +++ b/src/components/Ausweis/Ausweisart.svelte @@ -2,8 +2,6 @@ import HelpLabel from "#components/labels/HelpLabel.svelte"; import Inputlabel from "#components/labels/InputLabel.svelte"; - //import Label from "#components/Label.svelte"; - import { auditHeizungGebaeudeBaujahr } from "../Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js"; import { addNotification, deleteNotification } from "#components/Notifications/shared.js"; import TagInput from "../TagInput.svelte"; @@ -48,7 +46,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8 required data-cy="ausstellgrund" > - + {#each Object.entries(Enums.Ausstellgrund) as [name, ausstellgrund]} {/each} @@ -224,7 +222,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8 required bind:value={aufnahme.saniert} > - + diff --git a/src/components/Ausweis/ButtonWeiterHilfe.svelte b/src/components/Ausweis/ButtonWeiterHilfe.svelte index 94cb2d01..95f606a9 100644 --- a/src/components/Ausweis/ButtonWeiterHilfe.svelte +++ b/src/components/Ausweis/ButtonWeiterHilfe.svelte @@ -62,7 +62,7 @@ async function spaeterWeitermachen() { loginAction = spaeterWeitermachen; - if (!await validateAccessTokenClient()) { + if (!(await validateAccessTokenClient())) { loginOverlayHidden = false; return } @@ -120,18 +120,16 @@ sm:grid-cols-[1fr_min-content_min-content_min-content] sm:justify-self-end"> {#if showWeiter} -
- -
- -
-
- -
{/if} + +
+ +
+
+ {#if showHelp}
- + @@ -150,7 +150,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8 required bind:value={aufnahme.keller} > - + diff --git a/src/components/Ausweis/LueftungundLeerstand.svelte b/src/components/Ausweis/LueftungundLeerstand.svelte index bdb559a6..3933f1b4 100644 --- a/src/components/Ausweis/LueftungundLeerstand.svelte +++ b/src/components/Ausweis/LueftungundLeerstand.svelte @@ -75,7 +75,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8 required bind:value={aufnahme.lueftung} > - +