Datenbank und Checkliste

This commit is contained in:
Moritz Utcke
2025-04-06 23:21:55 -04:00
parent b7f9649036
commit f1bb2fc55c
43 changed files with 928 additions and 2480 deletions

View File

@@ -57,4 +57,13 @@ export function getZodBaseType(schema: ZodType<any>): ZodType<any> {
return getZodBaseType(schema._def.schema)
}
return schema;
}
export function getMaximumDevitationInPercent(...numbers: number[]) {
const min = Math.min(...numbers) || 1;
const max = Math.min(...numbers) || 1;
const deviation = max - min;
return deviation / min * 100;
}

View File

@@ -23,6 +23,7 @@
export let showWeiter: boolean = true;
export let showHelpButton: boolean = true;
export let partner_code: string;
export let ausweistyp: AusweisTyp = Enums.AusweisTyp.Standard;
@@ -83,7 +84,8 @@
bilder,
unterlagen,
ausweisart,
ausweistyp
ausweistyp,
partner_code
}, "")
} else {
openWindowWithPost("/kundendaten", {
@@ -93,7 +95,8 @@
bilder,
unterlagen,
ausweisart,
ausweistyp
ausweistyp,
partner_code
}, "")
}
}

View File

@@ -98,7 +98,7 @@ export type OptionalNullable<T> = T extends object ? {
} : T;
export const UUidWithPrefix = z.string().refine((value) => {
const prefixedUUidRegex = /^([A-Z]{2})[0-9A-Z]{6}$/i
const prefixedUUidRegex = /^([A-Z]{2})[0-9A-Z]{6,8}$/i
const match = value.match(prefixedUUidRegex)

View File

@@ -26,9 +26,9 @@
<a href="/pdf/ansichtsausweis?id={ausweis.id}" target="_blank">
<div class="inline-block border rounded-lg bg-white">
{#if ausweis?.ausgestellt}
<img src="/images/dashboard/ausweishaken.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
<img src="/images/dashboard/AusweisHaken.svg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{:else}
<img src="/images/dashboard/ausweiskreuz.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
<img src="/images/dashboard/AusweisKreuz.svg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{/if}
</div>
<div class="text-sm text-center">Energieausweis</div>
@@ -39,9 +39,9 @@
<a href="/pdf/ansichtsausweis?id={ausweis.id}" target="_blank">
<div class="inline-block border rounded-lg bg-white">
{#if ausweis?.ausgestellt}
<img src="/images/dashboard/ausweishaken.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
<img src="/images/dashboard/AusweisHaken.svg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{:else}
<img src="/images/dashboard/ausweiskreuz.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
<img src="/images/dashboard/AusweisKreuz.svg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{/if}
</div>
<div class="text-sm text-center">Energieausweis</div>
@@ -52,9 +52,9 @@
<a href="/pdf/ansichtsausweis?id={ausweis.id}" target="_blank">
<div class="inline-block border rounded-lg bg-white">
{#if ausweis?.ausgestellt}
<img src="/images/dashboard/ausweishaken.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
<img src="/images/dashboard/AusweisHaken.svg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{:else}
<img src="/images/dashboard/ausweiskreuz.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
<img src="/images/dashboard/AusweisKreuz.svg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{/if}
</div>
<div class="text-sm text-center">Energieausweis</div>

View File

@@ -24,5 +24,6 @@ export const RechnungSchema = z.object({
bezahlt_am: z.date().nullish(),
storniert_am: z.date().nullish(),
transaktions_referenz: z.string().nullish(),
partner_code: z.string().nullish(),
benutzer_id: z.string(),
})

View File

@@ -1,5 +1,4 @@
import { Enums } from "#lib/client/prisma.js";
import { S3Client } from "@aws-sdk/client-s3";
export const API_ACCESS_TOKEN_COOKIE_NAME = "accessToken";
export const API_REFRESH_TOKEN_COOKIE_NAME = "refreshToken";

View File

@@ -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 { BedarfsausweisGewerbe, Bezahlmethoden, GEGNachweisGewerbe, GEGNachweisWohnen, Unterlage } from "#lib/client/prisma.js";
import type { BedarfsausweisGewerbe, BedarfsausweisWohnen, Bezahlmethoden, GEGNachweisGewerbe, GEGNachweisWohnen, Unterlage, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "#lib/client/prisma.js";
import { Enums } from "#lib/client/prisma.js";
import {
API_ACCESS_TOKEN_COOKIE_NAME,
@@ -15,7 +15,6 @@
BildClient,
ObjektClient,
RechnungClient,
UnterlageClient,
VerbrauchsausweisWohnenClient,
} from "#components/Ausweis/types.js";
import { validateAccessTokenClient } from "src/client/lib/validateAccessToken.js";
@@ -30,9 +29,12 @@
import HelpLabel from "#components/labels/HelpLabel.svelte";
import InputLabel from "#components/labels/InputLabel.svelte";
import PlzSuche from "#components/PlzSuche.svelte";
import { getMaximumDevitationInPercent } from "#client/lib/helpers.js";
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.js";
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.js";
export let user: Partial<BenutzerClient>;
export let ausweis: VerbrauchsausweisWohnenClient;
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbe | BedarfsausweisWohnen;
export let aufnahme: AufnahmeClient;
export let objekt: ObjektClient;
export let bilder: BildClient[];
@@ -41,6 +43,8 @@
export let ausweisart: Enums.Ausweisart;
export let aktiveBezahlmethode: Bezahlmethoden = Enums.Bezahlmethoden.paypal;
export let partner_code: string;
let email: string, vorname: string, name: string, empfaenger: string, strasse: string, plz: string, ort: string, zusatzzeile: string, telefon: string;
@@ -185,6 +189,15 @@
return;
}
if (!result) {
addNotification({
dismissable: true,
message: "Ups... Das hat nicht geklappt.",
subtext: "Speichern ist fehlgeschlagen, bitte versuchen sie es erneut oder kontaktieren sie unseren Support."
})
return;
}
try {
const { id } = await api.rechnung.anfordern.PUT.fetch(
{
@@ -350,7 +363,8 @@
versand_plz: versand_plz,
versand_ort: versand_ort,
telefon: telefon,
ausweis_id: ausweis.id
ausweis_id: ausweis.id,
partner_code
},
{
headers: {
@@ -903,25 +917,105 @@ grid-cols-3 sm:grid-cols-5 justify-around justify-items-center items-center"
</div>
{/if}
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen || ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe || ausweisart === Enums.Ausweisart.BedarfsausweisWohnen}
<div class="grid grid-cols-1 sm:grid-cols-1 gap-x-6 my-6">
<div class="pruefpunkte bereich-box bg-white">
<h3>Bitte untenstehende Punkte bestätigen. Bitte gehen Sie gegebenenfalls zurück zum Formular und überprüfen bzw. korrigieren Ihre Eingaben.</h3>
<!-- Verbrauchsausweis Wohnen, Gewerbe [altes System: $ausweis->baujahr_anlage < (intval(date("Y")) - 3)] -->
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Das Heizungsalter ist jünger als 3 Jahre. Es handelt sich hier um einen Heizungstausch ohne energetische Verbesserung.
</div>
</div>
<!-- Verbrauchsausweis Wohnen und Bedarfsausweis Wohnen [altes System: $ausweis->wohnflaeche >= $ausweis->anzahl_einheiten * 30] -->
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Die Angabe der Wohnfläche ist korrekt und bezieht sich auf das gesamte Gebäude.
</div>
</div>
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen || ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe}
{@const request = ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen ? endEnergieVerbrauchVerbrauchsausweis_2016(ausweis, aufnahme, objekt) : endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis, aufnahme, objekt)}
{#await request}
{:then berechnungen}
<!-- Verbrauchsausweis Wohnen, Gewerbe [altes System: $ausweis->baujahr_anlage < (intval(date("Y")) - 3)] -->
{#if (aufnahme.baujahr_heizung.at(-1) || new Date().getFullYear()) >= (new Date().getFullYear() - 3)}
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Das Heizungsalter ist jünger als 3 Jahre. Es handelt sich hier um einen Heizungstausch ohne energetische Verbesserung.
</div>
</div>
{/if}
<!-- Verbrauchsausweis Wohnen, Gewerbe -->
<!-- Bei besonders niedrigem Endenergieverbrauch [altes System: $result->endEnergieVerbrauchGesamt < 40] -->
{#if (berechnungen?.endEnergieVerbrauchGesamt || 0) < 40}
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Ich habe die Verbrauchsangaben nochmal kontrolliert. Der ungewöhnlich niedrige Energiekennwert ist korrekt, da es sich um ein besonders effizientes Gebäude mit z.B. Wärmepumpe handelt.
</div>
</div>
{/if}
<!-- Verbrauchsausweis Wohnen, Gewerbe -->
<!-- Bei besonders hohem Endenergieverbrauch [altes System: $result->endEnergieVerbrauchGesamt > 450] -->
{#if (berechnungen?.endEnergieVerbrauchGesamt || 0) > 450}
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Ich habe die Verbrauchsangaben nochmal kontrolliert. Der ungewöhnlich hohe Energiekennwert ist korrekt, da es sich um ein sehr altes ungedämmtes Gebäude mit z.B. Einfachverglasung handelt.
</div>
</div>
{/if}
<!-- Verbrauchsausweis Wohnen, Gewerbe [altes System: $ausweis->energieverbrauch_1_heizquelle_1 > 0 && $ausweis->energieverbrauch_2_heizquelle_1 > 0
&& $ausweis->energieverbrauch_3_heizquelle_1 > 0] -->
{#if ausweis.verbrauch_1 == 0 || ausweis.verbrauch_2 == 0 || ausweis.verbrauch_3 == 0}
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Die eingegebenen Heizverbräuche sind korrekt und alle 3 Felder wurden vollständig eingegeben.
</div>
</div>
{/if}
<!-- Verbrauchsausweis Wohnen, Gewerbe [altes System: getMaximumDevitationInPercent([$ausweis->energieverbrauch_1_heizquelle_1,
$ausweis->energieverbrauch_2_heizquelle_1, $ausweis->energieverbrauch_3_heizquelle_1]) < 50] -->
{#if getMaximumDevitationInPercent(ausweis.verbrauch_1 || 0, ausweis.verbrauch_2 || 0, ausweis.verbrauch_3 || 0) > 50}
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Die eingegebenen Heizverbräuche sind korrekt und die Abweichung bei den Verbrauchsjahren lässt sich begründen. Falls es Leerstand gab, wurde
dieser im Formular von mir angegeben.
</div>
</div>
{/if}
{/await}
{/if}
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen || ausweisart === Enums.Ausweisart.BedarfsausweisWohnen}
<!-- Verbrauchsausweis Wohnen und Bedarfsausweis Wohnen [altes System: $ausweis->wohnflaeche >= $ausweis->anzahl_einheiten * 30] -->
{#if aufnahme.flaeche || 0 < (aufnahme.einheiten || 0) * 30}
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Die Angabe der Wohnfläche ist korrekt und bezieht sich auf das gesamte Gebäude.
</div>
</div>
{/if}
{/if}
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe}
<!-- Zusätzlich beim Verbrauchsausweis Gewerbe [altes System: $ausweis->vanw_strom_1 > 0 && $ausweis->vanw_strom_2 > 0 && $ausweis->vanw_strom_3 > 0] -->
{#if ausweis.strom_1 == 0 || ausweis.strom_2 == 0 || ausweis.strom_3 == 0}
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Die eingegebenen Stromverbräuche sind korrekt und alle 3 Felder wurden vollständig eingegeben.
</div>
</div>
{/if}
<!-- Zusätzlich beim Verbrauchsausweis Gewerbe [altes System: getMaximumDevitationInPercent([$ausweis->vanw_strom_1, $ausweis->vanw_strom_2, $ausweis->vanw_strom_3]) < 50] -->
{#if getMaximumDevitationInPercent(ausweis.strom_1 || 0, ausweis.strom_2 || 0, ausweis.strom_3 || 0) > 50}
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Die eingegebenen Stromverbräuche sind korrekt und die Abweichung bei den Verbrauchsjahren lässt sich begründen. Falls es Leerstand gab, wurde
dieser im Formular von mir angegeben.
</div>
</div>
{/if}
{/if}
<!-- Verbrauchsausweis Wohnen, Gewerbe und Bedarfsausweis Wohnen
[altes System: !!db()->one("SELECT * FROM FORM WHERE zipcode = :zipcode", ["zipcode" => $ausweis->objekt_plz])] -->
<div class="pruefpunkt">
@@ -931,99 +1025,66 @@ grid-cols-3 sm:grid-cols-5 justify-around justify-items-center items-center"
</div>
</div>
<!-- Verbrauchsausweis Wohnen, Gewerbe und Bedarfsausweis Wohnen [altes System: $ausweis->baujahr_anlage >= $ausweis->baujahr_gebaeude] -->
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Das Baujahr der Heizungsanlage ist kleiner als das Baujahr des Gebäudes und befründet.
{#if aufnahme.baujahr_heizung.at(-1) || 0 < aufnahme.baujahr_gebaeude[0] || 0}
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Das Baujahr der Heizungsanlage ist kleiner als das Baujahr des Gebäudes und begründet.
</div>
</div>
</div>
<!-- Verbrauchsausweis Wohnen, Gewerbe [altes System: $ausweis->energieverbrauch_1_heizquelle_1 > 0 && $ausweis->energieverbrauch_2_heizquelle_1 > 0
&& $ausweis->energieverbrauch_3_heizquelle_1 > 0] -->
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Die eingegebenen Heizverbräuche sind korrekt und alle 3 Felder wurden vollständig eingegeben.
</div>
</div>
<!-- Verbrauchsausweis Wohnen, Gewerbe [altes System: getMaximumDevitationInPercent([$ausweis->energieverbrauch_1_heizquelle_1,
$ausweis->energieverbrauch_2_heizquelle_1, $ausweis->energieverbrauch_3_heizquelle_1]) < 50] -->
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Die eingegebenen Heizverbräuche sind korrekt und die Abweichung bei den Verbrauchsjahren lässt sich begründen. Falls es Leerstand gab, wurde
dieser im Formular von mir angegeben.
</div>
</div>
<!-- Zusätzlich beim Verbrauchsausweis Gewerbe [altes System: $ausweis->vanw_strom_1 > 0 && $ausweis->vanw_strom_2 > 0 && $ausweis->vanw_strom_3 > 0] -->
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Die eingegebenen Stromverbräuche sind korrekt und alle 3 Felder wurden vollständig eingegeben.
</div>
</div>
<!-- Zusätzlich beim Verbrauchsausweis Gewerbe [altes System: getMaximumDevitationInPercent([$ausweis->vanw_strom_1, $ausweis->vanw_strom_2, $ausweis->vanw_strom_3]) < 50] -->
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Die eingegebenen Stromverbräuche sind korrekt und die Abweichung bei den Verbrauchsjahren lässt sich begründen. Falls es Leerstand gab, wurde
dieser im Formular von mir angegeben.
</div>
</div>
<!-- Verbrauchsausweis Wohnen, Gewerbe -->
<!-- Bei besonders niedrigem Endenergieverbrauch [altes System: $result->endEnergieVerbrauchGesamt < 40] -->
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Ich habe die Verbrauchsangaben nochmal kontrolliert. Der ungewöhnlich niedrige Energiekennwert ist korrekt, da es sich um ein besonders effizientes Gebäude mit z.B. Wärmepumpe handelt.
</div>
</div>
<!-- Verbrauchsausweis Wohnen, Gewerbe -->
<!-- Bei besonders hohem Endenergieverbrauch [altes System: $result->endEnergieVerbrauchGesamt > 450] -->
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Ich habe die Verbrauchsangaben nochmal kontrolliert. Der ungewöhnlich hohe Energiekennwert ist korrekt, da es sich um ein sehr altes ungedämmtes Gebäude mit z.B. Einfachverglasung handelt.
</div>
</div>
<!-- Verbrauchsausweis Wohnen [altes System: $ausweis->anteil_warmwasser_1 < 6 OR $ausweis->anteil_warmwasser_1 > 40] -->
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Ich habe den Warmwasseranteil nochmal überprüft. Dieser ist korrekt und begründet.
</div>
</div>
<!-- Zusätzlich beim Bedarfsausweis [altes System: $ausweis->wohnflaeche < $ausweis->energetische_nutzfläche] -->
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Ich habe die Wohnfläche nochmal überprüft und bestätige die Richtigkeit. Es handelt sich lediglich um die Wohnfläche innerhalb des Gebäudes. Flächen von eventuell vorhandenen Terassen und Balkonen wurden nicht mitgezählt.
</div>
</div>
<!-- Zusätzlich beim Bedarfsausweis [altes System: ($result->AHF / ($ausweis->volumen ?: 1)) > 1.4 OR ($result->AHF / ($ausweis->volumen ?: 1)) < 0.18] -->
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Ich habe die Angaben zur Gebäudegeometrie geprüft und bestätige die Richtigkeit.
</div>
</div>
<!-- Zusätzlich beim Bedarfsausweis [altes System: getPortionInPercent(($ausweis->fenster_flaeche_1 + $ausweis->fenster_flaeche_2), $ausweis->aussenwand_flaeche) < 5 OR
getPortionInPercent(($ausweis->fenster_flaeche_1 + $ausweis->fenster_flaeche_2), $ausweis->aussenwand_flaeche) > 70] -->
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Ich habe die Angaben zu den Fensterflächen geprüft und bestätige die Richtigkeit.
</div>
</div>
{/if}
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen}
<!-- Verbrauchsausweis Wohnen [altes System: $ausweis->anteil_warmwasser_1 < 6 OR $ausweis->anteil_warmwasser_1 > 40] -->
{#if ausweis.anteil_warmwasser_1 < 6 || ausweis.anteil_warmwasser_1 > 40}
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Ich habe den Warmwasseranteil nochmal überprüft. Dieser ist korrekt und begründet.
</div>
</div>
{/if}
{/if}
{#if ausweisart === Enums.Ausweisart.BedarfsausweisWohnen}
<!-- Zusätzlich beim Bedarfsausweis [altes System: $ausweis->wohnflaeche < $ausweis->energetische_nutzfläche] -->
{#if ausweis.flaeche < ausweis.nutzflaeche}
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Ich habe die Wohnfläche nochmal überprüft und bestätige die Richtigkeit. Es handelt sich lediglich um die Wohnfläche innerhalb des Gebäudes. Flächen von eventuell vorhandenen Terassen und Balkonen wurden nicht mitgezählt.
</div>
</div>
{/if}
<!-- Zusätzlich beim Bedarfsausweis [altes System: ($result->AHF / ($ausweis->volumen ?: 1)) > 1.4 OR ($result->AHF / ($ausweis->volumen ?: 1)) < 0.18] -->
<!-- TODO -->
<!-- <div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Ich habe die Angaben zur Gebäudegeometrie geprüft und bestätige die Richtigkeit.
</div>
</div> -->
<!-- Zusätzlich beim Bedarfsausweis [altes System: getPortionInPercent(($ausweis->fenster_flaeche_1 + $ausweis->fenster_flaeche_2), $ausweis->aussenwand_flaeche) < 5 OR
getPortionInPercent(($ausweis->fenster_flaeche_1 + $ausweis->fenster_flaeche_2), $ausweis->aussenwand_flaeche) > 70] -->
<!-- <div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Ich habe die Angaben zu den Fensterflächen geprüft und bestätige die Richtigkeit.
</div>
</div> -->
{/if}
<!-- Für alle -->
<div class="pruefpunkt">
<input type="checkbox"/>
<div class="text-left">
Ich habe die AGB und DSGVO im <a href="/impressum#agb" target="_blank" rel="noopener noreferrer">Impressum</a> gelesen und akzeptiert.
</div>
</div>
</div>
</div>
</div>
{/if}
<div

View File

@@ -56,6 +56,7 @@
export let bilder: BildClient[];
export let ausweistyp: Enums.AusweisTyp;
export let id: string | null;
export let partner_code: string;
export let loadFromDatabase: boolean = false;
@@ -270,6 +271,7 @@ let skala: HTMLDivElement;
ausweisart={Enums.Ausweisart.VerbrauchsausweisWohnen}
{ausweistyp}
{skala}
{partner_code}
>
</ButtonWeiterHilfe>

View File

@@ -1,13 +1,14 @@
---
import AusweisLayout from "#layouts/AusweisLayoutDaten_partner.astro";
import GEGNachweisWohnenModule from "#modules/angebot-anfragen/GEGNachweisWohnenModule.svelte";
import { Aufnahme, Bild, Enums, GEGNachweisWohnen, Objekt, Unterlage, VerbrauchsausweisWohnen } from "#lib/server/prisma";
import { getVerbrauchsausweisWohnen, getAufnahme, getObjekt, getBilder, getGEGNachweisWohnen, getUnterlagen } from "#lib/server/db";
import { Aufnahme, Bild, Enums, GEGNachweisWohnen, Objekt, Unterlage } from "#lib/server/prisma";
import { getAufnahme, getObjekt, getBilder, getGEGNachweisWohnen, getUnterlagen } from "#lib/server/db";
import { getCurrentUser } from "#lib/server/user";
const id = Astro.url.searchParams.get("id");
const aufnahme_id = Astro.url.searchParams.get("aufnahme")
let nachweistyp = Astro.url.searchParams.get("nachweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
const partner_code = Astro.params.partner_code
let nachweis: GEGNachweisWohnen = {} as GEGNachweisWohnen;
let aufnahme: Aufnahme = {} as Aufnahme;

View File

@@ -1,14 +1,23 @@
import { getAusweisartFromId } from "#components/Ausweis/types.js";
import { adminMiddleware } from "#lib/middleware/authorization.js";
import { Enums, prisma } from "#lib/server/prisma.js";
import {
Aufnahme,
BedarfsausweisWohnen,
Benutzer,
Bild,
Enums,
Objekt,
prisma,
VerbrauchsausweisGewerbe,
VerbrauchsausweisWohnen,
} from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { z } from "astro:content";
import { fileURLToPath } from "url";
import * as fs from "fs";
import { transport } from "#lib/mail.js";
import { BASE_URI } from "#lib/constants.js";
import { getAnsichtsausweis, getDatenblatt } from "#lib/server/ausweis.js";
import { PERSISTENT_DIR } from "#lib/server/constants.js";
import { PutObjectCommand } from "@aws-sdk/client-s3";
import { s3Client } from "#lib/s3.js";
export const GET = defineApiRoute({
input: z.object({
@@ -19,10 +28,25 @@ export const GET = defineApiRoute({
async fetch({ id_ausweis }, context, user) {
const ausweisart = getAusweisartFromId(id_ausweis);
if (ausweisart === "VerbrauchsausweisWohnen") {
const ausweis = await prisma.verbrauchsausweisWohnen.findUnique({
let ausweis:
| ((
| VerbrauchsausweisGewerbe
| VerbrauchsausweisWohnen
| BedarfsausweisWohnen
) & {
aufnahme: Aufnahme & {
bilder: Bild[];
objekt: Objekt & {
benutzer: Benutzer;
};
};
})
| null = null;
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
ausweis = await prisma.verbrauchsausweisWohnen.findUnique({
where: {
id: id_ausweis
id: id_ausweis,
},
include: {
aufnahme: {
@@ -37,89 +61,133 @@ export const GET = defineApiRoute({
},
},
});
if (!ausweis) {
throw new APIError({
code: "BAD_REQUEST",
message: "Ausweis existiert nicht.",
});
}
const rechnung = await prisma.rechnung.findFirst({
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
ausweis = await prisma.verbrauchsausweisGewerbe.findUnique({
where: {
verbrauchsausweis_wohnen: {
id: id_ausweis
id: id_ausweis,
},
include: {
aufnahme: {
include: {
bilder: true,
objekt: {
include: {
benutzer: true,
},
},
},
},
},
orderBy: {
erstellt_am: "desc",
});
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
ausweis = await prisma.bedarfsausweisWohnen.findUnique({
where: {
id: id_ausweis,
},
include: {
aufnahme: {
include: {
bilder: true,
objekt: {
include: {
benutzer: true,
},
},
},
},
},
});
}
if (!rechnung) {
throw new APIError({
code: "BAD_REQUEST",
message:
"Die Rechnung wurde noch nicht erstellt, wir können nicht fortfahren.",
});
}
if (!ausweis) {
throw new APIError({
code: "BAD_REQUEST",
message: "Ausweis existiert nicht.",
});
}
// TODO
// SECTION: Rechnung erstellen (LexOffice)
// Wir wollen die Rechnung an lex office versenden, und uns die ID von da holen.
// Falls die Rechnung bereits existiert ist das nicht nötig.
// if (!$rechnung->lex_office_id) {
// [$lex_office_id, $renr] = createInvoice($ausweis, $rechnung);
// sleep(1); // TODO: Nach der Umstellung von LexOffice auf etwas anderes MUSS das hier unbedingt entfernt werden!
const rechnung = await prisma.rechnung.findFirst({
where: {
verbrauchsausweis_wohnen: {
id: id_ausweis,
},
},
orderBy: {
erstellt_am: "desc",
},
});
// if (!$lex_office_id || !$renr) {
// die("Bei der Erstellung der Rechnung ist etwas schiefgelaufen - Möglicherweise ist etwas mit LexOffice?");
// }
if (!rechnung) {
throw new APIError({
code: "BAD_REQUEST",
message:
"Die Rechnung wurde noch nicht erstellt, wir können nicht fortfahren.",
});
}
// $rechnung->lex_office_id = $lex_office_id;
// $rechnung->rechnungsnummer = $renr;
// $rechnung->save();
// }
// TODO
// SECTION: Rechnung erstellen (LexOffice)
// Wir wollen die Rechnung an lex office versenden, und uns die ID von da holen.
// Falls die Rechnung bereits existiert ist das nicht nötig.
// if (!$rechnung->lex_office_id) {
// [$lex_office_id, $renr] = createInvoice($ausweis, $rechnung);
// sleep(1); // TODO: Nach der Umstellung von LexOffice auf etwas anderes MUSS das hier unbedingt entfernt werden!
// TODO
// if ($ausweis->erledigt != 2) {$ausweis->erstellungsdatum = date("Y-m-d H:i:s");}
// $ausweis->erledigt = 2;
// $ausweis->save();
// if (!$lex_office_id || !$renr) {
// die("Bei der Erstellung der Rechnung ist etwas schiefgelaufen - Möglicherweise ist etwas mit LexOffice?");
// }
const pdfAusweis = await getAnsichtsausweis(ausweis, ausweis.aufnahme, ausweis.aufnahme.objekt, ausweis.aufnahme.bilder, ausweis.aufnahme.objekt.benutzer)
const pdfDatenblatt = await getDatenblatt(
ausweis,
ausweis.aufnahme,
ausweis.aufnahme.objekt,
ausweis.aufnahme.bilder,
ausweis.aufnahme.objekt.benutzer
);
// $rechnung->lex_office_id = $lex_office_id;
// $rechnung->rechnungsnummer = $renr;
// $rechnung->save();
// }
if (pdfAusweis) {
const pdfAusweisPath = fileURLToPath(
new URL(
`${PERSISTENT_DIR}/generated/Ausweis-${ausweis.id}.pdf`,
import.meta.url
)
);
fs.writeFileSync(pdfAusweisPath, pdfAusweis);
}
// TODO
// if ($ausweis->erledigt != 2) {$ausweis->erstellungsdatum = date("Y-m-d H:i:s");}
// $ausweis->erledigt = 2;
// $ausweis->save();
if (pdfDatenblatt) {
const pdfDatenblattPath = fileURLToPath(
new URL(
`${PERSISTENT_DIR}/generated/Datenblatt-${ausweis.id}.pdf`,
import.meta.url
)
);
fs.writeFileSync(pdfDatenblattPath, pdfDatenblatt);
}
const pdfAusweis = await getAnsichtsausweis(
ausweis,
ausweis.aufnahme,
ausweis.aufnahme.objekt,
ausweis.aufnahme.bilder,
ausweis.aufnahme.objekt.benutzer
);
const pdfDatenblatt = await getDatenblatt(
ausweis,
ausweis.aufnahme,
ausweis.aufnahme.objekt,
ausweis.aufnahme.bilder,
ausweis.aufnahme.objekt.benutzer
);
let text: string;
if (pdfAusweis) {
const command = new PutObjectCommand({
Bucket: "ibc-pdfs",
Key: `ID_${ausweis.id}_Energieausweis.pdf`,
Body: pdfAusweis,
ACL: "private",
});
if (rechnung.status === Enums.Rechnungsstatus.paid) {
text = `
const response = await s3Client.send(command);
}
if (pdfDatenblatt) {
const command = new PutObjectCommand({
Bucket: "ibc-pdfs",
Key: `ID_${ausweis.id}_Energieausweis.pdf`,
Body: pdfDatenblatt,
ACL: "private",
});
const response = await s3Client.send(command);
}
let text: string;
if (rechnung.status === Enums.Rechnungsstatus.paid) {
text = `
<p>Sehr geehrte*r ${user.vorname} ${user.name},</p>
<p>im Anhang finden Sie Ihren geprüften Energieusweis inkl. Rechnung als PDF-Datei. Den Rechnungsbetrag haben Sie bereits bezahlt. Vielen Dank.</p>
@@ -145,8 +213,8 @@ fon 040 · 209339850
<br>
fax 040 · 209339859
</p>`;
} else {
text = `
} else {
text = `
<p>Sehr geehrte*r ${user.vorname} ${user.name},</p>
<p>im Anhang finden Sie Ihren geprüften Energieusweis inkl. Rechnung als PDF-Datei. Nachfolgend finden Sie unsere Bankverbindung. Bitte geben Sie als Verwendungszweck die Rechnungsnummer an (siehe unten). Vielen Dank.</p>
@@ -197,15 +265,13 @@ fon 040 · 209339850
<br>
fax 040 · 209339859
</p>`;
}
await transport.sendMail({
from: `"IBCornelsen" <info@online-energieausweis.org>`,
to: user.email,
subject: `Ihr Originalausweis vom Ingenieurbüro Cornelsen (ID: ${ausweis.id})`,
text,
});
}
await transport.sendMail({
from: `"IBCornelsen" <info@online-energieausweis.org>`,
to: user.email,
subject: `Ihr Originalausweis vom Ingenieurbüro Cornelsen (ID: ${ausweis.id})`,
text,
});
},
});

View File

@@ -49,7 +49,7 @@ export const PUT = defineApiRoute({
// Wir erstellen eine Mollie Payment Referenz und eine neue Rechnung in unserer Datenbank, daraufhin geben
// wir eine Checkout URL zurück auf die der Nutzer weitergeleitet werden kann.
const { ausweis_id, ausweisart, bezahlmethode, services } = input;
const { ausweis_id, ausweisart, bezahlmethode, services, partner_code } = input;
const adapter = getPrismaAusweisAdapter(ausweis_id);
@@ -105,6 +105,7 @@ export const PUT = defineApiRoute({
}
},
services,
partner_code
}
});
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
@@ -121,6 +122,7 @@ export const PUT = defineApiRoute({
}
},
services,
partner_code
}
});
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
@@ -137,6 +139,7 @@ export const PUT = defineApiRoute({
}
},
services,
partner_code
}
});
}

View File

@@ -16,7 +16,7 @@ if (!params.has("ausweis") || !params.has("aufnahme") || !params.has("objekt") |
return Astro.redirect("/404")
}
let ausweis, aufnahme, objekt, ausweisart, bilder, unterlagen;
let ausweis, aufnahme, objekt, ausweisart, bilder, unterlagen, partner_code;
try {
ausweis = JSON.parse(params.get("ausweis") || "")
aufnahme = JSON.parse(params.get("aufnahme") || "")
@@ -24,6 +24,7 @@ try {
ausweisart = JSON.parse(params.get("ausweisart") || "") as Enums.Ausweisart;
bilder = JSON.parse(params.get("bilder") || "");
unterlagen = JSON.parse(params.get("unterlagen") || "[]")
partner_code = params.get("partner_code") || ""
if (!ausweisart || !Object.keys(Enums.Ausweisart).includes(ausweisart)) {
throw new Error()
@@ -35,6 +36,6 @@ try {
---
<AusweisLayout title="Kundendaten Aufnehmen - IBCornelsen">
<KundendatenModule {user} {ausweis} {objekt} {aufnahme} {bilder} {ausweisart} {unterlagen} aktiveBezahlmethode={Enums.Bezahlmethoden.paypal} client:only ></KundendatenModule>
<KundendatenModule {user} {ausweis} {objekt} {aufnahme} {bilder} {ausweisart} {unterlagen} {partner_code} aktiveBezahlmethode={Enums.Bezahlmethoden.paypal} client:only ></KundendatenModule>
</AusweisLayout>

View File

@@ -2,11 +2,11 @@ import { AufnahmeClient, BenutzerClient, getAusweisartFromId, ObjektClient, Uplo
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
import { pdfVerbrauchsausweisGewerbe } from "#lib/pdf/pdfVerbrauchsausweisGewerbe.js";
import { pdfVerbrauchsausweisWohnen } from "#lib/pdf/pdfVerbrauchsausweisWohnen.js";
import { Enums } from "#lib/client/prisma.js";
import { BedarfsausweisWohnen, Enums } from "#lib/client/prisma.js";
import { APIRoute } from "astro";
import { createCaller } from "src/astro-typesafe-api-caller.js";
import { getS3File } from "#lib/s3.js";
import { getVerbrauchsausweisWohnen, getVerbrauchsausweisGewerbe, getAufnahme, getObjekt, getBilder } from "#lib/server/db.js";
import { getVerbrauchsausweisWohnen, getVerbrauchsausweisGewerbe, getAufnahme, getObjekt, getBilder, getBedarfsausweisWohnen } from "#lib/server/db.js";
import { getCurrentUser } from "#lib/server/user.js";
export const GET: APIRoute = async (Astro) => {
@@ -18,7 +18,7 @@ export const GET: APIRoute = async (Astro) => {
const ausweisart = getAusweisartFromId(ausweis_id)
let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | null = null;
let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnen | null = null;
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
let objekt: ObjektClient = {} as ObjektClient;
let user: BenutzerClient = {} as BenutzerClient;
@@ -28,9 +28,10 @@ export const GET: APIRoute = async (Astro) => {
ausweis = await getVerbrauchsausweisWohnen(ausweis_id)
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
ausweis = await getVerbrauchsausweisGewerbe(ausweis_id)
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
ausweis = await getBedarfsausweisWohnen(ausweis_id)
}
if (!ausweis) {
return new Response(null, { status: 404 });
}
@@ -44,9 +45,10 @@ export const GET: APIRoute = async (Astro) => {
user = await getCurrentUser(Astro)
let pdf: Uint8Array<ArrayBufferLike> | null = null;
if (ausweis.alte_ausweis_id) {
if (/[A-Z]{2}[0-9]{8}/.test(ausweis.id)) {
const id = ausweis.id.match(/[A-Z]{2}([0-9]{8})/) as RegExpMatchArray
// Dieser Ausweis wurde mit der alten Version erstellt, das PDF sollte bereits existieren.
pdf = await getS3File("ibc-pdfs", `ID_${ausweis.alte_ausweis_id}_Energieausweis.pdf`)
pdf = await getS3File("ibc-pdfs", `ID_${id[1]}_Energieausweis.pdf`)
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
pdf = await pdfVerbrauchsausweisWohnen(ausweis as VerbrauchsausweisWohnenClient, aufnahme, objekt, bilder, user);
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
@@ -73,7 +75,7 @@ export const POST: APIRoute = async (Astro) => {
const ausweisart: Enums.Ausweisart = JSON.parse(params.get("ausweisart") || "")
let user: BenutzerClient = {};
let user: BenutzerClient = {} as BenutzerClient;
try {
user = await caller.user.self.GET.fetch(undefined, {

View File

@@ -44,9 +44,10 @@ export const GET: APIRoute = async (Astro) => {
user = await getCurrentUser(Astro)
let pdf: Uint8Array<ArrayBufferLike> | null = null;
if (ausweis.alte_ausweis_id) {
if (/[A-Z]{2}[0-9]{8}/.test(ausweis.id)) {
const id = ausweis.id.match(/[A-Z]{2}([0-9]{8})/) as RegExpMatchArray
// Dieser Ausweis wurde mit der alten Version erstellt, das PDF sollte bereits existieren.
pdf = await getS3File("ibc-pdfs", `ID_${ausweis.alte_ausweis_id}_Datenblatt.pdf`)
pdf = await getS3File("ibc-pdfs", `ID_${id[1]}_Datenblatt.pdf`)
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
pdf = await pdfDatenblattVerbrauchsausweisWohnen(ausweis as VerbrauchsausweisWohnenClient, aufnahme, objekt, user, bilder);
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {

View File

@@ -1,6 +1,6 @@
import moment from "moment";
import newUserIdMap from "./new-user-id-map.json" assert { type: "json" };
import processed from "./new-ausweis-id-map.json" assert { type: "json" };
import newUserIdMap from "./new-user-id-map.json" with { type: "json" };
import processed from "./new-ausweis-id-map.json" with { type: "json" };
import { Benutzer, Enums, prisma } from "#lib/server/prisma.js";
import * as fs from "fs";
import { fileURLToPath } from "url";
@@ -25,455 +25,453 @@ if (!fs.existsSync(path)) {
const file = fs.createReadStream(path, "utf8");
Papa.parse(file, {
header: true,
step: async function(results) {
const dataset = results.data as any;
if (dataset.id in processed) {
return;
}
const user_id = dataset.user_id;
let user: Benutzer | null = null;
if (!(user_id in newUserIdMap)) {
console.log(`Missing user ${user_id}`);
if (dataset.email) {
user = await prisma.benutzer.findUnique({
where: {
email: dataset.email
async complete(results, file) {
for (const dataset of results.data as any) {
if (dataset.id in processed) {
return;
}
const user_id = dataset.user_id;
let user: Benutzer | null = null;
if (!(user_id in newUserIdMap)) {
console.log(`Missing user ${user_id}`);
const email = dataset.email || dataset.rechnung_email
if (email) {
user = await prisma.benutzer.findUnique({
where: {
email
}
})
if (!user) {
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.User)
user = await prisma.benutzer.create({
data: {
id,
email,
passwort: hashPassword(Math.random().toString(36).slice(-8)),
adresse: dataset.strasse,
ort: dataset.ort,
plz: dataset.plz,
name: dataset.name,
vorname: dataset.vorname,
rolle: Enums.BenutzerRolle.USER,
telefon: dataset.telefonnummer,
},
});
}
newUserIdMap[user_id] = user.id;
saveUserMap();
}
})
if (!user) {
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.User)
user = await prisma.benutzer.create({
data: {
id,
email: dataset.email,
passwort: hashPassword(Math.random().toString(36).slice(-8)),
adresse: dataset.strasse,
ort: dataset.ort,
plz: dataset.plz,
name: dataset.name,
vorname: dataset.vorname,
rolle: Enums.BenutzerRolle.USER,
telefon: dataset.telefonnummer,
} else {
user = await prisma.benutzer.findUnique({
where: {
id: newUserIdMap[user_id],
},
});
}
newUserIdMap[user_id] = user.id;
saveUserMap();
}
} else {
user = await prisma.benutzer.findUnique({
where: {
id: newUserIdMap[user_id],
},
});
}
if (!user) {
saveProcessed();
// throw new Error("Benutzer ist nicht vorhanden.");
return
}
const objekt_id = generatePrefixedId(6, VALID_UUID_PREFIXES.Objekt)
const objekt = await prisma.objekt.create({
data: {
id: objekt_id,
adresse: dataset.objekt_strasse,
erstellungsdatum: moment(dataset.erstellungsdatum).toDate(),
ort: dataset.objekt_ort,
plz: dataset.objekt_plz,
benutzer: {
connect: {
id: user.id,
},
},
},
});
const aufnahme_id = generatePrefixedId(6, VALID_UUID_PREFIXES.Objekt)
const aufnahme = await prisma.aufnahme.create({
data: {
id: aufnahme_id,
alternative_heizung: dataset.alheizung == "1",
alternative_kuehlung: dataset.alkuehlung == "1",
alternative_lueftung: dataset.allueftung == "1",
alternative_warmwasser: dataset.alwarmwasser == "1",
aussenwand_gedaemmt: dataset.aussenwand_gedaemmt == "1",
aussenwand_min_12cm_gedaemmt:
dataset.aussenwand_min_12cm_gedaemmt == "1",
baujahr_gebaeude: parseInt(dataset.baujahr_gebaeude) ? [parseInt(dataset.baujahr_gebaeude)] : [],
baujahr_heizung: parseInt(dataset.baujahr_anlage) ? [parseInt(dataset.baujahr_anlage)] : [],
baujahr_klima: parseInt(dataset.baujahr_klimaanlage) ? [parseInt(dataset.baujahr_klimaanlage)] : [],
benutzer: {
connect: {
id: user.id,
},
},
objekt: {
connect: {
id: objekt.id,
},
},
dachgeschoss:
dataset.dachgeschoss == "Beheizt"
? Enums.Heizungsstatus.BEHEIZT
: dataset.dachgeschoss == "Nicht Vorhanden"
? Enums.Heizungsstatus.NICHT_VORHANDEN
: Enums.Heizungsstatus.UNBEHEIZT,
brennwert_kessel: dataset.brennwert_kessel == "1",
dachgeschoss_gedaemmt: dataset.dachgeschoss_gedaemmt == "1",
dachgeschoss_min_12cm_gedaemmt:
dataset.dachgeschoss_min_12cm_gedaemmt == "1",
doppel_verglasung: dataset.doppel_verglasung == "1",
dreifach_verglasung: dataset.dreifach_verglasung == "1",
durchlauf_erhitzer: dataset.durchlauf_erhitzer == "1",
einfach_verglasung: dataset.einfach_verglasung == "1",
einzelofen: dataset.einzelofen == "1",
einheiten: parseInt(dataset.anzahl_einheiten),
fenster_dicht: dataset.fenster_dicht == "1",
fenster_teilweise_undicht:
dataset.fenster_teilweise_undicht == "1",
flaeche: parseFloat(dataset.wohnflaeche),
nutzflaeche: parseFloat(dataset.nutzflaeche),
gebaeudeteil: dataset.objekt_gebaeudeteil,
gebaeudetyp: dataset.objekt_typ,
heizungsrohre_gedaemmt: dataset.heizungsrohre_gedaemmt == "1",
isolier_verglasung: dataset.isolier_verglasung == "1",
keller:
dataset.keller_beheizt == "Beheizt"
? Enums.Heizungsstatus.BEHEIZT
: dataset.dachgeschoss == "Nicht Vorhanden"
? Enums.Heizungsstatus.NICHT_VORHANDEN
: Enums.Heizungsstatus.UNBEHEIZT,
keller_decke_gedaemmt: dataset.keller_decke_gedaemmt == "1",
keller_wand_gedaemmt: dataset.keller_wand_gedaemmt == "1",
kuehlung: dataset.wird_gekuehlt,
erstellungsdatum: moment(dataset.erstellungsdatum).toDate(),
rolllaeden_kaesten_gedaemmt:
dataset.rolllaeden_kaesten_gedaemmt == "1",
leerstand: parseInt(dataset.leerstand),
lueftung:
dataset.lueftungskonzept == "Fensterlüftung"
? Enums.Lueftungskonzept.Fensterlueftung
: dataset.lueftungskonzept ==
"Lüftungsanlage mit Wärmerückgewinnung"
? Enums.Lueftungskonzept
.LueftungsanlageMitWaermerueckgewinnung
: dataset.lueftungskonzept ==
"Lüftungsanlage ohne Wärmerückgewinnung"
? Enums.Lueftungskonzept
.LueftungsanlageOhneWaermerueckgewinnung
: Enums.Lueftungskonzept.Schachtlueftung,
niedertemperatur_kessel: dataset.niedertemperatur_kessel == "1",
oberste_geschossdecke_gedaemmt:
dataset.oberste_geschossdecke_gedaemmt == "1",
oberste_geschossdecke_min_12cm_gedaemmt:
dataset.oberste_geschossdecke_min_12cm_gedaemmt == "1",
photovoltaik: dataset.photovoltaik == "1",
raum_temperatur_regler: dataset.raum_temperatur_regler == "1",
saniert: dataset.objekt_saniert == "1",
solarsystem_warmwasser: dataset.solarsystem_warmwasser == "1",
standard_kessel: dataset.standard_kessel == "1",
tueren_dicht: dataset.tueren_dicht == "1",
tueren_undicht: dataset.tueren_undicht == "1",
waermepumpe: dataset.waermepumpe == "1",
warmwasser_rohre_gedaemmt:
dataset.warmwasser_rohre_gedaemmt == "1",
zentralheizung: dataset.zentralheizung == "1",
zirkulation: dataset.zirkulation == "1",
},
});
/* -------------------------------- Bilder ------------------------------- */
const images: Record<string, string[]> = JSON.parse(dataset.images);
for (const kategorie in images) {
for (const image of images[kategorie]) {
const categoryMap = {
"daemmung": Enums.BilderKategorie.Daemmung,
"fenster": Enums.BilderKategorie.Fenster,
"general": Enums.BilderKategorie.Gebaeude,
"heizung": Enums.BilderKategorie.Heizung
}
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.Bild)
const img = await prisma.bild.create({
data: {
id,
kategorie: categoryMap[kategorie as keyof typeof categoryMap],
aufnahme: {
connect: {
id: aufnahme.id
}
},
name: image
}
})
if (!user) {
saveProcessed();
throw new Error("Benutzer ist nicht vorhanden.");
}
}
if (dataset.ausweisart === "VA") {
const ausweis = await prisma.verbrauchsausweisWohnen.create({
data: {
id: VALID_UUID_PREFIXES.VerbrauchsausweisWohnen + dataset.id,
alternative_heizung: dataset.alheizung == "1",
alternative_kuehlung: dataset.alkuehlung == "1",
alternative_lueftung: dataset.allueftung == "1",
alternative_warmwasser: dataset.alwarmwasser == "1",
anteil_warmwasser_1: parseFloat(
dataset.anteil_warmwasser_1
),
anteil_warmwasser_2: parseFloat(
dataset.anteil_warmwasser_2
),
aufnahme: {
connect: {
id: aufnahme.id,
const objekt_id = generatePrefixedId(6, VALID_UUID_PREFIXES.Objekt)
const objekt = await prisma.objekt.create({
data: {
id: objekt_id,
adresse: dataset.objekt_strasse,
erstellungsdatum: moment(dataset.erstellungsdatum).toDate(),
ort: dataset.objekt_ort,
plz: dataset.objekt_plz,
benutzer: {
connect: {
id: user.id,
},
},
},
ausgestellt: dataset.erledigt == "2",
ausstellgrund:
dataset.ausstellgrund == "Vermietung"
? Enums.Ausstellgrund.Vermietung
: dataset.ausstellgrund == "Verkauf"
? Enums.Ausstellgrund.Verkauf
: dataset.ausstellgrund == "Modernisierung"
? Enums.Ausstellgrund.Modernisierung
: dataset.ausstellgrund == "Neubau"
? Enums.Ausstellgrund.Neubau
: Enums.Ausstellgrund.Sonstiges,
bestellt: dataset.erledigt == "0",
einheit_1: dataset.energietraeger_einheit_heizquelle_1,
einheit_2: dataset.energietraeger_einheit_heizquelle_2,
storniert: dataset.erledigt == "4",
benutzer: {
connect: {
id: user.id,
});
const aufnahme_id = generatePrefixedId(6, VALID_UUID_PREFIXES.Objekt)
const aufnahme = await prisma.aufnahme.create({
data: {
id: aufnahme_id,
alternative_heizung: dataset.alheizung == "1",
alternative_kuehlung: dataset.alkuehlung == "1",
alternative_lueftung: dataset.allueftung == "1",
alternative_warmwasser: dataset.alwarmwasser == "1",
aussenwand_gedaemmt: dataset.aussenwand_gedaemmt == "1",
aussenwand_min_12cm_gedaemmt:
dataset.aussenwand_min_12cm_gedaemmt == "1",
baujahr_gebaeude: parseInt(dataset.baujahr_gebaeude) ? [parseInt(dataset.baujahr_gebaeude)] : [],
baujahr_heizung: parseInt(dataset.baujahr_anlage) ? [parseInt(dataset.baujahr_anlage)] : [],
baujahr_klima: parseInt(dataset.baujahr_klimaanlage) ? [parseInt(dataset.baujahr_klimaanlage)] : [],
benutzer: {
connect: {
id: user.id,
},
},
},
kontrolldatei_angefragt: dataset.kontrolldatei == "1",
registriernummer: dataset.regnummer,
startdatum: moment().set("year", dataset.energieverbrauch_zeitraum_jahr).set("month", dataset.energieverbrauch_zeitraum_monat).toDate(),
verbrauch_1: parseFloat(
dataset.energieverbrauch_1_heizquelle_1
),
verbrauch_2: parseFloat(
dataset.energieverbrauch_2_heizquelle_1
),
verbrauch_3: parseFloat(
dataset.energieverbrauch_3_heizquelle_1
),
verbrauch_4: parseFloat(
dataset.energieverbrauch_1_heizquelle_2
),
verbrauch_5: parseFloat(
dataset.energieverbrauch_2_heizquelle_2
),
verbrauch_6: parseFloat(
dataset.energieverbrauch_3_heizquelle_2
),
warmwasser_anteil_bekannt:
dataset.warmwasser_anteil_bekannt == "1",
warmwasser_enthalten: dataset.warmwasser_enthalten == "1",
zurueckgestellt: dataset.zurueckGestellt == "1",
zusaetzliche_heizquelle:
dataset.zusaetzliche_heizquelle == "1",
ausstellungsdatum: moment(dataset.bestelldatum).isValid() ? moment(dataset.bestelldatum).toDate() : new Date(),
ausweistyp: Enums.AusweisTyp.Standard,
brennstoff_1: dataset.energietraeger_1,
brennstoff_2: dataset.energietraeger_2,
boxpruefung: dataset.boxpruefung == "1",
created_at: moment(dataset.erstellungsdatum).toDate(),
},
});
} else if (dataset.ausweisart === "VANW") {
const ausweis = await prisma.verbrauchsausweisGewerbe.create({
data: {
id: VALID_UUID_PREFIXES.VerbrauchsausweisGewerbe + dataset.id,
alternative_heizung: dataset.alheizung == "1",
alternative_kuehlung: dataset.alkuehlung == "1",
alternative_lueftung: dataset.allueftung == "1",
alternative_warmwasser: dataset.alwarmwasser == "1",
anteil_warmwasser_1: parseFloat(
dataset.anteil_warmwasser_1
),
anteil_warmwasser_2: parseFloat(
dataset.anteil_warmwasser_2
),
aufnahme: {
connect: {
id: aufnahme.id,
objekt: {
connect: {
id: objekt.id,
},
},
dachgeschoss:
dataset.dachgeschoss == "Beheizt"
? Enums.Heizungsstatus.BEHEIZT
: dataset.dachgeschoss == "Nicht Vorhanden"
? Enums.Heizungsstatus.NICHT_VORHANDEN
: Enums.Heizungsstatus.UNBEHEIZT,
brennwert_kessel: dataset.brennwert_kessel == "1",
dachgeschoss_gedaemmt: dataset.dachgeschoss_gedaemmt == "1",
dachgeschoss_min_12cm_gedaemmt:
dataset.dachgeschoss_min_12cm_gedaemmt == "1",
doppel_verglasung: dataset.doppel_verglasung == "1",
dreifach_verglasung: dataset.dreifach_verglasung == "1",
durchlauf_erhitzer: dataset.durchlauf_erhitzer == "1",
einfach_verglasung: dataset.einfach_verglasung == "1",
einzelofen: dataset.einzelofen == "1",
einheiten: parseInt(dataset.anzahl_einheiten),
fenster_dicht: dataset.fenster_dicht == "1",
fenster_teilweise_undicht:
dataset.fenster_teilweise_undicht == "1",
flaeche: parseFloat(dataset.wohnflaeche),
nutzflaeche: parseFloat(dataset.nutzflaeche),
gebaeudeteil: dataset.objekt_gebaeudeteil,
gebaeudetyp: dataset.objekt_typ,
heizungsrohre_gedaemmt: dataset.heizungsrohre_gedaemmt == "1",
isolier_verglasung: dataset.isolier_verglasung == "1",
keller:
dataset.keller_beheizt == "Beheizt"
? Enums.Heizungsstatus.BEHEIZT
: dataset.dachgeschoss == "Nicht Vorhanden"
? Enums.Heizungsstatus.NICHT_VORHANDEN
: Enums.Heizungsstatus.UNBEHEIZT,
keller_decke_gedaemmt: dataset.keller_decke_gedaemmt == "1",
keller_wand_gedaemmt: dataset.keller_wand_gedaemmt == "1",
kuehlung: dataset.wird_gekuehlt,
erstellungsdatum: moment(dataset.erstellungsdatum).toDate(),
rolllaeden_kaesten_gedaemmt:
dataset.rolllaeden_kaesten_gedaemmt == "1",
leerstand: parseInt(dataset.leerstand),
lueftung:
dataset.lueftungskonzept == "Fensterlüftung"
? Enums.Lueftungskonzept.Fensterlueftung
: dataset.lueftungskonzept ==
"Lüftungsanlage mit Wärmerückgewinnung"
? Enums.Lueftungskonzept
.LueftungsanlageMitWaermerueckgewinnung
: dataset.lueftungskonzept ==
"Lüftungsanlage ohne Wärmerückgewinnung"
? Enums.Lueftungskonzept
.LueftungsanlageOhneWaermerueckgewinnung
: Enums.Lueftungskonzept.Schachtlueftung,
niedertemperatur_kessel: dataset.niedertemperatur_kessel == "1",
oberste_geschossdecke_gedaemmt:
dataset.oberste_geschossdecke_gedaemmt == "1",
oberste_geschossdecke_min_12cm_gedaemmt:
dataset.oberste_geschossdecke_min_12cm_gedaemmt == "1",
photovoltaik: dataset.photovoltaik == "1",
raum_temperatur_regler: dataset.raum_temperatur_regler == "1",
saniert: dataset.objekt_saniert == "1",
solarsystem_warmwasser: dataset.solarsystem_warmwasser == "1",
standard_kessel: dataset.standard_kessel == "1",
tueren_dicht: dataset.tueren_dicht == "1",
tueren_undicht: dataset.tueren_undicht == "1",
waermepumpe: dataset.waermepumpe == "1",
warmwasser_rohre_gedaemmt:
dataset.warmwasser_rohre_gedaemmt == "1",
zentralheizung: dataset.zentralheizung == "1",
zirkulation: dataset.zirkulation == "1",
},
ausgestellt: dataset.erledigt == "2",
ausstellgrund:
dataset.ausstellgrund == "Vermietung"
? Enums.Ausstellgrund.Vermietung
: dataset.ausstellgrund == "Verkauf"
? Enums.Ausstellgrund.Verkauf
: dataset.ausstellgrund == "Modernisierung"
? Enums.Ausstellgrund.Modernisierung
: dataset.ausstellgrund == "Neubau"
? Enums.Ausstellgrund.Neubau
: Enums.Ausstellgrund.Sonstiges,
bestellt: dataset.erledigt == "0",
einheit_1: dataset.energietraeger_einheit_heizquelle_1,
einheit_2: dataset.energietraeger_einheit_heizquelle_2,
storniert: dataset.erledigt == "4",
benutzer: {
connect: {
id: user.id,
});
/* -------------------------------- Bilder ------------------------------- */
const images: Record<string, string[]> = JSON.parse(dataset.images);
for (const kategorie in images) {
for (const image of images[kategorie]) {
const categoryMap = {
"daemmung": Enums.BilderKategorie.Daemmung,
"fenster": Enums.BilderKategorie.Fenster,
"general": Enums.BilderKategorie.Gebaeude,
"heizung": Enums.BilderKategorie.Heizung
}
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.Bild)
const img = await prisma.bild.create({
data: {
id,
kategorie: categoryMap[kategorie as keyof typeof categoryMap],
aufnahme: {
connect: {
id: aufnahme.id
}
},
name: image
}
})
}
}
if (dataset.ausweisart === "VA") {
const ausweis = await prisma.verbrauchsausweisWohnen.create({
data: {
id: VALID_UUID_PREFIXES.VerbrauchsausweisWohnen + dataset.id,
alternative_heizung: dataset.alheizung == "1",
alternative_kuehlung: dataset.alkuehlung == "1",
alternative_lueftung: dataset.allueftung == "1",
alternative_warmwasser: dataset.alwarmwasser == "1",
anteil_warmwasser_1: parseFloat(
dataset.anteil_warmwasser_1
),
anteil_warmwasser_2: parseFloat(
dataset.anteil_warmwasser_2
),
aufnahme: {
connect: {
id: aufnahme.id,
},
},
ausgestellt: dataset.erledigt == "2",
ausstellgrund:
dataset.ausstellgrund == "Vermietung"
? Enums.Ausstellgrund.Vermietung
: dataset.ausstellgrund == "Verkauf"
? Enums.Ausstellgrund.Verkauf
: dataset.ausstellgrund == "Modernisierung"
? Enums.Ausstellgrund.Modernisierung
: dataset.ausstellgrund == "Neubau"
? Enums.Ausstellgrund.Neubau
: Enums.Ausstellgrund.Sonstiges,
bestellt: dataset.erledigt == "0",
einheit_1: dataset.energietraeger_einheit_heizquelle_1,
einheit_2: dataset.energietraeger_einheit_heizquelle_2,
storniert: dataset.erledigt == "4",
benutzer: {
connect: {
id: user.id,
},
},
kontrolldatei_angefragt: dataset.kontrolldatei == "1",
registriernummer: dataset.regnummer,
startdatum: moment().set("year", dataset.energieverbrauch_zeitraum_jahr).set("month", dataset.energieverbrauch_zeitraum_monat).toDate(),
verbrauch_1: parseFloat(
dataset.energieverbrauch_1_heizquelle_1
),
verbrauch_2: parseFloat(
dataset.energieverbrauch_2_heizquelle_1
),
verbrauch_3: parseFloat(
dataset.energieverbrauch_3_heizquelle_1
),
verbrauch_4: parseFloat(
dataset.energieverbrauch_1_heizquelle_2
),
verbrauch_5: parseFloat(
dataset.energieverbrauch_2_heizquelle_2
),
verbrauch_6: parseFloat(
dataset.energieverbrauch_3_heizquelle_2
),
warmwasser_anteil_bekannt:
dataset.warmwasser_anteil_bekannt == "1",
warmwasser_enthalten: dataset.warmwasser_enthalten == "1",
zurueckgestellt: dataset.zurueckGestellt == "1",
zusaetzliche_heizquelle:
dataset.zusaetzliche_heizquelle == "1",
ausstellungsdatum: moment(dataset.bestelldatum).isValid() ? moment(dataset.bestelldatum).toDate() : new Date(),
ausweistyp: Enums.AusweisTyp.Standard,
brennstoff_1: dataset.energietraeger_1,
brennstoff_2: dataset.energietraeger_2,
boxpruefung: dataset.boxpruefung == "1",
created_at: moment(dataset.erstellungsdatum).toDate(),
},
},
kontrolldatei_angefragt: dataset.kontrolldatei == "1",
registriernummer: dataset.regnummer,
startdatum: moment().set("year", dataset.energieverbrauch_zeitraum_jahr).set("month", dataset.energieverbrauch_zeitraum_monat).toDate(),
verbrauch_1: parseFloat(
dataset.energieverbrauch_1_heizquelle_1
),
verbrauch_2: parseFloat(
dataset.energieverbrauch_2_heizquelle_1
),
verbrauch_3: parseFloat(
dataset.energieverbrauch_3_heizquelle_1
),
verbrauch_4: parseFloat(
dataset.energieverbrauch_1_heizquelle_2
),
verbrauch_5: parseFloat(
dataset.energieverbrauch_2_heizquelle_2
),
verbrauch_6: parseFloat(
dataset.energieverbrauch_3_heizquelle_2
),
anteil_kuehlung_1: parseFloat(dataset.anteil_kuehlung_1),
anteil_kuehlung_2: parseFloat(dataset.anteil_kuehlung_2),
brennstoff_1: dataset.energietraeger_1,
brennstoff_2: dataset.energietraeger_2,
strom_1: parseFloat(dataset.vanw_strom_1),
strom_2: parseFloat(dataset.vanw_strom_2),
strom_3: parseFloat(dataset.vanw_strom_3),
kuehlung_enthalten: dataset.wird_gekuehlt == "1" ? true : false,
stromverbrauch_enthaelt_beleuchtung: dataset.nwbeleuchtung == "1",
stromverbrauch_enthaelt_heizung: dataset.nwheizung == "1",
stromverbrauch_enthaelt_kuehlung: dataset.nwkuehlung == "1",
stromverbrauch_enthaelt_lueftung: dataset.nwlueftung == "1",
stromverbrauch_enthaelt_sonstige: dataset.nwsonstiges,
stromverbrauch_enthaelt_warmwasser: dataset.nwwarmwasser == "1",
warmwasser_enthalten: dataset.warmwasser_enthalten == "1",
zurueckgestellt: dataset.zurueckGestellt == "1",
zusaetzliche_heizquelle:
dataset.zusaetzliche_heizquelle == "1",
ausstellungsdatum: moment(dataset.bestelldatum).isValid() ? moment(dataset.bestelldatum).toDate() : new Date(),
ausweistyp: Enums.AusweisTyp.Standard,
boxpruefung: dataset.boxpruefung == "1",
created_at: moment(dataset.erstellungsdatum).toDate(),
},
});
} else if (dataset.ausweisart === "BA") {
const ausweis = await prisma.bedarfsausweisWohnen.create({
data: {
id: VALID_UUID_PREFIXES.BedarfsausweisWohnen + dataset.id,
alternative_heizung: dataset.alheizung == "1",
alternative_kuehlung: dataset.alkuehlung == "1",
alternative_lueftung: dataset.allueftung == "1",
alternative_warmwasser: dataset.alwarmwasser == "1",
aufnahme: {
connect: {
id: aufnahme.id,
});
} else if (dataset.ausweisart === "VANW") {
const ausweis = await prisma.verbrauchsausweisGewerbe.create({
data: {
id: VALID_UUID_PREFIXES.VerbrauchsausweisGewerbe + dataset.id,
alternative_heizung: dataset.alheizung == "1",
alternative_kuehlung: dataset.alkuehlung == "1",
alternative_lueftung: dataset.allueftung == "1",
alternative_warmwasser: dataset.alwarmwasser == "1",
anteil_warmwasser_1: parseFloat(
dataset.anteil_warmwasser_1
),
anteil_warmwasser_2: parseFloat(
dataset.anteil_warmwasser_2
),
aufnahme: {
connect: {
id: aufnahme.id,
},
},
ausgestellt: dataset.erledigt == "2",
ausstellgrund:
dataset.ausstellgrund == "Vermietung"
? Enums.Ausstellgrund.Vermietung
: dataset.ausstellgrund == "Verkauf"
? Enums.Ausstellgrund.Verkauf
: dataset.ausstellgrund == "Modernisierung"
? Enums.Ausstellgrund.Modernisierung
: dataset.ausstellgrund == "Neubau"
? Enums.Ausstellgrund.Neubau
: Enums.Ausstellgrund.Sonstiges,
bestellt: dataset.erledigt == "0",
einheit_1: dataset.energietraeger_einheit_heizquelle_1,
einheit_2: dataset.energietraeger_einheit_heizquelle_2,
storniert: dataset.erledigt == "4",
benutzer: {
connect: {
id: user.id,
},
},
kontrolldatei_angefragt: dataset.kontrolldatei == "1",
registriernummer: dataset.regnummer,
startdatum: moment().set("year", dataset.energieverbrauch_zeitraum_jahr).set("month", dataset.energieverbrauch_zeitraum_monat).toDate(),
verbrauch_1: parseFloat(
dataset.energieverbrauch_1_heizquelle_1
),
verbrauch_2: parseFloat(
dataset.energieverbrauch_2_heizquelle_1
),
verbrauch_3: parseFloat(
dataset.energieverbrauch_3_heizquelle_1
),
verbrauch_4: parseFloat(
dataset.energieverbrauch_1_heizquelle_2
),
verbrauch_5: parseFloat(
dataset.energieverbrauch_2_heizquelle_2
),
verbrauch_6: parseFloat(
dataset.energieverbrauch_3_heizquelle_2
),
anteil_kuehlung_1: parseFloat(dataset.anteil_kuehlung_1),
anteil_kuehlung_2: parseFloat(dataset.anteil_kuehlung_2),
brennstoff_1: dataset.energietraeger_1,
brennstoff_2: dataset.energietraeger_2,
strom_1: parseFloat(dataset.vanw_strom_1),
strom_2: parseFloat(dataset.vanw_strom_2),
strom_3: parseFloat(dataset.vanw_strom_3),
kuehlung_enthalten: dataset.wird_gekuehlt == "1" ? true : false,
stromverbrauch_enthaelt_beleuchtung: dataset.nwbeleuchtung == "1",
stromverbrauch_enthaelt_heizung: dataset.nwheizung == "1",
stromverbrauch_enthaelt_kuehlung: dataset.nwkuehlung == "1",
stromverbrauch_enthaelt_lueftung: dataset.nwlueftung == "1",
stromverbrauch_enthaelt_sonstige: dataset.nwsonstiges,
stromverbrauch_enthaelt_warmwasser: dataset.nwwarmwasser == "1",
warmwasser_enthalten: dataset.warmwasser_enthalten == "1",
zurueckgestellt: dataset.zurueckGestellt == "1",
zusaetzliche_heizquelle:
dataset.zusaetzliche_heizquelle == "1",
ausstellungsdatum: moment(dataset.bestelldatum).isValid() ? moment(dataset.bestelldatum).toDate() : new Date(),
ausweistyp: Enums.AusweisTyp.Standard,
boxpruefung: dataset.boxpruefung == "1",
created_at: moment(dataset.erstellungsdatum).toDate(),
},
},
ausgestellt: dataset.erledigt == "2",
ausstellgrund:
dataset.ausstellgrund == "Vermietung"
? Enums.Ausstellgrund.Vermietung
: dataset.ausstellgrund == "Verkauf"
? Enums.Ausstellgrund.Verkauf
: dataset.ausstellgrund == "Modernisierung"
? Enums.Ausstellgrund.Modernisierung
: dataset.ausstellgrund == "Neubau"
? Enums.Ausstellgrund.Neubau
: Enums.Ausstellgrund.Sonstiges,
bestellt: dataset.erledigt == "0",
storniert: dataset.erledigt == "4",
benutzer: {
connect: {
id: user.id,
});
} else if (dataset.ausweisart === "BA") {
const ausweis = await prisma.bedarfsausweisWohnen.create({
data: {
id: VALID_UUID_PREFIXES.BedarfsausweisWohnen + dataset.id,
alternative_heizung: dataset.alheizung == "1",
alternative_kuehlung: dataset.alkuehlung == "1",
alternative_lueftung: dataset.allueftung == "1",
alternative_warmwasser: dataset.alwarmwasser == "1",
aufnahme: {
connect: {
id: aufnahme.id,
},
},
ausgestellt: dataset.erledigt == "2",
ausstellgrund:
dataset.ausstellgrund == "Vermietung"
? Enums.Ausstellgrund.Vermietung
: dataset.ausstellgrund == "Verkauf"
? Enums.Ausstellgrund.Verkauf
: dataset.ausstellgrund == "Modernisierung"
? Enums.Ausstellgrund.Modernisierung
: dataset.ausstellgrund == "Neubau"
? Enums.Ausstellgrund.Neubau
: Enums.Ausstellgrund.Sonstiges,
bestellt: dataset.erledigt == "0",
storniert: dataset.erledigt == "4",
benutzer: {
connect: {
id: user.id,
},
},
kontrolldatei_angefragt: dataset.kontrolldatei == "1",
registriernummer: dataset.regnummer,
zurueckgestellt: dataset.zurueckGestellt == "1",
anteil_zusatzheizung: parseFloat(dataset.anteil_zusatzheizung),
anzahl_gauben: parseInt(dataset.anzahl_gauben),
anzahl_vollgeschosse: parseInt(dataset.anzahl_vollgeschosse),
aussenwand_bauart: dataset.aussenwand_bauart,
aussenwand_daemmung: parseFloat(dataset.aussenwand_daemmung),
aussenwand_flaeche: parseFloat(dataset.aussenwand_flaeche),
aussenwand_u_wert: parseFloat(dataset.aussenwand_u_wert),
aussenwandflaeche_unbeheizt: parseFloat(dataset.aussenwandflaeche_unbeheizt),
boden_bauart: dataset.boden_bauart,
boden_daemmung: parseFloat(dataset.boden_daemmung),
breite_gauben: parseFloat(dataset.breite_gauben),
dach_bauart: dataset.dach_bauart,
dach_daemmung: parseFloat(dataset.dach_daemmung),
dach_u_wert: parseFloat(dataset.dach_u_wert),
// TODO Das machen wir zwar so aber das ist doch scheiße....
dachfenster_art: parseFloat(dataset.dachfenster_art),
dachfenster_flaeche: parseFloat(dataset.dachfenster_flaeche),
dachflaeche: parseFloat(dataset.dachflaeche),
decke_bauart: dataset.decke_bauart,
decke_daemmung: parseFloat(dataset.decke_daemmung),
decke_u_wert: parseFloat(dataset.decke_u_wert),
dicht: dataset.dicht == "1",
fenster_art_1: parseFloat(dataset.fenster_art_1),
fenster_art_2: parseFloat(dataset.fenster_art_2),
deckenflaeche: parseFloat(dataset.deckenflaeche),
fenster_flaeche_1: parseFloat(dataset.fenster_flaeche_1),
fenster_flaeche_2: parseFloat(dataset.fenster_flaeche_2),
fensterflaeche_nw_no: parseFloat(dataset.fensterflaeche_nw_no),
fensterflaeche_so_sw: parseFloat(dataset.fensterflaeche_so_sw),
fussboden_flaeche: parseFloat(dataset.fussboden_flaeche),
fussboden_u_wert: parseFloat(dataset.fussboden_u_wert),
geschosshoehe: parseFloat(dataset.geschosshoehe),
haustuer_art: parseFloat(dataset.haustuer_art),
haustuer_flaeche: parseFloat(dataset.haustuer_flaeche),
heizung_speicherung: dataset.heizung_speicherung,
heizung_verteilung: dataset.heizung_verteilung,
heizung_zentral: dataset.heizung_zentral == "1",
masse_a: parseFloat(dataset.masse_a),
masse_b: parseFloat(dataset.masse_b),
masse_c: parseFloat(dataset.masse_c),
masse_d: parseFloat(dataset.masse_d),
masse_e: parseFloat(dataset.masse_e),
masse_f: parseFloat(dataset.masse_f),
kollektor_flaeche: parseFloat(dataset.kollektor_flaeche),
volumen: parseFloat(dataset.volumen),
waerme_erzeugung_heizung: dataset.waerme_erzeugung_heizung,
warmwasser_erzeugung: dataset.warmwasser_erzeugung,
warmwasser_speicherung: dataset.warmwasser_speicherung,
warmwasser_verteilung: dataset.warmwasser_verteilung,
ausstellungsdatum: moment(dataset.bestelldatum).isValid() ? moment(dataset.bestelldatum).toDate() : new Date(),
ausweistyp: Enums.AusweisTyp.Standard,
boxpruefung: dataset.boxpruefung == "1",
created_at: moment(dataset.erstellungsdatum).toDate(),
},
},
kontrolldatei_angefragt: dataset.kontrolldatei == "1",
registriernummer: dataset.regnummer,
zurueckgestellt: dataset.zurueckGestellt == "1",
anteil_zusatzheizung: parseFloat(dataset.anteil_zusatzheizung),
anzahl_gauben: parseInt(dataset.anzahl_gauben),
anzahl_vollgeschosse: parseInt(dataset.anzahl_vollgeschosse),
aussenwand_bauart: dataset.aussenwand_bauart,
aussenwand_daemmung: parseFloat(dataset.aussenwand_daemmung),
aussenwand_flaeche: parseFloat(dataset.aussenwand_flaeche),
aussenwand_u_wert: parseFloat(dataset.aussenwand_u_wert),
aussenwandflaeche_unbeheizt: parseFloat(dataset.aussenwandflaeche_unbeheizt),
boden_bauart: dataset.boden_bauart,
boden_daemmung: parseFloat(dataset.boden_daemmung),
breite_gauben: parseFloat(dataset.breite_gauben),
dach_bauart: dataset.dach_bauart,
dach_daemmung: parseFloat(dataset.dach_daemmung),
dach_u_wert: parseFloat(dataset.dach_u_wert),
// TODO Das machen wir zwar so aber das ist doch scheiße....
dachfenster_art: parseFloat(dataset.dachfenster_art),
dachfenster_flaeche: parseFloat(dataset.dachfenster_flaeche),
dachflaeche: parseFloat(dataset.dachflaeche),
decke_bauart: dataset.decke_bauart,
decke_daemmung: parseFloat(dataset.decke_daemmung),
decke_u_wert: parseFloat(dataset.decke_u_wert),
dicht: dataset.dicht == "1",
fenster_art_1: parseFloat(dataset.fenster_art_1),
fenster_art_2: parseFloat(dataset.fenster_art_2),
deckenflaeche: parseFloat(dataset.deckenflaeche),
fenster_flaeche_1: parseFloat(dataset.fenster_flaeche_1),
fenster_flaeche_2: parseFloat(dataset.fenster_flaeche_2),
fensterflaeche_nw_no: parseFloat(dataset.fensterflaeche_nw_no),
fensterflaeche_so_sw: parseFloat(dataset.fensterflaeche_so_sw),
fussboden_flaeche: parseFloat(dataset.fussboden_flaeche),
fussboden_u_wert: parseFloat(dataset.fussboden_u_wert),
geschosshoehe: parseFloat(dataset.geschosshoehe),
haustuer_art: parseFloat(dataset.haustuer_art),
haustuer_flaeche: parseFloat(dataset.haustuer_flaeche),
heizung_speicherung: dataset.heizung_speicherung,
heizung_verteilung: dataset.heizung_verteilung,
heizung_zentral: dataset.heizung_zentral == "1",
masse_a: parseFloat(dataset.masse_a),
masse_b: parseFloat(dataset.masse_b),
masse_c: parseFloat(dataset.masse_c),
masse_d: parseFloat(dataset.masse_d),
masse_e: parseFloat(dataset.masse_e),
masse_f: parseFloat(dataset.masse_f),
kollektor_flaeche: parseFloat(dataset.kollektor_flaeche),
volumen: parseFloat(dataset.volumen),
waerme_erzeugung_heizung: dataset.waerme_erzeugung_heizung,
warmwasser_erzeugung: dataset.warmwasser_erzeugung,
warmwasser_speicherung: dataset.warmwasser_speicherung,
warmwasser_verteilung: dataset.warmwasser_verteilung,
ausstellungsdatum: moment(dataset.bestelldatum).isValid() ? moment(dataset.bestelldatum).toDate() : new Date(),
ausweistyp: Enums.AusweisTyp.Standard,
boxpruefung: dataset.boxpruefung == "1",
created_at: moment(dataset.erstellungsdatum).toDate(),
},
});
}
processed[dataset.id as string] = true;
saveProcessed()
},
complete(results, file) {
});
}
processed[dataset.id as string] = true;
saveProcessed()
}
},
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long