GEG Nachweis

This commit is contained in:
Moritz Utcke
2025-02-19 23:22:39 +11:00
parent 69566f1c74
commit faa8f2c673
38 changed files with 581 additions and 210 deletions

View File

@@ -10,14 +10,16 @@
<h1 class="text-4xl font-medium mb-8">{objekt.adresse}</h1>
<Carousel perPage={1}>
{#each objekt.bilder as bild, i (i)}
<img src="/bilder/{bild.uid}.webp" alt={bild.kategorie} class="max-h-[60vh] h-full w-full object-contain">
{/each}
<span slot="left-control" class="p-2.5 bg-opacity-50 bg-white block rounded-full"><ChevronLeft size={24}></ChevronLeft></span>
<span slot="right-control" class="p-2.5 bg-opacity-50 bg-white block rounded-full"><ChevronRight size={24}></ChevronRight></span>
</Carousel>
<div class="bg-white rounded-lg">
<Carousel perPage={1}>
{#each objekt.bilder as bild, i (i)}
<img src="/bilder/{bild.uid}.webp" alt={bild.kategorie} class="max-h-[60vh] h-full w-full object-contain">
{/each}
<span slot="left-control" class="p-2.5 bg-opacity-50 bg-white block rounded-full"><ChevronLeft size={24}></ChevronLeft></span>
<span slot="right-control" class="p-2.5 bg-opacity-50 bg-white block rounded-full"><ChevronRight size={24}></ChevronRight></span>
</Carousel>
</div>
<div class="my-8 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3">
{#each objekt.aufnahmen as aufnahme}

View File

@@ -71,11 +71,7 @@
export let bezahlmethode: Bezahlmethoden =
Enums.Bezahlmethoden.paypal;
let prices: number[] = [];
if (aufnahme.ausweisart) {
prices = PRICES[aufnahme.ausweisart];
}
let prices = PRICES[ausweisart];
let basePrice: number = prices[0];
@@ -91,6 +87,7 @@
[Enums.Ausweisart.VerbrauchsausweisGewerbe]: `/energieausweis-erstellen/verbrauchsausweis-gewerbe?uid=${ausweis.uid}`,
[Enums.Ausweisart.BedarfsausweisWohnen]: `/energieausweis-erstellen/bedarfsausweis-wohnen?uid=${ausweis.uid}`,
[Enums.Ausweisart.BedarfsausweisGewerbe]: `/energieausweis-erstellen/bedarfsausweis-gewerbe?uid=${ausweis.uid}`,
[Enums.Ausweisart.GEGNachweisWohnen]: `/angebot-anfragen/geg-nachweis-wohnen-anfragen?uid=${ausweis.uid}`,
}[ausweisart]
async function speichern(e: SubmitEvent) {
@@ -169,6 +166,7 @@
bestellenNichtMoeglich = true
}
const gegAnfrage = (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) || (ausweisart === Enums.Ausweisart.GEGNachweisBedarfsausweis) || (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe)
</script>
<div
@@ -178,7 +176,7 @@
2xl:grid-cols-2 2xl:gap-x-8
"
>
{#if !ausweis.geg_anfrage}
{#if !gegAnfrage}
<div id="performance-box" class="w-full box relative px-4 order-1 self-stretch grid grid-cols-1">
<PerformanceScore
bind:ausweis
@@ -195,9 +193,9 @@
>
<h1 class="text-secondary text-3xl m-0">Energiesausweis erstellen</h1>
<h2 class="text-primary text-xl">
Verbrauchsausweis Wohnen {PRICES.VerbrauchsausweisWohnen[0]}
{ausweisart} {prices[0]}
</h2>
{#if ausweis.geg_anfrage}
{#if gegAnfrage}
<Progressbar active={1} steps={["Gebäudedaten", "Kundendaten", "Bestätigung"]}/>
{:else}
<Progressbar active={1}/>
@@ -218,7 +216,7 @@
<Rechnungsadresse bind:user bind:rechnung /></Bereich
>
{#if !ausweis.geg_anfrage}
{#if !gegAnfrage}
<Bereich bereich="3" title="Bezahlmethode">
<Bezahlung bind:selectedPaymentType={bezahlmethode} /></Bereich
>
@@ -296,7 +294,7 @@
<button class="button">Speichern</button>
{#if ausweis.geg_anfrage}
{#if gegAnfrage}
<button class="button cursor-pointer" data-cy="bestellen" on:click={anfordern} >Angebot anfordern</button>
{:else}
<button class="button cursor-pointer" data-cy="bestellen" on:click={bestellen} >Kostenpflichtig bestellen</button>

View File

@@ -8,8 +8,7 @@
BenutzerClient,
UploadedGebaeudeBild,
UnterlageClient,
BedarfsausweisWohnenClient,
VerbrauchsausweisGewerbeClient,
GEGNachweisWohnenClient,
} from "#components/Ausweis/types.js";
import Bereich from "#components/labels/Bereich.svelte";
import { Enums } from "@ibcornelsen/database/client";
@@ -26,12 +25,11 @@
import { exclude } from "#lib/exclude.js";
import Cookies from "js-cookie";
export async function ausweisSpeichern(
ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient,
export async function nachweisSpeichern(
nachweis: GEGNachweisWohnenClient,
objekt: ObjektClient,
aufnahme: AufnahmeClient,
unterlagen: (UnterlageClient & { data?: string })[],
ausweisart: Enums.Ausweisart
unterlagen: (UnterlageClient & { data?: string })[]
) {
if (objekt.uid) {
await api.objekt._uid.PATCH.fetch({
@@ -82,36 +80,21 @@
aufnahme.uid = uid
}
let patchRoute: any;
let putRoute: any;
if (ausweisart == Enums.Ausweisart.VerbrauchsausweisWohnen) {
patchRoute = api["verbrauchsausweis-wohnen"]._uid.PATCH
putRoute = api["verbrauchsausweis-wohnen"].PUT
} else if (ausweisart == Enums.Ausweisart.VerbrauchsausweisGewerbe) {
patchRoute = api["verbrauchsausweis-gewerbe"]._uid.PATCH
putRoute = api["verbrauchsausweis-gewerbe"].PUT
} else if (ausweisart == Enums.Ausweisart.BedarfsausweisWohnen) {
patchRoute = api["bedarfsausweis-wohnen"]._uid.PATCH
putRoute = api["bedarfsausweis-wohnen"].PUT
} else if (ausweisart == Enums.Ausweisart.GEGNachweisVerbrauchsausweisWohnen) {
patchRoute = api["geg-nachweis-verbrauchsausweis-wohnen"]._uid.PATCH
putRoute = api["geg-nachweis-verbrauchsausweis-wohnen"].PUT
}
if (nachweis.uid) {
await api["geg-nachweis-wohnen"]._uid.PATCH.fetch({
if (ausweis.uid) {
await patchRoute.fetch({
...exclude(ausweis, ["uid"])
...exclude(nachweis, ["uid"])
}, {
params: {
uid: ausweis.uid
uid: nachweis.uid
},
headers: {
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
}
})
} else {
const { uid } = await putRoute.fetch({
ausweis,
const { uid } = await api["geg-nachweis-wohnen"].PUT.fetch({
nachweis: nachweis,
uid_aufnahme: aufnahme.uid
}, {
headers: {
@@ -119,7 +102,7 @@
}
})
ausweis.uid = uid;
nachweis.uid = uid;
}
for (const unterlage of unterlagen) {
@@ -145,20 +128,20 @@
}
return {
uid_ausweis: ausweis.uid,
uid_ausweis: nachweis.uid,
uid_aufnahme: aufnahme.uid,
uid_objekt: objekt.uid
}
}
async function ausweisAbschicken() {
async function nachweisAbschicken() {
if (!(await validateAccessTokenClient())) {
loginOverlayHidden = false;
return;
}
const result = await ausweisSpeichern(ausweis, objekt, aufnahme, unterlagen, Enums.Ausweisart.GEGNachweisVerbrauchsausweisWohnen)
const result = await nachweisSpeichern(nachweis, objekt, aufnahme, unterlagen)
if (result !== null) {
window.history.pushState(
@@ -183,7 +166,7 @@
let loginOverlayHidden = true;
export let ausweis: VerbrauchsausweisWohnenClient;
export let nachweis: GEGNachweisWohnenClient;
export let objekt: ObjektClient;
export let aufnahme: AufnahmeClient;
export let user: BenutzerClient = {} as BenutzerClient;
@@ -195,10 +178,10 @@
})[] = [];
if (Object.keys(ausweis).length === 0) {
if (Object.keys(nachweis).length === 0) {
const localStorageAusweis = localStorage.getItem("ausweis");
if (localStorageAusweis) {
ausweis = JSON.parse(localStorageAusweis)
nachweis = JSON.parse(localStorageAusweis)
}
}
@@ -218,20 +201,18 @@
$: {
if (ausweis.uid && objekt.uid && aufnahme.uid) {
localStorage.setItem(ausweis.uid, JSON.stringify(ausweis))
if (nachweis.uid && objekt.uid && aufnahme.uid) {
localStorage.setItem(nachweis.uid, JSON.stringify(nachweis))
localStorage.setItem(objekt.uid, JSON.stringify(objekt))
localStorage.setItem(aufnahme.uid, JSON.stringify(aufnahme))
} else {
localStorage.setItem("ausweis", JSON.stringify(ausweis))
localStorage.setItem("ausweis", JSON.stringify(nachweis))
localStorage.setItem("aufnahme", JSON.stringify(aufnahme))
localStorage.setItem("objekt", JSON.stringify(objekt))
}
}
const ausweisart = Enums.Ausweisart.GEGNachweisVerbrauchsausweisWohnen;
function automatischAusfüllen() {}
</script>
<div
@@ -253,7 +234,7 @@
<form
id="formInput-1"
on:submit={ausweisAbschicken}
on:submit={nachweisAbschicken}
name="ausweis"
data-test="ausweis"
>
@@ -261,7 +242,7 @@
<!-- A Prüfung der Ausweisart -->
<Bereich bereich="A" title="Prüfung der Ausweisart">
<Ausweisart bind:objekt bind:aufnahme bind:ausweis {ausweisart} />
<Ausweisart bind:objekt bind:aufnahme bind:ausweis={nachweis} {ausweisart} />
</Bereich>
<!-- B Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgeschoss -->
@@ -279,7 +260,7 @@
title="Angaben zur Heizung, Lüftung, Energieerezugung, Qualität und Aufbau der Gebäudehülle usw."
></InputLabel>
<textarea class="rounded-e-none" rows="10" bind:value={ausweis.beschreibung}></textarea>
<textarea class="rounded-e-none" rows="10" bind:value={nachweis.beschreibung}></textarea>
<div class="help-label">
<HelpLabel>
@@ -317,7 +298,7 @@
min={1}
name={"plaene"}
bind:files={plaene}
bind:ausweis
bind:ausweis={nachweis}
bind:objekt
></FileGrid>
</div>
@@ -343,7 +324,7 @@
min={0}
name={"unterlagen"}
bind:files={unterlagen}
bind:ausweis
bind:ausweis={nachweis}
bind:objekt
></FileGrid>
</div>
@@ -365,13 +346,13 @@
<div>
<Overlay bind:hidden={loginOverlayHidden}>
<div class="bg-white w-full max-w-screen-sm py-8">
<EmbeddedAuthFlowModule onLogin={ausweisAbschicken}
<EmbeddedAuthFlowModule onLogin={nachweisAbschicken}
></EmbeddedAuthFlowModule>
</div>
</Overlay>
<button
on:click={ausweisAbschicken}
on:click={nachweisAbschicken}
type="button"
class="button"
data-cy="weiter">Weiter</button