Partner Code

This commit is contained in:
Moritz Utcke
2025-04-07 20:36:47 -04:00
parent ecdce5b279
commit 145bf46ee1
15 changed files with 205 additions and 304 deletions

View File

@@ -227,7 +227,11 @@
{:else if ausweis.bestellt} {:else if ausweis.bestellt}
<span class="bg-primary px-2 py-0.5 text-sm font-semibold rounded-lg text-white">Bestellt</span> <span class="bg-primary px-2 py-0.5 text-sm font-semibold rounded-lg text-white">Bestellt</span>
{:else} {:else}
{#if ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe || ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisGewerbe}
<span class="bg-red-600 px-2 py-0.5 text-sm font-semibold rounded-lg text-white">Gespeichert</span> <span class="bg-red-600 px-2 py-0.5 text-sm font-semibold rounded-lg text-white">Gespeichert</span>
{:else}
<span class="bg-red-600 px-2 py-0.5 text-sm font-semibold rounded-lg text-white">Angefordert</span>
{/if}
{/if} {/if}
</div> </div>
<div class="badge badge-accent font-semibold text-black text-m">{objekt.adresse}</div> <div class="badge badge-accent font-semibold text-black text-m">{objekt.adresse}</div>

View File

@@ -47,19 +47,6 @@
<div class="text-sm text-center">Energieausweis</div> <div class="text-sm text-center">Energieausweis</div>
</a> </a>
{/if} {/if}
{#if objekt.aufnahmen.at(-1)?.bedarfsausweise_wohnen.length}
{@const ausweis = objekt.aufnahmen.at(-1)?.bedarfsausweise_wohnen.at(-1)}
<a href="/pdf/ansichtsausweis?id={ausweis.id}" target="_blank">
<div class="inline-block border rounded-lg bg-white">
{#if ausweis?.ausgestellt}
<img src="/images/dashboard/AusweisHaken.svg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{:else}
<img src="/images/dashboard/AusweisKreuz.svg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{/if}
</div>
<div class="text-sm text-center">Energieausweis</div>
</a>
{/if}
</div> </div>
<div class="flex flex-col gap-4"> <div class="flex flex-col gap-4">
{#each objekt.aufnahmen as aufnahme} {#each objekt.aufnahmen as aufnahme}

View File

@@ -36,6 +36,8 @@
export let unterlagen: Unterlage[] = []; export let unterlagen: Unterlage[] = [];
export let id: string | null; export let id: string | null;
export let partner_code: string;
export let loadFromDatabase: boolean = false; export let loadFromDatabase: boolean = false;
// Wir holen die daten aus dem LocalStorage falls // Wir holen die daten aus dem LocalStorage falls
@@ -143,6 +145,7 @@
bind:unterlagen bind:unterlagen
bind:blockLocalStorageSync bind:blockLocalStorageSync
{ausweisart} {ausweisart}
{partner_code}
showWeiter={false} showWeiter={false}
{form} {form}
{skala} {skala}
@@ -277,6 +280,7 @@
bind:unterlagen bind:unterlagen
bind:blockLocalStorageSync bind:blockLocalStorageSync
{ausweisart} {ausweisart}
{partner_code}
showWeiter={true} showWeiter={true}
{form} {form}
{skala} {skala}

View File

@@ -1,83 +0,0 @@
<script lang="ts">
import { BenutzerClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
import DashboardAusweis from "#components/Dashboard/DashboardAusweis.svelte";
import DashboardAusweisSkeleton from "#components/Dashboard/DashboardAusweisSkeleton.svelte";
import { verbrauchsausweisWohnenCalculateFormProgress } from "#lib/VerbrauchsausweisWohnen/calculateFormProgress";
import { onMount } from "svelte";
export let user: BenutzerClient;
let ausweise: VerbrauchsausweisWohnenClient[] | null = null;
let ausweisUeberpruefung: ReturnType<typeof verbrauchsausweisWohnenCalculateFormProgress>[] = [];
let errorCount = 0;
onMount(async () => {
ausweise = await client.v1.verbrauchsausweisWohnen.getMany.query({
limit: 10
});
console.log(ausweise);
if (!ausweise) return;
ausweisUeberpruefung = ausweise.map(ausweis => verbrauchsausweisWohnenCalculateFormProgress(ausweis));
errorCount = ausweisUeberpruefung.reduce((acc, { errors }) => acc + errors.length, 0);
})
</script>
{#if errorCount > 0}
<h1 class="text-4xl font-medium my-8">Wichtiges</h1>
<div class="flex flex-row gap-4 overflow-x-auto">
{#each ausweisUeberpruefung as { errors }}
{#if errors.length > 0}
<div class="card w-96 card-bordered bg-base-200 border-base-300">
<div class="card-body">
<div class="badge font-semibold" class:badge-warning={errors[0].severity == "warning"} class:badge-error={errors[0].severity == "error"}>{errors[0].severity == "error" ? "Achtung!" : "Wichtig!"}</div>
<h2 class="card-title">{errors[0].title}</h2>
<p>{errors[0].description}</p>
{#if errors[0].resolvehref}
<div class="card-actions justify-end">
<a class="btn btn-primary" href={errors[0].resolvehref}>Beheben</a>
</div>
{/if}
</div>
</div>
{/if}
{/each}
</div>
{/if}
<h1 class="text-4xl font-medium my-8">Ihre Ausweise</h1>
<div class="grid xl:grid-cols-2 grid-cols-1 gap-4">
{#if ausweise === null}
<DashboardAusweisSkeleton></DashboardAusweisSkeleton>
{:else}
{#if ausweise.length == 0}
<div class="">
<h1 class="text-2xl">Es konnten keine Ausweise gefunden werden.</h1>
<p>Erstellen sie einen Verbrauchsausweis für ihr Wohngebäude <a href="/energieausweis-erstellen/verbrauchsausweis-wohngebaeude">hier</a></p>
</div>
{:else}
{#each ausweise as ausweis, i}
<DashboardAusweis progress={ausweisUeberpruefung[i]?.progress || 0} {ausweis}></DashboardAusweis>
{/each}
{/if}
{/if}
</div>
<div class="flex items-center justify-center mt-12">
<div class="join">
<button class="join-item btn btn-ghost shadow-none">1</button>
<button class="join-item btn btn-ghost shadow-none">2</button>
<button class="join-item btn btn-ghost shadow-none">3</button>
<button class="join-item btn btn-ghost shadow-none">4</button>
</div>
</div>

View File

@@ -211,7 +211,7 @@
versand_plz: versand_plz, versand_plz: versand_plz,
versand_ort: versand_ort, versand_ort: versand_ort,
telefon: telefon, telefon: telefon,
nachweis_id: result.nachweis_id, nachweis_id: result.nachweis_id
}, },
{ {
headers: { headers: {
@@ -291,7 +291,7 @@
let result: Awaited<ReturnType<typeof ausweisSpeichern>> | Awaited<ReturnType<typeof nachweisSpeichern>> | null = null; let result: Awaited<ReturnType<typeof ausweisSpeichern>> | Awaited<ReturnType<typeof nachweisSpeichern>> | null = null;
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisGewerbe || ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) { if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisGewerbe || ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) {
result = await nachweisSpeichern(ausweis, objekt, aufnahme, bilder, unterlagen, ausweisart) result = await nachweisSpeichern(ausweis as unknown as GEGNachweisWohnen, objekt, aufnahme, bilder, unterlagen, ausweisart)
} else { } else {
result = await ausweisSpeichern(ausweis, objekt, aufnahme, bilder, unterlagen, ausweisart) result = await ausweisSpeichern(ausweis, objekt, aufnahme, bilder, unterlagen, ausweisart)
} }

View File

@@ -49,6 +49,7 @@
export let bilder: BildClient[]; export let bilder: BildClient[];
export let id: string | null; export let id: string | null;
export let partner_code: string;
export let loadFromDatabase: boolean = false; export let loadFromDatabase: boolean = false;
const ausweisart = Enums.Ausweisart.VerbrauchsausweisGewerbe const ausweisart = Enums.Ausweisart.VerbrauchsausweisGewerbe
@@ -128,6 +129,7 @@
ausweisart={Enums.Ausweisart.VerbrauchsausweisGewerbe} ausweisart={Enums.Ausweisart.VerbrauchsausweisGewerbe}
showWeiter={false} showWeiter={false}
{form} {form}
{partner_code}
{skala} {skala}
> >
</ButtonWeiterHilfe> </ButtonWeiterHilfe>
@@ -244,6 +246,7 @@
ausweisart={Enums.Ausweisart.VerbrauchsausweisGewerbe} ausweisart={Enums.Ausweisart.VerbrauchsausweisGewerbe}
showWeiter={true} showWeiter={true}
{form} {form}
{partner_code}
{skala} {skala}
> >
</ButtonWeiterHilfe> </ButtonWeiterHilfe>

View File

@@ -160,6 +160,7 @@ let skala: HTMLDivElement;
bind:aufnahme bind:aufnahme
ausweisart={Enums.Ausweisart.VerbrauchsausweisWohnen} ausweisart={Enums.Ausweisart.VerbrauchsausweisWohnen}
showWeiter={false} showWeiter={false}
{partner_code}
{form} {form}
{skala} {skala}
> >

View File

@@ -1,84 +1,91 @@
--- ---
import AusweisLayout from "#layouts/AusweisLayoutDaten_partner.astro";
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
import BedarfsausweisWohnenModule from "#modules/BedarfsausweisWohnen/BedarfsausweisWohnenModule.svelte"; import BedarfsausweisWohnenModule from "#modules/BedarfsausweisWohnen/BedarfsausweisWohnenModule.svelte";
import { AufnahmeClient, ObjektClient, BildClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types"; import { Aufnahme, BedarfsausweisWohnen, Bild, Enums, Objekt } from "#lib/server/prisma";
import { createCaller } from "src/astro-typesafe-api-caller"; import { getAufnahme, getObjekt, getBilder, getBedarfsausweisWohnen } from "#lib/server/db";
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants"; import { getCurrentUser } from "#lib/server/user";
import { validateAccessTokenServer } from "#server/lib/validateAccessToken";
import { Enums } from "#lib/server/prisma";
const id = Astro.url.searchParams.get("uid") || ""; const id = Astro.url.searchParams.get("id");
const aufnahme_id = Astro.url.searchParams.get("aufnahme") const aufnahme_id = Astro.url.searchParams.get("aufnahme")
const ausweistyp = Astro.url.searchParams.get("ausweistyp") || Enums.AusweisTyp.Standard; let ausweistyp = Astro.url.searchParams.get("ausweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
let ausweis: VerbrauchsausweisWohnenClient = {} as VerbrauchsausweisWohnenClient; const partner_code = Astro.params.partner as string;
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
let objekt: ObjektClient = {} as ObjektClient;
let bilder: BildClient[] = []
const valid = validateAccessTokenServer(Astro); let ausweis: BedarfsausweisWohnen = {} as BedarfsausweisWohnen;
let aufnahme: Aufnahme = {} as Aufnahme;
let objekt: Objekt = {} as Objekt;
let bilder: Bild[] = []
const caller = createCaller(Astro); const user = await getCurrentUser(Astro)
if (id) { if (id) {
if (!valid) { if (!user) {
return Astro.redirect( return Astro.redirect(
`/auth/login?redirect=${Astro.url.toString()}` `/auth/login?redirect=${Astro.url.toString()}`
); );
} }
try { ausweis = await getBedarfsausweisWohnen(id) as BedarfsausweisWohnen
ausweis = await caller["bedarfsausweis-wohnen"]._id.GET.fetch(null, { ausweistyp = ausweis.ausweistyp;
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
id
}
});
aufnahme = await caller.aufnahme._id.GET.fetch(null, { if (!ausweis || (ausweis.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
id: ausweis.aufnahme_id
}
})
objekt = await caller.objekt._id.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
id: ausweis.objekt_id
}
})
bilder = await caller.aufnahme._id.bilder.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
id: ausweis.aufnahme_id
}
})
if (!ausweis) {
// Der Ausweis scheint nicht zu existieren. // Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne UID weiter. // Wir leiten auf die generische Ausweisseite ohne ID weiter.
return Astro.redirect( return Astro.redirect(
"/energieausweis-erstellen/bedarfsausweis-wohngebaeude" "/energieausweis-erstellen/bedarfsausweis-wohngebaeude"
); );
} }
} catch(e) {
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/bedarfsausweis-wohngebaeude"
);
}
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/bedarfsausweis-wohngebaeude"
);
}
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/bedarfsausweis-wohngebaeude"
);
}
objekt = await getObjekt(aufnahme.objekt_id) as Objekt
if (!objekt) {
// Das Objekt existiert nicht.
return Astro.redirect( return Astro.redirect(
"/energieausweis-erstellen/bedarfsausweis-wohngebaeude" "/energieausweis-erstellen/bedarfsausweis-wohngebaeude"
); );
} }
} }
console.log(ausweistyp);
--- ---
<AusweisLayout title="Bedarfsausweis erstellen | IBCornelsen" tabHover3="glow"> <AusweisLayout title="Bedarfsausweis erstellen | IBCornelsen">
<BedarfsausweisWohnenModule client:only {ausweis} {objekt} {aufnahme} {bilder} {ausweistyp} {id}></BedarfsausweisWohnenModule> <BedarfsausweisWohnenModule client:only {ausweis} {objekt} {aufnahme} {bilder} {ausweistyp} {id} {user} loadFromDatabase={id !== null} {partner_code}></BedarfsausweisWohnenModule>
</AusweisLayout> </AusweisLayout>

View File

@@ -1,79 +1,80 @@
--- ---
import AusweisLayout from "#layouts/AusweisLayoutDaten_partner.astro"; import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
import { AufnahmeClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient } from "#components/Ausweis/types"; import { AufnahmeClient, ObjektClient, BildClient, VerbrauchsausweisGewerbeClient } from "#components/Ausweis/types";
import { createCaller } from "src/astro-typesafe-api-caller";
import { inferOutput } from "astro-typesafe-api/client";
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants";
import { validateAccessTokenServer } from "#server/lib/validateAccessToken";
import VerbrauchsausweisGewerbeModule from "#modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte"; import VerbrauchsausweisGewerbeModule from "#modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte";
import { Enums } from "#lib/server/prisma"; 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 uid = Astro.url.searchParams.get("uid"); const id = Astro.url.searchParams.get("id");
const ausweistyp = Astro.url.searchParams.get("ausweistyp") || Enums.AusweisTyp.Standard; const aufnahme_id = Astro.url.searchParams.get("aufnahme")
let ausweistyp = Astro.url.searchParams.get("ausweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
const partner_code = Astro.params.partner as string;
let ausweis: VerbrauchsausweisGewerbeClient = {} as VerbrauchsausweisGewerbeClient; let ausweis: VerbrauchsausweisGewerbeClient = {} as VerbrauchsausweisGewerbeClient;
let aufnahme: AufnahmeClient = {} as AufnahmeClient; let aufnahme: AufnahmeClient = {} as AufnahmeClient;
let objekt: ObjektClient = {} as ObjektClient; let objekt: ObjektClient = {} as ObjektClient;
let bilder: UploadedGebaeudeBild[] = [] let bilder: BildClient[] = []
const valid = validateAccessTokenServer(Astro); const user = await getCurrentUser(Astro)
const caller = createCaller(Astro); if (id) {
if (!user) {
if (uid) {
if (!valid) {
return Astro.redirect( return Astro.redirect(
`/auth/login?redirect=${Astro.url.toString()}` `/auth/login?redirect=${Astro.url.toString()}`
); );
} }
try { ausweis = await getVerbrauchsausweisGewerbe(id) as VerbrauchsausweisGewerbe
let { uid_aufnahme, uid_objekt, uid_benutzer, ...result } = await caller["verbrauchsausweis-gewerbe"]._uid.GET.fetch(null, { ausweistyp = ausweis.ausweistyp;
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid
}
});
ausweis = result if (!ausweis || (ausweis.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) {
aufnahme = await caller.aufnahme._uid.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid: uid_aufnahme
}
})
objekt = await caller.objekt._uid.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid: uid_objekt
}
})
bilder = await caller.aufnahme._uid.bilder.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid: uid_aufnahme
}
})
if (!ausweis) {
// Der Ausweis scheint nicht zu existieren. // Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne UID weiter. // Wir leiten auf die generische Ausweisseite ohne ID weiter.
return Astro.redirect( return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-gewerbe" "/energieausweis-erstellen/verbrauchsausweis-gewerbe"
); );
} }
} catch(e) {
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( return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-gewerbe" "/energieausweis-erstellen/verbrauchsausweis-gewerbe"
); );
@@ -81,6 +82,6 @@ if (uid) {
} }
--- ---
<AusweisLayout title="Verbrauchsausweis Gewerbe erstellen | IBCornelsen" tabHover2="glow"> <AusweisLayout title="Verbrauchsausweis Gewerbe erstellen | IBCornelsen">
<VerbrauchsausweisGewerbeModule client:only {ausweis} {objekt} {aufnahme} {bilder} {ausweistyp}/> <VerbrauchsausweisGewerbeModule client:only {ausweis} {objekt} {aufnahme} {bilder} {ausweistyp} {user} {id} {partner_code} loadFromDatabase={id !== null}/>
</AusweisLayout> </AusweisLayout>

View File

@@ -1,77 +1,79 @@
--- ---
import AusweisLayout from "#layouts/AusweisLayoutDaten_partner.astro"; import AusweisLayout from "#layouts/AusweisLayoutDaten_partner.astro";
import VerbrauchsausweisWohnenModule from "#modules/VerbrauchsausweisWohnen/VerbrauchsausweisWohnenModule.svelte"; import VerbrauchsausweisWohnenModule from "#modules/VerbrauchsausweisWohnen/VerbrauchsausweisWohnenModule.svelte";
import { AufnahmeClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types"; import { Aufnahme, Bild, Enums, Objekt, VerbrauchsausweisWohnen } from "#lib/server/prisma";
import { createCaller } from "src/astro-typesafe-api-caller"; import { getVerbrauchsausweisWohnen, getAufnahme, getObjekt, getBilder } from "#lib/server/db";
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants"; import { getCurrentUser } from "#lib/server/user";
import { validateAccessTokenServer } from "#server/lib/validateAccessToken";
import { Enums } from "#lib/server/prisma";
const uid = Astro.url.searchParams.get("uid"); const id = Astro.url.searchParams.get("id");
const ausweistyp = Astro.url.searchParams.get("ausweistyp") || Enums.AusweisTyp.Standard; const aufnahme_id = Astro.url.searchParams.get("aufnahme")
let ausweistyp = Astro.url.searchParams.get("ausweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
const partner_code = Astro.params.partner as string;
let ausweis: VerbrauchsausweisWohnen = {} as VerbrauchsausweisWohnen;
let aufnahme: Aufnahme = {} as Aufnahme;
let objekt: Objekt = {} as Objekt;
let bilder: Bild[] = []
let ausweis: VerbrauchsausweisWohnenClient = {} as VerbrauchsausweisWohnenClient; const user = await getCurrentUser(Astro)
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
let objekt: ObjektClient = {} as ObjektClient;
let bilder: UploadedGebaeudeBild[] = []
const valid = validateAccessTokenServer(Astro); if (id) {
if (!user) {
const caller = createCaller(Astro);
if (uid) {
if (!valid) {
return Astro.redirect( return Astro.redirect(
`/auth/login?redirect=${Astro.url.toString()}` `/auth/login?redirect=${Astro.url.toString()}`
); );
} }
try { ausweis = await getVerbrauchsausweisWohnen(id) as VerbrauchsausweisWohnen
ausweis = await caller["verbrauchsausweis-wohnen"]._uid.GET.fetch(null, { ausweistyp = ausweis.ausweistyp;
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid
}
});
aufnahme = await caller.aufnahme._uid.GET.fetch(null, { if (!ausweis || (ausweis.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid: ausweis.uid_aufnahme
}
})
objekt = await caller.objekt._uid.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid: ausweis.uid_objekt
}
})
bilder = await caller.aufnahme._uid.bilder.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid: ausweis.uid_aufnahme
}
})
if (!ausweis) {
// Der Ausweis scheint nicht zu existieren. // Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne UID weiter. // Wir leiten auf die generische Ausweisseite ohne ID weiter.
return Astro.redirect( return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude" "/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
); );
} }
} catch(e) {
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-wohngebaeude"
);
}
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-wohngebaeude"
);
}
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-wohngebaeude"
);
}
objekt = await getObjekt(aufnahme.objekt_id) as Objekt
if (!objekt) {
// Das Objekt existiert nicht.
return Astro.redirect( return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude" "/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
); );
@@ -81,5 +83,5 @@ if (uid) {
--- ---
<AusweisLayout title="Verbrauchsausweis erstellen" tabHover1="glow"> <AusweisLayout title="Verbrauchsausweis erstellen" tabHover1="glow">
<VerbrauchsausweisWohnenModule client:only {ausweis} {objekt} {aufnahme} {bilder} {ausweistyp} /> <VerbrauchsausweisWohnenModule client:only {ausweis} {objekt} {aufnahme} {bilder} {id} {ausweistyp} {user} {partner_code} loadFromDatabase={id !== null} />
</AusweisLayout> </AusweisLayout>

View File

@@ -52,9 +52,6 @@ export const PUT = defineApiRoute({
}) })
} }
console.log(nachweis);
if (!nachweis || nachweis.benutzer_id !== user.id) { if (!nachweis || nachweis.benutzer_id !== user.id) {
throw new APIError({ throw new APIError({
code: "BAD_REQUEST", code: "BAD_REQUEST",

View File

@@ -1,21 +0,0 @@
---
import UserLayout from "#layouts/DashboardLayout.astro";
import DashboardAusweiseModule from "#modules/Dashboard/DashboardAusweiseModule.svelte";
import { validateAccessTokenServer } from "#server/lib/validateAccessToken";
import { createCaller } from "src/astro-typesafe-api-caller";
const accessTokenValid = await validateAccessTokenServer(Astro);
if (!accessTokenValid) {
return Astro.redirect("/auth/login")
}
const caller = createCaller(Astro);
const user = await caller.v1.benutzer.self();
---
<UserLayout title="Dashboard">
<DashboardAusweiseModule user={user} client:load></DashboardAusweiseModule>
</UserLayout>

View File

@@ -27,7 +27,7 @@ if (id) {
ausweis = await getBedarfsausweisWohnen(id) as BedarfsausweisWohnen ausweis = await getBedarfsausweisWohnen(id) as BedarfsausweisWohnen
ausweistyp = ausweis.ausweistyp; ausweistyp = ausweis.ausweistyp;
if (!ausweis || ausweis.benutzer_id !== user.id) { if (!ausweis || (ausweis.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) {
// Der Ausweis scheint nicht zu existieren. // Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne ID weiter. // Wir leiten auf die generische Ausweisseite ohne ID weiter.
return Astro.redirect( return Astro.redirect(

View File

@@ -27,7 +27,7 @@ if (id) {
ausweis = await getVerbrauchsausweisGewerbe(id) as VerbrauchsausweisGewerbe ausweis = await getVerbrauchsausweisGewerbe(id) as VerbrauchsausweisGewerbe
ausweistyp = ausweis.ausweistyp; ausweistyp = ausweis.ausweistyp;
if (!ausweis || ausweis.benutzer_id !== user.id) { if (!ausweis || (ausweis.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) {
// Der Ausweis scheint nicht zu existieren. // Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne ID weiter. // Wir leiten auf die generische Ausweisseite ohne ID weiter.
return Astro.redirect( return Astro.redirect(

View File

@@ -1,7 +1,6 @@
--- ---
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro"; import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
import VerbrauchsausweisWohnenModule from "#modules/VerbrauchsausweisWohnen/VerbrauchsausweisWohnenModule.svelte"; import VerbrauchsausweisWohnenModule from "#modules/VerbrauchsausweisWohnen/VerbrauchsausweisWohnenModule.svelte";
import { AufnahmeClient, BildClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
import { Aufnahme, Bild, Enums, Objekt, VerbrauchsausweisWohnen } from "#lib/server/prisma"; import { Aufnahme, Bild, Enums, Objekt, VerbrauchsausweisWohnen } from "#lib/server/prisma";
import { getAufnahme, getBilder, getObjekt, getVerbrauchsausweisWohnen } from "#lib/server/db"; import { getAufnahme, getBilder, getObjekt, getVerbrauchsausweisWohnen } from "#lib/server/db";
import { getCurrentUser } from "#lib/server/user"; import { getCurrentUser } from "#lib/server/user";
@@ -27,7 +26,7 @@ if (id) {
ausweis = await getVerbrauchsausweisWohnen(id) as VerbrauchsausweisWohnen ausweis = await getVerbrauchsausweisWohnen(id) as VerbrauchsausweisWohnen
ausweistyp = ausweis.ausweistyp; ausweistyp = ausweis.ausweistyp;
if (!ausweis || ausweis.benutzer_id !== user.id) { if (!ausweis || (ausweis.benutzer_id !== user.id && user.rolle !== Enums.BenutzerRolle.ADMIN)) {
// Der Ausweis scheint nicht zu existieren. // Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne ID weiter. // Wir leiten auf die generische Ausweisseite ohne ID weiter.
return Astro.redirect( return Astro.redirect(
@@ -82,5 +81,5 @@ if (id) {
--- ---
<AusweisLayout title="Verbrauchsausweis erstellen"> <AusweisLayout title="Verbrauchsausweis erstellen">
<VerbrauchsausweisWohnenModule client:only {ausweis} {objekt} {aufnahme} {bilder} {id} {ausweistyp} {user} loadFromDatabase={id !== null} /> <VerbrauchsausweisWohnenModule client:only {ausweis} {objekt} {aufnahme} {bilder} {id} {ausweistyp} {user} loadFromDatabase={id !== null} partner_code="" />
</AusweisLayout> </AusweisLayout>