--- import AusweisLayout from "#layouts/AusweisLayoutDaten.astro"; import VerbrauchsausweisWohnenModule from "#modules/VerbrauchsausweisWohnen/VerbrauchsausweisWohnenModule.svelte"; import { Aufnahme, BedarfsausweisWohnen, Bild, Enums, Objekt, prisma, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen, } from "#lib/server/prisma"; import { getAufnahme, getBedarfsausweisWohnen, getBilder, getObjekt, getVerbrauchsausweisGewerbe, getVerbrauchsausweisWohnen, } from "#lib/server/db"; import { getCurrentUser } from "#lib/server/user"; import { AusstellungsTyp } from "#lib/constants"; import VerbrauchsausweisGewerbeModule from "#modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte"; import BedarfsausweisWohnenModule from "#modules/BedarfsausweisWohnen/BedarfsausweisWohnenModule.svelte"; import { getPrismaAusweisAdapter } from "#lib/server/ausweis"; const ausweisart = Astro.params.ausweisart as string; if ( ausweisart !== "verbrauchsausweis-wohngebaeude" && ausweisart !== "verbrauchsausweis-gewerbe" && ausweisart !== "bedarfsausweis-wohngebaeude" ) { return Astro.redirect("/404"); } const user = await getCurrentUser(Astro); const ausweis_id = Astro.url.searchParams.get("ausweis_id"); const typ = Astro.url.searchParams.get("typ") as AusstellungsTyp; let ausweistyp = (Astro.url.searchParams.get("ausweistyp") as Enums.AusweisTyp) || Enums.AusweisTyp.Standard; let ausweis: | VerbrauchsausweisWohnen | VerbrauchsausweisGewerbe | BedarfsausweisWohnen | null = {} as VerbrauchsausweisWohnen | VerbrauchsausweisGewerbe | BedarfsausweisWohnen; let aufnahme: Aufnahme | null = {} as Aufnahme; let objekt: Objekt | null = {} as Objekt; let bilder: Bild[] = []; let loadFromDatabase = false; if (typ === AusstellungsTyp.Neuausstellung) { if (!user) { return Astro.redirect(`/auth/login?redirect=${Astro.url.toString()}`); } if (!ausweis_id) { return Astro.redirect("/400"); } const adapter = getPrismaAusweisAdapter(ausweis_id) ausweis = await adapter?.findUnique({ where: { id: ausweis_id } }) aufnahme = await prisma.aufnahme.findUnique({ where: { id: ausweis?.aufnahme_id, }, }); objekt = await prisma.objekt.findUnique({ where: { id: aufnahme?.objekt_id, }, }); if ( !ausweis || !aufnahme || !objekt || ((ausweis.benutzer_id !== user.id || aufnahme.benutzer_id !== user.id || objekt.benutzer_id !== user.id) && user.rolle !== Enums.BenutzerRolle.ADMIN) ) { return Astro.redirect("/405"); } ausweis.id = null; aufnahme.id = null; delete aufnahme.erstellungsdatum; ausweis.created_at = new Date() ausweis.updated_at = new Date(); ausweis.alte_ausweis_id = null; ausweis.ausgestellt = false; ausweis.bestellt = false; ausweis.kontrolldatei_angefragt = false; ausweis.energieeffizienzklasse = null; ausweis.ausstellungsdatum = null; ausweis.ausweistyp = Enums.AusweisTyp.Standard; ausweis.zurueckgestellt = false; ausweis.storniert = false; ausweis.rechnung_id = null; ausweis.registriernummer = null; // Die Daten sollen nicht aus dem localStorage genommen werden sonst kann es vorkommen, dass die ID noch besteht und der Vorgang nicht neu angelegt wird. loadFromDatabase = true; } else if (typ === AusstellungsTyp.Speichern) { if (!user) { return Astro.redirect(`/auth/login?redirect=${Astro.url.toString()}`); } if (!ausweis_id) { return Astro.redirect("/400"); } if (ausweisart === "verbrauchsausweis-wohngebaeude") { ausweis = await getVerbrauchsausweisWohnen(ausweis_id); } else if (ausweisart === "verbrauchsausweis-gewerbe") { ausweis = await getVerbrauchsausweisGewerbe(ausweis_id); } else { ausweis = await getBedarfsausweisWohnen(ausweis_id); } ausweistyp = ausweis.ausweistyp; aufnahme = (await getAufnahme(ausweis.aufnahme_id)) as Aufnahme; objekt = (await getObjekt(aufnahme.objekt_id)) as Objekt; if ( !ausweis || !aufnahme || !objekt || ((ausweis.benutzer_id !== user.id || aufnahme.benutzer_id !== user.id || objekt.benutzer_id !== user.id) && user.rolle !== Enums.BenutzerRolle.ADMIN) ) { return Astro.redirect("/405"); } bilder = await getBilder(aufnahme.id); loadFromDatabase = true; } else if (typ === AusstellungsTyp.Alternativdokument) { if (!user) { return Astro.redirect(`/auth/login?redirect=${Astro.url.toString()}`); } if (!ausweis_id) { return Astro.redirect("/400"); } const adapter = getPrismaAusweisAdapter(ausweis_id) ausweis = await adapter?.findUnique({ where: { id: ausweis_id } }) aufnahme = await prisma.aufnahme.findUnique({ where: { id: ausweis?.aufnahme_id, }, }); objekt = await prisma.objekt.findUnique({ where: { id: aufnahme?.objekt_id, }, }); if ( !ausweis || !aufnahme || !objekt || ((ausweis.benutzer_id !== user.id || aufnahme.benutzer_id !== user.id || objekt.benutzer_id !== user.id) && user.rolle !== Enums.BenutzerRolle.ADMIN) ) { return Astro.redirect("/405"); } ausweis.id = null; delete aufnahme.erstellungsdatum; ausweis.created_at = new Date() ausweis.updated_at = new Date(); ausweis.alte_ausweis_id = null; ausweis.ausgestellt = false; ausweis.bestellt = false; ausweis.kontrolldatei_angefragt = false; ausweis.energieeffizienzklasse = null; ausweis.ausstellungsdatum = null; ausweis.ausweistyp = Enums.AusweisTyp.Standard; ausweis.zurueckgestellt = false; ausweis.storniert = false; ausweis.rechnung_id = null; ausweis.registriernummer = null; // Die Daten sollen nicht aus dem localStorage genommen werden sonst kann es vorkommen, dass die ID noch besteht und der Vorgang nicht neu angelegt wird. loadFromDatabase = true; } --- { ausweisart === "verbrauchsausweis-wohngebaeude" && ( ) } { ausweisart === "verbrauchsausweis-gewerbe" && ( ) } { ausweisart === "bedarfsausweis-wohngebaeude" && ( ) }