231 lines
8.1 KiB
TypeScript
231 lines
8.1 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, UnterlageClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js";
|
|
import { Enums } from "#lib/client/prisma.js";
|
|
|
|
export async function nachweisSpeichern(
|
|
nachweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient,
|
|
objekt: ObjektClient,
|
|
aufnahme: AufnahmeClient,
|
|
bilder: BildClient[],
|
|
unterlagen: UnterlageClient[],
|
|
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)}`
|
|
}
|
|
})
|
|
|
|
objekt.id = 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,
|
|
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: {
|
|
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,
|
|
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
|
|
},
|
|
objekt_id: objekt.id
|
|
}, {
|
|
headers: {
|
|
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
|
}
|
|
})
|
|
|
|
aufnahme.id = id
|
|
}
|
|
|
|
let patchRoute: any;
|
|
let putRoute: any;
|
|
if (ausweisart == Enums.Ausweisart.GEGNachweisWohnen) {
|
|
patchRoute = api["geg-nachweis-wohnen"]._id.PATCH
|
|
putRoute = api["geg-nachweis-wohnen"].PUT
|
|
} else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) {
|
|
patchRoute = api["geg-nachweis-gewerbe"]._id.PATCH
|
|
putRoute = api["geg-nachweis-gewerbe"].PUT
|
|
} 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,
|
|
uid_aufnahme: aufnahme.id
|
|
}, {
|
|
headers: {
|
|
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
|
}
|
|
})
|
|
|
|
nachweis.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)}`
|
|
}
|
|
})
|
|
|
|
return {
|
|
nachweis_id: nachweis.id,
|
|
aufnahme_id: aufnahme.id,
|
|
objekt_id: objekt.id
|
|
}
|
|
}
|