@@ -1,221 +1,516 @@
|
||||
|
||||
import { api } from "astro-typesafe-api/client"
|
||||
import { api } from "astro-typesafe-api/client";
|
||||
import { exclude } from "#lib/exclude.js";
|
||||
import Cookies from "js-cookie";
|
||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||
import { AufnahmeClient, BedarfsausweisWohnenClient, BildClient, ObjektClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js";
|
||||
import { Enums } from "#lib/client/prisma.js";
|
||||
import {
|
||||
AufnahmeClient,
|
||||
BedarfsausweisWohnenClient,
|
||||
BildClient,
|
||||
ObjektClient,
|
||||
VerbrauchsausweisGewerbeClient,
|
||||
VerbrauchsausweisWohnenClient,
|
||||
} from "#components/Ausweis/types.js";
|
||||
import {
|
||||
BedarfsausweisWohnen,
|
||||
Enums,
|
||||
VerbrauchsausweisGewerbe,
|
||||
VerbrauchsausweisWohnen,
|
||||
} from "#lib/client/prisma.js";
|
||||
import { tryCatch } from "#lib/tryCatch.js";
|
||||
import { addNotification } from "@ibcornelsen/ui";
|
||||
import { objektSpeichern, aufnahmeSpeichern } from "./speichern.js";
|
||||
|
||||
export async function verbrauchsausweisWohnenSpeichern(
|
||||
ausweis: VerbrauchsausweisWohnen,
|
||||
aufnahme_id: string
|
||||
): Promise<string> {
|
||||
if (ausweis.id) {
|
||||
await api["verbrauchsausweis-wohnen"]._id.PATCH.fetch(
|
||||
{
|
||||
ausweistyp: ausweis.ausweistyp,
|
||||
startdatum: ausweis.startdatum,
|
||||
alternative_heizung: ausweis.alternative_heizung,
|
||||
alternative_kuehlung: ausweis.alternative_kuehlung,
|
||||
alternative_lueftung: ausweis.alternative_lueftung,
|
||||
alternative_warmwasser: ausweis.alternative_warmwasser,
|
||||
anteil_warmwasser_1: ausweis.anteil_warmwasser_1,
|
||||
anteil_warmwasser_2: ausweis.anteil_warmwasser_2,
|
||||
ausgestellt: ausweis.ausgestellt,
|
||||
ausstellgrund: ausweis.ausstellgrund,
|
||||
ausstellungsdatum: ausweis.ausstellungsdatum,
|
||||
beschreibung: ausweis.beschreibung,
|
||||
bestellt: ausweis.bestellt,
|
||||
boxpruefung: ausweis.boxpruefung,
|
||||
brennstoff_1: ausweis.brennstoff_1,
|
||||
brennstoff_2: ausweis.brennstoff_2,
|
||||
einheit_1: ausweis.einheit_1,
|
||||
einheit_2: ausweis.einheit_2,
|
||||
energieeffizienzklasse: ausweis.energieeffizienzklasse,
|
||||
faktorKeller: ausweis.faktorKeller,
|
||||
kontrolldatei_angefragt: ausweis.kontrolldatei_angefragt,
|
||||
prueftext: ausweis.prueftext,
|
||||
registriernummer: ausweis.registriernummer,
|
||||
storniert: ausweis.storniert,
|
||||
verbrauch_1: ausweis.verbrauch_1,
|
||||
verbrauch_2: ausweis.verbrauch_2,
|
||||
verbrauch_3: ausweis.verbrauch_3,
|
||||
verbrauch_4: ausweis.verbrauch_4,
|
||||
verbrauch_5: ausweis.verbrauch_5,
|
||||
verbrauch_6: ausweis.verbrauch_6,
|
||||
warmwasser_anteil_bekannt: ausweis.warmwasser_anteil_bekannt,
|
||||
warmwasser_enthalten: ausweis.warmwasser_enthalten,
|
||||
zurueckgestellt: ausweis.zurueckgestellt,
|
||||
zusaetzliche_heizquelle: ausweis.zusaetzliche_heizquelle,
|
||||
},
|
||||
{
|
||||
params: {
|
||||
id: ausweis.id,
|
||||
},
|
||||
headers: {
|
||||
Authorization: `Bearer ${Cookies.get(
|
||||
API_ACCESS_TOKEN_COOKIE_NAME
|
||||
)}`,
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
return ausweis.id;
|
||||
} else {
|
||||
const { id } = await api["verbrauchsausweis-wohnen"].PUT.fetch(
|
||||
{
|
||||
ausweis: {
|
||||
ausweistyp: ausweis.ausweistyp,
|
||||
startdatum: ausweis.startdatum,
|
||||
alternative_heizung: ausweis.alternative_heizung,
|
||||
alternative_kuehlung: ausweis.alternative_kuehlung,
|
||||
alternative_lueftung: ausweis.alternative_lueftung,
|
||||
alternative_warmwasser: ausweis.alternative_warmwasser,
|
||||
anteil_warmwasser_1: ausweis.anteil_warmwasser_1,
|
||||
anteil_warmwasser_2: ausweis.anteil_warmwasser_2,
|
||||
ausgestellt: ausweis.ausgestellt,
|
||||
ausstellgrund: ausweis.ausstellgrund,
|
||||
ausstellungsdatum: ausweis.ausstellungsdatum,
|
||||
beschreibung: ausweis.beschreibung,
|
||||
bestellt: ausweis.bestellt,
|
||||
boxpruefung: ausweis.boxpruefung,
|
||||
brennstoff_1: ausweis.brennstoff_1,
|
||||
brennstoff_2: ausweis.brennstoff_2,
|
||||
einheit_1: ausweis.einheit_1,
|
||||
einheit_2: ausweis.einheit_2,
|
||||
energieeffizienzklasse: ausweis.energieeffizienzklasse,
|
||||
faktorKeller: ausweis.faktorKeller,
|
||||
kontrolldatei_angefragt: ausweis.kontrolldatei_angefragt,
|
||||
prueftext: ausweis.prueftext,
|
||||
registriernummer: ausweis.registriernummer,
|
||||
storniert: ausweis.storniert,
|
||||
verbrauch_1: ausweis.verbrauch_1,
|
||||
verbrauch_2: ausweis.verbrauch_2,
|
||||
verbrauch_3: ausweis.verbrauch_3,
|
||||
verbrauch_4: ausweis.verbrauch_4,
|
||||
verbrauch_5: ausweis.verbrauch_5,
|
||||
verbrauch_6: ausweis.verbrauch_6,
|
||||
warmwasser_anteil_bekannt:
|
||||
ausweis.warmwasser_anteil_bekannt,
|
||||
warmwasser_enthalten: ausweis.warmwasser_enthalten,
|
||||
zurueckgestellt: ausweis.zurueckgestellt,
|
||||
zusaetzliche_heizquelle: ausweis.zusaetzliche_heizquelle,
|
||||
},
|
||||
aufnahme_id,
|
||||
},
|
||||
{
|
||||
headers: {
|
||||
Authorization: `Bearer ${Cookies.get(
|
||||
API_ACCESS_TOKEN_COOKIE_NAME
|
||||
)}`,
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
||||
export async function verbrauchsausweisGewerbeSpeichern(
|
||||
ausweis: VerbrauchsausweisGewerbe,
|
||||
aufnahme_id: string
|
||||
): Promise<string> {
|
||||
if (ausweis.id) {
|
||||
await api["verbrauchsausweis-gewerbe"]._id.PATCH.fetch(
|
||||
{
|
||||
ausweistyp: ausweis.ausweistyp,
|
||||
startdatum: ausweis.startdatum,
|
||||
alternative_heizung: ausweis.alternative_heizung,
|
||||
alternative_kuehlung: ausweis.alternative_kuehlung,
|
||||
alternative_lueftung: ausweis.alternative_lueftung,
|
||||
alternative_warmwasser: ausweis.alternative_warmwasser,
|
||||
anteil_warmwasser_1: ausweis.anteil_warmwasser_1,
|
||||
anteil_warmwasser_2: ausweis.anteil_warmwasser_2,
|
||||
ausgestellt: ausweis.ausgestellt,
|
||||
ausstellgrund: ausweis.ausstellgrund,
|
||||
ausstellungsdatum: ausweis.ausstellungsdatum,
|
||||
beschreibung: ausweis.beschreibung,
|
||||
bestellt: ausweis.bestellt,
|
||||
boxpruefung: ausweis.boxpruefung,
|
||||
brennstoff_1: ausweis.brennstoff_1,
|
||||
brennstoff_2: ausweis.brennstoff_2,
|
||||
einheit_1: ausweis.einheit_1,
|
||||
einheit_2: ausweis.einheit_2,
|
||||
energieeffizienzklasse: ausweis.energieeffizienzklasse,
|
||||
kontrolldatei_angefragt: ausweis.kontrolldatei_angefragt,
|
||||
prueftext: ausweis.prueftext,
|
||||
registriernummer: ausweis.registriernummer,
|
||||
storniert: ausweis.storniert,
|
||||
verbrauch_1: ausweis.verbrauch_1,
|
||||
verbrauch_2: ausweis.verbrauch_2,
|
||||
verbrauch_3: ausweis.verbrauch_3,
|
||||
verbrauch_4: ausweis.verbrauch_4,
|
||||
verbrauch_5: ausweis.verbrauch_5,
|
||||
verbrauch_6: ausweis.verbrauch_6,
|
||||
warmwasser_anteil_bekannt: ausweis.warmwasser_anteil_bekannt,
|
||||
warmwasser_enthalten: ausweis.warmwasser_enthalten,
|
||||
zurueckgestellt: ausweis.zurueckgestellt,
|
||||
zusaetzliche_heizquelle: ausweis.zusaetzliche_heizquelle,
|
||||
anteil_kuehlung_1: ausweis.anteil_kuehlung_1,
|
||||
anteil_kuehlung_2: ausweis.anteil_kuehlung_2,
|
||||
keller_beheizt: ausweis.keller_beheizt,
|
||||
kuehlung_enthalten: ausweis.kuehlung_enthalten,
|
||||
rechnung_id: ausweis.rechnung_id,
|
||||
strom_1: ausweis.strom_1,
|
||||
strom_2: ausweis.strom_2,
|
||||
strom_3: ausweis.strom_3,
|
||||
stromverbrauch_enthaelt_beleuchtung:
|
||||
ausweis.stromverbrauch_enthaelt_beleuchtung,
|
||||
stromverbrauch_enthaelt_heizung:
|
||||
ausweis.stromverbrauch_enthaelt_heizung,
|
||||
stromverbrauch_enthaelt_kuehlung:
|
||||
ausweis.stromverbrauch_enthaelt_kuehlung,
|
||||
stromverbrauch_enthaelt_lueftung:
|
||||
ausweis.stromverbrauch_enthaelt_lueftung,
|
||||
stromverbrauch_enthaelt_sonstige:
|
||||
ausweis.stromverbrauch_enthaelt_sonstige,
|
||||
stromverbrauch_enthaelt_warmwasser:
|
||||
ausweis.stromverbrauch_enthaelt_warmwasser,
|
||||
},
|
||||
{
|
||||
params: {
|
||||
id: ausweis.id,
|
||||
},
|
||||
headers: {
|
||||
Authorization: `Bearer ${Cookies.get(
|
||||
API_ACCESS_TOKEN_COOKIE_NAME
|
||||
)}`,
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
return ausweis.id;
|
||||
} else {
|
||||
const { id } = await api["verbrauchsausweis-gewerbe"].PUT.fetch(
|
||||
{
|
||||
ausweis: {
|
||||
ausweistyp: ausweis.ausweistyp,
|
||||
startdatum: ausweis.startdatum,
|
||||
alternative_heizung: ausweis.alternative_heizung,
|
||||
alternative_kuehlung: ausweis.alternative_kuehlung,
|
||||
alternative_lueftung: ausweis.alternative_lueftung,
|
||||
alternative_warmwasser: ausweis.alternative_warmwasser,
|
||||
anteil_warmwasser_1: ausweis.anteil_warmwasser_1,
|
||||
anteil_warmwasser_2: ausweis.anteil_warmwasser_2,
|
||||
ausgestellt: ausweis.ausgestellt,
|
||||
ausstellgrund: ausweis.ausstellgrund,
|
||||
ausstellungsdatum: ausweis.ausstellungsdatum,
|
||||
beschreibung: ausweis.beschreibung,
|
||||
bestellt: ausweis.bestellt,
|
||||
boxpruefung: ausweis.boxpruefung,
|
||||
brennstoff_1: ausweis.brennstoff_1,
|
||||
brennstoff_2: ausweis.brennstoff_2,
|
||||
einheit_1: ausweis.einheit_1,
|
||||
einheit_2: ausweis.einheit_2,
|
||||
energieeffizienzklasse: ausweis.energieeffizienzklasse,
|
||||
kontrolldatei_angefragt: ausweis.kontrolldatei_angefragt,
|
||||
prueftext: ausweis.prueftext,
|
||||
registriernummer: ausweis.registriernummer,
|
||||
storniert: ausweis.storniert,
|
||||
verbrauch_1: ausweis.verbrauch_1,
|
||||
verbrauch_2: ausweis.verbrauch_2,
|
||||
verbrauch_3: ausweis.verbrauch_3,
|
||||
verbrauch_4: ausweis.verbrauch_4,
|
||||
verbrauch_5: ausweis.verbrauch_5,
|
||||
verbrauch_6: ausweis.verbrauch_6,
|
||||
warmwasser_anteil_bekannt:
|
||||
ausweis.warmwasser_anteil_bekannt,
|
||||
warmwasser_enthalten: ausweis.warmwasser_enthalten,
|
||||
zurueckgestellt: ausweis.zurueckgestellt,
|
||||
zusaetzliche_heizquelle: ausweis.zusaetzliche_heizquelle,
|
||||
anteil_kuehlung_1: ausweis.anteil_kuehlung_1,
|
||||
anteil_kuehlung_2: ausweis.anteil_kuehlung_2,
|
||||
keller_beheizt: ausweis.keller_beheizt,
|
||||
kuehlung_enthalten: ausweis.kuehlung_enthalten,
|
||||
rechnung_id: ausweis.rechnung_id,
|
||||
strom_1: ausweis.strom_1,
|
||||
strom_2: ausweis.strom_2,
|
||||
strom_3: ausweis.strom_3,
|
||||
stromverbrauch_enthaelt_beleuchtung:
|
||||
ausweis.stromverbrauch_enthaelt_beleuchtung,
|
||||
stromverbrauch_enthaelt_heizung:
|
||||
ausweis.stromverbrauch_enthaelt_heizung,
|
||||
stromverbrauch_enthaelt_kuehlung:
|
||||
ausweis.stromverbrauch_enthaelt_kuehlung,
|
||||
stromverbrauch_enthaelt_lueftung:
|
||||
ausweis.stromverbrauch_enthaelt_lueftung,
|
||||
stromverbrauch_enthaelt_sonstige:
|
||||
ausweis.stromverbrauch_enthaelt_sonstige,
|
||||
stromverbrauch_enthaelt_warmwasser:
|
||||
ausweis.stromverbrauch_enthaelt_warmwasser,
|
||||
},
|
||||
aufnahme_id,
|
||||
},
|
||||
{
|
||||
headers: {
|
||||
Authorization: `Bearer ${Cookies.get(
|
||||
API_ACCESS_TOKEN_COOKIE_NAME
|
||||
)}`,
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
||||
export async function bedarfsausweisWohnenSpeichern(
|
||||
ausweis: BedarfsausweisWohnen,
|
||||
aufnahme_id: string
|
||||
): Promise<string> {
|
||||
if (ausweis.id) {
|
||||
await api["bedarfsausweis-wohnen"]._id.PATCH.fetch(
|
||||
{
|
||||
ausweistyp: ausweis.ausweistyp,
|
||||
alternative_heizung: ausweis.alternative_heizung,
|
||||
alternative_kuehlung: ausweis.alternative_kuehlung,
|
||||
alternative_lueftung: ausweis.alternative_lueftung,
|
||||
alternative_warmwasser: ausweis.alternative_warmwasser,
|
||||
ausstellgrund: ausweis.ausstellgrund,
|
||||
ausstellungsdatum: ausweis.ausstellungsdatum,
|
||||
beschreibung: ausweis.beschreibung,
|
||||
boxpruefung: ausweis.boxpruefung,
|
||||
energieeffizienzklasse: ausweis.energieeffizienzklasse,
|
||||
kontrolldatei_angefragt: ausweis.kontrolldatei_angefragt,
|
||||
prueftext: ausweis.prueftext,
|
||||
registriernummer: ausweis.registriernummer,
|
||||
anteil_zusatzheizung: ausweis.anteil_zusatzheizung,
|
||||
anzahl_gauben: ausweis.anzahl_gauben,
|
||||
anzahl_vollgeschosse: ausweis.anzahl_vollgeschosse,
|
||||
aussenwand_bauart: ausweis.aussenwand_bauart,
|
||||
aussenwand_daemmung: ausweis.aussenwand_daemmung,
|
||||
aussenwand_flaeche: ausweis.aussenwand_flaeche,
|
||||
aussenwand_u_wert: ausweis.aussenwand_u_wert,
|
||||
aussenwandflaeche_unbeheizt:
|
||||
ausweis.aussenwandflaeche_unbeheizt,
|
||||
boden_bauart: ausweis.boden_bauart,
|
||||
boden_daemmung: ausweis.boden_daemmung,
|
||||
breite_gauben: ausweis.breite_gauben,
|
||||
dach_bauart: ausweis.dach_bauart,
|
||||
dach_daemmung: ausweis.dach_daemmung,
|
||||
dach_u_wert: ausweis.dach_u_wert,
|
||||
dachfenster_art: ausweis.dachfenster_art,
|
||||
dachfenster_flaeche: ausweis.dachfenster_flaeche,
|
||||
dachflaeche: ausweis.dachflaeche,
|
||||
decke_bauart: ausweis.decke_bauart,
|
||||
decke_daemmung: ausweis.decke_daemmung,
|
||||
decke_u_wert: ausweis.decke_u_wert,
|
||||
deckenflaeche: ausweis.deckenflaeche,
|
||||
dicht: ausweis.dicht,
|
||||
fenster_art_1: ausweis.fenster_art_1,
|
||||
fenster_art_2: ausweis.fenster_art_2,
|
||||
fenster_flaeche_1: ausweis.fenster_flaeche_1,
|
||||
fenster_flaeche_2: ausweis.fenster_flaeche_2,
|
||||
fensterflaeche_nw_no: ausweis.fensterflaeche_nw_no,
|
||||
fensterflaeche_so_sw: ausweis.fensterflaeche_so_sw,
|
||||
fussboden_flaeche: ausweis.fussboden_flaeche,
|
||||
fussboden_u_wert: ausweis.fussboden_u_wert,
|
||||
geschosshoehe: ausweis.geschosshoehe,
|
||||
haustuer_art: ausweis.haustuer_art,
|
||||
haustuer_flaeche: ausweis.haustuer_flaeche,
|
||||
heizung_speicherung: ausweis.heizung_speicherung,
|
||||
heizung_verteilung: ausweis.heizung_verteilung,
|
||||
heizung_zentral: ausweis.heizung_zentral,
|
||||
kollektor_flaeche: ausweis.kollektor_flaeche,
|
||||
masse_a: ausweis.masse_a,
|
||||
masse_b: ausweis.masse_b,
|
||||
masse_c: ausweis.masse_c,
|
||||
masse_d: ausweis.masse_d,
|
||||
masse_e: ausweis.masse_e,
|
||||
masse_f: ausweis.masse_f,
|
||||
volumen: ausweis.volumen,
|
||||
waerme_erzeugung_heizung: ausweis.waerme_erzeugung_heizung,
|
||||
warmwasser_erzeugung: ausweis.warmwasser_erzeugung,
|
||||
warmwasser_speicherung: ausweis.warmwasser_speicherung,
|
||||
warmwasser_verteilung: ausweis.warmwasser_verteilung,
|
||||
},
|
||||
{
|
||||
params: {
|
||||
id: ausweis.id,
|
||||
},
|
||||
headers: {
|
||||
Authorization: `Bearer ${Cookies.get(
|
||||
API_ACCESS_TOKEN_COOKIE_NAME
|
||||
)}`,
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
return ausweis.id;
|
||||
} else {
|
||||
const id = await api["bedarfsausweis-wohnen"].PUT.fetch(
|
||||
{
|
||||
ausweis: {
|
||||
ausweistyp: ausweis.ausweistyp,
|
||||
alternative_heizung: ausweis.alternative_heizung,
|
||||
alternative_kuehlung: ausweis.alternative_kuehlung,
|
||||
alternative_lueftung: ausweis.alternative_lueftung,
|
||||
alternative_warmwasser: ausweis.alternative_warmwasser,
|
||||
ausstellgrund: ausweis.ausstellgrund,
|
||||
ausstellungsdatum: ausweis.ausstellungsdatum,
|
||||
beschreibung: ausweis.beschreibung,
|
||||
boxpruefung: ausweis.boxpruefung,
|
||||
energieeffizienzklasse: ausweis.energieeffizienzklasse,
|
||||
kontrolldatei_angefragt: ausweis.kontrolldatei_angefragt,
|
||||
prueftext: ausweis.prueftext,
|
||||
registriernummer: ausweis.registriernummer,
|
||||
anteil_zusatzheizung: ausweis.anteil_zusatzheizung,
|
||||
anzahl_gauben: ausweis.anzahl_gauben,
|
||||
anzahl_vollgeschosse: ausweis.anzahl_vollgeschosse,
|
||||
aussenwand_bauart: ausweis.aussenwand_bauart,
|
||||
aussenwand_daemmung: ausweis.aussenwand_daemmung,
|
||||
aussenwand_flaeche: ausweis.aussenwand_flaeche,
|
||||
aussenwand_u_wert: ausweis.aussenwand_u_wert,
|
||||
aussenwandflaeche_unbeheizt:
|
||||
ausweis.aussenwandflaeche_unbeheizt,
|
||||
boden_bauart: ausweis.boden_bauart,
|
||||
boden_daemmung: ausweis.boden_daemmung,
|
||||
breite_gauben: ausweis.breite_gauben,
|
||||
dach_bauart: ausweis.dach_bauart,
|
||||
dach_daemmung: ausweis.dach_daemmung,
|
||||
dach_u_wert: ausweis.dach_u_wert,
|
||||
dachfenster_art: ausweis.dachfenster_art,
|
||||
dachfenster_flaeche: ausweis.dachfenster_flaeche,
|
||||
dachflaeche: ausweis.dachflaeche,
|
||||
decke_bauart: ausweis.decke_bauart,
|
||||
decke_daemmung: ausweis.decke_daemmung,
|
||||
decke_u_wert: ausweis.decke_u_wert,
|
||||
deckenflaeche: ausweis.deckenflaeche,
|
||||
dicht: ausweis.dicht,
|
||||
fenster_art_1: ausweis.fenster_art_1,
|
||||
fenster_art_2: ausweis.fenster_art_2,
|
||||
fenster_flaeche_1: ausweis.fenster_flaeche_1,
|
||||
fenster_flaeche_2: ausweis.fenster_flaeche_2,
|
||||
fensterflaeche_nw_no: ausweis.fensterflaeche_nw_no,
|
||||
fensterflaeche_so_sw: ausweis.fensterflaeche_so_sw,
|
||||
fussboden_flaeche: ausweis.fussboden_flaeche,
|
||||
fussboden_u_wert: ausweis.fussboden_u_wert,
|
||||
geschosshoehe: ausweis.geschosshoehe,
|
||||
haustuer_art: ausweis.haustuer_art,
|
||||
haustuer_flaeche: ausweis.haustuer_flaeche,
|
||||
heizung_speicherung: ausweis.heizung_speicherung,
|
||||
heizung_verteilung: ausweis.heizung_verteilung,
|
||||
heizung_zentral: ausweis.heizung_zentral,
|
||||
kollektor_flaeche: ausweis.kollektor_flaeche,
|
||||
masse_a: ausweis.masse_a,
|
||||
masse_b: ausweis.masse_b,
|
||||
masse_c: ausweis.masse_c,
|
||||
masse_d: ausweis.masse_d,
|
||||
masse_e: ausweis.masse_e,
|
||||
masse_f: ausweis.masse_f,
|
||||
volumen: ausweis.volumen,
|
||||
waerme_erzeugung_heizung: ausweis.waerme_erzeugung_heizung,
|
||||
warmwasser_erzeugung: ausweis.warmwasser_erzeugung,
|
||||
warmwasser_speicherung: ausweis.warmwasser_speicherung,
|
||||
warmwasser_verteilung: ausweis.warmwasser_verteilung,
|
||||
},
|
||||
aufnahme_id,
|
||||
},
|
||||
{
|
||||
headers: {
|
||||
Authorization: `Bearer ${Cookies.get(
|
||||
API_ACCESS_TOKEN_COOKIE_NAME
|
||||
)}`,
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
||||
export async function ausweisSpeichern(
|
||||
ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient,
|
||||
ausweis:
|
||||
| VerbrauchsausweisWohnenClient
|
||||
| VerbrauchsausweisGewerbeClient
|
||||
| BedarfsausweisWohnenClient,
|
||||
objekt: ObjektClient,
|
||||
aufnahme: AufnahmeClient,
|
||||
bilder: BildClient[],
|
||||
ausweisart: Enums.Ausweisart
|
||||
) {
|
||||
if (objekt.id) {
|
||||
await api.objekt._id.PATCH.fetch({
|
||||
adresse: objekt.adresse,
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
ort: objekt.ort,
|
||||
plz: objekt.plz
|
||||
}, {
|
||||
params: {
|
||||
id: objekt.id
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const { id } = await api.objekt.PUT.fetch({
|
||||
adresse: objekt.adresse,
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
ort: objekt.ort,
|
||||
plz: objekt.plz
|
||||
}, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
const [objekt_id, objekt_error] = await tryCatch(objektSpeichern(objekt));
|
||||
|
||||
objekt.id = id;
|
||||
if (objekt_error) {
|
||||
addNotification({
|
||||
message: "Das hat nicht geklappt.",
|
||||
subtext:
|
||||
"Beim Speichern des Objektes ist ein Fehler aufgetreten, bitte versuchen sie es erneut.",
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
objekt.id = objekt_id;
|
||||
|
||||
let [aufnahme_id, aufnahme_error] = await tryCatch(
|
||||
aufnahmeSpeichern(aufnahme, objekt_id)
|
||||
);
|
||||
|
||||
if (aufnahme.id) {
|
||||
await api.aufnahme._id.PATCH.fetch({
|
||||
baujahr_gebaeude: aufnahme.baujahr_gebaeude,
|
||||
baujahr_heizung: aufnahme.baujahr_heizung,
|
||||
baujahr_klima: aufnahme.baujahr_klima || [],
|
||||
alternative_heizung: aufnahme.alternative_heizung,
|
||||
alternative_kuehlung: aufnahme.alternative_kuehlung,
|
||||
alternative_lueftung: aufnahme.alternative_lueftung,
|
||||
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
||||
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
||||
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
||||
brennwert_kessel: aufnahme.brennwert_kessel,
|
||||
dachgeschoss: aufnahme.dachgeschoss,
|
||||
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
||||
dachgeschoss_min_12cm_gedaemmt: aufnahme.dachgeschoss_min_12cm_gedaemmt,
|
||||
doppel_verglasung: aufnahme.doppel_verglasung,
|
||||
dreifach_verglasung: aufnahme.dreifach_verglasung,
|
||||
durchlauf_erhitzer: aufnahme.durchlauf_erhitzer,
|
||||
einfach_verglasung: aufnahme.einfach_verglasung,
|
||||
einheiten: aufnahme.einheiten,
|
||||
einzelofen: aufnahme.einzelofen,
|
||||
fenster_dicht: aufnahme.fenster_dicht,
|
||||
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
||||
flaeche: aufnahme.flaeche,
|
||||
gebaeudeteil: aufnahme.gebaeudeteil,
|
||||
gebaeudetyp: aufnahme.gebaeudetyp,
|
||||
heizungsrohre_gedaemmt: aufnahme.heizungsrohre_gedaemmt,
|
||||
isolier_verglasung: aufnahme.isolier_verglasung,
|
||||
keller: aufnahme.keller,
|
||||
keller_decke_gedaemmt: aufnahme.keller_decke_gedaemmt,
|
||||
keller_wand_gedaemmt: aufnahme.keller_wand_gedaemmt,
|
||||
kuehlung: aufnahme.kuehlung,
|
||||
leerstand: aufnahme.leerstand,
|
||||
lueftung: aufnahme.lueftung,
|
||||
niedertemperatur_kessel: aufnahme.niedertemperatur_kessel,
|
||||
nutzflaeche: aufnahme.nutzflaeche,
|
||||
oberste_geschossdecke_gedaemmt: aufnahme.oberste_geschossdecke_gedaemmt,
|
||||
oberste_geschossdecke_min_12cm_gedaemmt: aufnahme.oberste_geschossdecke_min_12cm_gedaemmt,
|
||||
photovoltaik: aufnahme.photovoltaik,
|
||||
raum_temperatur_regler: aufnahme.raum_temperatur_regler,
|
||||
rolllaeden_kaesten_gedaemmt: aufnahme.rolllaeden_kaesten_gedaemmt,
|
||||
saniert: aufnahme.saniert,
|
||||
solarsystem_warmwasser: aufnahme.solarsystem_warmwasser,
|
||||
standard_kessel: aufnahme.standard_kessel,
|
||||
tueren_dicht: aufnahme.tueren_dicht,
|
||||
tueren_undicht: aufnahme.tueren_undicht,
|
||||
waermepumpe: aufnahme.waermepumpe,
|
||||
warmwasser_rohre_gedaemmt: aufnahme.warmwasser_rohre_gedaemmt,
|
||||
zentralheizung: aufnahme.zentralheizung,
|
||||
zirkulation: aufnahme.zirkulation
|
||||
}, {
|
||||
params: {
|
||||
id: aufnahme.id
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const { id } = await api.aufnahme.PUT.fetch({
|
||||
aufnahme: {
|
||||
baujahr_gebaeude: aufnahme.baujahr_gebaeude,
|
||||
baujahr_heizung: aufnahme.baujahr_heizung,
|
||||
alternative_heizung: aufnahme.alternative_heizung,
|
||||
alternative_kuehlung: aufnahme.alternative_kuehlung,
|
||||
alternative_lueftung: aufnahme.alternative_lueftung,
|
||||
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
||||
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
||||
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
||||
baujahr_klima: aufnahme.baujahr_klima,
|
||||
brennwert_kessel: aufnahme.brennwert_kessel,
|
||||
dachgeschoss: aufnahme.dachgeschoss,
|
||||
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
||||
dachgeschoss_min_12cm_gedaemmt: aufnahme.dachgeschoss_min_12cm_gedaemmt,
|
||||
doppel_verglasung: aufnahme.doppel_verglasung,
|
||||
dreifach_verglasung: aufnahme.dreifach_verglasung,
|
||||
durchlauf_erhitzer: aufnahme.durchlauf_erhitzer,
|
||||
einfach_verglasung: aufnahme.einfach_verglasung,
|
||||
einheiten: aufnahme.einheiten,
|
||||
einzelofen: aufnahme.einzelofen,
|
||||
erstellungsdatum: aufnahme.erstellungsdatum,
|
||||
fenster_dicht: aufnahme.fenster_dicht,
|
||||
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
||||
flaeche: aufnahme.flaeche,
|
||||
gebaeudeteil: aufnahme.gebaeudeteil,
|
||||
gebaeudetyp: aufnahme.gebaeudetyp,
|
||||
heizungsrohre_gedaemmt: aufnahme.heizungsrohre_gedaemmt,
|
||||
isolier_verglasung: aufnahme.isolier_verglasung,
|
||||
keller: aufnahme.keller,
|
||||
keller_decke_gedaemmt: aufnahme.keller_decke_gedaemmt,
|
||||
keller_wand_gedaemmt: aufnahme.keller_wand_gedaemmt,
|
||||
kuehlung: aufnahme.kuehlung,
|
||||
leerstand: aufnahme.leerstand,
|
||||
lueftung: aufnahme.lueftung,
|
||||
niedertemperatur_kessel: aufnahme.niedertemperatur_kessel,
|
||||
nutzflaeche: aufnahme.nutzflaeche,
|
||||
oberste_geschossdecke_gedaemmt: aufnahme.oberste_geschossdecke_gedaemmt,
|
||||
oberste_geschossdecke_min_12cm_gedaemmt: aufnahme.oberste_geschossdecke_min_12cm_gedaemmt,
|
||||
photovoltaik: aufnahme.photovoltaik,
|
||||
raum_temperatur_regler: aufnahme.raum_temperatur_regler,
|
||||
rolllaeden_kaesten_gedaemmt: aufnahme.rolllaeden_kaesten_gedaemmt,
|
||||
saniert: aufnahme.saniert,
|
||||
solarsystem_warmwasser: aufnahme.solarsystem_warmwasser,
|
||||
standard_kessel: aufnahme.standard_kessel,
|
||||
tueren_dicht: aufnahme.tueren_dicht,
|
||||
tueren_undicht: aufnahme.tueren_undicht,
|
||||
waermepumpe: aufnahme.waermepumpe,
|
||||
warmwasser_rohre_gedaemmt: aufnahme.warmwasser_rohre_gedaemmt,
|
||||
zentralheizung: aufnahme.zentralheizung,
|
||||
zirkulation: aufnahme.zirkulation
|
||||
},
|
||||
objekt_id: objekt.id
|
||||
}, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
if (aufnahme_error) {
|
||||
addNotification({
|
||||
message: "Das hat nicht geklappt.",
|
||||
subtext:
|
||||
"Beim Speichern der Objektaufnahme ist ein Fehler aufgetreten, bitte versuchen sie es erneut.",
|
||||
});
|
||||
|
||||
aufnahme.id = id
|
||||
return;
|
||||
}
|
||||
|
||||
let patchRoute: any;
|
||||
let putRoute: any;
|
||||
aufnahme.id = aufnahme_id;
|
||||
|
||||
if (ausweisart == Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||
patchRoute = api["verbrauchsausweis-wohnen"]._id.PATCH
|
||||
putRoute = api["verbrauchsausweis-wohnen"].PUT
|
||||
const id = await verbrauchsausweisWohnenSpeichern(ausweis as VerbrauchsausweisWohnen, aufnahme_id)
|
||||
ausweis.id = id;
|
||||
} else if (ausweisart == Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
||||
patchRoute = api["verbrauchsausweis-gewerbe"]._id.PATCH
|
||||
putRoute = api["verbrauchsausweis-gewerbe"].PUT
|
||||
const id = await verbrauchsausweisGewerbeSpeichern(ausweis as VerbrauchsausweisGewerbe, aufnahme_id)
|
||||
ausweis.id = id;
|
||||
} else if (ausweisart == Enums.Ausweisart.BedarfsausweisWohnen) {
|
||||
patchRoute = api["bedarfsausweis-wohnen"]._id.PATCH
|
||||
putRoute = api["bedarfsausweis-wohnen"].PUT
|
||||
}
|
||||
|
||||
if (ausweis.id) {
|
||||
await patchRoute.fetch({
|
||||
...exclude(ausweis, ["id"])
|
||||
}, {
|
||||
params: {
|
||||
id: ausweis.id
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const { id } = await putRoute.fetch({
|
||||
ausweis,
|
||||
aufnahme_id: aufnahme.id
|
||||
}, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
|
||||
const id = await bedarfsausweisWohnenSpeichern(ausweis as BedarfsausweisWohnen, aufnahme_id)
|
||||
ausweis.id = id;
|
||||
}
|
||||
|
||||
await api.aufnahme._id.bilder.PUT.fetch(bilder.map(bild => bild.id), {
|
||||
params: {
|
||||
id: aufnahme.id
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
await api.aufnahme._id.bilder.PUT.fetch(
|
||||
bilder.map((bild) => bild.id),
|
||||
{
|
||||
params: {
|
||||
id: aufnahme.id,
|
||||
},
|
||||
headers: {
|
||||
Authorization: `Bearer ${Cookies.get(
|
||||
API_ACCESS_TOKEN_COOKIE_NAME
|
||||
)}`,
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
);
|
||||
|
||||
return {
|
||||
ausweis_id: ausweis.id,
|
||||
aufnahme_id: aufnahme.id,
|
||||
objekt_id: objekt.id
|
||||
}
|
||||
objekt_id: objekt.id,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,10 +1,143 @@
|
||||
|
||||
import { api } from "astro-typesafe-api/client"
|
||||
import { exclude } from "#lib/exclude.js";
|
||||
import Cookies from "js-cookie";
|
||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||
import { AufnahmeClient, BildClient, ObjektClient, } from "#components/Ausweis/types.js";
|
||||
import { BedarfsausweisGewerbe, Enums, GEGNachweisGewerbe, GEGNachweisWohnen, Unterlage } from "#lib/client/prisma.js";
|
||||
import { tryCatch } from "#lib/tryCatch.js";
|
||||
import { addNotification } from "#components/Notifications/shared.js";
|
||||
import { aufnahmeSpeichern, objektSpeichern } from "./speichern.js";
|
||||
|
||||
export async function gegNachweisWohnenSpeichern(nachweis: GEGNachweisWohnen, aufnahme_id: string): Promise<string> {
|
||||
if (nachweis.id) {
|
||||
await api["geg-nachweis-wohnen"]._id.PATCH.fetch({
|
||||
nachweistyp: nachweis.nachweistyp,
|
||||
ausstellgrund: nachweis.ausstellgrund,
|
||||
beschreibung: nachweis.beschreibung,
|
||||
keller_beheizt: nachweis.keller_beheizt,
|
||||
}, {
|
||||
params: {
|
||||
id: nachweis.id
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
|
||||
return nachweis.id
|
||||
} else {
|
||||
const { id } = await api["geg-nachweis-wohnen"].PUT.fetch({
|
||||
nachweis: {
|
||||
nachweistyp: nachweis.nachweistyp,
|
||||
ausstellgrund: nachweis.ausstellgrund,
|
||||
beschreibung: nachweis.beschreibung,
|
||||
keller_beheizt: nachweis.keller_beheizt,
|
||||
},
|
||||
aufnahme_id
|
||||
}, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
|
||||
return id
|
||||
}
|
||||
}
|
||||
|
||||
export async function gegNachweisGewerbeSpeichern(nachweis: GEGNachweisGewerbe, aufnahme_id: string): Promise<string> {
|
||||
if (nachweis.id) {
|
||||
await api["geg-nachweis-gewerbe"]._id.PATCH.fetch({
|
||||
nachweistyp: nachweis.nachweistyp,
|
||||
ausstellgrund: nachweis.ausstellgrund,
|
||||
beschreibung: nachweis.beschreibung,
|
||||
keller_beheizt: nachweis.keller_beheizt,
|
||||
}, {
|
||||
params: {
|
||||
id: nachweis.id
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
|
||||
return nachweis.id
|
||||
} else {
|
||||
const { id } = await api["geg-nachweis-gewerbe"].PUT.fetch({
|
||||
nachweis: {
|
||||
nachweistyp: nachweis.nachweistyp,
|
||||
ausstellgrund: nachweis.ausstellgrund,
|
||||
beschreibung: nachweis.beschreibung,
|
||||
keller_beheizt: nachweis.keller_beheizt,
|
||||
},
|
||||
aufnahme_id
|
||||
}, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
|
||||
return id
|
||||
}
|
||||
}
|
||||
|
||||
export async function bedarfsausweisGewerbeSpeichern(nachweis: BedarfsausweisGewerbe, aufnahme_id: string): Promise<string> {
|
||||
if (nachweis.id) {
|
||||
await api["bedarfsausweis-gewerbe"]._id.PATCH.fetch({
|
||||
nachweistyp: nachweis.nachweistyp,
|
||||
ausstellgrund: nachweis.ausstellgrund,
|
||||
abluftanlage: nachweis.abluftanlage,
|
||||
bauteilaktivierung: nachweis.bauteilaktivierung,
|
||||
direktheizung: nachweis.direktheizung,
|
||||
dunkelstrahler: nachweis.dunkelstrahler,
|
||||
fussbodenheizung: nachweis.fussbodenheizung,
|
||||
hallenheizung: nachweis.hallenheizung,
|
||||
infrarotstrahler: nachweis.infrarotstrahler,
|
||||
keller_beheizt: nachweis.keller_beheizt,
|
||||
klimatisierung: nachweis.klimatisierung,
|
||||
konditionierung_der_zuluft: nachweis.konditionierung_der_zuluft,
|
||||
luftheizung: nachweis.luftheizung,
|
||||
zu_abluftanlage: nachweis.zu_abluftanlage
|
||||
}, {
|
||||
params: {
|
||||
id: nachweis.id
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
|
||||
return nachweis.id
|
||||
} else {
|
||||
const id = await api["bedarfsausweis-gewerbe"].PUT.fetch({
|
||||
nachweis: {
|
||||
nachweistyp: nachweis.nachweistyp,
|
||||
ausstellgrund: nachweis.ausstellgrund,
|
||||
abluftanlage: nachweis.abluftanlage,
|
||||
bauteilaktivierung: nachweis.bauteilaktivierung,
|
||||
direktheizung: nachweis.direktheizung,
|
||||
dunkelstrahler: nachweis.dunkelstrahler,
|
||||
fussbodenheizung: nachweis.fussbodenheizung,
|
||||
hallenheizung: nachweis.hallenheizung,
|
||||
infrarotstrahler: nachweis.infrarotstrahler,
|
||||
keller_beheizt: nachweis.keller_beheizt,
|
||||
klimatisierung: nachweis.klimatisierung,
|
||||
konditionierung_der_zuluft: nachweis.konditionierung_der_zuluft,
|
||||
luftheizung: nachweis.luftheizung,
|
||||
zu_abluftanlage: nachweis.zu_abluftanlage
|
||||
},
|
||||
aufnahme_id
|
||||
}, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
|
||||
return id
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
export async function nachweisSpeichern(
|
||||
nachweis: BedarfsausweisGewerbe | GEGNachweisWohnen | GEGNachweisGewerbe,
|
||||
@@ -14,195 +147,38 @@ export async function nachweisSpeichern(
|
||||
unterlagen: Unterlage[],
|
||||
ausweisart: Enums.Ausweisart
|
||||
) {
|
||||
if (objekt.id) {
|
||||
await api.objekt._id.PATCH.fetch({
|
||||
adresse: objekt.adresse,
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
ort: objekt.ort,
|
||||
plz: objekt.plz
|
||||
}, {
|
||||
params: {
|
||||
id: objekt.id
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const { id } = await api.objekt.PUT.fetch({
|
||||
adresse: objekt.adresse,
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
ort: objekt.ort,
|
||||
plz: objekt.plz
|
||||
}, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
const [objekt_id, objekt_error] = await tryCatch(objektSpeichern(objekt))
|
||||
|
||||
if (objekt_error) {
|
||||
addNotification({
|
||||
message: "Das hat nicht geklappt.",
|
||||
subtext: "Beim Speichern des Objektes ist ein Fehler aufgetreten, bitte versuchen sie es erneut."
|
||||
})
|
||||
|
||||
objekt.id = id;
|
||||
return;
|
||||
}
|
||||
|
||||
objekt.id = objekt_id
|
||||
|
||||
let [aufnahme_id, aufnahme_error] = await tryCatch(aufnahmeSpeichern(aufnahme, objekt_id))
|
||||
|
||||
if (aufnahme.id) {
|
||||
await api.aufnahme._id.PATCH.fetch({
|
||||
baujahr_gebaeude: aufnahme.baujahr_gebaeude || [],
|
||||
baujahr_heizung: aufnahme.baujahr_heizung || [],
|
||||
baujahr_klima: aufnahme.baujahr_klima || [],
|
||||
alternative_heizung: aufnahme.alternative_heizung,
|
||||
alternative_kuehlung: aufnahme.alternative_kuehlung,
|
||||
alternative_lueftung: aufnahme.alternative_lueftung,
|
||||
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
||||
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
||||
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
||||
brennwert_kessel: aufnahme.brennwert_kessel,
|
||||
dachgeschoss: aufnahme.dachgeschoss,
|
||||
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
||||
dachgeschoss_min_12cm_gedaemmt: aufnahme.dachgeschoss_min_12cm_gedaemmt,
|
||||
doppel_verglasung: aufnahme.doppel_verglasung,
|
||||
dreifach_verglasung: aufnahme.dreifach_verglasung,
|
||||
durchlauf_erhitzer: aufnahme.durchlauf_erhitzer,
|
||||
einfach_verglasung: aufnahme.einfach_verglasung,
|
||||
einheiten: aufnahme.einheiten,
|
||||
einzelofen: aufnahme.einzelofen,
|
||||
fenster_dicht: aufnahme.fenster_dicht,
|
||||
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
||||
flaeche: aufnahme.flaeche,
|
||||
gebaeudeteil: aufnahme.gebaeudeteil,
|
||||
gebaeudetyp: aufnahme.gebaeudetyp,
|
||||
heizungsrohre_gedaemmt: aufnahme.heizungsrohre_gedaemmt,
|
||||
isolier_verglasung: aufnahme.isolier_verglasung,
|
||||
keller: aufnahme.keller,
|
||||
keller_decke_gedaemmt: aufnahme.keller_decke_gedaemmt,
|
||||
keller_wand_gedaemmt: aufnahme.keller_wand_gedaemmt,
|
||||
kuehlung: aufnahme.kuehlung,
|
||||
leerstand: aufnahme.leerstand,
|
||||
lueftung: aufnahme.lueftung,
|
||||
niedertemperatur_kessel: aufnahme.niedertemperatur_kessel,
|
||||
nutzflaeche: aufnahme.nutzflaeche,
|
||||
oberste_geschossdecke_gedaemmt: aufnahme.oberste_geschossdecke_gedaemmt,
|
||||
oberste_geschossdecke_min_12cm_gedaemmt: aufnahme.oberste_geschossdecke_min_12cm_gedaemmt,
|
||||
photovoltaik: aufnahme.photovoltaik,
|
||||
raum_temperatur_regler: aufnahme.raum_temperatur_regler,
|
||||
rolllaeden_kaesten_gedaemmt: aufnahme.rolllaeden_kaesten_gedaemmt,
|
||||
saniert: aufnahme.saniert,
|
||||
solarsystem_warmwasser: aufnahme.solarsystem_warmwasser,
|
||||
standard_kessel: aufnahme.standard_kessel,
|
||||
tueren_dicht: aufnahme.tueren_dicht,
|
||||
tueren_undicht: aufnahme.tueren_undicht,
|
||||
waermepumpe: aufnahme.waermepumpe,
|
||||
warmwasser_rohre_gedaemmt: aufnahme.warmwasser_rohre_gedaemmt,
|
||||
zentralheizung: aufnahme.zentralheizung,
|
||||
zirkulation: aufnahme.zirkulation
|
||||
}, {
|
||||
params: {
|
||||
id: aufnahme.id
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const { id } = await api.aufnahme.PUT.fetch({
|
||||
aufnahme: {
|
||||
baujahr_gebaeude: aufnahme.baujahr_gebaeude,
|
||||
baujahr_heizung: aufnahme.baujahr_heizung,
|
||||
alternative_heizung: aufnahme.alternative_heizung,
|
||||
alternative_kuehlung: aufnahme.alternative_kuehlung,
|
||||
alternative_lueftung: aufnahme.alternative_lueftung,
|
||||
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
||||
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
||||
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
||||
baujahr_klima: aufnahme.baujahr_klima,
|
||||
brennwert_kessel: aufnahme.brennwert_kessel,
|
||||
dachgeschoss: aufnahme.dachgeschoss,
|
||||
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
||||
dachgeschoss_min_12cm_gedaemmt: aufnahme.dachgeschoss_min_12cm_gedaemmt,
|
||||
doppel_verglasung: aufnahme.doppel_verglasung,
|
||||
dreifach_verglasung: aufnahme.dreifach_verglasung,
|
||||
durchlauf_erhitzer: aufnahme.durchlauf_erhitzer,
|
||||
einfach_verglasung: aufnahme.einfach_verglasung,
|
||||
einheiten: aufnahme.einheiten,
|
||||
einzelofen: aufnahme.einzelofen,
|
||||
erstellungsdatum: aufnahme.erstellungsdatum,
|
||||
fenster_dicht: aufnahme.fenster_dicht,
|
||||
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
||||
flaeche: aufnahme.flaeche,
|
||||
gebaeudeteil: aufnahme.gebaeudeteil,
|
||||
gebaeudetyp: aufnahme.gebaeudetyp,
|
||||
heizungsrohre_gedaemmt: aufnahme.heizungsrohre_gedaemmt,
|
||||
isolier_verglasung: aufnahme.isolier_verglasung,
|
||||
keller: aufnahme.keller,
|
||||
keller_decke_gedaemmt: aufnahme.keller_decke_gedaemmt,
|
||||
keller_wand_gedaemmt: aufnahme.keller_wand_gedaemmt,
|
||||
kuehlung: aufnahme.kuehlung,
|
||||
leerstand: aufnahme.leerstand,
|
||||
lueftung: aufnahme.lueftung,
|
||||
niedertemperatur_kessel: aufnahme.niedertemperatur_kessel,
|
||||
nutzflaeche: aufnahme.nutzflaeche,
|
||||
oberste_geschossdecke_gedaemmt: aufnahme.oberste_geschossdecke_gedaemmt,
|
||||
oberste_geschossdecke_min_12cm_gedaemmt: aufnahme.oberste_geschossdecke_min_12cm_gedaemmt,
|
||||
photovoltaik: aufnahme.photovoltaik,
|
||||
raum_temperatur_regler: aufnahme.raum_temperatur_regler,
|
||||
rolllaeden_kaesten_gedaemmt: aufnahme.rolllaeden_kaesten_gedaemmt,
|
||||
saniert: aufnahme.saniert,
|
||||
solarsystem_warmwasser: aufnahme.solarsystem_warmwasser,
|
||||
standard_kessel: aufnahme.standard_kessel,
|
||||
tueren_dicht: aufnahme.tueren_dicht,
|
||||
tueren_undicht: aufnahme.tueren_undicht,
|
||||
waermepumpe: aufnahme.waermepumpe,
|
||||
warmwasser_rohre_gedaemmt: aufnahme.warmwasser_rohre_gedaemmt,
|
||||
zentralheizung: aufnahme.zentralheizung,
|
||||
zirkulation: aufnahme.zirkulation
|
||||
},
|
||||
objekt_id: objekt.id
|
||||
}, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
if (aufnahme_error) {
|
||||
addNotification({
|
||||
message: "Das hat nicht geklappt.",
|
||||
subtext: "Beim Speichern der Objektaufnahme ist ein Fehler aufgetreten, bitte versuchen sie es erneut."
|
||||
})
|
||||
|
||||
aufnahme.id = id
|
||||
return;
|
||||
}
|
||||
|
||||
let patchRoute: any;
|
||||
let putRoute: any;
|
||||
aufnahme.id = aufnahme_id
|
||||
|
||||
if (ausweisart == Enums.Ausweisart.GEGNachweisWohnen) {
|
||||
patchRoute = api["geg-nachweis-wohnen"]._id.PATCH
|
||||
putRoute = api["geg-nachweis-wohnen"].PUT
|
||||
gegNachweisWohnenSpeichern(nachweis as GEGNachweisWohnen, aufnahme_id)
|
||||
} else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) {
|
||||
patchRoute = api["geg-nachweis-gewerbe"]._id.PATCH
|
||||
putRoute = api["geg-nachweis-gewerbe"].PUT
|
||||
gegNachweisGewerbeSpeichern(nachweis as GEGNachweisGewerbe, aufnahme_id)
|
||||
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) {
|
||||
patchRoute = api["bedarfsausweis-gewerbe"]._id.PATCH
|
||||
putRoute = api["bedarfsausweis-gewerbe"].PUT
|
||||
}
|
||||
|
||||
if (nachweis.id) {
|
||||
await patchRoute.fetch({
|
||||
...exclude(nachweis, ["id"])
|
||||
}, {
|
||||
params: {
|
||||
id: nachweis.id
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const { id } = await putRoute.fetch({
|
||||
nachweis,
|
||||
aufnahme_id: aufnahme.id
|
||||
}, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
|
||||
nachweis.id = id;
|
||||
bedarfsausweisGewerbeSpeichern(nachweis as BedarfsausweisGewerbe, aufnahme_id)
|
||||
}
|
||||
|
||||
await api.aufnahme._id.bilder.PUT.fetch(bilder.map(bild => bild.id), {
|
||||
@@ -213,8 +189,6 @@ export async function nachweisSpeichern(
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
console.log(unterlagen);
|
||||
|
||||
|
||||
await api.aufnahme._id.unterlagen.PUT.fetch(unterlagen.map(unterlage => unterlage.id), {
|
||||
params: {
|
||||
|
||||
164
src/client/lib/speichern.ts
Normal file
164
src/client/lib/speichern.ts
Normal file
@@ -0,0 +1,164 @@
|
||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||
import { Aufnahme, Objekt } from "#lib/server/prisma.js";
|
||||
import { api } from "astro-typesafe-api/client";
|
||||
import Cookies from "js-cookie";
|
||||
|
||||
export async function aufnahmeSpeichern(aufnahme: Aufnahme, objekt_id: string): Promise<string> {
|
||||
if (aufnahme.id) {
|
||||
await api.aufnahme._id.PATCH.fetch({
|
||||
baujahr_gebaeude: aufnahme.baujahr_gebaeude || [],
|
||||
baujahr_heizung: aufnahme.baujahr_heizung || [],
|
||||
baujahr_klima: aufnahme.baujahr_klima || [],
|
||||
alternative_heizung: aufnahme.alternative_heizung,
|
||||
alternative_kuehlung: aufnahme.alternative_kuehlung,
|
||||
alternative_lueftung: aufnahme.alternative_lueftung,
|
||||
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
||||
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
||||
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
||||
brennwert_kessel: aufnahme.brennwert_kessel,
|
||||
dachgeschoss: aufnahme.dachgeschoss,
|
||||
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
||||
dachgeschoss_min_12cm_gedaemmt: aufnahme.dachgeschoss_min_12cm_gedaemmt,
|
||||
doppel_verglasung: aufnahme.doppel_verglasung,
|
||||
dreifach_verglasung: aufnahme.dreifach_verglasung,
|
||||
durchlauf_erhitzer: aufnahme.durchlauf_erhitzer,
|
||||
einfach_verglasung: aufnahme.einfach_verglasung,
|
||||
einheiten: aufnahme.einheiten,
|
||||
einzelofen: aufnahme.einzelofen,
|
||||
fenster_dicht: aufnahme.fenster_dicht,
|
||||
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
||||
flaeche: aufnahme.flaeche,
|
||||
gebaeudeteil: aufnahme.gebaeudeteil,
|
||||
gebaeudetyp: aufnahme.gebaeudetyp,
|
||||
heizungsrohre_gedaemmt: aufnahme.heizungsrohre_gedaemmt,
|
||||
isolier_verglasung: aufnahme.isolier_verglasung,
|
||||
keller: aufnahme.keller,
|
||||
keller_decke_gedaemmt: aufnahme.keller_decke_gedaemmt,
|
||||
keller_wand_gedaemmt: aufnahme.keller_wand_gedaemmt,
|
||||
kuehlung: aufnahme.kuehlung,
|
||||
leerstand: aufnahme.leerstand,
|
||||
lueftung: aufnahme.lueftung,
|
||||
niedertemperatur_kessel: aufnahme.niedertemperatur_kessel,
|
||||
nutzflaeche: aufnahme.nutzflaeche,
|
||||
oberste_geschossdecke_gedaemmt: aufnahme.oberste_geschossdecke_gedaemmt,
|
||||
oberste_geschossdecke_min_12cm_gedaemmt: aufnahme.oberste_geschossdecke_min_12cm_gedaemmt,
|
||||
photovoltaik: aufnahme.photovoltaik,
|
||||
raum_temperatur_regler: aufnahme.raum_temperatur_regler,
|
||||
rolllaeden_kaesten_gedaemmt: aufnahme.rolllaeden_kaesten_gedaemmt,
|
||||
saniert: aufnahme.saniert,
|
||||
solarsystem_warmwasser: aufnahme.solarsystem_warmwasser,
|
||||
standard_kessel: aufnahme.standard_kessel,
|
||||
tueren_dicht: aufnahme.tueren_dicht,
|
||||
tueren_undicht: aufnahme.tueren_undicht,
|
||||
waermepumpe: aufnahme.waermepumpe,
|
||||
warmwasser_rohre_gedaemmt: aufnahme.warmwasser_rohre_gedaemmt,
|
||||
zentralheizung: aufnahme.zentralheizung,
|
||||
zirkulation: aufnahme.zirkulation
|
||||
}, {
|
||||
params: {
|
||||
id: aufnahme.id
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
|
||||
return aufnahme.id
|
||||
} else {
|
||||
const { id } = await api.aufnahme.PUT.fetch({
|
||||
aufnahme: {
|
||||
baujahr_gebaeude: aufnahme.baujahr_gebaeude,
|
||||
baujahr_heizung: aufnahme.baujahr_heizung,
|
||||
alternative_heizung: aufnahme.alternative_heizung,
|
||||
alternative_kuehlung: aufnahme.alternative_kuehlung,
|
||||
alternative_lueftung: aufnahme.alternative_lueftung,
|
||||
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
||||
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
||||
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
||||
baujahr_klima: aufnahme.baujahr_klima,
|
||||
brennwert_kessel: aufnahme.brennwert_kessel,
|
||||
dachgeschoss: aufnahme.dachgeschoss,
|
||||
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
||||
dachgeschoss_min_12cm_gedaemmt: aufnahme.dachgeschoss_min_12cm_gedaemmt,
|
||||
doppel_verglasung: aufnahme.doppel_verglasung,
|
||||
dreifach_verglasung: aufnahme.dreifach_verglasung,
|
||||
durchlauf_erhitzer: aufnahme.durchlauf_erhitzer,
|
||||
einfach_verglasung: aufnahme.einfach_verglasung,
|
||||
einheiten: aufnahme.einheiten,
|
||||
einzelofen: aufnahme.einzelofen,
|
||||
erstellungsdatum: aufnahme.erstellungsdatum,
|
||||
fenster_dicht: aufnahme.fenster_dicht,
|
||||
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
||||
flaeche: aufnahme.flaeche,
|
||||
gebaeudeteil: aufnahme.gebaeudeteil,
|
||||
gebaeudetyp: aufnahme.gebaeudetyp,
|
||||
heizungsrohre_gedaemmt: aufnahme.heizungsrohre_gedaemmt,
|
||||
isolier_verglasung: aufnahme.isolier_verglasung,
|
||||
keller: aufnahme.keller,
|
||||
keller_decke_gedaemmt: aufnahme.keller_decke_gedaemmt,
|
||||
keller_wand_gedaemmt: aufnahme.keller_wand_gedaemmt,
|
||||
kuehlung: aufnahme.kuehlung,
|
||||
leerstand: aufnahme.leerstand,
|
||||
lueftung: aufnahme.lueftung,
|
||||
niedertemperatur_kessel: aufnahme.niedertemperatur_kessel,
|
||||
nutzflaeche: aufnahme.nutzflaeche,
|
||||
oberste_geschossdecke_gedaemmt: aufnahme.oberste_geschossdecke_gedaemmt,
|
||||
oberste_geschossdecke_min_12cm_gedaemmt: aufnahme.oberste_geschossdecke_min_12cm_gedaemmt,
|
||||
photovoltaik: aufnahme.photovoltaik,
|
||||
raum_temperatur_regler: aufnahme.raum_temperatur_regler,
|
||||
rolllaeden_kaesten_gedaemmt: aufnahme.rolllaeden_kaesten_gedaemmt,
|
||||
saniert: aufnahme.saniert,
|
||||
solarsystem_warmwasser: aufnahme.solarsystem_warmwasser,
|
||||
standard_kessel: aufnahme.standard_kessel,
|
||||
tueren_dicht: aufnahme.tueren_dicht,
|
||||
tueren_undicht: aufnahme.tueren_undicht,
|
||||
waermepumpe: aufnahme.waermepumpe,
|
||||
warmwasser_rohre_gedaemmt: aufnahme.warmwasser_rohre_gedaemmt,
|
||||
zentralheizung: aufnahme.zentralheizung,
|
||||
zirkulation: aufnahme.zirkulation
|
||||
},
|
||||
objekt_id
|
||||
}, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
||||
export async function objektSpeichern(objekt: Objekt & { id?: string }): Promise<string> {
|
||||
if (objekt.id) {
|
||||
await api.objekt._id.PATCH.fetch({
|
||||
adresse: objekt.adresse,
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
ort: objekt.ort,
|
||||
plz: objekt.plz
|
||||
}, {
|
||||
params: {
|
||||
id: objekt.id
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
|
||||
return objekt.id;
|
||||
} else {
|
||||
const { id } = await api.objekt.PUT.fetch({
|
||||
adresse: objekt.adresse,
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
ort: objekt.ort,
|
||||
plz: objekt.plz
|
||||
}, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
|
||||
return id;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import { OmitKeys, TicketClient } from "#components/Ausweis/types.js";
|
||||
import { api } from "astro-typesafe-api/client";
|
||||
|
||||
export async function createTicket(info: OmitKeys<TicketClient, "created_at" | "deleted_at" | "prioritaet" | "updated_at" | "status" | "uid">) {
|
||||
export async function createTicket(info: OmitKeys<TicketClient, "created_at" | "deleted_at" | "prioritaet" | "updated_at" | "status">) {
|
||||
return await api.ticket.PUT.fetch(info)
|
||||
}
|
||||
@@ -49,7 +49,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
required
|
||||
data-cy="ausstellgrund"
|
||||
>
|
||||
<option disabled selected >Bitte auswählen</option>
|
||||
<option disabled selected value={null}>Bitte auswählen</option>
|
||||
{#each ausstellgrund as name}
|
||||
<option value={name}>{name}</option>
|
||||
{/each}
|
||||
@@ -73,7 +73,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
required
|
||||
bind:value={aufnahme.gebaeudetyp}
|
||||
>
|
||||
<option disabled selected value>Bitte auswählen</option>
|
||||
<option disabled selected value={null}>Bitte auswählen</option>
|
||||
|
||||
{#if ausweisart==Enums.Ausweisart.VerbrauchsausweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.BedarfsausweisWohnen}
|
||||
<option value="Einfamilienhaus">Einfamilienhaus</option>
|
||||
@@ -225,7 +225,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
required
|
||||
bind:value={aufnahme.saniert}
|
||||
>
|
||||
<option disabled selected>Bitte auswählen</option>
|
||||
<option disabled selected value={null}>Bitte auswählen</option>
|
||||
<option value={true}>saniert</option>
|
||||
<option value={false}>unsaniert</option>
|
||||
</select>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
import Overlay from "#components/Overlay.svelte";
|
||||
import EmbeddedAuthFlowModule from "#modules/EmbeddedAuthFlowModule.svelte";
|
||||
|
||||
import { AusweisTyp, BedarfsausweisGewerbe, Enums, GEGNachweisGewerbe, GEGNachweisWohnen, Unterlage } from "#lib/client/prisma.js";
|
||||
import { AusweisTyp, BedarfsausweisGewerbe, Enums, GEGNachweisGewerbe, GEGNachweisWohnen, Unterlage, VerbrauchsausweisWohnen } from "#lib/client/prisma.js";
|
||||
import { openWindowWithPost } from "#lib/helpers/window.js";
|
||||
import { PRICES } from "#lib/constants.js";
|
||||
import { nachweisSpeichern } from "#client/lib/nachweisSpeichern.js";
|
||||
@@ -19,6 +19,7 @@
|
||||
export let ausweisart: Enums.Ausweisart
|
||||
export let form: HTMLFormElement;
|
||||
export let skala: HTMLDivElement;
|
||||
export let blockLocalStorageSync: boolean = false;
|
||||
|
||||
export let showWeiter: boolean = true;
|
||||
export let showHelpButton: boolean = true;
|
||||
@@ -38,26 +39,39 @@
|
||||
(form.querySelector("input[name='baujahr_heizung']") as HTMLInputElement).setCustomValidity("")
|
||||
}
|
||||
|
||||
new FormData(form).forEach((value, key) => {
|
||||
if (key === "baujahr_heizung" || key === "baujahr_gebaeude" || key === "baujahr_klima") {
|
||||
return
|
||||
}
|
||||
|
||||
const element = (form.querySelector(`[name='${key}']`) as HTMLSelectElement);
|
||||
if (!value && element.required) {
|
||||
element.setCustomValidity("Eine Auswahl ist verpflichtend.")
|
||||
} else {
|
||||
element.setCustomValidity("")
|
||||
}
|
||||
})
|
||||
|
||||
if (!form.checkValidity()) {
|
||||
// Entferne die Klasse "2xl:mt-[370px]" falls vorhanden
|
||||
form.classList.remove("2xl:mt-[370px]");
|
||||
// Entferne die Klasse "2xl:mt-[370px]" falls vorhanden
|
||||
form.classList.remove("2xl:mt-[370px]");
|
||||
|
||||
// Verhindere das Scrollen (falls erforderlich)
|
||||
skala.classList.add("no-scroll");
|
||||
// Verhindere das Scrollen (falls erforderlich)
|
||||
skala.classList.add("no-scroll");
|
||||
|
||||
// Zeige die Validierungsmeldungen
|
||||
form.reportValidity();
|
||||
// Zeige die Validierungsmeldungen
|
||||
form.reportValidity();
|
||||
|
||||
// Finde das erste ungültige Feld und scrolle sanft darauf
|
||||
let firstInvalidField = form.querySelector(":invalid");
|
||||
if (firstInvalidField) {
|
||||
let offset = 150; // Abstand für bessere Sichtbarkeit
|
||||
let fieldPosition = firstInvalidField.getBoundingClientRect().top + window.scrollY;
|
||||
window.scrollTo({ top: fieldPosition - offset, behavior: "smooth" });
|
||||
}
|
||||
// Finde das erste ungültige Feld und scrolle sanft darauf
|
||||
let firstInvalidField = form.querySelector(":invalid");
|
||||
if (firstInvalidField) {
|
||||
let offset = 150; // Abstand für bessere Sichtbarkeit
|
||||
let fieldPosition = firstInvalidField.getBoundingClientRect().top + window.scrollY;
|
||||
window.scrollTo({ top: fieldPosition - offset, behavior: "smooth" });
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisGewerbe || ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) {
|
||||
openWindowWithPost("/kundendaten", {
|
||||
@@ -95,11 +109,17 @@
|
||||
|
||||
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) {
|
||||
result = await nachweisSpeichern({ ...ausweis, nachweistyp: ausweistyp }, objekt, aufnahme, bilder, unterlagen, ausweisart)
|
||||
ausweis.id = result.nachweis_id;
|
||||
result = await nachweisSpeichern({ ...ausweis as GEGNachweisWohnen, nachweistyp: ausweistyp }, objekt, aufnahme, bilder, unterlagen, ausweisart)
|
||||
|
||||
if (result) {
|
||||
ausweis.id = result.nachweis_id;
|
||||
}
|
||||
} else {
|
||||
result = await ausweisSpeichern({ ...ausweis, ausweistyp }, objekt, aufnahme, bilder, ausweisart)
|
||||
ausweis.id = result.ausweis_id;
|
||||
result = await ausweisSpeichern({ ...ausweis as VerbrauchsausweisWohnen, ausweistyp }, objekt, aufnahme, bilder, ausweisart)
|
||||
|
||||
if (result) {
|
||||
ausweis.id = result.ausweis_id;
|
||||
}
|
||||
}
|
||||
|
||||
if (result !== null) {
|
||||
@@ -108,7 +128,7 @@
|
||||
"",
|
||||
`${location.pathname}?id=${ausweis.id}`
|
||||
);
|
||||
|
||||
blockLocalStorageSync = true;
|
||||
localStorage.clear()
|
||||
window.location.href = `/speichern-erfolgreich?id=${ausweis.id}`
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
bind:value={aufnahme.gebaeudeteil}
|
||||
required
|
||||
>
|
||||
<option disabled selected value>Bitte auswählen</option>
|
||||
<option disabled selected value={null}>Bitte auswählen</option>
|
||||
<option value="Gesamtgebäude">Gesamtgebäude</option>
|
||||
<option value="Wohnen">Wohnen</option>
|
||||
</select>
|
||||
@@ -214,7 +214,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
bind:value={aufnahme.dachgeschoss}
|
||||
required
|
||||
>
|
||||
<option disabled selected >Bitte auswählen</option>
|
||||
<option disabled selected value={null}>Bitte auswählen</option>
|
||||
<option value={Enums.Heizungsstatus.NICHT_VORHANDEN}
|
||||
>nicht vorhanden</option
|
||||
>
|
||||
@@ -243,7 +243,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
required
|
||||
bind:value={aufnahme.keller}
|
||||
>
|
||||
<option disabled selected >Bitte auswählen</option>
|
||||
<option disabled selected value={null}>Bitte auswählen</option>
|
||||
<option value={Enums.Heizungsstatus.NICHT_VORHANDEN}
|
||||
>nicht vorhanden</option
|
||||
>
|
||||
|
||||
@@ -1,454 +1,475 @@
|
||||
<script lang="ts">
|
||||
import HelpLabel from "#components/labels/HelpLabel.svelte";
|
||||
import Inputlabel from "#components/labels/InputLabel.svelte";
|
||||
export let ausweis;
|
||||
import HelpLabel from "#components/labels/HelpLabel.svelte";
|
||||
import Inputlabel from "#components/labels/InputLabel.svelte";
|
||||
export let ausweis;
|
||||
|
||||
const arrayRange = (start: number, stop: number, step: number) =>
|
||||
const arrayRange = (start: number, stop: number, step: number) =>
|
||||
Array.from(
|
||||
{ length: (stop - start) / step + 1 },
|
||||
(value, index) => start + index * step
|
||||
);
|
||||
</script>
|
||||
|
||||
|
||||
<div
|
||||
id="superBereich2"
|
||||
class="grid w-full items-start
|
||||
id="superBereich2"
|
||||
class="grid w-full items-start
|
||||
grid-cols-1 gap-x-4 gap-y-4
|
||||
sm:grid-cols-2 sm:gap-x-6 sm:gap-y-8
|
||||
xl:grid-cols-2 xl:gap-x-8 xl:gap-y-8
|
||||
">
|
||||
"
|
||||
>
|
||||
<div class="bereich-box col-span-2">
|
||||
<div
|
||||
class="w-full grid grid-cols-2 sm:grid-cols-4 gap-4 justify-between justify-items-center items-center"
|
||||
>
|
||||
<div class="ring-1 ring-black/15 bg-white rounded-md">
|
||||
<img src="/images/form-r.svg" alt="rechteck" />
|
||||
</div>
|
||||
<div class="ring-1 ring-black/15 bg-white rounded-md">
|
||||
<img src="/images/form-l.svg" alt="l-form" />
|
||||
</div>
|
||||
<div class="ring-1 ring-black/15 bg-white rounded-md">
|
||||
<img src="/images/form-t.svg" alt="t-form" />
|
||||
</div>
|
||||
<div class="ring-1 ring-black/15 bg-white rounded-md">
|
||||
<img src="/images/form-u.svg" alt="u-form" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bereich-box col-span-2">
|
||||
<div class="w-full grid grid-cols-2 sm:grid-cols-4 gap-4 justify-between justify-items-center items-center">
|
||||
<div class="ring-1 ring-black/15 bg-white rounded-md"><img src="/images/form-r.svg" alt="rechteck"/></div>
|
||||
<div class="ring-1 ring-black/15 bg-white rounded-md"><img src="/images/form-l.svg" alt="l-form" /></div>
|
||||
<div class="ring-1 ring-black/15 bg-white rounded-md"><img src="/images/form-t.svg" alt="t-form" /></div>
|
||||
<div class="ring-1 ring-black/15 bg-white rounded-md"><img src="/images/form-u.svg" alt="u-form" /></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-span-2 xl:col-span-1">
|
||||
|
||||
<div
|
||||
id="Berechnungshilfe2"
|
||||
class="bereich-box grid w-full
|
||||
<div class="col-span-2 xl:col-span-1">
|
||||
<div
|
||||
id="Berechnungshilfe2"
|
||||
class="bereich-box grid w-full
|
||||
grid-cols-2 gap-x-4 gap-y-8
|
||||
sm:grid-cols-3 sm:gap-x-6 sm:gap-y-8
|
||||
xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
"
|
||||
>
|
||||
>
|
||||
<div class="input-standard col-span-2 sm:col-span-3">
|
||||
<h4
|
||||
class="m-0 font-bold p-1 pt-2 min-h-[38px] ring-1 bg-white ring-black/15 rounded-sm;"
|
||||
>
|
||||
Berechnungshilfe - Eingabe der Grundfläche, Gechossanzahl
|
||||
und -höhe
|
||||
</h4>
|
||||
<div class="help-label">
|
||||
<HelpLabel
|
||||
>Hier wählen Sie Ihren passenden Grundriss aus, und
|
||||
tragen die entsprechenden Maße unten ein. Bitte
|
||||
berücksichtigen Sie nur den Grundriss der zum beheizten
|
||||
Gebäude gehört. Garagen oder Schuppen die an das Haus
|
||||
herangebaut sind aber keine Verbindung zum Wohnhaus
|
||||
haben bitte weglassen.</HelpLabel
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard col-span-2 sm:col-span-3">
|
||||
<h4 class="m-0 font-bold p-1 pt-2 min-h-[38px] ring-1 bg-white ring-black/15 rounded-sm;">Berechnungshilfe - Eingabe der Grundfläche, Gechossanzahl und -höhe</h4>
|
||||
<div class="help-label">
|
||||
<HelpLabel>Hier wählen Sie Ihren passenden Grundriss aus, und tragen die entsprechenden Maße unten ein.
|
||||
Bitte berücksichtigen Sie nur den Grundriss der zum beheizten Gebäude gehört.
|
||||
Garagen oder Schuppen die an das Haus herangebaut sind aber keine Verbindung zum Wohnhaus haben bitte weglassen.</HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-standard order-1 md:order-1 xl:order-1">
|
||||
<Inputlabel title="A"></Inputlabel>
|
||||
|
||||
<div class="input-standard order-1 md:order-1 xl:order-1">
|
||||
<Inputlabel title="A"></Inputlabel>
|
||||
<input
|
||||
name="masse_a"
|
||||
type="number"
|
||||
bind:value={ausweis.masse_a}
|
||||
/>
|
||||
|
||||
<input
|
||||
name="masse_a"
|
||||
type="number"
|
||||
bind:value={ausweis.masse_a}
|
||||
/>
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-standard order-2 md:order-2 xl:order-2">
|
||||
<Inputlabel title="B"></Inputlabel>
|
||||
|
||||
<div class="input-standard order-2 md:order-2 xl:order-2">
|
||||
<Inputlabel title="B"></Inputlabel>
|
||||
<input
|
||||
name="masse_b"
|
||||
type="number"
|
||||
bind:value={ausweis.masse_b}
|
||||
/>
|
||||
|
||||
<input
|
||||
name="masse_b"
|
||||
type="number"
|
||||
bind:value={ausweis.masse_b}
|
||||
/>
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-standard order-3 md:order-3 xl:order-3">
|
||||
<Inputlabel title="C"></Inputlabel>
|
||||
|
||||
<div class="input-standard order-3 md:order-3 xl:order-3">
|
||||
<Inputlabel title="C"></Inputlabel>
|
||||
<input
|
||||
name="masse_c"
|
||||
type="number"
|
||||
bind:value={ausweis.masse_c}
|
||||
/>
|
||||
|
||||
<input
|
||||
name="masse_c"
|
||||
type="number"
|
||||
bind:value={ausweis.masse_c}
|
||||
/>
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-standard order-4 md:order-4 xl:order-4">
|
||||
<Inputlabel title="D"></Inputlabel>
|
||||
|
||||
<div class="input-standard order-4 md:order-4 xl:order-4">
|
||||
<Inputlabel title="D"></Inputlabel>
|
||||
<input
|
||||
name="masse_d"
|
||||
type="number"
|
||||
bind:value={ausweis.masse_d}
|
||||
/>
|
||||
|
||||
<input
|
||||
name="masse_d"
|
||||
type="number"
|
||||
bind:value={ausweis.masse_d}
|
||||
/>
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
<div class="input-standard order-5 md:order-5 xl:order-5">
|
||||
<Inputlabel title="E"></Inputlabel>
|
||||
|
||||
</div>
|
||||
<input
|
||||
name="masse_e"
|
||||
type="number"
|
||||
bind:value={ausweis.masse_e}
|
||||
/>
|
||||
|
||||
<div class="input-standard order-5 md:order-5 xl:order-5">
|
||||
<Inputlabel title="E"></Inputlabel>
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input
|
||||
name="masse_e"
|
||||
type="number"
|
||||
bind:value={ausweis.masse_e}
|
||||
/>
|
||||
<div class="input-standard order-6 md:order-6 xl:order-6">
|
||||
<Inputlabel title="F"></Inputlabel>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
<input
|
||||
name="masse_f"
|
||||
type="number"
|
||||
bind:value={ausweis.masse_f}
|
||||
/>
|
||||
|
||||
</div>
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="input-standard order-6 md:order-6 xl:order-6">
|
||||
<Inputlabel title="F"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="masse_f"
|
||||
type="number"
|
||||
bind:value={ausweis.masse_f}
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div
|
||||
id="Berechnungshilfe1"
|
||||
class="bereich-box grid w-full mt-6
|
||||
<div
|
||||
id="Berechnungshilfe1"
|
||||
class="bereich-box grid w-full mt-6
|
||||
grid-cols-1 gap-x-4 gap-y-8
|
||||
sm:grid-cols-2 sm:gap-x-6 sm:gap-y-8
|
||||
xl:grid-cols-2 xl:gap-x-8 xl:gap-y-8
|
||||
"
|
||||
>
|
||||
>
|
||||
<div class="input-standard order-1 md:order-1 xl:order-1">
|
||||
<Inputlabel title="Anzahl Vollgeschosse *"></Inputlabel>
|
||||
|
||||
<div class="input-standard order-1 md:order-1 xl:order-1">
|
||||
<Inputlabel title="Anzahl Vollgeschosse *"></Inputlabel>
|
||||
<input
|
||||
name="anzahl_vollgeschosse"
|
||||
bind:value={ausweis.anzahl_vollgeschosse}
|
||||
type="number"
|
||||
required
|
||||
/>
|
||||
|
||||
<input
|
||||
name="anzahl_vollgeschosse"
|
||||
bind:value={ausweis.anzahl_vollgeschosse}
|
||||
type="number"
|
||||
required
|
||||
/>
|
||||
<div class="help-label">
|
||||
<HelpLabel
|
||||
>Bitte geben Sie hier die Anzahl der Vollgeschosse an.
|
||||
Keller und Dachgeschoss mit Schrägen zählen nicht dazu.</HelpLabel
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel>Bitte geben Sie hier die Anzahl der Vollgeschosse
|
||||
an. Keller und Dachgeschoss mit Schrägen zählen
|
||||
nicht dazu.</HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-standard order-2 md:order-2 xl:order-2">
|
||||
<Inputlabel title="Geschosshöhe *"></Inputlabel>
|
||||
|
||||
<div class="input-standard order-2 md:order-2 xl:order-2">
|
||||
<Inputlabel title="Geschosshöhe *"></Inputlabel>
|
||||
<select
|
||||
name="geschosshoehe"
|
||||
bind:value={ausweis.geschosshoehe}
|
||||
required
|
||||
>
|
||||
<option>Bitte auswählen</option>
|
||||
{#each arrayRange(2.1, 4.5, 0.1) as step}
|
||||
<option value={step}>{step.toFixed(2)} m</option>
|
||||
{/each}
|
||||
</select>
|
||||
|
||||
<select
|
||||
name="geschosshoehe"
|
||||
bind:value={ausweis.geschosshoehe}
|
||||
required
|
||||
>
|
||||
<option>Bitte auswählen</option>
|
||||
{#each arrayRange(2.1, 4.5, 0.1) as step}
|
||||
<option value={step}>{step.toFixed(2)} m</option
|
||||
>
|
||||
{/each}
|
||||
</select>
|
||||
<div class="help-label">
|
||||
<HelpLabel
|
||||
>Bitte geben Sie hier die Geschosshöhe (lichte Raumhöhe
|
||||
+ Deckenstärke) des Gebäudes ein. Bei unterschiedlichen
|
||||
Geschosshöhen bilden Sie einen Mittelwert.</HelpLabel
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel>Bitte geben Sie hier die Geschosshöhe (lichte
|
||||
Raumhöhe + Deckenstärke) des Gebäudes ein. Bei
|
||||
unterschiedlichen Geschosshöhen bilden Sie einen
|
||||
Mittelwert.</HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-standard order-3 md:order-3 xl:order-3">
|
||||
<Inputlabel title="Gaubenanzahl"></Inputlabel>
|
||||
|
||||
<div class="input-standard order-3 md:order-3 xl:order-3">
|
||||
<Inputlabel title="Gaubenanzahl"></Inputlabel>
|
||||
<input
|
||||
name="anzahl_gauben"
|
||||
bind:value={ausweis.anzahl_gauben}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<input
|
||||
name="anzahl_gauben"
|
||||
bind:value={ausweis.anzahl_gauben}
|
||||
type="number"
|
||||
/>
|
||||
<div class="help-label">
|
||||
<HelpLabel
|
||||
>Wenn Ihr Gebäude Dachgauben besitzt geben Sie hier die
|
||||
Anzahl ein.</HelpLabel
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel>Wenn Ihr Gebäude Dachgauben besitzt geben Sie hier
|
||||
die Anzahl ein.</HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-standard order-4 md:order-4 xl:order-4">
|
||||
<Inputlabel title="Breite aller Gauben in m"></Inputlabel>
|
||||
|
||||
<div class="input-standard order-4 md:order-4 xl:order-4">
|
||||
<Inputlabel title="Breite aller Gauben in m"></Inputlabel>
|
||||
<select name="breite_gauben" bind:value={ausweis.breite_gauben}>
|
||||
<option>Bitte auswählen</option>
|
||||
{#each arrayRange(0.5, 10, 0.1) as step}
|
||||
<option value={step}>{step.toFixed(2)} m</option>
|
||||
{/each}
|
||||
</select>
|
||||
|
||||
<select
|
||||
name="breite_gauben"
|
||||
bind:value={ausweis.breite_gauben}
|
||||
>
|
||||
<option>Bitte auswählen</option>
|
||||
{#each arrayRange(0.5, 10, 0.1) as step}
|
||||
<option value={step}>{step.toFixed(2)} m</option
|
||||
>
|
||||
{/each}
|
||||
</select>
|
||||
<div class="help-label">
|
||||
<HelpLabel
|
||||
>Bitte geben Sie hier die Gesamtbreite aller Gauben in m
|
||||
ein.</HelpLabel
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel>Bitte geben Sie hier die Gesamtbreite aller Gauben
|
||||
in m ein.</HelpLabel>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="bereich-box col-span-2 xl:col-span-1">
|
||||
<div
|
||||
id="Berechnungstabelle"
|
||||
class="grid w-full
|
||||
<div class="bereich-box col-span-2 xl:col-span-1">
|
||||
<div
|
||||
id="Berechnungstabelle"
|
||||
class="grid w-full
|
||||
grid-cols-2 gap-x-4 gap-y-8
|
||||
sm:grid-cols-2 sm:gap-x-6 sm:gap-y-8
|
||||
xl:grid-cols-2 xl:gap-x-8 xl:gap-y-8 xl:col-span-1
|
||||
xl:grid-cols-2 xl:gap-x-8 xl:gap-y-8 xl:col-span-1
|
||||
"
|
||||
>
|
||||
<div class="input-standard col-span-2">
|
||||
<h4 class="m-0 font-bold p-1 pt-2 min-h-[38px] ring-1 bg-white ring-black/15 rounded-sm ">Außenflächen, U-Werte und Volumen</h4>
|
||||
<div class="help-label">
|
||||
<HelpLabel>Die wärmeübertragende Umfassungsflächen sind die Hüllflächen des beheizten Gebäudes die an die Außenluft bzw. an unbeheizte Vorbauten grenzen.
|
||||
Wenn Ihnen die Außenwand-,Dach-,Decken- und Bodenflächen vorliegen können Sie die Eingabe direkt vornehmen.
|
||||
Hier können Sie auch das von den Umfassungsflächen eingeschlossene Volumen des Gebäudes eingeben.
|
||||
Die ermittelten Werte der Berechnungshilfe können hier präzisiert werden.</HelpLabel>
|
||||
>
|
||||
<div class="input-standard col-span-2">
|
||||
<h4
|
||||
class="m-0 font-bold p-1 pt-2 min-h-[38px] ring-1 bg-white ring-black/15 rounded-sm"
|
||||
>
|
||||
Außenflächen, U-Werte und Volumen
|
||||
</h4>
|
||||
<div class="help-label">
|
||||
<HelpLabel
|
||||
>Die wärmeübertragende Umfassungsflächen sind die
|
||||
Hüllflächen des beheizten Gebäudes die an die Außenluft
|
||||
bzw. an unbeheizte Vorbauten grenzen. Wenn Ihnen die
|
||||
Außenwand-,Dach-,Decken- und Bodenflächen vorliegen
|
||||
können Sie die Eingabe direkt vornehmen. Hier können Sie
|
||||
auch das von den Umfassungsflächen eingeschlossene
|
||||
Volumen des Gebäudes eingeben. Die ermittelten Werte der
|
||||
Berechnungshilfe können hier präzisiert werden.</HelpLabel
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard col-span-2">
|
||||
<Inputlabel title="Tabellenwerte"></Inputlabel>
|
||||
|
||||
<div class="input-checkboxen">
|
||||
<div
|
||||
class="grid grid-cols-[25px_max-content] items-center justify-items-start"
|
||||
>
|
||||
<input
|
||||
id="tabellenwerte_aendern"
|
||||
type="checkbox"
|
||||
bind:checked={ausweis.tabellenwerte_aendern}
|
||||
name="tabellenwerte_aendern"
|
||||
/>
|
||||
<label for="tabellenwerte_aendern"
|
||||
>Tabellenwerte manuell ändern</label
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-1 md:order-1 xl:order-1">
|
||||
<Inputlabel title="Dachfläche in m²"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="dachflaeche"
|
||||
bind:value={ausweis.dachflaeche}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-2 md:order-2 xl:order-2">
|
||||
<Inputlabel title="U-Wert in W/m²K"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="dach_u_wert"
|
||||
bind:value={ausweis.dach_u_wert}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-3 md:order-3 xl:order-3">
|
||||
<Inputlabel title="Geschoßdecke in m²"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="deckenflaeche"
|
||||
bind:value={ausweis.deckenflaeche}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-4 md:order-4 xl:order-4">
|
||||
<Inputlabel title="U-Wert in W/m²K"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="decke_u_wert"
|
||||
bind:value={ausweis.decke_u_wert}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-5 md:order-5 xl:order-5">
|
||||
<Inputlabel title="Außenwand in m²"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="aussenwand_flaeche"
|
||||
bind:value={ausweis.aussenwand_flaeche}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-6 md:order-6 xl:order-6">
|
||||
<Inputlabel title="U-Wert in W/m²K"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="aussenwand_u_wert"
|
||||
bind:value={ausweis.aussenwand_u_wert}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-7 md:order-7 xl:order-7">
|
||||
<Inputlabel title="Fußboden in m²"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="fussboden_flaeche"
|
||||
bind:value={ausweis.fussboden_flaeche}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-8 md:order-8 xl:order-8">
|
||||
<Inputlabel title="U-Wert in W/m²K"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="fussboden_u_wert"
|
||||
bind:value={ausweis.fussboden_u_wert}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="input-standard order-9 md:order-9 xl:order-9 col-span-2"
|
||||
>
|
||||
<Inputlabel title="eingeschlossenes Gebäudevolumen in m³"
|
||||
></Inputlabel>
|
||||
|
||||
<input
|
||||
name="volumen"
|
||||
type="number"
|
||||
bind:value={ausweis.volumen}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="input-standard order-10 md:order-10 xl:order-10 col-span-2"
|
||||
>
|
||||
<Inputlabel title="Blower-Door-Test erfolgreich durchgeführt:"
|
||||
></Inputlabel>
|
||||
|
||||
<div
|
||||
class="grid grid-cols-[max-content_max-content] bg-white gap-x-12 p-1 min-h-[38px] ring-1 ring-black/15 rounded-sm"
|
||||
>
|
||||
<div
|
||||
class="grid grid-cols-[25px_1fr] items-center justify-items-start"
|
||||
>
|
||||
<input
|
||||
id="bow-yes"
|
||||
type="radio"
|
||||
value={true}
|
||||
bind:group={ausweis.dicht}
|
||||
name="dichtheit"
|
||||
/>
|
||||
<label for="bow-yes" class="radio-inline">Ja</label>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="grid grid-cols-[25px_1fr] items-center justify-items-start"
|
||||
>
|
||||
<input
|
||||
id="bow-no"
|
||||
type="radio"
|
||||
value={false}
|
||||
bind:group={ausweis.dicht}
|
||||
name="dichtheit"
|
||||
/>
|
||||
<label for="bow-no" class="radio-inline">Nein</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard col-span-2">
|
||||
<Inputlabel title="Tabellenwerte"></Inputlabel>
|
||||
|
||||
<div class="input-checkboxen">
|
||||
<div
|
||||
class="grid grid-cols-[25px_max-content] items-center justify-items-start"
|
||||
>
|
||||
|
||||
<input
|
||||
id="tabellenwerte_aendern"
|
||||
type="checkbox"
|
||||
bind:checked={ausweis.tabellenwerte_aendern}
|
||||
name="tabellenwerte_aendern"
|
||||
/>
|
||||
<label for="tabellenwerte_aendern">Tabellenwerte manuell ändern</label>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-1 md:order-1 xl:order-1">
|
||||
<Inputlabel title="Dachfläche in m²"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="dachflaeche"
|
||||
bind:value={ausweis.dachflaeche}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-2 md:order-2 xl:order-2">
|
||||
<Inputlabel title="U-Wert in W/m²K"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="dach_u_wert"
|
||||
bind:value={ausweis.dach_u_wert}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-3 md:order-3 xl:order-3">
|
||||
<Inputlabel title="Geschoßdecke in m²"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="deckenflaeche"
|
||||
bind:value={ausweis.deckenflaeche}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-4 md:order-4 xl:order-4">
|
||||
<Inputlabel title="U-Wert in W/m²K"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="decke_u_wert"
|
||||
bind:value={ausweis.decke_u_wert}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-5 md:order-5 xl:order-5">
|
||||
<Inputlabel title="Außenwand in m²"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="aussenwand_flaeche"
|
||||
bind:value={ausweis.aussenwand_flaeche}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-6 md:order-6 xl:order-6">
|
||||
<Inputlabel title="U-Wert in W/m²K"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="aussenwand_u_wert"
|
||||
bind:value={ausweis.aussenwand_u_wert}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-7 md:order-7 xl:order-7">
|
||||
<Inputlabel title="Fußboden in m²"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="fussboden_flaeche"
|
||||
bind:value={ausweis.fussboden_flaeche}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-8 md:order-8 xl:order-8">
|
||||
<Inputlabel title="U-Wert in W/m²K"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="fussboden_u_wert"
|
||||
bind:value={ausweis.fussboden_u_wert}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
type="number"
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-9 md:order-9 xl:order-9 col-span-2">
|
||||
<Inputlabel title="eingeschlossenes Gebäudevolumen in m³"></Inputlabel>
|
||||
|
||||
<input
|
||||
name="volumen"
|
||||
type="number"
|
||||
bind:value={ausweis.volumen}
|
||||
readonly={!ausweis.tabellenwerte_aendern}
|
||||
/>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-standard order-10 md:order-10 xl:order-10 col-span-2">
|
||||
<Inputlabel title="Blower-Door-Test erfolgreich durchgeführt:"></Inputlabel>
|
||||
|
||||
|
||||
<div class="grid grid-cols-[max-content_max-content] bg-white gap-x-12 p-1 min-h-[38px] ring-1 ring-black/15 rounded-sm">
|
||||
|
||||
<div class="grid grid-cols-[25px_1fr] items-center justify-items-start">
|
||||
<input
|
||||
id="bow-yes"
|
||||
type="radio"
|
||||
value={true}
|
||||
bind:group={ausweis.dicht}
|
||||
name="dichtheit"
|
||||
/>
|
||||
<label for="bow-yes" class="radio-inline">Ja</label>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-[25px_1fr] items-center justify-items-start">
|
||||
<input
|
||||
id="bow-no"
|
||||
type="radio"
|
||||
value={false}
|
||||
bind:group={ausweis.dicht}
|
||||
name="dichtheit"
|
||||
/>
|
||||
<label for="bow-no" class="radio-inline">Nein</label>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel></HelpLabel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!--<div class="grid grid-cols-[3fr_2fr] gap-4">
|
||||
<div class="GRB3 gap-4">
|
||||
@@ -692,4 +713,4 @@ xl:grid-cols-2 xl:gap-x-8 xl:gap-y-8 xl:col-span-1
|
||||
</div>
|
||||
</div>
|
||||
|
||||
-->
|
||||
-->
|
||||
|
||||
@@ -50,7 +50,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
required
|
||||
bind:value={aufnahme.lueftung}
|
||||
>
|
||||
<option disabled selected >Bitte auswählen</option>
|
||||
<option disabled selected value={null}>Bitte auswählen</option>
|
||||
<option value="Fensterlueftung">Fensterlüftung</option>
|
||||
<option value="Schachtlueftung">Schachtlüftung</option>
|
||||
<option value="LueftungsanlageOhneWaermerueckgewinnung"
|
||||
@@ -83,7 +83,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
required
|
||||
bind:value={aufnahme.kuehlung}
|
||||
>
|
||||
<option disabled selected value>Bitte auswählen</option>
|
||||
<option disabled selected value={null}>Bitte auswählen</option>
|
||||
<option value="1">vorhanden</option>
|
||||
<option value="0">nicht vorhanden</option>
|
||||
</select>
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
<script lang="ts">
|
||||
import HelpLabel from "#components/labels/HelpLabel.svelte";
|
||||
import Inputlabel from "#components/labels/InputLabel.svelte";
|
||||
|
||||
|
||||
import FensterImage from "./FensterImage.svelte";
|
||||
|
||||
//import Label from "../Label.svelte";
|
||||
@@ -13,12 +11,12 @@
|
||||
VerbrauchsausweisGewerbeClient,
|
||||
VerbrauchsausweisWohnenClient,
|
||||
} from "./types.js";
|
||||
import { boolean } from "astro:schema";
|
||||
import SanierungsOption from "#components/Ausweis/SanierungsOption.svelte";
|
||||
import { BedarfsausweisWohnen } from "#lib/client/prisma.js";
|
||||
|
||||
export let objekt: ObjektClient;
|
||||
export let aufnahme: AufnahmeClient;
|
||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient;
|
||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnen;
|
||||
export let images: BildClient[];
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script lang="ts">
|
||||
import { Enums } from "#lib/client/prisma.js";
|
||||
import { BedarfsausweisWohnen, Enums } from "#lib/client/prisma.js";
|
||||
import HeizungImage from "./HeizungImage.svelte";
|
||||
|
||||
import {
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
export let objekt: ObjektClient;
|
||||
export let aufnahme: AufnahmeClient;
|
||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient;
|
||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnen;
|
||||
export let images: BildClient[];
|
||||
|
||||
export let ausweisart: Enums.Ausweisart;
|
||||
|
||||
@@ -265,7 +265,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
disabled={!ausweis.brennstoff_1}
|
||||
required
|
||||
>
|
||||
<option disabled selected >Bitte auswählen</option>
|
||||
<option disabled selected value={null}>Bitte auswählen</option>
|
||||
{#each fuelMap.hasOwnProperty(ausweis.brennstoff_1) ? fuelMap[ausweis.brennstoff_1] : [] as unit}
|
||||
<option value={unit}>{unit}</option>
|
||||
{/each}
|
||||
@@ -423,7 +423,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
bind:value={ausweis.brennstoff_2}
|
||||
required
|
||||
>
|
||||
<option disabled selected
|
||||
<option disabled selected value={null}
|
||||
>Bitte auswählen</option
|
||||
>
|
||||
{#each Object.keys(fuelMap) as fuel}
|
||||
@@ -458,7 +458,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
disabled={!ausweis.brennstoff_2}
|
||||
required
|
||||
>
|
||||
<option disabled selected
|
||||
<option disabled selected value={null}
|
||||
>Bitte auswählen</option
|
||||
>
|
||||
{#each fuelMap.hasOwnProperty(ausweis.brennstoff_2) ? fuelMap[ausweis.brennstoff_2] : [] as unit}
|
||||
|
||||
@@ -236,7 +236,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
bind:value={ausweis.brennstoff_1}
|
||||
required
|
||||
>
|
||||
<option disabled selected value>Bitte auswählen</option>
|
||||
<option disabled selected value={null}>Bitte auswählen</option>
|
||||
{#each Object.keys(fuelMap) as fuel}
|
||||
<option value={fuel}>{fuel}</option>
|
||||
{/each}
|
||||
@@ -276,7 +276,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
disabled={!ausweis.brennstoff_1}
|
||||
required
|
||||
>
|
||||
<option disabled selected value>Bitte auswählen</option>
|
||||
<option disabled selected value={null}>Bitte auswählen</option>
|
||||
{#each fuelMap.hasOwnProperty(ausweis.brennstoff_1) ? fuelMap[ausweis.brennstoff_1] : [] as unit}
|
||||
<option value={unit}>{unit}</option>
|
||||
{/each}
|
||||
@@ -440,7 +440,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
required
|
||||
data-cy="brennstoff_2"
|
||||
>
|
||||
<option disabled selected
|
||||
<option disabled selected value={null}
|
||||
>Bitte auswählen</option
|
||||
>
|
||||
{#each Object.keys(fuelMap) as fuel}
|
||||
@@ -483,7 +483,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
||||
disabled={!ausweis.brennstoff_2}
|
||||
required
|
||||
>
|
||||
<option disabled selected
|
||||
<option disabled selected value={null}
|
||||
>Bitte auswählen</option
|
||||
>
|
||||
{#each fuelMap.hasOwnProperty(ausweis.brennstoff_2) ? fuelMap[ausweis.brennstoff_2] : [] as unit}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
export let objekt: ObjektKomplettClient;
|
||||
</script>
|
||||
|
||||
<div class=" bg-white grid grid-cols-3 md:grid-cols-3 lg:grid-cols-3 gap-4">
|
||||
<div class=" bg-white grid grid-cols-1 md:grid-cols-3 lg:grid-cols-3 gap-4">
|
||||
{#if objekt.aufnahmen.length > 0}
|
||||
{@const bild = objekt.aufnahmen[0].bilder.find(bild => bild.kategorie === Enums.BilderKategorie.Gebaeude)}
|
||||
<div>
|
||||
@@ -21,18 +21,14 @@
|
||||
{/if}
|
||||
|
||||
<div class="flex gap-4">
|
||||
<div>
|
||||
<div class="inline-block border rounded-lg bg-white">
|
||||
<img src="/public/images/dashboard/ausweishaken.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
|
||||
</div>
|
||||
<div class="text-sm text-center">Energieausweis</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="inline-block border rounded-lg bg-white">
|
||||
<img src="/public/images/dashboard/ausweishaken.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
|
||||
</div>
|
||||
<div class="text-sm text-center">Energieausweis</div>
|
||||
</div>
|
||||
{#if objekt.aufnahmen.at(-1)?.verbrauchsausweise_wohnen.length}
|
||||
<a href="/pdf/ansichtsausweis?id={objekt.aufnahmen.at(-1)?.verbrauchsausweise_wohnen.at(-1).id}" target="_blank">
|
||||
<div class="inline-block border rounded-lg bg-white">
|
||||
<img src="/images/dashboard/ausweishaken.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
|
||||
</div>
|
||||
<div class="text-sm text-center">Energieausweis</div>
|
||||
</a>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="flex flex-col gap-4">
|
||||
{#each objekt.aufnahmen as aufnahme}
|
||||
@@ -42,12 +38,6 @@
|
||||
<a href="/dashboard/aufnahme/{aufnahme.id}" class="rounded-lg p-2 hover:bg-gray-100"><OpenInNewWindow size={30}></OpenInNewWindow></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="inline-block border rounded-lg px-4 py-2 w-full">
|
||||
<div class="flex justify-between items-center w-full">
|
||||
<span class="text-sm">Detailübersicht<br>Stand vom {moment(aufnahme.erstellungsdatum).format("DD.MM.YYYY")}</span>
|
||||
<a href="/dashboard/aufnahme/{aufnahme.id}" class="rounded-lg p-2 hover:bg-gray-100"><OpenInNewWindow size={30}></OpenInNewWindow></a>
|
||||
</div>
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -28,17 +28,16 @@
|
||||
AufnahmeClient
|
||||
} from "#components/Ausweis/types.js";
|
||||
|
||||
import ButtonSpaeterHilfe from "#components/Ausweis/ButtonSpaeterHilfe.svelte";
|
||||
|
||||
|
||||
export let ausweis: BedarfsausweisWohnenClient;
|
||||
export let objekt: ObjektClient
|
||||
export let aufnahme: AufnahmeClient
|
||||
export let user: BenutzerClient = {} as BenutzerClient;
|
||||
export let ausweistyp: Enums.AusweisTyp
|
||||
export let bilder: BildClient[] = []
|
||||
export let uid: string;
|
||||
export let id: string;
|
||||
|
||||
if (!uid && (!ausweis.updated_at || moment(localStorage.getItem("bedarfsausweis-wohnen.updated_at") || new Date()).isAfter(ausweis.updated_at))) {
|
||||
if (((user && user.rolle !== Enums.BenutzerRolle.ADMIN) || !user) && !id && (!ausweis.updated_at || moment(localStorage.getItem("bedarfsausweis-wohnen.updated_at") || new Date()).isAfter(ausweis.updated_at))) {
|
||||
const localStorageAusweis = localStorage.getItem("bedarfsausweis-wohnen.ausweis");
|
||||
if (localStorageAusweis) {
|
||||
ausweis = JSON.parse(localStorageAusweis)
|
||||
@@ -61,68 +60,21 @@
|
||||
}
|
||||
|
||||
$: {
|
||||
localStorage.setItem("bedarfsausweis-wohnen.ausweis", JSON.stringify(ausweis))
|
||||
localStorage.setItem("bedarfsausweis-wohnen.aufnahme", JSON.stringify(aufnahme))
|
||||
localStorage.setItem("bedarfsausweis-wohnen.objekt", JSON.stringify(objekt))
|
||||
localStorage.setItem("bedarfsausweis-wohnen.bilder", JSON.stringify(bilder))
|
||||
localStorage.setItem("bedarfsausweis-wohnen.updated_at", moment().toString())
|
||||
if (!blockLocalStorageSync) {
|
||||
localStorage.setItem("bedarfsausweis-wohnen.ausweis", JSON.stringify(ausweis))
|
||||
localStorage.setItem("bedarfsausweis-wohnen.aufnahme", JSON.stringify(aufnahme))
|
||||
localStorage.setItem("bedarfsausweis-wohnen.objekt", JSON.stringify(objekt))
|
||||
localStorage.setItem("bedarfsausweis-wohnen.bilder", JSON.stringify(bilder))
|
||||
localStorage.setItem("bedarfsausweis-wohnen.updated_at", moment().toString())
|
||||
}
|
||||
}
|
||||
|
||||
let daemmungsBreiten = [0, 0.02, 0.05, 0.08, 0.12, 0.16, 0.2, 0.3, 0.4];
|
||||
|
||||
let fensterArten = {
|
||||
Einfachverglasung: 5,
|
||||
"Holzfenster Doppelverglasung": 2.7,
|
||||
"Kunststofffenster Doppelverglasung": 3,
|
||||
"Alu- oder Stahlfenster Doppelverglasung": 4.3,
|
||||
"Fenster Doppelverglasung (ab 1995)": 1.8,
|
||||
"Fenster Doppelverglasung (U-Wert 1,1)": 1.1,
|
||||
"Dreifach-Wärmeschutzverglasung(U-Wert 0,9)": 0.9,
|
||||
"Dreifach-Wärmeschutzverglasung(U-Wert 0,85)": 0.85,
|
||||
"Passivhausfenster(U-Wert 0,7)": 0.7,
|
||||
"Passivhausfenster(U-Wert 0,6)": 0.6,
|
||||
"Fenster mit U-Wert 2,3": 2.3,
|
||||
"Fenster mit U-Wert 1,6": 1.6,
|
||||
"Fenster mit U-Wert 1,7": 1.7,
|
||||
"Fenster mit U-Wert 1,3": 1.3,
|
||||
"Fenster mit U-Wert 1": 1,
|
||||
};
|
||||
|
||||
async function spaeterWeitermachen() {
|
||||
// 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;
|
||||
// aufnahme.uid = result.gebaeude_aufnahme_uid;
|
||||
// window.history.pushState(
|
||||
// {},
|
||||
// "",
|
||||
// `${location.pathname}?uid=${result.uid}`
|
||||
// );
|
||||
// speichernOverlayHidden = false;
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
const arrayRange = (start: number, stop: number, step: number) =>
|
||||
Array.from(
|
||||
{ length: (stop - start) / step + 1 },
|
||||
(value, index) => start + index * step
|
||||
);
|
||||
|
||||
const ausweisart = Enums.Ausweisart.BedarfsausweisWohnen
|
||||
const anliegen = "Energieausweis erstellen";
|
||||
|
||||
let form: HTMLFormElement;
|
||||
let skala: HTMLDivElement;
|
||||
let blockLocalStorageSync: boolean = false;
|
||||
</script>
|
||||
|
||||
|
||||
@@ -143,7 +95,19 @@
|
||||
<div id="formular-box" class="formular-boxen ring-0">
|
||||
|
||||
|
||||
<ButtonSpaeterHilfe {spaeterWeitermachen} />
|
||||
<ButtonWeiterHilfe
|
||||
bind:ausweis
|
||||
bind:bilder
|
||||
bind:user
|
||||
bind:objekt
|
||||
bind:aufnahme
|
||||
bind:blockLocalStorageSync
|
||||
{ausweisart}
|
||||
showWeiter={false}
|
||||
{form}
|
||||
{skala}
|
||||
>
|
||||
</ButtonWeiterHilfe>
|
||||
|
||||
<!-- A Prüfung der Ausweisart -->
|
||||
|
||||
@@ -240,16 +204,19 @@ title="Angabe zu Lüftung und Kühlung"
|
||||
|
||||
</div>
|
||||
|
||||
<ButtonWeiterHilfe {spaeterWeitermachen}
|
||||
bind:ausweis
|
||||
bind:bilder
|
||||
bind:user
|
||||
bind:objekt
|
||||
bind:aufnahme
|
||||
ausweisart={Enums.Ausweisart.BedarfsausweisWohnen}
|
||||
{form}
|
||||
{skala}
|
||||
/>
|
||||
<ButtonWeiterHilfe
|
||||
bind:ausweis
|
||||
bind:bilder
|
||||
bind:user
|
||||
bind:objekt
|
||||
bind:aufnahme
|
||||
bind:blockLocalStorageSync
|
||||
{ausweisart}
|
||||
showWeiter={true}
|
||||
{form}
|
||||
{skala}
|
||||
>
|
||||
</ButtonWeiterHilfe>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
import PerformanceScore from "#components/Ausweis/PerformanceScore.svelte";
|
||||
import Progressbar from "#components/Ausweis/Progressbar.svelte";
|
||||
import Bereich from "#components/labels/Bereich.svelte";
|
||||
import type { Bezahlmethoden, Unterlage } from "#lib/client/prisma.js";
|
||||
import type { BedarfsausweisGewerbe, Bezahlmethoden, GEGNachweisGewerbe, GEGNachweisWohnen, Unterlage } from "#lib/client/prisma.js";
|
||||
import { Enums } from "#lib/client/prisma.js";
|
||||
import {
|
||||
API_ACCESS_TOKEN_COOKIE_NAME,
|
||||
@@ -232,7 +232,7 @@
|
||||
let result: Awaited<ReturnType<typeof ausweisSpeichern>> | Awaited<ReturnType<typeof nachweisSpeichern>> | null = null;
|
||||
try {
|
||||
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 | GEGNachweisGewerbe | BedarfsausweisGewerbe, objekt, aufnahme, bilder, unterlagen, ausweisart)
|
||||
} else {
|
||||
result = await ausweisSpeichern(ausweis, objekt, aufnahme, bilder, ausweisart)
|
||||
}
|
||||
|
||||
@@ -42,16 +42,17 @@
|
||||
} from "#components/Notifications/index.js";
|
||||
|
||||
export let ausweis: VerbrauchsausweisGewerbeClient;
|
||||
export let user: BenutzerClient;
|
||||
export let user: BenutzerClient | null;
|
||||
export let objekt: ObjektClient;
|
||||
export let ausweistyp: Enums.AusweisTyp;
|
||||
export let aufnahme: AufnahmeClient;
|
||||
export let bilder: BildClient[];
|
||||
export let id: string | null;
|
||||
|
||||
const ausweisart = Enums.Ausweisart.VerbrauchsausweisGewerbe
|
||||
const anliegen = "Energieausweis erstellen";
|
||||
|
||||
if (!ausweis.updated_at || moment(localStorage.getItem("verbrauchsausweis-gewerbe.updated_at") || new Date()).isAfter(ausweis.updated_at)) {
|
||||
if (((user && user.rolle !== Enums.BenutzerRolle.ADMIN) || !user) && !id && (!ausweis.updated_at || moment(localStorage.getItem("verbrauchsausweis-gewerbe.updated_at") || new Date()).isAfter(ausweis.updated_at))) {
|
||||
const localStorageAusweis = localStorage.getItem("verbrauchsausweis-gewerbe.ausweis");
|
||||
if (localStorageAusweis) {
|
||||
ausweis = JSON.parse(localStorageAusweis)
|
||||
@@ -74,13 +75,16 @@
|
||||
}
|
||||
|
||||
$: {
|
||||
localStorage.setItem("verbrauchsausweis-gewerbe.ausweis", JSON.stringify(ausweis))
|
||||
localStorage.setItem("verbrauchsausweis-gewerbe.aufnahme", JSON.stringify(aufnahme))
|
||||
localStorage.setItem("verbrauchsausweis-gewerbe.objekt", JSON.stringify(objekt))
|
||||
localStorage.setItem("verbrauchsausweis-gewerbe.bilder", JSON.stringify(bilder))
|
||||
localStorage.setItem("verbrauchsausweis-gewerbe.updated_at", moment().toString())
|
||||
if (!blockLocalStorageSync) {
|
||||
localStorage.setItem("verbrauchsausweis-gewerbe.ausweis", JSON.stringify(ausweis))
|
||||
localStorage.setItem("verbrauchsausweis-gewerbe.aufnahme", JSON.stringify(aufnahme))
|
||||
localStorage.setItem("verbrauchsausweis-gewerbe.objekt", JSON.stringify(objekt))
|
||||
localStorage.setItem("verbrauchsausweis-gewerbe.bilder", JSON.stringify(bilder))
|
||||
localStorage.setItem("verbrauchsausweis-gewerbe.updated_at", moment().toString())
|
||||
}
|
||||
}
|
||||
|
||||
let blockLocalStorageSync: boolean = false;
|
||||
let form: HTMLFormElement;
|
||||
let skala: HTMLDivElement;
|
||||
</script>
|
||||
@@ -114,6 +118,7 @@
|
||||
bind:user
|
||||
bind:objekt
|
||||
bind:aufnahme
|
||||
bind:blockLocalStorageSync
|
||||
ausweisart={Enums.Ausweisart.VerbrauchsausweisGewerbe}
|
||||
showWeiter={false}
|
||||
{form}
|
||||
@@ -229,6 +234,7 @@
|
||||
bind:user
|
||||
bind:objekt
|
||||
bind:aufnahme
|
||||
bind:blockLocalStorageSync
|
||||
ausweisart={Enums.Ausweisart.VerbrauchsausweisGewerbe}
|
||||
showWeiter={true}
|
||||
{form}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { GEGNachweisWohnenClient, OptionalNullable, UUidWithPrefix, ZodOverlap } from "#components/Ausweis/types.js";
|
||||
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||
import { generatePrefixedId } from "#lib/db.js";
|
||||
import { exclude } from "#lib/exclude.js";
|
||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||
import { prisma } from "#lib/server/prisma.js";
|
||||
@@ -8,11 +10,16 @@ import { z } from "zod";
|
||||
|
||||
export const PATCH = defineApiRoute({
|
||||
input: BedarfsausweisGewerbeSchema.omit({
|
||||
uid: true,
|
||||
id: true,
|
||||
benutzer_id: true,
|
||||
geg_einpreisung_id: true,
|
||||
aufnahme_id: true,
|
||||
bestellt: true,
|
||||
created_at: true,
|
||||
rechnung_id: true,
|
||||
storniert: true,
|
||||
updated_at: true,
|
||||
zurueckgestellt: true
|
||||
}),
|
||||
output: z.void(),
|
||||
headers: {
|
||||
@@ -22,7 +29,7 @@ export const PATCH = defineApiRoute({
|
||||
async fetch(input, ctx, user) {
|
||||
const objekt = await prisma.bedarfsausweisGewerbe.findUnique({
|
||||
where: {
|
||||
uid: ctx.params.uid,
|
||||
id: ctx.params.id,
|
||||
benutzer: {
|
||||
id: user.id
|
||||
}
|
||||
@@ -38,7 +45,7 @@ export const PATCH = defineApiRoute({
|
||||
|
||||
await prisma.bedarfsausweisGewerbe.update({
|
||||
where: {
|
||||
uid: ctx.params.uid
|
||||
id: ctx.params.id
|
||||
},
|
||||
data: input
|
||||
})
|
||||
@@ -52,9 +59,9 @@ export const DELETE = defineApiRoute({
|
||||
headers: authorizationHeaders,
|
||||
middleware: authorizationMiddleware,
|
||||
async fetch(input, ctx, user) {
|
||||
const { uid } = ctx.params;
|
||||
const { id } = ctx.params;
|
||||
|
||||
if (!UUidWithPrefix.safeParse(uid).success) {
|
||||
if (!UUidWithPrefix.safeParse(id).success) {
|
||||
throw new APIError({
|
||||
code: "BAD_REQUEST",
|
||||
message: "UID konnte nicht verifiziert werden."
|
||||
@@ -65,7 +72,7 @@ export const DELETE = defineApiRoute({
|
||||
// Dieser MUSS mit dem Nutzer verknüpft sein.
|
||||
const nachweis = await prisma.bedarfsausweisGewerbe.findUnique({
|
||||
where: {
|
||||
uid,
|
||||
id,
|
||||
}
|
||||
});
|
||||
|
||||
@@ -112,10 +119,13 @@ export const DELETE = defineApiRoute({
|
||||
}
|
||||
})
|
||||
|
||||
const event_id = generatePrefixedId(6, VALID_UUID_PREFIXES.Ticket)
|
||||
|
||||
// Wir erstellen ein Event, dass der Nachweis storniert wurde
|
||||
// Dann können wir das in der Historie anzeigen
|
||||
await prisma.event.create({
|
||||
data: {
|
||||
id: event_id,
|
||||
title: "Nachweis storniert",
|
||||
description: ((user.rolle === "ADMIN") && (nachweis.benutzer_id !== user.id)) ? "Nachweis wurde von einem Administrator storniert." : "Nachweis wurde vom Besitzer storniert.",
|
||||
benutzer: {
|
||||
@@ -151,9 +161,9 @@ export const GET = defineApiRoute({
|
||||
}
|
||||
},
|
||||
output: BedarfsausweisGewerbeSchema.merge(z.object({
|
||||
uid_aufnahme: UUidWithPrefix,
|
||||
uid_objekt: UUidWithPrefix,
|
||||
uid_benutzer: UUidWithPrefix.optional()
|
||||
aufnahme_id: UUidWithPrefix,
|
||||
objekt_id: UUidWithPrefix,
|
||||
benutzer_id: UUidWithPrefix.optional()
|
||||
})).omit({
|
||||
id: true,
|
||||
aufnahme_id: true,
|
||||
@@ -161,9 +171,9 @@ export const GET = defineApiRoute({
|
||||
}),
|
||||
middleware: authorizationMiddleware,
|
||||
async fetch(input, context, user) {
|
||||
const { uid } = context.params;
|
||||
const { id } = context.params;
|
||||
|
||||
if (!uid) {
|
||||
if (!id) {
|
||||
throw new APIError({
|
||||
code: "BAD_REQUEST",
|
||||
message: "Missing uid in request params"
|
||||
@@ -172,21 +182,21 @@ export const GET = defineApiRoute({
|
||||
|
||||
const nachweis = await prisma.bedarfsausweisGewerbe.findUnique({
|
||||
where: {
|
||||
uid,
|
||||
id,
|
||||
benutzer_id: user.id
|
||||
},
|
||||
include: {
|
||||
benutzer: {
|
||||
select: {
|
||||
uid: true
|
||||
id: true
|
||||
}
|
||||
},
|
||||
aufnahme: {
|
||||
select: {
|
||||
uid: true,
|
||||
id: true,
|
||||
objekt: {
|
||||
select: {
|
||||
uid: true
|
||||
id: true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -203,9 +213,9 @@ export const GET = defineApiRoute({
|
||||
}
|
||||
|
||||
return {
|
||||
uid_aufnahme: nachweis.aufnahme.uid,
|
||||
uid_objekt: nachweis.aufnahme.objekt.uid,
|
||||
uid_benutzer: nachweis.benutzer?.uid,
|
||||
aufnahme_id: nachweis.aufnahme.id,
|
||||
objekt_id: nachweis.aufnahme.objekt.id,
|
||||
benutzer_id: nachweis.benutzer?.id,
|
||||
...exclude(nachweis, ["id", "aufnahme_id", "benutzer_id", "aufnahme"])
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { UUidWithPrefix } from "#components/Ausweis/types.js";
|
||||
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||
import { generatePrefixedId } from "#lib/db.js";
|
||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||
import { prisma } from "#lib/server/prisma.js";
|
||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||
@@ -16,24 +18,24 @@ export const PUT = defineApiRoute({
|
||||
nachweis: BedarfsausweisGewerbeSchema.omit({
|
||||
id: true,
|
||||
benutzer_id: true,
|
||||
uid: true,
|
||||
aufnahme_id: true,
|
||||
geg_einpreisung_id: true,
|
||||
rechnung_id: true
|
||||
aufnahme_id: true,
|
||||
bestellt: true,
|
||||
created_at: true,
|
||||
rechnung_id: true,
|
||||
storniert: true,
|
||||
updated_at: true,
|
||||
zurueckgestellt: true
|
||||
}),
|
||||
uid_aufnahme: UUidWithPrefix
|
||||
}),
|
||||
output: z.object({
|
||||
uid: UUidWithPrefix,
|
||||
objekt_uid: UUidWithPrefix,
|
||||
aufnahme_uid: UUidWithPrefix,
|
||||
aufnahme_id: UUidWithPrefix
|
||||
}),
|
||||
output: UUidWithPrefix,
|
||||
headers: authorizationHeaders,
|
||||
middleware: authorizationMiddleware,
|
||||
async fetch(input, ctx, user) {
|
||||
const aufnahme = await prisma.aufnahme.findUnique({
|
||||
where: {
|
||||
uid: input.uid_aufnahme
|
||||
id: input.aufnahme_id
|
||||
}
|
||||
})
|
||||
|
||||
@@ -44,8 +46,11 @@ export const PUT = defineApiRoute({
|
||||
})
|
||||
}
|
||||
|
||||
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.GEGNachweisGewerbe)
|
||||
|
||||
const nachweis = await prisma.bedarfsausweisGewerbe.create({
|
||||
data: {
|
||||
id,
|
||||
...input.nachweis,
|
||||
benutzer: {
|
||||
connect: {
|
||||
@@ -57,27 +62,10 @@ export const PUT = defineApiRoute({
|
||||
id: aufnahme.id,
|
||||
},
|
||||
}
|
||||
},
|
||||
select: {
|
||||
uid: true,
|
||||
aufnahme: {
|
||||
select: {
|
||||
uid: true,
|
||||
objekt: {
|
||||
select: {
|
||||
uid: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
return {
|
||||
uid: nachweis.uid,
|
||||
objekt_uid: nachweis.aufnahme.objekt.uid,
|
||||
aufnahme_uid: nachweis.aufnahme.uid,
|
||||
};
|
||||
return nachweis.id
|
||||
},
|
||||
});
|
||||
|
||||
@@ -101,11 +89,11 @@ export const GET = defineApiRoute({
|
||||
headers: authorizationHeaders,
|
||||
middleware: authorizationMiddleware,
|
||||
async fetch(input, context, user) {
|
||||
const { uid } = context.params;
|
||||
const { id } = context.params;
|
||||
|
||||
const nachweis = await prisma.bedarfsausweisGewerbe.findUnique({
|
||||
where: {
|
||||
uid,
|
||||
id,
|
||||
},
|
||||
include: {
|
||||
benutzer: true,
|
||||
@@ -115,7 +103,7 @@ export const GET = defineApiRoute({
|
||||
include: {
|
||||
benutzer: {
|
||||
select: {
|
||||
uid: true,
|
||||
id: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -1,16 +1,25 @@
|
||||
import { BedarfsausweisWohnenClient, OptionalNullable, UUidWithPrefix, VerbrauchsausweisWohnenClient, ZodOverlap } from "#components/Ausweis/types.js";
|
||||
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||
import { generatePrefixedId } from "#lib/db.js";
|
||||
import { exclude } from "#lib/exclude.js";
|
||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||
import { BedarfsausweisWohnenSchema, prisma, VerbrauchsausweisWohnenSchema } from "#lib/server/prisma";
|
||||
import { BedarfsausweisWohnen, prisma } from "#lib/server/prisma.js";
|
||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||
import { BedarfsausweisWohnenSchema } from "src/generated/zod/bedarfsausweiswohnen.js";
|
||||
import { z } from "zod";
|
||||
|
||||
export const PATCH = defineApiRoute({
|
||||
input: VerbrauchsausweisWohnenSchema.omit({
|
||||
uid: true,
|
||||
input: BedarfsausweisWohnenSchema.omit({
|
||||
id: true,
|
||||
benutzer_id: true,
|
||||
aufnahme_id: true,
|
||||
rechnung_id: true,
|
||||
ausgestellt: true,
|
||||
bestellt: true,
|
||||
zurueckgestellt: true,
|
||||
created_at: true,
|
||||
updated_at: true,
|
||||
storniert: true
|
||||
}),
|
||||
output: z.void(),
|
||||
headers: {
|
||||
@@ -18,9 +27,9 @@ export const PATCH = defineApiRoute({
|
||||
},
|
||||
middleware: authorizationMiddleware,
|
||||
async fetch(input, ctx, user) {
|
||||
const objekt = await prisma.verbrauchsausweisWohnen.findUnique({
|
||||
const objekt = await prisma.bedarfsausweisWohnen.findUnique({
|
||||
where: {
|
||||
uid: ctx.params.uid,
|
||||
id: ctx.params.id,
|
||||
benutzer: {
|
||||
id: user.id
|
||||
}
|
||||
@@ -34,9 +43,9 @@ export const PATCH = defineApiRoute({
|
||||
})
|
||||
}
|
||||
|
||||
await prisma.verbrauchsausweisWohnen.update({
|
||||
await prisma.bedarfsausweisWohnen.update({
|
||||
where: {
|
||||
uid: ctx.params.uid
|
||||
id: ctx.params.id
|
||||
},
|
||||
data: input
|
||||
})
|
||||
@@ -50,9 +59,9 @@ export const DELETE = defineApiRoute({
|
||||
headers: authorizationHeaders,
|
||||
middleware: authorizationMiddleware,
|
||||
async fetch(input, ctx, user) {
|
||||
const { uid } = ctx.params;
|
||||
const { id } = ctx.params;
|
||||
|
||||
if (!UUidWithPrefix.safeParse(uid).success) {
|
||||
if (!UUidWithPrefix.safeParse(id).success) {
|
||||
throw new APIError({
|
||||
code: "BAD_REQUEST",
|
||||
message: "UID konnte nicht verifiziert werden."
|
||||
@@ -61,15 +70,11 @@ export const DELETE = defineApiRoute({
|
||||
|
||||
// Wir holen uns den Bedarfsausweis
|
||||
// Dieser MUSS mit dem Nutzer verknüpft sein.
|
||||
const ausweis = await prisma.verbrauchsausweisWohnen.findUnique({
|
||||
const ausweis = await prisma.bedarfsausweisWohnen.findUnique({
|
||||
where: {
|
||||
uid,
|
||||
},
|
||||
include: {
|
||||
aufnahme: {
|
||||
select: {
|
||||
storniert: true
|
||||
}
|
||||
id,
|
||||
benutzer: {
|
||||
id: user.id
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -100,7 +105,7 @@ export const DELETE = defineApiRoute({
|
||||
// });
|
||||
// }
|
||||
|
||||
if (ausweis.aufnahme.storniert) {
|
||||
if (ausweis.storniert) {
|
||||
// Falls der Ausweis bereits storniert ist, werfen wir einen Fehler
|
||||
throw new APIError({
|
||||
code: "BAD_REQUEST",
|
||||
@@ -108,19 +113,22 @@ export const DELETE = defineApiRoute({
|
||||
});
|
||||
}
|
||||
|
||||
await prisma.aufnahme.update({
|
||||
await prisma.bedarfsausweisWohnen.update({
|
||||
where: {
|
||||
id: ausweis.aufnahme_id
|
||||
id
|
||||
},
|
||||
data: {
|
||||
storniert: true
|
||||
}
|
||||
})
|
||||
|
||||
const event_id = generatePrefixedId(6, VALID_UUID_PREFIXES.Ticket)
|
||||
|
||||
// Wir erstellen ein Event, dass der Ausweis storniert wurde
|
||||
// Dann können wir das in der Historie anzeigen
|
||||
await prisma.event.create({
|
||||
data: {
|
||||
id: event_id,
|
||||
title: "Ausweis storniert",
|
||||
description: ((user.rolle === "ADMIN") && (ausweis.benutzer_id !== user.id)) ? "Ausweis wurde von einem Administrator storniert." : "Ausweis wurde vom Besitzer storniert.",
|
||||
benutzer: {
|
||||
@@ -155,10 +163,10 @@ export const GET = defineApiRoute({
|
||||
}
|
||||
}
|
||||
},
|
||||
output: ZodOverlap<OptionalNullable<VerbrauchsausweisWohnenClient>>(VerbrauchsausweisWohnenSchema.merge(z.object({
|
||||
uid_aufnahme: UUidWithPrefix,
|
||||
uid_objekt: UUidWithPrefix,
|
||||
uid_benutzer: UUidWithPrefix.optional()
|
||||
output: ZodOverlap<OptionalNullable<BedarfsausweisWohnenClient>>(BedarfsausweisWohnenSchema.merge(z.object({
|
||||
aufnahme_id: UUidWithPrefix,
|
||||
objekt_id: UUidWithPrefix,
|
||||
benutzer_id: UUidWithPrefix.optional()
|
||||
})).omit({
|
||||
id: true,
|
||||
aufnahme_id: true,
|
||||
@@ -166,9 +174,9 @@ export const GET = defineApiRoute({
|
||||
})),
|
||||
middleware: authorizationMiddleware,
|
||||
async fetch(input, context, user) {
|
||||
const { uid } = context.params;
|
||||
const { id } = context.params;
|
||||
|
||||
if (!uid) {
|
||||
if (!id) {
|
||||
throw new APIError({
|
||||
code: "BAD_REQUEST",
|
||||
message: "Missing uid in request params"
|
||||
@@ -177,21 +185,21 @@ export const GET = defineApiRoute({
|
||||
|
||||
const ausweis = await prisma.verbrauchsausweisWohnen.findUnique({
|
||||
where: {
|
||||
uid,
|
||||
id,
|
||||
benutzer_id: user.id
|
||||
},
|
||||
include: {
|
||||
benutzer: {
|
||||
select: {
|
||||
uid: true
|
||||
id: true
|
||||
}
|
||||
},
|
||||
aufnahme: {
|
||||
select: {
|
||||
uid: true,
|
||||
id: true,
|
||||
objekt: {
|
||||
select: {
|
||||
uid: true
|
||||
id: true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -208,9 +216,9 @@ export const GET = defineApiRoute({
|
||||
}
|
||||
|
||||
return {
|
||||
uid_aufnahme: ausweis.aufnahme.uid,
|
||||
uid_objekt: ausweis.aufnahme.objekt.uid,
|
||||
uid_benutzer: ausweis.benutzer?.uid,
|
||||
aufnahme_id: ausweis.aufnahme.id,
|
||||
objekt_id: ausweis.aufnahme.objekt.id,
|
||||
benutzer_id: ausweis.benutzer?.id,
|
||||
...exclude(ausweis, ["id", "aufnahme_id", "benutzer_id", "aufnahme"])
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
import { UUidWithPrefix } from "#components/Ausweis/types.js";
|
||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||
import { generatePrefixedId } from "#lib/db.js";
|
||||
import {
|
||||
authorizationHeaders,
|
||||
authorizationMiddleware,
|
||||
} from "#lib/middleware/authorization.js";
|
||||
import { prisma } from "#lib/server/prisma.js";
|
||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||
import { BedarfsausweisWohnenSchema } from "src/generated/zod/bedarfsausweiswohnen.js";
|
||||
@@ -16,66 +21,58 @@ export const PUT = defineApiRoute({
|
||||
ausweis: BedarfsausweisWohnenSchema.omit({
|
||||
id: true,
|
||||
benutzer_id: true,
|
||||
uid: true,
|
||||
aufnahme_id: true
|
||||
aufnahme_id: true,
|
||||
rechnung_id: true,
|
||||
ausgestellt: true,
|
||||
bestellt: true,
|
||||
zurueckgestellt: true,
|
||||
created_at: true,
|
||||
updated_at: true,
|
||||
storniert: true,
|
||||
}),
|
||||
uid_aufnahme: UUidWithPrefix
|
||||
}),
|
||||
output: z.object({
|
||||
uid: UUidWithPrefix,
|
||||
objekt_uid: UUidWithPrefix,
|
||||
aufnahme_uid: UUidWithPrefix,
|
||||
aufnahme_id: UUidWithPrefix,
|
||||
}),
|
||||
output: UUidWithPrefix,
|
||||
headers: authorizationHeaders,
|
||||
middleware: authorizationMiddleware,
|
||||
async fetch(input, ctx, user) {
|
||||
const aufnahme = await prisma.aufnahme.findUnique({
|
||||
where: {
|
||||
uid: input.uid_aufnahme
|
||||
}
|
||||
})
|
||||
id: input.aufnahme_id,
|
||||
},
|
||||
});
|
||||
|
||||
if (!aufnahme || aufnahme.benutzer_id !== user.id) {
|
||||
throw new APIError({
|
||||
code: "FORBIDDEN",
|
||||
message: "Aufnahme konnte nicht gefunden werden oder gehört nicht zu diesem Benutzer."
|
||||
})
|
||||
message:
|
||||
"Aufnahme konnte nicht gefunden werden oder gehört nicht zu diesem Benutzer.",
|
||||
});
|
||||
}
|
||||
|
||||
const createdAusweis = await prisma.bedarfsausweisWohnen.create({
|
||||
data: {
|
||||
...input.ausweis,
|
||||
benutzer: {
|
||||
connect: {
|
||||
id: user.id,
|
||||
},
|
||||
},
|
||||
aufnahme: {
|
||||
connect: {
|
||||
uid: aufnahme.uid,
|
||||
},
|
||||
},
|
||||
},
|
||||
select: {
|
||||
uid: true,
|
||||
aufnahme: {
|
||||
select: {
|
||||
uid: true,
|
||||
objekt: {
|
||||
select: {
|
||||
uid: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
const id = generatePrefixedId(
|
||||
6,
|
||||
VALID_UUID_PREFIXES.BedarfsausweisWohnen
|
||||
);
|
||||
|
||||
return {
|
||||
uid: createdAusweis.uid,
|
||||
objekt_uid: createdAusweis.aufnahme.objekt.uid,
|
||||
aufnahme_uid: createdAusweis.aufnahme.uid,
|
||||
};
|
||||
await prisma.bedarfsausweisWohnen.create({
|
||||
data: {
|
||||
id,
|
||||
...input.ausweis,
|
||||
benutzer: {
|
||||
connect: {
|
||||
id: user.id,
|
||||
},
|
||||
},
|
||||
aufnahme: {
|
||||
connect: {
|
||||
id: aufnahme.id,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return id;
|
||||
},
|
||||
});
|
||||
|
||||
@@ -98,27 +95,22 @@ export const GET = defineApiRoute({
|
||||
},
|
||||
middleware: authorizationMiddleware,
|
||||
async fetch(input, context, user) {
|
||||
const { uid } = context.params;
|
||||
const { id } = context.params;
|
||||
|
||||
const ausweis = await prisma.bedarfsausweisWohnen.findUnique({
|
||||
where: {
|
||||
uid,
|
||||
id,
|
||||
},
|
||||
include: {
|
||||
benutzer: true,
|
||||
aufnahme: {
|
||||
include: {
|
||||
objekt: {
|
||||
include: {
|
||||
bilder: true,
|
||||
},
|
||||
},
|
||||
rechnungen: true,
|
||||
bilder: true,
|
||||
events: {
|
||||
include: {
|
||||
benutzer: {
|
||||
select: {
|
||||
uid: true,
|
||||
id: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -1,17 +1,25 @@
|
||||
import { GEGNachweisWohnenClient, OptionalNullable, UUidWithPrefix, ZodOverlap } from "#components/Ausweis/types.js";
|
||||
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||
import { generatePrefixedId } from "#lib/db.js";
|
||||
import { exclude } from "#lib/exclude.js";
|
||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||
import { GEGNachweisGewerbeSchema, GEGNachweisWohnenSchema, prisma } from "#lib/server/prisma";
|
||||
import { prisma } from "#lib/server/prisma.js";
|
||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||
import { GEGNachweisGewerbeSchema } from "src/generated/zod/gegnachweisgewerbe.js";
|
||||
import { z } from "zod";
|
||||
|
||||
export const PATCH = defineApiRoute({
|
||||
input: GEGNachweisGewerbeSchema.omit({
|
||||
uid: true,
|
||||
id: true,
|
||||
benutzer_id: true,
|
||||
geg_einpreisung_id: true,
|
||||
aufnahme_id: true,
|
||||
geg_einpreisung_id: true
|
||||
bestellt: true,
|
||||
created_at: true,
|
||||
rechnung_id: true,
|
||||
storniert: true,
|
||||
updated_at: true,
|
||||
zurueckgestellt: true
|
||||
}),
|
||||
output: z.void(),
|
||||
headers: {
|
||||
@@ -21,7 +29,7 @@ export const PATCH = defineApiRoute({
|
||||
async fetch(input, ctx, user) {
|
||||
const objekt = await prisma.gEGNachweisGewerbe.findUnique({
|
||||
where: {
|
||||
uid: ctx.params.uid,
|
||||
id: ctx.params.id,
|
||||
benutzer: {
|
||||
id: user.id
|
||||
}
|
||||
@@ -37,7 +45,7 @@ export const PATCH = defineApiRoute({
|
||||
|
||||
await prisma.gEGNachweisGewerbe.update({
|
||||
where: {
|
||||
uid: ctx.params.uid
|
||||
id: ctx.params.id
|
||||
},
|
||||
data: input
|
||||
})
|
||||
@@ -51,9 +59,9 @@ export const DELETE = defineApiRoute({
|
||||
headers: authorizationHeaders,
|
||||
middleware: authorizationMiddleware,
|
||||
async fetch(input, ctx, user) {
|
||||
const { uid } = ctx.params;
|
||||
const { id } = ctx.params;
|
||||
|
||||
if (!UUidWithPrefix.safeParse(uid).success) {
|
||||
if (!UUidWithPrefix.safeParse(id).success) {
|
||||
throw new APIError({
|
||||
code: "BAD_REQUEST",
|
||||
message: "UID konnte nicht verifiziert werden."
|
||||
@@ -64,7 +72,7 @@ export const DELETE = defineApiRoute({
|
||||
// Dieser MUSS mit dem Nutzer verknüpft sein.
|
||||
const nachweis = await prisma.gEGNachweisGewerbe.findUnique({
|
||||
where: {
|
||||
uid,
|
||||
id,
|
||||
}
|
||||
});
|
||||
|
||||
@@ -111,10 +119,13 @@ export const DELETE = defineApiRoute({
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
const event_id = generatePrefixedId(6, VALID_UUID_PREFIXES.Ticket)
|
||||
// Wir erstellen ein Event, dass der Nachweis storniert wurde
|
||||
// Dann können wir das in der Historie anzeigen
|
||||
await prisma.event.create({
|
||||
data: {
|
||||
id: event_id,
|
||||
title: "Nachweis storniert",
|
||||
description: ((user.rolle === "ADMIN") && (nachweis.benutzer_id !== user.id)) ? "Nachweis wurde von einem Administrator storniert." : "Nachweis wurde vom Besitzer storniert.",
|
||||
benutzer: {
|
||||
@@ -150,9 +161,9 @@ export const GET = defineApiRoute({
|
||||
}
|
||||
},
|
||||
output: GEGNachweisGewerbeSchema.merge(z.object({
|
||||
uid_aufnahme: UUidWithPrefix,
|
||||
uid_objekt: UUidWithPrefix,
|
||||
uid_benutzer: UUidWithPrefix.optional()
|
||||
aufnahme_id: UUidWithPrefix,
|
||||
objekt_id: UUidWithPrefix,
|
||||
benutzer_id: UUidWithPrefix.optional()
|
||||
})).omit({
|
||||
id: true,
|
||||
aufnahme_id: true,
|
||||
@@ -160,9 +171,9 @@ export const GET = defineApiRoute({
|
||||
}),
|
||||
middleware: authorizationMiddleware,
|
||||
async fetch(input, context, user) {
|
||||
const { uid } = context.params;
|
||||
const { id } = context.params;
|
||||
|
||||
if (!uid) {
|
||||
if (!id) {
|
||||
throw new APIError({
|
||||
code: "BAD_REQUEST",
|
||||
message: "Missing uid in request params"
|
||||
@@ -171,21 +182,21 @@ export const GET = defineApiRoute({
|
||||
|
||||
const nachweis = await prisma.gEGNachweisGewerbe.findUnique({
|
||||
where: {
|
||||
uid,
|
||||
id,
|
||||
benutzer_id: user.id
|
||||
},
|
||||
include: {
|
||||
benutzer: {
|
||||
select: {
|
||||
uid: true
|
||||
id: true
|
||||
}
|
||||
},
|
||||
aufnahme: {
|
||||
select: {
|
||||
uid: true,
|
||||
id: true,
|
||||
objekt: {
|
||||
select: {
|
||||
uid: true
|
||||
id: true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -202,9 +213,9 @@ export const GET = defineApiRoute({
|
||||
}
|
||||
|
||||
return {
|
||||
uid_aufnahme: nachweis.aufnahme.uid,
|
||||
uid_objekt: nachweis.aufnahme.objekt.uid,
|
||||
uid_benutzer: nachweis.benutzer?.uid,
|
||||
aufnahme_id: nachweis.aufnahme.id,
|
||||
objekt_id: nachweis.aufnahme.objekt.id,
|
||||
benutzer_id: nachweis.benutzer?.id,
|
||||
...exclude(nachweis, ["id", "aufnahme_id", "benutzer_id", "aufnahme"])
|
||||
}
|
||||
},
|
||||
|
||||
@@ -18,11 +18,14 @@ export const PUT = defineApiRoute({
|
||||
nachweis: GEGNachweisGewerbeSchema.omit({
|
||||
id: true,
|
||||
benutzer_id: true,
|
||||
aufnahme_id: true,
|
||||
created_at: true,
|
||||
updated_at: true,
|
||||
geg_einpreisung_id: true,
|
||||
rechnung_id: true
|
||||
aufnahme_id: true,
|
||||
bestellt: true,
|
||||
created_at: true,
|
||||
rechnung_id: true,
|
||||
storniert: true,
|
||||
updated_at: true,
|
||||
zurueckgestellt: true
|
||||
}),
|
||||
aufnahme_id: UUidWithPrefix
|
||||
}),
|
||||
|
||||
@@ -14,6 +14,12 @@ export const PATCH = defineApiRoute({
|
||||
benutzer_id: true,
|
||||
geg_einpreisung_id: true,
|
||||
aufnahme_id: true,
|
||||
bestellt: true,
|
||||
created_at: true,
|
||||
rechnung_id: true,
|
||||
storniert: true,
|
||||
updated_at: true,
|
||||
zurueckgestellt: true
|
||||
}),
|
||||
output: z.void(),
|
||||
headers: {
|
||||
|
||||
@@ -18,11 +18,14 @@ export const PUT = defineApiRoute({
|
||||
nachweis: GEGNachweisWohnenSchema.omit({
|
||||
id: true,
|
||||
benutzer_id: true,
|
||||
aufnahme_id: true,
|
||||
updated_at: true,
|
||||
created_at: true,
|
||||
geg_einpreisung_id: true,
|
||||
rechnung_id: true
|
||||
aufnahme_id: true,
|
||||
bestellt: true,
|
||||
created_at: true,
|
||||
rechnung_id: true,
|
||||
storniert: true,
|
||||
updated_at: true,
|
||||
zurueckgestellt: true
|
||||
}),
|
||||
aufnahme_id: UUidWithPrefix
|
||||
}),
|
||||
|
||||
@@ -3,6 +3,8 @@ import { prisma } from "#lib/server/prisma.js";
|
||||
import { defineApiRoute } from "astro-typesafe-api/server";
|
||||
import { UUidWithPrefix } from "#components/Ausweis/types.js";
|
||||
import { TicketsSchema } from "src/generated/zod/tickets.js";
|
||||
import { generatePrefixedId } from "#lib/db.js";
|
||||
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||
|
||||
export const PUT = defineApiRoute({
|
||||
meta: {
|
||||
@@ -20,23 +22,22 @@ export const PUT = defineApiRoute({
|
||||
id: true,
|
||||
prioritaet: true,
|
||||
status: true,
|
||||
uid: true,
|
||||
updated_at: true,
|
||||
}),
|
||||
output: z.object({
|
||||
uid: UUidWithPrefix,
|
||||
id: UUidWithPrefix,
|
||||
}),
|
||||
async fetch(input, ctx) {
|
||||
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.Ticket)
|
||||
|
||||
const ticket = await prisma.tickets.create({
|
||||
data: {
|
||||
id,
|
||||
beschreibung: input.beschreibung,
|
||||
email: input.email,
|
||||
titel: input.titel,
|
||||
metadata: input.metadata,
|
||||
},
|
||||
select: {
|
||||
uid: true,
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
// Das sind die Label IDs von Trello
|
||||
@@ -71,7 +72,7 @@ export const PUT = defineApiRoute({
|
||||
|
||||
|
||||
return {
|
||||
uid: ticket.uid,
|
||||
id: ticket.id,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1,112 +1,85 @@
|
||||
---
|
||||
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
|
||||
import { AufnahmeClient, ObjektClient, BildClient, VerbrauchsausweisGewerbeClient } from "#components/Ausweis/types";
|
||||
import { createCaller } from "src/astro-typesafe-api-caller";
|
||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants";
|
||||
import { validateAccessTokenServer } from "#server/lib/validateAccessToken";
|
||||
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 id = Astro.url.searchParams.get("uid");
|
||||
const id = Astro.url.searchParams.get("id");
|
||||
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: VerbrauchsausweisGewerbeClient = {} as VerbrauchsausweisGewerbeClient;
|
||||
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
|
||||
let objekt: ObjektClient = {} as ObjektClient;
|
||||
let bilder: BildClient[] = []
|
||||
|
||||
const valid = validateAccessTokenServer(Astro);
|
||||
|
||||
const caller = createCaller(Astro);
|
||||
const user = await getCurrentUser(Astro)
|
||||
|
||||
if (id) {
|
||||
if (!valid) {
|
||||
if (!user) {
|
||||
return Astro.redirect(
|
||||
`/auth/login?redirect=${Astro.url.toString()}`
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
let { aufnahme_id, objekt_id, benutzer_id, ...result } = await caller["verbrauchsausweis-gewerbe"]._id.GET.fetch(null, {
|
||||
headers: {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
id
|
||||
}
|
||||
});
|
||||
ausweis = await getVerbrauchsausweisGewerbe(id) as VerbrauchsausweisGewerbe
|
||||
|
||||
ausweis = result
|
||||
|
||||
aufnahme = await caller.aufnahme._id.GET.fetch(null, {
|
||||
headers: {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
id: aufnahme_id
|
||||
}
|
||||
})
|
||||
|
||||
objekt = await caller.objekt._id.GET.fetch(null, {
|
||||
headers: {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
id: 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: aufnahme_id
|
||||
}
|
||||
})
|
||||
|
||||
if (!ausweis) {
|
||||
// Der Ausweis scheint nicht zu existieren.
|
||||
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
|
||||
return Astro.redirect(
|
||||
"/energieausweis-erstellen/verbrauchsausweis-gewerbe"
|
||||
);
|
||||
}
|
||||
} catch(e) {
|
||||
if (!ausweis || ausweis.benutzer_id !== user.id) {
|
||||
// Der Ausweis scheint nicht zu existieren.
|
||||
// Wir leiten auf die generische Ausweisseite ohne ID weiter.
|
||||
return Astro.redirect(
|
||||
"/energieausweis-erstellen/verbrauchsausweis-gewerbe"
|
||||
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
|
||||
);
|
||||
}
|
||||
|
||||
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 (!valid) {
|
||||
if (!user) {
|
||||
return Astro.redirect(
|
||||
`/auth/login?redirect=${Astro.url.toString()}`
|
||||
);
|
||||
}
|
||||
|
||||
let { objekt_id, ...result} = await caller.aufnahme._id.GET.fetch(null, {
|
||||
headers: {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
id: aufnahme_id
|
||||
}
|
||||
})
|
||||
aufnahme = await getAufnahme(ausweis.aufnahme_id) as Aufnahme
|
||||
|
||||
aufnahme = result;
|
||||
if (!aufnahme) {
|
||||
// Die Aufnahme existiert wohl nicht.
|
||||
return Astro.redirect(
|
||||
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
|
||||
);
|
||||
}
|
||||
|
||||
objekt = await caller.objekt._id.GET.fetch(null, {
|
||||
headers: {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
id: objekt_id
|
||||
}
|
||||
})
|
||||
objekt = await getObjekt(aufnahme.objekt_id) as Objekt
|
||||
|
||||
if (!objekt) {
|
||||
// Das Objekt existiert nicht.
|
||||
return Astro.redirect(
|
||||
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
|
||||
);
|
||||
}
|
||||
}
|
||||
---
|
||||
|
||||
<AusweisLayout title="Verbrauchsausweis Gewerbe erstellen | IBCornelsen">
|
||||
<VerbrauchsausweisGewerbeModule client:only {ausweis} {objekt} {aufnahme} {bilder} {ausweistyp} />
|
||||
<VerbrauchsausweisGewerbeModule client:only {ausweis} {objekt} {aufnahme} {bilder} {ausweistyp} {user} {id} />
|
||||
</AusweisLayout>
|
||||
Reference in New Issue
Block a user