259 lines
6.3 KiB
Plaintext
259 lines
6.3 KiB
Plaintext
---
|
|
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;
|
|
}
|
|
---
|
|
|
|
<AusweisLayout title="Verbrauchsausweis erstellen">
|
|
{
|
|
ausweisart === "verbrauchsausweis-wohngebaeude" && (
|
|
<VerbrauchsausweisWohnenModule
|
|
client:only
|
|
{ausweis}
|
|
{objekt}
|
|
{aufnahme}
|
|
{bilder}
|
|
{ausweis_id}
|
|
{ausweistyp}
|
|
{user}
|
|
{loadFromDatabase}
|
|
partner_code=""
|
|
/>
|
|
)
|
|
}
|
|
{
|
|
ausweisart === "verbrauchsausweis-gewerbe" && (
|
|
<VerbrauchsausweisGewerbeModule
|
|
client:only
|
|
{ausweis}
|
|
{objekt}
|
|
{aufnahme}
|
|
{bilder}
|
|
{ausweistyp}
|
|
{user}
|
|
{ausweis_id}
|
|
{loadFromDatabase}
|
|
/>
|
|
)
|
|
}
|
|
{
|
|
ausweisart === "bedarfsausweis-wohngebaeude" && (
|
|
<BedarfsausweisWohnenModule
|
|
client:only
|
|
{ausweis}
|
|
{objekt}
|
|
{aufnahme}
|
|
{bilder}
|
|
{ausweistyp}
|
|
{ausweis_id}
|
|
{user}
|
|
{loadFromDatabase}
|
|
/>
|
|
)
|
|
}
|
|
</AusweisLayout>
|