86 lines
2.9 KiB
Plaintext
86 lines
2.9 KiB
Plaintext
---
|
|
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
|
|
import { AufnahmeClient, ObjektClient, BildClient, VerbrauchsausweisGewerbeClient } from "#components/Ausweis/types";
|
|
import VerbrauchsausweisGewerbeModule from "#modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte";
|
|
import { Aufnahme, Enums, Objekt, VerbrauchsausweisGewerbe } from "#lib/server/prisma";
|
|
import { getAufnahme, getObjekt, getBilder, getVerbrauchsausweisGewerbe } from "#lib/server/db";
|
|
import { getCurrentUser } from "#lib/server/user";
|
|
|
|
const id = Astro.url.searchParams.get("id");
|
|
const aufnahme_id = Astro.url.searchParams.get("aufnahme")
|
|
let ausweistyp = Astro.url.searchParams.get("ausweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
|
|
|
|
let ausweis: VerbrauchsausweisGewerbeClient = {} as VerbrauchsausweisGewerbeClient;
|
|
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
|
|
let objekt: ObjektClient = {} as ObjektClient;
|
|
let bilder: BildClient[] = []
|
|
|
|
const user = await getCurrentUser(Astro)
|
|
|
|
if (id) {
|
|
if (!user) {
|
|
return Astro.redirect(
|
|
`/auth/login?redirect=${Astro.url.toString()}`
|
|
);
|
|
}
|
|
|
|
ausweis = await getVerbrauchsausweisGewerbe(id) as VerbrauchsausweisGewerbe
|
|
ausweistyp = ausweis.ausweistyp;
|
|
|
|
if (!ausweis || (ausweis.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) {
|
|
// Der Ausweis scheint nicht zu existieren.
|
|
// Wir leiten auf die generische Ausweisseite ohne ID weiter.
|
|
return Astro.redirect(
|
|
"/energieausweis-erstellen/verbrauchsausweis-gewerbe"
|
|
);
|
|
}
|
|
|
|
aufnahme = await getAufnahme(ausweis.aufnahme_id) as Aufnahme
|
|
|
|
if (!aufnahme) {
|
|
// Die Aufnahme existiert nicht, das sollte eigentlich nicht passieren aber so können wir nicht fortfahren.
|
|
return Astro.redirect(
|
|
"/energieausweis-erstellen/verbrauchsausweis-gewerbe"
|
|
);
|
|
}
|
|
|
|
objekt = await getObjekt(aufnahme.objekt_id) as Objekt
|
|
|
|
if (!objekt) {
|
|
// Das Objekt existiert nicht, das sollte eigentlich nicht passieren aber so können wir nicht fortfahren.
|
|
return Astro.redirect(
|
|
"/energieausweis-erstellen/verbrauchsausweis-gewerbe"
|
|
);
|
|
}
|
|
|
|
bilder = await getBilder(aufnahme.id);
|
|
} else if (aufnahme_id) {
|
|
if (!user) {
|
|
return Astro.redirect(
|
|
`/auth/login?redirect=${Astro.url.toString()}`
|
|
);
|
|
}
|
|
|
|
aufnahme = await getAufnahme(ausweis.aufnahme_id) as Aufnahme
|
|
|
|
if (!aufnahme) {
|
|
// Die Aufnahme existiert wohl nicht.
|
|
return Astro.redirect(
|
|
"/energieausweis-erstellen/verbrauchsausweis-gewerbe"
|
|
);
|
|
}
|
|
|
|
objekt = await getObjekt(aufnahme.objekt_id) as Objekt
|
|
|
|
if (!objekt) {
|
|
// Das Objekt existiert nicht.
|
|
return Astro.redirect(
|
|
"/energieausweis-erstellen/verbrauchsausweis-gewerbe"
|
|
);
|
|
}
|
|
}
|
|
---
|
|
|
|
<AusweisLayout title="Verbrauchsausweis Gewerbe erstellen | IBCornelsen">
|
|
<VerbrauchsausweisGewerbeModule client:only {ausweis} {objekt} {aufnahme} {bilder} {ausweistyp} {user} {id} loadFromDatabase={id !== null}/>
|
|
</AusweisLayout> |