Files
online-energieausweis/src/client/lib/ausweisSpeichern.ts
2025-03-11 18:54:03 -03:00

253 lines
9.0 KiB
TypeScript

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, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js";
import { Enums } from "#lib/client/prisma.js";
export async function ausweisSpeichern(
ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient,
objekt: ObjektClient,
aufnahme: AufnahmeClient,
bilder: BildClient[],
ausweisart: Enums.Ausweisart
) {
if (objekt.uid) {
await api.objekt._uid.PATCH.fetch({
adresse: objekt.adresse,
latitude: 0,
longitude: 0,
ort: objekt.ort,
plz: objekt.plz
}, {
params: {
uid: objekt.uid
},
headers: {
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
}
})
} else {
const { uid } = 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)}`
}
})
objekt.uid = uid;
}
if (aufnahme.uid) {
await api.aufnahme._uid.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,
ausweisart: aufnahme.ausweisart,
brennstoff_1: aufnahme.brennstoff_1,
brennstoff_2: aufnahme.brennstoff_2,
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,
energieeffizienzklasse: aufnahme.energieeffizienzklasse,
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: {
uid: aufnahme.uid
},
headers: {
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
}
})
} else {
console.log(aufnahme);
const { uid } = 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,
ausweisart: aufnahme.ausweisart,
baujahr_klima: aufnahme.baujahr_klima,
brennstoff_1: aufnahme.brennstoff_1,
brennstoff_2: aufnahme.brennstoff_2,
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,
energieeffizienzklasse: aufnahme.energieeffizienzklasse,
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
},
uid_objekt: objekt.uid
}, {
headers: {
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
}
})
aufnahme.uid = uid
}
let patchRoute: any;
let putRoute: any;
if (ausweisart == Enums.Ausweisart.VerbrauchsausweisWohnen) {
patchRoute = api["verbrauchsausweis-wohnen"]._uid.PATCH
putRoute = api["verbrauchsausweis-wohnen"].PUT
} else if (ausweisart == Enums.Ausweisart.VerbrauchsausweisGewerbe) {
patchRoute = api["verbrauchsausweis-gewerbe"]._uid.PATCH
putRoute = api["verbrauchsausweis-gewerbe"].PUT
} else if (ausweisart == Enums.Ausweisart.BedarfsausweisWohnen) {
patchRoute = api["bedarfsausweis-wohnen"]._uid.PATCH
putRoute = api["bedarfsausweis-wohnen"].PUT
}
if (ausweis.uid) {
await patchRoute.fetch({
...exclude(ausweis, ["uid"])
}, {
params: {
uid: ausweis.uid
},
headers: {
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
}
})
} else {
const { uid } = await putRoute.fetch({
ausweis,
uid_aufnahme: aufnahme.uid
}, {
headers: {
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
}
})
ausweis.uid = uid;
}
await api.aufnahme._uid.bilder.PUT.fetch(bilder.map(bild => bild.uid), {
params: {
uid: aufnahme.uid
},
headers: {
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
}
})
return {
uid_ausweis: ausweis.uid,
uid_aufnahme: aufnahme.uid,
uid_objekt: objekt.uid
}
// await client.v1.tickets.erstellen.mutate({
// titel: "Ausweis konnte nicht gespeichert werden",
// beschreibung: e.stack,
// email: user.email ?? "",
// metadata: JSON.stringify({
// ausweis,
// }),
// });
// addNotification({
// dismissable: false,
// message:
// "Ausweis konnte nicht gespeichert werden, bitte versuchen sie es erneut.",
// subtext:
// "Sollte das Problem weiterhin bestehen, kontaktieren sie bitte den Support.",
// timeout: 6000,
// type: "error",
// });
return null;
}