API größtenteils umgezogen und Funktionen angepasst

This commit is contained in:
Moritz Utcke
2025-01-21 23:34:01 +07:00
parent de8c859826
commit 5d73f5f7c7
74 changed files with 1715 additions and 818 deletions

View File

@@ -23,11 +23,11 @@
export let ausweis: BedarfsausweisWohnenClient;
export let user: BenutzerClient = {} as BenutzerClient;
let gebaeude_aufnahme_allgemein = ausweis.gebaeude_aufnahme_allgemein || {};
let aufnahme = ausweis.aufnahme || {};
let gebaeude =
ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten || {};
ausweis.aufnahme?.objekt || {};
let images: (UploadedGebaeudeBild & { base64?: string })[] =
ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten
ausweis.aufnahme?.objekt
?.gebaeude_bilder || [];
let daemmungsBreiten = [0, 0.02, 0.05, 0.08, 0.12, 0.16, 0.2, 0.3, 0.4];
@@ -54,7 +54,7 @@
// const result = await verbrauchsausweisWohnenSpeichern(
// ausweis,
// gebaeude,
// gebaeude_aufnahme_allgemein,
// aufnahme,
// images,
// user
// );
@@ -63,7 +63,7 @@
// // Sonst müsste er alles neu eingeben...
// ausweis.uid = result.uid;
// gebaeude.uid = result.gebaeude_uid;
// gebaeude_aufnahme_allgemein.uid = result.gebaeude_aufnahme_uid;
// aufnahme.uid = result.gebaeude_aufnahme_uid;
// window.history.pushState(
// {},
// "",
@@ -153,8 +153,8 @@
<div class="w-full rounded-lg border-gray/35 border-2 relative px-4">
<PerformanceScore
bind:ausweis
bind:gebaeude_aufnahme_allgemein
bind:gebaeude
bind:aufnahme={aufnahme}
bind:objekt={gebaeude}
/>
</div>
</div>
@@ -165,8 +165,8 @@
<div id="formular-box" class="formular-boxen ring-0">
<Bereich bereich="A" title="Prüfung der Ausweisart">
<Ausweisart
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:objekt={gebaeude}
bind:aufnahme={aufnahme}
bind:ausweis
/>
</Bereich>
@@ -177,7 +177,7 @@
<Bereich
bereich="B"
title="Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgeschoss"
><GebaeudeDaten bind:gebaeude_aufnahme_allgemein /></Bereich
><GebaeudeDaten bind:aufnahme /></Bereich
>
<hr />
@@ -1360,7 +1360,7 @@ title="Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgesc
<BilderZusatzsysteme
{ausweis}
{gebaeude}
{gebaeude_aufnahme_allgemein}
{aufnahme}
{images}
/>
<hr />

View File

@@ -87,7 +87,7 @@
<div class="flex flex-col gap-4">
{#each ausweise as ausweis}
<div class="rounded-lg border p-2 flex flex-row items-center justify-between">
<h2 class="text-black">{ausweis.gebaeude_aufnahme_allgemein.gebaeude_stammdaten.adresse}</h2>
<h2 class="text-black">{ausweis.aufnahme.objekt.adresse}</h2>
<button class="btn btn-square btn-ghost p-1.5" on:click={() => {
changeInputs(ausweis)
}}><Check size={20}/></button>

View File

@@ -23,8 +23,8 @@
export let title;
export let bullets;
let gebaeude_aufnahme_allgemein = ausweis.gebaeude_aufnahme_allgemein || {};
let gebaeude = ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten || {};
let aufnahme = ausweis.aufnahme || {};
let gebaeude = ausweis.aufnahme?.objekt || {};
let services = [
{
@@ -58,8 +58,8 @@
let prices: number[] = [];
if (ausweis.gebaeude_aufnahme_allgemein.ausweisart) {
prices = PRICES[ausweis.gebaeude_aufnahme_allgemein.ausweisart];
if (ausweis.aufnahme.ausweisart) {
prices = PRICES[ausweis.aufnahme.ausweisart];
}
let basePrice: number = prices[0];
@@ -102,8 +102,8 @@
<div id="performance-box" class="w-full box relative px-4 order-2 2xl:order-1 self-stretch grid grid-cols-1">
<PerformanceScore
bind:ausweis
bind:gebaeude_aufnahme_allgemein
bind:gebaeude
bind:aufnahme={aufnahme}
bind:objekt={gebaeude}
/>
</div>

View File

@@ -47,8 +47,8 @@
let prices: number[] = [];
if (ausweis.gebaeude_aufnahme_allgemein.ausweisart) {
prices = PRICES[ausweis.gebaeude_aufnahme_allgemein.ausweisart];
if (ausweis.aufnahme.ausweisart) {
prices = PRICES[ausweis.aufnahme.ausweisart];
}
let basePrice: number = prices[0];

View File

@@ -16,7 +16,7 @@
import SanierungszustandWaermedammung from "#components/Ausweis/SanierungszustandWaermedammung.svelte";
import AusweisPreviewContainer from "#components/Ausweis/AusweisPreviewContainer.svelte";
import Bereich from "#labels/Bereich.svelte";
import Bereich from "#components/labels/Bereich.svelte";
import HelpLabel from "#components/HelpLabel.svelte";
import Verbrauch from "#components/Ausweis/Verbrauch.svelte";
import StromVerbrauch from "#components/Ausweis/StromVerbrauch.svelte";
@@ -35,9 +35,9 @@
export let Energieausweis = "Verbrauchsausweis Gewerbe";
let gebaeude_aufnahme_allgemein = ausweis.gebaeude_aufnahme_allgemein || {};
let gebaeude = ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten || {};
let images: (UploadedGebaeudeBild & { base64?: string })[] = ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten?.gebaeude_bilder || [];
let aufnahme = ausweis.aufnahme || {};
let gebaeude = ausweis.aufnahme?.objekt || {};
let images: (UploadedGebaeudeBild & { base64?: string })[] = ausweis.aufnahme?.objekt?.gebaeude_bilder || [];
function automatischAusfüllen() {
}
@@ -46,7 +46,7 @@
const result = await verbrauchsausweisWohnenSpeichern(
ausweis,
gebaeude,
gebaeude_aufnahme_allgemein,
aufnahme,
images,
user
);
@@ -56,7 +56,7 @@
// Sonst müsste er alles neu eingeben...
ausweis.uid = result.uid;
gebaeude.uid = result.gebaeude_uid;
gebaeude_aufnahme_allgemein.uid = result.gebaeude_aufnahme_uid;
aufnahme.uid = result.gebaeude_aufnahme_uid;
window.history.pushState(
{},
"",
@@ -76,8 +76,8 @@
<div id="performance-box" class="w-full box relative px-4 order-2 2xl:order-1 self-stretch grid grid-cols-1">
<PerformanceScore
bind:ausweis
bind:gebaeude_aufnahme_allgemein
bind:gebaeude
bind:aufnahme={aufnahme}
bind:objekt={gebaeude}
/>
</div>
@@ -104,9 +104,9 @@
<Bereich bereich="A" title="Prüfung der Ausweisart">
<Ausweisart
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:aufnahme
bind:ausweis
{Energieausweis}
ausweisart={Energieausweis}
/>
</Bereich>
@@ -117,7 +117,7 @@
title="Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgeschoss"
>
<GebaeudeDaten
bind:gebaeude_aufnahme_allgemein />
bind:aufnahme />
</Bereich
>
@@ -129,7 +129,7 @@
>
<StromVerbrauch
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:aufnahme
bind:ausweis
/>
</Bereich>
@@ -151,7 +151,7 @@
<Bereich
bereich="E"
title="Eingabe von Gebäudeteil, Lüftung, Kühlung und Leerstand"
><LueftungundLeerstand bind:gebaeude_aufnahme_allgemein /></Bereich
><LueftungundLeerstand bind:aufnahme /></Bereich
>
<!-- F Angaben zur Heizungsanlage -->
@@ -160,7 +160,7 @@
><SanierungszustandHeizungsanlage
bind:images
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:aufnahme
bind:ausweis
/></Bereich
>
@@ -171,7 +171,7 @@
><SanierungszustandFensterTueren
bind:images
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:aufnahme
bind:ausweis
/></Bereich
>
@@ -181,7 +181,7 @@
><SanierungszustandWaermedammung
bind:images
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:aufnahme
bind:ausweis
/></Bereich
>
@@ -202,7 +202,7 @@
bind:images
bind:user
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:aufnahme
>
</ButtonWeiterHilfe>

View File

@@ -1,17 +1,18 @@
<script lang="ts">
import { BenutzerClient, GebaeudeAufnahmeClient, GebaeudeClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
import { addNotification, updateNotification } from "@ibcornelsen/ui";
import { validateAccessTokenClient } from "../../client/lib/validateAccessToken.js";
import { client } from "src/trpc.js";
import EmbeddedAuthFlowModule from "#modules/EmbeddedAuthFlowModule.svelte";
import Overlay from "#components/Overlay.svelte";
import { validateAccessTokenClient } from "#client/lib/validateAccessToken.js";
import { verbrauchsausweisWohnenSpeichern } from "#client/lib/verbrauchsausweisWohnenSpeichern.js";
import { AufnahmeClient, BenutzerClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
import { addNotification, updateNotification } from "#components/Notifications/index.js";
import Overlay from "#components/Overlay.svelte";
import EmbeddedAuthFlowModule from "#modules/EmbeddedAuthFlowModule.svelte";
export let gebaeude: GebaeudeClient;
import { api } from "astro-typesafe-api/client"
export let objekt: ObjektClient;
export let images: UploadedGebaeudeBild[];
export let ausweis: VerbrauchsausweisWohnenClient;
export let user: BenutzerClient;
export let gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient;
export let aufnahme: AufnahmeClient;
async function bilderHochladen() {
// Alle Bilder hochladen
@@ -27,17 +28,20 @@
type: "info"
})
for (let i = 0; i < images.length; i++) {
const image = images[i];
const image = images[i];
if (image.uid) {
// Bild wurde bereits hochgeladen, wir müssen es also nicht nochmal hochladen.
continue
}
try {
const response = await client.v1.bilder.upload.mutate({
const response = await api.objekt._uid.bilder.PUT.fetch({
base64: image.base64,
kategorie: image.kategorie,
gebaeude_uid: gebaeude.uid
kategorie: image.kategorie
}, {
params: {
uid: objekt.uid
}
})
image.uid = response.uid
@@ -75,8 +79,8 @@
// Wir speichern den Ausweis ab und leiten auf die "ausweis-gespeichert" Seite weiter.
try {
const response = await verbrauchsausweisWohnenSpeichern(ausweis,
gebaeude,
gebaeude_aufnahme_allgemein,
objekt,
aufnahme,
images,
user)
@@ -84,22 +88,22 @@
await bilderHochladen();
// Falls der Nutzer zurück navigiert, sollte er wieder auf seinen Vorgang kommen.
// Sonst müsste er alles neu eingeben...
ausweis.uid = response.uid;
gebaeude.uid = response.gebaeude_uid;
gebaeude_aufnahme_allgemein.uid = response.gebaeude_aufnahme_uid;
ausweis.uid = response.uid_ausweis;
objekt.uid = response.uid_objekt;
aufnahme.uid = response.uid_aufnahme;
return true
}
return false;
} catch (e: any) {
await client.v1.tickets.erstellen.mutate({
await api.ticket.PUT.fetch({
titel: "Ausweis konnte nicht gespeichert werden",
beschreibung: e.stack,
email: user.email ?? "",
metadata: JSON.stringify({
ausweis,
gebaeude
gebaeude: objekt
})
})
}

View File

@@ -30,48 +30,48 @@
import { verbrauchsausweisWohnenSpeichern } from "src/client/lib/verbrauchsausweisWohnenSpeichern.js";
// TODO: Vom Server sollte ein volles Objekt kommen, dass alle Subobjekte enthält, weil es sonst zu Problemen führen kann
// wenn gebaeude_aufnahme_allgemein oder gebaeude_stammdaten nicht existiert...
// wenn aufnahme oder objekt nicht existiert...
export let ausweis: VerbrauchsausweisWohnenClient;
export let user: BenutzerClient = {} as BenutzerClient;
let gebaeude_aufnahme_allgemein = ausweis.gebaeude_aufnahme_allgemein || {};
let gebaeude = ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten || {};
let images: (UploadedGebaeudeBild & { base64?: string })[] = ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten?.gebaeude_bilder || [];
let aufnahme = ausweis.aufnahme || {};
let gebaeude = ausweis.aufnahme?.objekt || {};
let images: (UploadedGebaeudeBild & { base64?: string })[] = ausweis.aufnahme?.objekt?.gebaeude_bilder || [];
async function spaeterWeitermachen() {
const result = await verbrauchsausweisWohnenSpeichern(ausweis, gebaeude, gebaeude_aufnahme_allgemein, images, user);
const result = await verbrauchsausweisWohnenSpeichern(ausweis, gebaeude, aufnahme, images, user);
if (result !== null) {
// Falls der Nutzer zurück navigiert, sollte er wieder auf seinen Vorgang kommen.
// Sonst müsste er alles neu eingeben...
ausweis.uid = result.uid
gebaeude.uid = result.gebaeude_uid
gebaeude_aufnahme_allgemein.uid = result.gebaeude_aufnahme_uid
aufnahme.uid = result.gebaeude_aufnahme_uid
window.history.pushState({}, "", `${location.pathname}?uid=${result.uid}`);
speichernOverlayHidden = false;
}
}
function automatischAusfüllen() {
gebaeude_aufnahme_allgemein.baujahr_gebaeude = [1962];
gebaeude_aufnahme_allgemein.baujahr_heizung = [1952];
gebaeude_aufnahme_allgemein.saniert = true;
gebaeude_aufnahme_allgemein.einheiten = 1;
aufnahme.baujahr_gebaeude = [1962];
aufnahme.baujahr_heizung = [1952];
aufnahme.saniert = true;
aufnahme.einheiten = 1;
ausweis.ausstellgrund = "Vermietung";
ausweis.verbrauch_1 = 15000;
ausweis.verbrauch_2 = 14000;
ausweis.verbrauch_3 = 16000;
gebaeude_aufnahme_allgemein.flaeche = 152;
gebaeude_aufnahme_allgemein.nutzflaeche = 172;
aufnahme.flaeche = 152;
aufnahme.nutzflaeche = 172;
ausweis.keller_beheizt = true;
gebaeude_aufnahme_allgemein.brennstoff_1 = "Erdgas H";
aufnahme.brennstoff_1 = "Erdgas H";
ausweis.einheit_1 = "kWh";
ausweis.anteil_warmwasser_1 = 18;
ausweis.startdatum = moment("01.01.2019").toDate();
gebaeude_aufnahme_allgemein.plz = "21039";
gebaeude_aufnahme_allgemein.ort = "Hamburg";
gebaeude_aufnahme_allgemein.adresse = "Curslacker Deich 170";
gebaeude_aufnahme_allgemein.gebaeudeteil = "Gesamtgebäude";
aufnahme.plz = "21039";
aufnahme.ort = "Hamburg";
aufnahme.adresse = "Curslacker Deich 170";
aufnahme.gebaeudeteil = "Gesamtgebäude";
gebaeude = gebaeude;
ausweis = ausweis;
@@ -80,14 +80,14 @@
async function ausweisAbschicken(e: SubmitEvent) {
if (e && e.preventDefault) e.preventDefault();
const result = await verbrauchsausweisWohnenSpeichern(ausweis, gebaeude, gebaeude_aufnahme_allgemein, images, user);
const result = await verbrauchsausweisWohnenSpeichern(ausweis, gebaeude, aufnahme, images, user);
if (result !== null) {
// Falls der Nutzer zurück navigiert, sollte er wieder auf seinen Vorgang kommen.
// Sonst müsste er alles neu eingeben...
ausweis.uid = result.uid
gebaeude.uid = result.gebaeude_uid
gebaeude_aufnahme_allgemein.uid = result.gebaeude_aufnahme_uid
aufnahme.uid = result.gebaeude_aufnahme_uid
window.history.pushState({}, "", `${location.pathname}?uid=${result.uid}`);
window.location.href = `/kundendaten?uid=${result.uid}`;
}
@@ -97,12 +97,12 @@
let speichernOverlayHidden = true;
$: {
if (gebaeude_aufnahme_allgemein.saniert
&& gebaeude_aufnahme_allgemein.oberste_geschossdecke_gedaemmt === undefined
&& gebaeude_aufnahme_allgemein.dachgeschoss_gedaemmt === undefined) {
if (aufnahme.saniert
&& aufnahme.oberste_geschossdecke_gedaemmt === undefined
&& aufnahme.dachgeschoss_gedaemmt === undefined) {
gebaeude_aufnahme_allgemein.oberste_geschossdecke_gedaemmt = true;
gebaeude_aufnahme_allgemein.dachgeschoss_gedaemmt = true;
aufnahme.oberste_geschossdecke_gedaemmt = true;
aufnahme.dachgeschoss_gedaemmt = true;
}
}
</script>
@@ -127,8 +127,8 @@
<PerformanceScore
bind:ausweis
bind:gebaeude_aufnahme_allgemein
bind:gebaeude
bind:aufnahme={aufnahme}
bind:objekt={gebaeude}
/>
</div>
@@ -153,8 +153,8 @@
<Label>A - Prüfung der Ausweisart</Label>
<Ausweisart
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:objekt={gebaeude}
bind:aufnahme={aufnahme}
bind:ausweis
/>
@@ -181,7 +181,7 @@
required
data-msg-minlength="min. 5 Zeichen"
data-msg-maxlength="max. 40 Zeichen"
bind:value={gebaeude_aufnahme_allgemein.adresse}
bind:value={aufnahme.adresse}
/>
</div>
</div>
@@ -189,8 +189,8 @@
<!-- PLZ -->
<div class="form-group col-md-4 PLZ">
<ZipSearch
bind:zip={gebaeude_aufnahme_allgemein.plz}
bind:city={gebaeude_aufnahme_allgemein.ort}
bind:zip={aufnahme.plz}
bind:city={aufnahme.ort}
name="plz"
/>
</div>
@@ -204,7 +204,7 @@
name="ort"
data-test="ort"
readonly={true}
bind:value={gebaeude_aufnahme_allgemein.ort}
bind:value={aufnahme.ort}
type="text"
/>
</div>
@@ -227,7 +227,7 @@
autocomplete="off"
data-rule-minlength="2"
data-msg-minlength="min. 2 Zeichen"
bind:value={gebaeude_aufnahme_allgemein.flaeche}
bind:value={aufnahme.flaeche}
/>
</div>
</div>
@@ -240,7 +240,7 @@
name="keller"
data-test="keller"
required
bind:value={gebaeude_aufnahme_allgemein.keller}
bind:value={aufnahme.keller}
>
<option disabled>Bitte auswählen</option>
<option value={Enums.Heizungsstatus.NICHT_VORHANDEN}
@@ -263,7 +263,7 @@
<select
name="dachgeschoss"
data-test="dachgeschoss"
bind:value={gebaeude_aufnahme_allgemein.dachgeschoss}
bind:value={aufnahme.dachgeschoss}
required
>
<option disabled>Bitte auswählen</option>
@@ -299,7 +299,7 @@
autocomplete="off"
data-rule-minlength="2"
data-msg-minlength="min. 2 Zeichen"
bind:value={gebaeude_aufnahme_allgemein.nutzflaeche}
bind:value={aufnahme.nutzflaeche}
/>
</div>
</div>
@@ -312,7 +312,7 @@
<div class="GRB">
<Verbrauch
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:aufnahme
bind:ausweis
/>
</div>
@@ -455,7 +455,7 @@
<select
name="gebaeudetyp"
data-test="gebaeudetyp"
bind:value={gebaeude_aufnahme_allgemein.gebaeudetyp}
bind:value={aufnahme.gebaeudetyp}
required
>
<option disabled>Bitte auswählen</option>
@@ -499,7 +499,7 @@
<select
name="gebaeudeteil"
data-test="gebaeudeteil"
bind:value={gebaeude_aufnahme_allgemein.gebaeudeteil}
bind:value={aufnahme.gebaeudeteil}
required
>
<option disabled>Bitte auswählen</option>
@@ -520,7 +520,7 @@
name="lueftung"
data-test="lueftung"
required
bind:value={gebaeude_aufnahme_allgemein.lueftung}
bind:value={aufnahme.lueftung}
>
<option disabled>Bitte auswählen</option>
<option value="Fensterlüftung">Fensterlüftung</option>
@@ -546,7 +546,7 @@
name="kuehlung"
data-test="kuehlung"
required
bind:value={gebaeude_aufnahme_allgemein.kuehlung}
bind:value={aufnahme.kuehlung}
>
<option disabled>Bitte auswählen</option>
<option value="1">vorhanden</option>
@@ -568,7 +568,7 @@
data-test="leerstand"
maxlength="2"
type="number"
bind:value={gebaeude_aufnahme_allgemein.leerstand}
bind:value={aufnahme.leerstand}
/>
</div>
</div>
@@ -580,7 +580,7 @@
>F - Bitte prüfen Sie hier die Angaben zum Sanierungszustand des
Gebäudes</Label
>
<BilderZusatzsysteme bind:images bind:gebaeude bind:gebaeude_aufnahme_allgemein bind:ausweis />
<BilderZusatzsysteme bind:images bind:gebaeude bind:aufnahme bind:ausweis />
<hr />
<div class="flex flex-row justify-between">
<Hilfe />
@@ -596,7 +596,7 @@
</RawNotification>
{/each}
{#if auditBedarfsausweisBenoetigt(ausweis, gebaeude_aufnahme_allgemein)}
{#if auditBedarfsausweisBenoetigt(ausweis, aufnahme)}
<RawNotification
notification={{
message: "Bedarfsausweis benötigt!",
@@ -612,7 +612,7 @@
</RawNotification>
{/if}
{#await auditPlzNichtErkannt(gebaeude_aufnahme_allgemein) then result}
{#await auditPlzNichtErkannt(objekt) then result}
{#if result}
<RawNotification
notification={{
@@ -630,7 +630,7 @@
{/if}
{/await}
{#if auditHeizungGebaeudeBaujahr(gebaeude_aufnahme_allgemein)}
{#if auditHeizungGebaeudeBaujahr(aufnahme)}
<RawNotification
notification={{
message: "Plausibilitätsprüfung",
@@ -639,7 +639,7 @@
dismissable: true,
onUserDismiss: () => {
hidden.add(AuditType.HEIZUNG_GEBAEUDE_BAUJAHR);
gebaeude_aufnahme_allgemein = gebaeude_aufnahme_allgemein;
aufnahme = aufnahme;
},
type: "warning",
}}
@@ -649,7 +649,7 @@
</RawNotification>
{/if}
{#if auditHeizungJuengerDreiJahre(gebaeude_aufnahme_allgemein)}
{#if auditHeizungJuengerDreiJahre(aufnahme)}
<RawNotification
notification={{
message: "Plausibilitätsprüfung",
@@ -719,7 +719,7 @@
{/if}
{/await}
{#if auditWohnFlaeche(gebaeude_aufnahme_allgemein)}
{#if auditWohnFlaeche(aufnahme)}
<RawNotification
notification={{
message: "Plausibilitätsprüfung",
@@ -758,7 +758,7 @@
</RawNotification>
{/if}
{#if auditLeerStand(gebaeude_aufnahme_allgemein)}
{#if auditLeerStand(aufnahme)}
<RawNotification
notification={{
message: "Plausibilitätsprüfung",
@@ -778,7 +778,7 @@
</RawNotification>
{/if}
{#if auditVerbrauchAbweichung(ausweis, gebaeude_aufnahme_allgemein).length > 0}
{#if auditVerbrauchAbweichung(ausweis, aufnahme).length > 0}
<RawNotification
notification={{
message: "Plausibilitätsprüfung",
@@ -794,14 +794,14 @@
>
Die Abweichung der Verbräuche zwischen Zeitraum {auditVerbrauchAbweichung(
ausweis,
gebaeude_aufnahme_allgemein,
)[0]} und {auditVerbrauchAbweichung(ausweis, gebaeude_aufnahme_allgemein)[1]} beträgt mehr
aufnahme,
)[0]} und {auditVerbrauchAbweichung(ausweis, aufnahme)[1]} beträgt mehr
als 30% und sie haben keinen Leerstand angegeben. Sind sie sich sicher,
dass das stimmt?
</RawNotification>
{/if}
{#await auditEndEnergie(ausweis, gebaeude, gebaeude_aufnahme_allgemein) then result}
{#await auditEndEnergie(ausweis, gebaeude, aufnahme) then result}
{#if result}
<RawNotification
notification={{
@@ -823,7 +823,7 @@
{/if}
{/await}
{#if auditWohnflaecheGroesserGesamtflaeche(gebaeude_aufnahme_allgemein)}
{#if auditWohnflaecheGroesserGesamtflaeche(aufnahme)}
<RawNotification
notification={{
message: "Plausibilitätsprüfung",

View File

@@ -47,41 +47,39 @@
VerbrauchsausweisWohnenClient,
BenutzerClient,
UploadedGebaeudeBild,
ObjektClient,
AufnahmeClient,
} from "#components/Ausweis/types.js";
import { verbrauchsausweisWohnenSpeichern } from "src/client/lib/verbrauchsausweisWohnenSpeichern.js";
import { Enums } from "@ibcornelsen/database/client";
// TODO: Vom Server sollte ein volles Objekt kommen, dass alle Subobjekte enthält, weil es sonst zu Problemen führen kann
// wenn gebaeude_aufnahme_allgemein oder gebaeude_stammdaten nicht existiert...
// wenn aufnahme oder objekt nicht existiert...
export let ausweis: VerbrauchsausweisWohnenClient;
export let objekt: ObjektClient
export let aufnahme: AufnahmeClient
export let user: BenutzerClient = {} as BenutzerClient;
let aufnahme = ausweis.aufnahme || {};
let objekt =
ausweis.aufnahme?.objekt || {};
let images: (UploadedGebaeudeBild & { base64?: string })[] =
ausweis.aufnahme?.objekt
?.gebaeude_bilder || [];
export let bilder: UploadedGebaeudeBild[] = []
async function spaeterWeitermachen() {
const result = await verbrauchsausweisWohnenSpeichern(
ausweis,
objekt,
aufnahme,
images,
bilder,
user
);
if (result !== null) {
// Falls der Nutzer zurück navigiert, sollte er wieder auf seinen Vorgang kommen.
// Sonst müsste er alles neu eingeben...
ausweis.uid = result.uid;
objekt.uid = result.gebaeude_uid;
aufnahme.uid = result.gebaeude_aufnahme_uid;
ausweis.uid = result.uid_ausweis;
objekt.uid = result.uid_objekt;
aufnahme.uid = result.uid_aufnahme;
window.history.pushState(
{},
"",
`${location.pathname}?uid=${result.uid}`
`${location.pathname}?uid=${result.uid_ausweis}`
);
speichernOverlayHidden = false;
}
@@ -126,22 +124,22 @@
ausweis,
objekt,
aufnahme,
images,
bilder,
user
);
if (result !== null) {
// Falls der Nutzer zurück navigiert, sollte er wieder auf seinen Vorgang kommen.
// Sonst müsste er alles neu eingeben...
ausweis.uid = result.uid;
objekt.uid = result.gebaeude_uid;
aufnahme.uid = result.gebaeude_aufnahme_uid;
ausweis.uid = result.uid_ausweis;
objekt.uid = result.uid_objekt;
aufnahme.uid = result.uid_aufnahme;
window.history.pushState(
{},
"",
`${location.pathname}?uid=${result.uid}`
`${location.pathname}?uid=${result.uid_ausweis}`
);
window.location.href = `/kundendaten?uid=${result.uid}`;
window.location.href = `/kundendaten?uid=${result.uid_ausweis}`;
}
}
@@ -160,6 +158,7 @@
}
}
const ausweisart: Enums.Ausweisart = "VerbrauchsausweisWohnen"
</script>
<Overlay bind:hidden={speichernOverlayHidden}>
@@ -186,16 +185,16 @@
<div id="performance-box" class="w-full box relative px-4 order-2 2xl:order-1 self-stretch grid grid-cols-1">
<PerformanceScore
bind:ausweis
bind:gebaeude_aufnahme_allgemein={aufnahme}
bind:gebaeude={objekt}
bind:aufnahme={aufnahme}
bind:objekt={objekt}
/>
</div>
<div id="progress-box" class="w-full box relative px-4 py-3 text-center order-1 2xl:order-2 self-stretch">
<h1 class="text-secondary text-3xl m-0">Energiesausweis erstellen</h1>
<h2 class="text-primary text-xl">{Energieausweis} {PRICES.VerbrauchsausweisWohnen[0]}</h2>
<ProgressBar progress={0} />
<h2 class="text-primary text-xl">{ausweisart} {PRICES.VerbrauchsausweisWohnen[0]}</h2>
<Progressbar progress={0} />
</div>
</div>
@@ -211,10 +210,10 @@
<Bereich bereich="A" title="Prüfung der Ausweisart">
<Ausweisart
bind:gebaeude={objekt}
bind:gebaeude_aufnahme_allgemein={aufnahme}
bind:objekt={objekt}
bind:aufnahme={aufnahme}
bind:ausweis
{Energieausweis}
{ausweisart}
/>
</Bereich>
@@ -223,7 +222,7 @@
<Bereich
bereich="B"
title="Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgeschoss"
><GebaeudeDaten bind:gebaeude_aufnahme_allgemein={aufnahme} /></Bereich
><GebaeudeDaten bind:aufnahme={aufnahme} /></Bereich
>
<!-- C Eingabe von 3 zusammenhängenden Verbrauchsjahren -->
@@ -233,7 +232,7 @@
title="Eingabe von 3 zusammenhängenden Verbrauchsjahren"
><Verbrauch
bind:gebaeude={objekt}
bind:gebaeude_aufnahme_allgemein={aufnahme}
bind:aufnahme={aufnahme}
bind:ausweis
/></Bereich
>
@@ -251,16 +250,16 @@
<Bereich
bereich="E"
title="Eingabe von Gebäudeteil, Lüftung, Kühlung und Leerstand"
><LueftungundLeerstand bind:gebaeude_aufnahme_allgemein={aufnahme} /></Bereich
><LueftungundLeerstand bind:aufnahme={aufnahme} /></Bereich
>
<!-- F Angaben zur Heizungsanlage -->
<Bereich bereich="F" title="Angaben zur Heizunganlage"
><SanierungszustandHeizungsanlage
bind:images
bind:images={bilder}
bind:gebaeude={objekt}
bind:gebaeude_aufnahme_allgemein={aufnahme}
bind:aufnahme={aufnahme}
bind:ausweis
/></Bereich
>
@@ -269,9 +268,9 @@
<Bereich bereich="G" title="Angaben zu Fenster, Dachfenster und Türen"
><SanierungszustandFensterTueren
bind:images
bind:images={bilder}
bind:gebaeude={objekt}
bind:gebaeude_aufnahme_allgemein={aufnahme}
bind:aufnahme={aufnahme}
bind:ausweis
/></Bereich
>
@@ -279,9 +278,9 @@
<Bereich bereich="H" title="Angaben zur Wärmedämmung"
><SanierungszustandWaermedammung
bind:images
bind:images={bilder}
bind:gebaeude={objekt}
bind:gebaeude_aufnahme_allgemein={aufnahme}
bind:aufnahme={aufnahme}
bind:ausweis
/></Bereich
>
@@ -290,7 +289,7 @@
<Bereich bereich="I" title="Gebäudebild und Energieausweis PDF Vorschau"
><AusweisPreviewContainer
bind:images
bind:images={bilder}
bind:ausweis
bind:gebaeude={objekt}
/></Bereich
@@ -299,10 +298,10 @@
<ButtonWeiterHilfe {spaeterWeitermachen}
bind:ausweis
bind:images
bind:images={bilder}
bind:user
bind:gebaeude={objekt}
bind:gebaeude_aufnahme_allgemein={aufnahme}
bind:aufnahme={aufnahme}
>
</ButtonWeiterHilfe>
@@ -364,7 +363,7 @@
</RawNotification>
{/if}
{#await auditPlzNichtErkannt(aufnahme) then result}
{#await auditPlzNichtErkannt(objekt) then result}
{#if result}
<RawNotification
notification={{

View File

@@ -31,48 +31,48 @@
import { verbrauchsausweisWohnenSpeichern } from "src/client/lib/verbrauchsausweisWohnenSpeichern.js";
// TODO: Vom Server sollte ein volles Objekt kommen, dass alle Subobjekte enthält, weil es sonst zu Problemen führen kann
// wenn gebaeude_aufnahme_allgemein oder gebaeude_stammdaten nicht existiert...
// wenn aufnahme oder objekt nicht existiert...
export let ausweis: VerbrauchsausweisWohnenClient;
export let user: BenutzerClient = {} as BenutzerClient;
let gebaeude_aufnahme_allgemein = ausweis.gebaeude_aufnahme_allgemein || {};
let gebaeude = ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten || {};
let images: (UploadedGebaeudeBild & { base64?: string })[] = ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten?.gebaeude_bilder || [];
let aufnahme = ausweis.aufnahme || {};
let gebaeude = ausweis.aufnahme?.objekt || {};
let images: (UploadedGebaeudeBild & { base64?: string })[] = ausweis.aufnahme?.objekt?.gebaeude_bilder || [];
async function spaeterWeitermachen() {
const result = await verbrauchsausweisWohnenSpeichern(ausweis, gebaeude, gebaeude_aufnahme_allgemein, images, user);
const result = await verbrauchsausweisWohnenSpeichern(ausweis, gebaeude, aufnahme, images, user);
if (result !== null) {
// Falls der Nutzer zurück navigiert, sollte er wieder auf seinen Vorgang kommen.
// Sonst müsste er alles neu eingeben...
ausweis.uid = result.uid
gebaeude.uid = result.gebaeude_uid
gebaeude_aufnahme_allgemein.uid = result.gebaeude_aufnahme_uid
aufnahme.uid = result.gebaeude_aufnahme_uid
window.history.pushState({}, "", `${location.pathname}?uid=${result.uid}`);
speichernOverlayHidden = false;
}
}
function automatischAusfüllen() {
gebaeude_aufnahme_allgemein.baujahr_gebaeude = [1962];
gebaeude_aufnahme_allgemein.baujahr_heizung = [1952];
gebaeude_aufnahme_allgemein.saniert = true;
gebaeude_aufnahme_allgemein.einheiten = 1;
aufnahme.baujahr_gebaeude = [1962];
aufnahme.baujahr_heizung = [1952];
aufnahme.saniert = true;
aufnahme.einheiten = 1;
ausweis.ausstellgrund = "Vermietung";
ausweis.verbrauch_1 = 15000;
ausweis.verbrauch_2 = 14000;
ausweis.verbrauch_3 = 16000;
gebaeude_aufnahme_allgemein.flaeche = 152;
gebaeude_aufnahme_allgemein.nutzflaeche = 172;
aufnahme.flaeche = 152;
aufnahme.nutzflaeche = 172;
ausweis.keller_beheizt = true;
gebaeude_aufnahme_allgemein.brennstoff_1 = "Erdgas H";
aufnahme.brennstoff_1 = "Erdgas H";
ausweis.einheit_1 = "kWh";
ausweis.anteil_warmwasser_1 = 18;
ausweis.startdatum = moment("01.01.2019").toDate();
gebaeude_aufnahme_allgemein.plz = "21039";
gebaeude_aufnahme_allgemein.ort = "Hamburg";
gebaeude_aufnahme_allgemein.adresse = "Curslacker Deich 170";
gebaeude_aufnahme_allgemein.gebaeudeteil = "Gesamtgebäude";
aufnahme.plz = "21039";
aufnahme.ort = "Hamburg";
aufnahme.adresse = "Curslacker Deich 170";
aufnahme.gebaeudeteil = "Gesamtgebäude";
gebaeude = gebaeude;
ausweis = ausweis;
@@ -81,14 +81,14 @@
async function ausweisAbschicken(e: SubmitEvent) {
if (e && e.preventDefault) e.preventDefault();
const result = await verbrauchsausweisWohnenSpeichern(ausweis, gebaeude, gebaeude_aufnahme_allgemein, images, user);
const result = await verbrauchsausweisWohnenSpeichern(ausweis, gebaeude, aufnahme, images, user);
if (result !== null) {
// Falls der Nutzer zurück navigiert, sollte er wieder auf seinen Vorgang kommen.
// Sonst müsste er alles neu eingeben...
ausweis.uid = result.uid
gebaeude.uid = result.gebaeude_uid
gebaeude_aufnahme_allgemein.uid = result.gebaeude_aufnahme_uid
aufnahme.uid = result.gebaeude_aufnahme_uid
window.history.pushState({}, "", `${location.pathname}?uid=${result.uid}`);
window.location.href = `/kundendaten?uid=${result.uid}`;
}
@@ -98,12 +98,12 @@
let speichernOverlayHidden = true;
$: {
if (gebaeude_aufnahme_allgemein.saniert
&& gebaeude_aufnahme_allgemein.oberste_geschossdecke_gedaemmt === undefined
&& gebaeude_aufnahme_allgemein.dachgeschoss_gedaemmt === undefined) {
if (aufnahme.saniert
&& aufnahme.oberste_geschossdecke_gedaemmt === undefined
&& aufnahme.dachgeschoss_gedaemmt === undefined) {
gebaeude_aufnahme_allgemein.oberste_geschossdecke_gedaemmt = true;
gebaeude_aufnahme_allgemein.dachgeschoss_gedaemmt = true;
aufnahme.oberste_geschossdecke_gedaemmt = true;
aufnahme.dachgeschoss_gedaemmt = true;
}
}
</script>
@@ -128,7 +128,7 @@
<PerformanceScore
bind:ausweis
bind:gebaeude_aufnahme_allgemein
bind:aufnahme
bind:gebaeude
/>
</div>-->
@@ -155,8 +155,8 @@ xs:grid-cols-2
<div class="bereich-box">
<Ausweisart
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:objekt={gebaeude}
bind:aufnahme={aufnahme}
bind:ausweis
/>
@@ -192,7 +192,7 @@ xs:grid-cols-2
required
data-msg-minlength="min. 5 Zeichen"
data-msg-maxlength="max. 40 Zeichen"
bind:value={gebaeude_aufnahme_allgemein.adresse}
bind:value={aufnahme.adresse}
/>
</div>
</div>
@@ -201,8 +201,8 @@ xs:grid-cols-2
<div class="PLZ">
<Label>* PLZ</Label>
<ZipSearch
bind:zip={gebaeude_aufnahme_allgemein.plz}
bind:city={gebaeude_aufnahme_allgemein.ort}
bind:zip={aufnahme.plz}
bind:city={aufnahme.ort}
name="plz"
/>
</div>
@@ -217,7 +217,7 @@ xs:grid-cols-2
name="ort"
data-test="ort"
readonly={true}
bind:value={gebaeude_aufnahme_allgemein.ort}
bind:value={aufnahme.ort}
type="text"
/>
</div>
@@ -248,7 +248,7 @@ xs:grid-cols-2
autocomplete="off"
data-rule-minlength="2"
data-msg-minlength="min. 2 Zeichen"
bind:value={gebaeude_aufnahme_allgemein.flaeche}
bind:value={aufnahme.flaeche}
/>
</div>
</div>
@@ -272,7 +272,7 @@ xs:grid-cols-2
autocomplete="off"
data-rule-minlength="2"
data-msg-minlength="min. 2 Zeichen"
bind:value={gebaeude_aufnahme_allgemein.nutzflaeche}
bind:value={aufnahme.nutzflaeche}
/>
</div>
</div>
@@ -285,7 +285,7 @@ xs:grid-cols-2
name="keller"
data-test="keller"
required
bind:value={gebaeude_aufnahme_allgemein.keller}
bind:value={aufnahme.keller}
>
<option disabled>Bitte auswählen</option>
<option value={Enums.Heizungsstatus.NICHT_VORHANDEN}
@@ -308,7 +308,7 @@ xs:grid-cols-2
<select
name="dachgeschoss"
data-test="dachgeschoss"
bind:value={gebaeude_aufnahme_allgemein.dachgeschoss}
bind:value={aufnahme.dachgeschoss}
required
>
<option disabled>Bitte auswählen</option>
@@ -345,7 +345,7 @@ xs:grid-cols-2
<Verbrauch
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:aufnahme
bind:ausweis
/>
</div>
@@ -486,7 +486,7 @@ xs:grid-cols-2
</RawNotification>
{/each}
{#if auditBedarfsausweisBenoetigt(ausweis, gebaeude_aufnahme_allgemein)}
{#if auditBedarfsausweisBenoetigt(ausweis, aufnahme)}
<RawNotification
notification={{
message: "Bedarfsausweis benötigt!",
@@ -502,7 +502,7 @@ xs:grid-cols-2
</RawNotification>
{/if}
{#await auditPlzNichtErkannt(gebaeude_aufnahme_allgemein) then result}
{#await auditPlzNichtErkannt(objekt) then result}
{#if result}
<RawNotification
notification={{
@@ -520,7 +520,7 @@ xs:grid-cols-2
{/if}
{/await}
{#if auditHeizungGebaeudeBaujahr(gebaeude_aufnahme_allgemein)}
{#if auditHeizungGebaeudeBaujahr(aufnahme)}
<RawNotification
notification={{
message: "Plausibilitätsprüfung",
@@ -529,7 +529,7 @@ xs:grid-cols-2
dismissable: true,
onUserDismiss: () => {
hidden.add(AuditType.HEIZUNG_GEBAEUDE_BAUJAHR);
gebaeude_aufnahme_allgemein = gebaeude_aufnahme_allgemein;
aufnahme = aufnahme;
},
type: "warning",
}}
@@ -539,7 +539,7 @@ xs:grid-cols-2
</RawNotification>
{/if}
{#if auditHeizungJuengerDreiJahre(gebaeude_aufnahme_allgemein)}
{#if auditHeizungJuengerDreiJahre(aufnahme)}
<RawNotification
notification={{
message: "Plausibilitätsprüfung",
@@ -609,7 +609,7 @@ xs:grid-cols-2
{/if}
{/await}
{#if auditWohnFlaeche(gebaeude_aufnahme_allgemein)}
{#if auditWohnFlaeche(aufnahme)}
<RawNotification
notification={{
message: "Plausibilitätsprüfung",
@@ -648,7 +648,7 @@ xs:grid-cols-2
</RawNotification>
{/if}
{#if auditLeerStand(gebaeude_aufnahme_allgemein)}
{#if auditLeerStand(aufnahme)}
<RawNotification
notification={{
message: "Plausibilitätsprüfung",
@@ -668,7 +668,7 @@ xs:grid-cols-2
</RawNotification>
{/if}
{#if auditVerbrauchAbweichung(ausweis, gebaeude_aufnahme_allgemein).length > 0}
{#if auditVerbrauchAbweichung(ausweis, aufnahme).length > 0}
<RawNotification
notification={{
message: "Plausibilitätsprüfung",
@@ -684,14 +684,14 @@ xs:grid-cols-2
>
Die Abweichung der Verbräuche zwischen Zeitraum {auditVerbrauchAbweichung(
ausweis,
gebaeude_aufnahme_allgemein,
)[0]} und {auditVerbrauchAbweichung(ausweis, gebaeude_aufnahme_allgemein)[1]} beträgt mehr
aufnahme,
)[0]} und {auditVerbrauchAbweichung(ausweis, aufnahme)[1]} beträgt mehr
als 30% und sie haben keinen Leerstand angegeben. Sind sie sich sicher,
dass das stimmt?
</RawNotification>
{/if}
{#await auditEndEnergie(ausweis, gebaeude, gebaeude_aufnahme_allgemein) then result}
{#await auditEndEnergie(ausweis, gebaeude, aufnahme) then result}
{#if result}
<RawNotification
notification={{
@@ -713,7 +713,7 @@ xs:grid-cols-2
{/if}
{/await}
{#if auditWohnflaecheGroesserGesamtflaeche(gebaeude_aufnahme_allgemein)}
{#if auditWohnflaecheGroesserGesamtflaeche(aufnahme)}
<RawNotification
notification={{
message: "Plausibilitätsprüfung",