Merge pull request #498 from IBCornelsen/main

get main
This commit is contained in:
Jens Cornelsen
2025-04-07 06:40:09 +02:00
committed by GitHub
19 changed files with 1611 additions and 652 deletions

View File

@@ -0,0 +1,811 @@
-- CreateEnum
CREATE TYPE "Heizungsstatus" AS ENUM ('BEHEIZT', 'UNBEHEIZT', 'NICHT_VORHANDEN');
-- CreateEnum
CREATE TYPE "Lueftungskonzept" AS ENUM ('Fensterlueftung', 'Schachtlueftung', 'LueftungsanlageMitWaermerueckgewinnung', 'LueftungsanlageOhneWaermerueckgewinnung');
-- CreateEnum
CREATE TYPE "BenutzerRolle" AS ENUM ('USER', 'ADMIN');
-- CreateEnum
CREATE TYPE "BilderKategorie" AS ENUM ('Heizung', 'Fenster', 'Gebaeude', 'Daemmung', 'AnlagenTechnik');
-- CreateEnum
CREATE TYPE "Einpreisungsstatus" AS ENUM ('open', 'canceled', 'pending', 'expired');
-- CreateEnum
CREATE TYPE "Bezahlmethoden" AS ENUM ('paypal', 'giropay', 'sofort', 'creditcard', 'rechnung');
-- CreateEnum
CREATE TYPE "Rechnungsstatus" AS ENUM ('open', 'canceled', 'pending', 'authorized', 'expired', 'failed', 'paid');
-- CreateEnum
CREATE TYPE "AusweisTyp" AS ENUM ('Standard', 'Beratung', 'Offline');
-- CreateEnum
CREATE TYPE "TicketStatus" AS ENUM ('OFFEN', 'IN_BEARBEITUNG', 'IN_WARTESCHLEIFE', 'GESCHLOSSEN', 'GELOEST');
-- CreateEnum
CREATE TYPE "UnterlagenKategorie" AS ENUM ('Grundriss', 'Sonstiges');
-- CreateEnum
CREATE TYPE "Ausstellgrund" AS ENUM ('Neubau', 'Vermietung', 'Verkauf', 'Modernisierung', 'Sonstiges');
-- CreateEnum
CREATE TYPE "Ausweisart" AS ENUM ('VerbrauchsausweisWohnen', 'VerbrauchsausweisGewerbe', 'BedarfsausweisWohnen', 'BedarfsausweisGewerbe', 'GEGNachweisWohnen', 'GEGNachweisGewerbe');
-- CreateEnum
CREATE TYPE "Service" AS ENUM ('Telefonberatung', 'Aushang', 'Qualitaetsdruck', 'SameDay');
-- CreateTable
CREATE TABLE "Anteilshaber" (
"id" VARCHAR(10) NOT NULL,
"rolle" VARCHAR,
"privilegien" BIGINT,
"benutzer_id" TEXT NOT NULL,
"objekt_id" TEXT NOT NULL,
CONSTRAINT "Anteilshaber_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "ApiRequests" (
"id" VARCHAR(10) NOT NULL,
"date" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"ip" VARCHAR(50) NOT NULL,
"method" VARCHAR(10) NOT NULL,
"path" VARCHAR(100) NOT NULL,
"status" INTEGER NOT NULL,
"responseTime" DOUBLE PRECISION NOT NULL,
"responseSize" INTEGER NOT NULL,
"userAgent" VARCHAR(500) NOT NULL,
"user_id" TEXT,
CONSTRAINT "ApiRequests_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Aufnahme" (
"id" VARCHAR(10) NOT NULL,
"benutzer_id" TEXT,
"gebaeudetyp" VARCHAR,
"gebaeudeteil" VARCHAR,
"baujahr_gebaeude" INTEGER[],
"baujahr_heizung" INTEGER[],
"baujahr_klima" INTEGER[],
"einheiten" INTEGER,
"flaeche" INTEGER,
"nutzflaeche" INTEGER,
"saniert" BOOLEAN,
"keller" "Heizungsstatus",
"dachgeschoss" "Heizungsstatus",
"lueftung" "Lueftungskonzept",
"kuehlung" VARCHAR(50),
"leerstand" INTEGER,
"alternative_heizung" BOOLEAN,
"alternative_warmwasser" BOOLEAN,
"alternative_lueftung" BOOLEAN,
"alternative_kuehlung" BOOLEAN,
"erstellungsdatum" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
"zentralheizung" BOOLEAN,
"solarsystem_warmwasser" BOOLEAN,
"warmwasser_rohre_gedaemmt" BOOLEAN,
"niedertemperatur_kessel" BOOLEAN,
"brennwert_kessel" BOOLEAN,
"heizungsrohre_gedaemmt" BOOLEAN,
"standard_kessel" BOOLEAN,
"waermepumpe" BOOLEAN,
"raum_temperatur_regler" BOOLEAN,
"photovoltaik" BOOLEAN,
"durchlauf_erhitzer" BOOLEAN,
"einzelofen" BOOLEAN,
"zirkulation" BOOLEAN,
"einfach_verglasung" BOOLEAN,
"dreifach_verglasung" BOOLEAN,
"fenster_teilweise_undicht" BOOLEAN,
"doppel_verglasung" BOOLEAN,
"fenster_dicht" BOOLEAN,
"rolllaeden_kaesten_gedaemmt" BOOLEAN,
"isolier_verglasung" BOOLEAN,
"tueren_undicht" BOOLEAN,
"tueren_dicht" BOOLEAN,
"dachgeschoss_gedaemmt" BOOLEAN,
"keller_decke_gedaemmt" BOOLEAN,
"keller_wand_gedaemmt" BOOLEAN,
"aussenwand_gedaemmt" BOOLEAN,
"oberste_geschossdecke_gedaemmt" BOOLEAN,
"aussenwand_min_12cm_gedaemmt" BOOLEAN,
"dachgeschoss_min_12cm_gedaemmt" BOOLEAN,
"oberste_geschossdecke_min_12cm_gedaemmt" BOOLEAN,
"objekt_id" TEXT NOT NULL,
CONSTRAINT "Aufnahme_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "BedarfsausweisGewerbe" (
"id" VARCHAR(10) NOT NULL,
"ausstellgrund" "Ausstellgrund",
"keller_beheizt" BOOLEAN,
"storniert" BOOLEAN DEFAULT false,
"bestellt" BOOLEAN DEFAULT false,
"zurueckgestellt" BOOLEAN DEFAULT false,
"abluftanlage" BOOLEAN DEFAULT false,
"zu_abluftanlage" BOOLEAN DEFAULT false,
"konditionierung_der_zuluft" BOOLEAN DEFAULT false,
"luftheizung" BOOLEAN DEFAULT false,
"hallenheizung" BOOLEAN DEFAULT false,
"dunkelstrahler" BOOLEAN DEFAULT false,
"direktheizung" BOOLEAN DEFAULT false,
"infrarotstrahler" BOOLEAN DEFAULT false,
"fussbodenheizung" BOOLEAN DEFAULT false,
"bauteilaktivierung" BOOLEAN DEFAULT false,
"klimatisierung" BOOLEAN DEFAULT false,
"nachweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
"benutzer_id" TEXT,
"aufnahme_id" TEXT NOT NULL,
"rechnung_id" TEXT,
"geg_einpreisung_id" TEXT,
CONSTRAINT "BedarfsausweisGewerbe_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "BedarfsausweisWohnen" (
"id" VARCHAR(10) NOT NULL,
"benutzer_id" TEXT,
"ausstellgrund" "Ausstellgrund",
"registriernummer" VARCHAR,
"alternative_heizung" BOOLEAN,
"alternative_warmwasser" BOOLEAN,
"alternative_lueftung" BOOLEAN,
"alternative_kuehlung" BOOLEAN,
"energieeffizienzklasse" VARCHAR(5),
"ausstellungsdatum" TIMESTAMP(3),
"boxpruefung" BOOLEAN DEFAULT false,
"anzahl_vollgeschosse" INTEGER,
"geschosshoehe" DOUBLE PRECISION,
"anzahl_gauben" INTEGER,
"breite_gauben" DOUBLE PRECISION,
"masse_a" DOUBLE PRECISION,
"masse_b" DOUBLE PRECISION,
"masse_c" DOUBLE PRECISION,
"masse_d" DOUBLE PRECISION,
"masse_e" DOUBLE PRECISION,
"masse_f" DOUBLE PRECISION,
"fensterflaeche_so_sw" DOUBLE PRECISION,
"fensterflaeche_nw_no" DOUBLE PRECISION,
"aussenwandflaeche_unbeheizt" DOUBLE PRECISION,
"dachflaeche" DOUBLE PRECISION,
"deckenflaeche" DOUBLE PRECISION,
"dach_u_wert" DOUBLE PRECISION,
"decke_u_wert" DOUBLE PRECISION,
"aussenwand_flaeche" DOUBLE PRECISION,
"aussenwand_u_wert" DOUBLE PRECISION,
"fussboden_flaeche" DOUBLE PRECISION,
"fussboden_u_wert" DOUBLE PRECISION,
"volumen" DOUBLE PRECISION,
"dicht" BOOLEAN,
"fenster_flaeche_1" DOUBLE PRECISION,
"fenster_art_1" DOUBLE PRECISION,
"fenster_flaeche_2" DOUBLE PRECISION,
"fenster_art_2" DOUBLE PRECISION,
"dachfenster_flaeche" DOUBLE PRECISION,
"dachfenster_art" DOUBLE PRECISION,
"haustuer_flaeche" DOUBLE PRECISION,
"haustuer_art" DOUBLE PRECISION,
"dach_bauart" VARCHAR,
"decke_bauart" VARCHAR,
"dach_daemmung" DOUBLE PRECISION,
"decke_daemmung" DOUBLE PRECISION,
"aussenwand_daemmung" DOUBLE PRECISION,
"boden_daemmung" DOUBLE PRECISION,
"aussenwand_bauart" VARCHAR,
"boden_bauart" VARCHAR,
"warmwasser_verteilung" VARCHAR,
"warmwasser_speicherung" VARCHAR,
"warmwasser_erzeugung" VARCHAR,
"heizung_zentral" BOOLEAN,
"heizung_verteilung" VARCHAR,
"heizung_speicherung" VARCHAR,
"waerme_erzeugung_heizung" VARCHAR,
"anteil_zusatzheizung" DOUBLE PRECISION,
"kollektor_flaeche" DOUBLE PRECISION,
"ausgestellt" BOOLEAN DEFAULT false,
"storniert" BOOLEAN DEFAULT false,
"bestellt" BOOLEAN DEFAULT false,
"zurueckgestellt" BOOLEAN DEFAULT false,
"prueftext" VARCHAR(1000),
"beschreibung" TEXT,
"kontrolldatei_angefragt" BOOLEAN DEFAULT false,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
"ausweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
"rechnung_id" TEXT,
"aufnahme_id" TEXT NOT NULL,
CONSTRAINT "BedarfsausweisWohnen_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "benutzer" (
"id" VARCHAR(10) NOT NULL,
"name" VARCHAR(50),
"vorname" VARCHAR(50),
"email" VARCHAR(255) NOT NULL,
"passwort" VARCHAR(255) NOT NULL,
"profilbild" VARCHAR,
"plz" VARCHAR(5),
"ort" VARCHAR(50),
"adresse" VARCHAR(100),
"telefon" VARCHAR(50),
"anrede" VARCHAR(50),
"rolle" "BenutzerRolle" NOT NULL DEFAULT 'USER',
"firma" TEXT,
"lex_office_id" TEXT,
"verified" BOOLEAN NOT NULL DEFAULT false,
CONSTRAINT "benutzer_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Bild" (
"id" VARCHAR(10) NOT NULL,
"kategorie" "BilderKategorie" NOT NULL,
"name" TEXT NOT NULL,
"aufnahme_id" TEXT,
CONSTRAINT "Bild_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Event" (
"id" VARCHAR(10) NOT NULL,
"date" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"title" VARCHAR(255) NOT NULL,
"description" TEXT,
"aufnahme_id" TEXT NOT NULL,
"benutzer_id" TEXT,
CONSTRAINT "Event_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "GEGEinpreisung" (
"id" VARCHAR(10) NOT NULL,
"empfaenger" VARCHAR,
"strasse" VARCHAR,
"plz" VARCHAR,
"ort" VARCHAR,
"zusatzzeile" VARCHAR,
"telefon" VARCHAR,
"email" VARCHAR,
"abweichende_versand_adresse" BOOLEAN DEFAULT false,
"versand_empfaenger" VARCHAR,
"versand_strasse" VARCHAR,
"versand_plz" VARCHAR,
"versand_ort" VARCHAR,
"versand_zusatzzeile" VARCHAR,
"status" "Einpreisungsstatus" NOT NULL,
"benutzer_id" TEXT,
CONSTRAINT "GEGEinpreisung_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "GEGNachweisGewerbe" (
"id" VARCHAR(10) NOT NULL,
"ausstellgrund" "Ausstellgrund",
"keller_beheizt" BOOLEAN,
"storniert" BOOLEAN DEFAULT false,
"bestellt" BOOLEAN DEFAULT false,
"zurueckgestellt" BOOLEAN DEFAULT false,
"beschreibung" TEXT,
"nachweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
"benutzer_id" TEXT,
"aufnahme_id" TEXT NOT NULL,
"rechnung_id" TEXT,
"geg_einpreisung_id" TEXT,
CONSTRAINT "GEGNachweisGewerbe_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "GEGNachweisWohnen" (
"id" VARCHAR(10) NOT NULL,
"ausstellgrund" "Ausstellgrund",
"keller_beheizt" BOOLEAN,
"storniert" BOOLEAN DEFAULT false,
"bestellt" BOOLEAN DEFAULT false,
"zurueckgestellt" BOOLEAN DEFAULT false,
"beschreibung" TEXT,
"nachweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
"benutzer_id" TEXT,
"aufnahme_id" TEXT NOT NULL,
"rechnung_id" TEXT,
"geg_einpreisung_id" TEXT,
CONSTRAINT "GEGNachweisWohnen_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Klimafaktoren" (
"id" SERIAL NOT NULL,
"plz" VARCHAR(5) NOT NULL,
"month" INTEGER NOT NULL,
"year" INTEGER NOT NULL,
"klimafaktor" DOUBLE PRECISION NOT NULL DEFAULT 1,
CONSTRAINT "Klimafaktoren_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Objekt" (
"id" VARCHAR(10) NOT NULL,
"latitude" DOUBLE PRECISION,
"longitude" DOUBLE PRECISION,
"plz" VARCHAR(5),
"ort" VARCHAR(50),
"adresse" VARCHAR(100),
"erstellungsdatum" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
"benutzer_id" TEXT,
CONSTRAINT "Objekt_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Postleitzahlen" (
"id" SERIAL NOT NULL,
"plz" VARCHAR(5) NOT NULL,
"stadt" VARCHAR(100) NOT NULL,
"bundesland" VARCHAR(100) NOT NULL,
"landkreis" VARCHAR(100) NOT NULL,
"lat" DOUBLE PRECISION NOT NULL,
"lon" DOUBLE PRECISION NOT NULL,
CONSTRAINT "Postleitzahlen_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Rechnung" (
"id" VARCHAR(10) NOT NULL,
"empfaenger" VARCHAR,
"strasse" VARCHAR,
"plz" VARCHAR,
"ort" VARCHAR,
"zusatzzeile" VARCHAR,
"telefon" VARCHAR,
"email" VARCHAR,
"abweichende_versand_adresse" BOOLEAN DEFAULT false,
"versand_empfaenger" VARCHAR,
"versand_strasse" VARCHAR,
"versand_plz" VARCHAR,
"versand_ort" VARCHAR,
"versand_zusatzzeile" VARCHAR,
"bezahlmethode" "Bezahlmethoden" NOT NULL,
"status" "Rechnungsstatus" NOT NULL,
"services" "Service"[],
"betrag" DOUBLE PRECISION NOT NULL,
"erstellt_am" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"bezahlt_am" TIMESTAMP(3),
"storniert_am" TIMESTAMP(3),
"transaktions_referenz" VARCHAR,
"partner_code" TEXT,
"benutzer_id" TEXT NOT NULL,
CONSTRAINT "Rechnung_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "RefreshTokens" (
"id" SERIAL NOT NULL,
"token" TEXT NOT NULL,
"ip" TEXT NOT NULL,
"expiry" TIMESTAMP(3) NOT NULL,
"benutzer_id" TEXT NOT NULL,
CONSTRAINT "RefreshTokens_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Tickets" (
"id" VARCHAR(10) NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3),
"deleted_at" TIMESTAMP(3),
"status" "TicketStatus" NOT NULL DEFAULT 'OFFEN',
"titel" TEXT NOT NULL,
"beschreibung" TEXT NOT NULL,
"metadata" JSONB,
"email" TEXT NOT NULL,
"bearbeiter_id" TEXT,
"prioritaet" INTEGER DEFAULT 0,
"benutzer_id" TEXT,
CONSTRAINT "Tickets_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Unterlage" (
"id" VARCHAR(10) NOT NULL,
"name" TEXT,
"kategorie" TEXT,
"mime" TEXT NOT NULL,
"aufnahme_id" TEXT,
CONSTRAINT "Unterlage_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "VerbrauchsausweisGewerbe" (
"id" VARCHAR(10) NOT NULL,
"ausstellgrund" "Ausstellgrund",
"registriernummer" VARCHAR,
"zusaetzliche_heizquelle" BOOLEAN,
"einheit_1" VARCHAR(50),
"einheit_2" VARCHAR(50),
"startdatum" TIMESTAMP(6),
"verbrauch_1" INTEGER,
"verbrauch_2" INTEGER,
"verbrauch_3" INTEGER,
"verbrauch_4" INTEGER,
"verbrauch_5" INTEGER,
"verbrauch_6" INTEGER,
"brennstoff_1" VARCHAR(50),
"brennstoff_2" VARCHAR(50),
"energieeffizienzklasse" VARCHAR(5),
"ausstellungsdatum" TIMESTAMP(3),
"boxpruefung" BOOLEAN DEFAULT false,
"strom_1" INTEGER,
"strom_2" INTEGER,
"strom_3" INTEGER,
"stromverbrauch_enthaelt_heizung" BOOLEAN,
"stromverbrauch_enthaelt_warmwasser" BOOLEAN,
"stromverbrauch_enthaelt_lueftung" BOOLEAN,
"stromverbrauch_enthaelt_beleuchtung" BOOLEAN,
"stromverbrauch_enthaelt_kuehlung" BOOLEAN,
"stromverbrauch_enthaelt_sonstige" VARCHAR(50),
"kuehlung_enthalten" BOOLEAN,
"anteil_kuehlung_1" DOUBLE PRECISION,
"anteil_kuehlung_2" DOUBLE PRECISION,
"keller_beheizt" BOOLEAN,
"alternative_heizung" BOOLEAN,
"alternative_warmwasser" BOOLEAN,
"alternative_lueftung" BOOLEAN,
"alternative_kuehlung" BOOLEAN,
"warmwasser_enthalten" BOOLEAN,
"warmwasser_anteil_bekannt" BOOLEAN,
"anteil_warmwasser_1" DOUBLE PRECISION,
"anteil_warmwasser_2" DOUBLE PRECISION,
"ausgestellt" BOOLEAN DEFAULT false,
"storniert" BOOLEAN DEFAULT false,
"bestellt" BOOLEAN DEFAULT false,
"zurueckgestellt" BOOLEAN DEFAULT false,
"prueftext" VARCHAR(1000),
"beschreibung" TEXT,
"kontrolldatei_angefragt" BOOLEAN DEFAULT false,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
"ausweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
"benutzer_id" TEXT,
"rechnung_id" TEXT,
"aufnahme_id" TEXT NOT NULL,
CONSTRAINT "VerbrauchsausweisGewerbe_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "VerbrauchsausweisWohnen" (
"id" VARCHAR(10) NOT NULL,
"ausstellgrund" "Ausstellgrund",
"registriernummer" VARCHAR,
"zusaetzliche_heizquelle" BOOLEAN,
"einheit_1" VARCHAR(50),
"einheit_2" VARCHAR(50),
"brennstoff_1" VARCHAR(50),
"brennstoff_2" VARCHAR(50),
"energieeffizienzklasse" VARCHAR(5),
"ausstellungsdatum" TIMESTAMP(3),
"boxpruefung" BOOLEAN DEFAULT false,
"startdatum" TIMESTAMPTZ(6),
"verbrauch_1" INTEGER,
"verbrauch_2" INTEGER,
"verbrauch_3" INTEGER,
"verbrauch_4" INTEGER,
"verbrauch_5" INTEGER,
"verbrauch_6" INTEGER,
"warmwasser_enthalten" BOOLEAN,
"warmwasser_anteil_bekannt" BOOLEAN,
"faktorKeller" DOUBLE PRECISION,
"alternative_heizung" BOOLEAN,
"alternative_warmwasser" BOOLEAN,
"alternative_lueftung" BOOLEAN,
"alternative_kuehlung" BOOLEAN,
"anteil_warmwasser_1" DOUBLE PRECISION,
"anteil_warmwasser_2" DOUBLE PRECISION,
"ausgestellt" BOOLEAN DEFAULT false,
"storniert" BOOLEAN DEFAULT false,
"bestellt" BOOLEAN DEFAULT false,
"zurueckgestellt" BOOLEAN DEFAULT false,
"prueftext" VARCHAR(1000),
"beschreibung" TEXT,
"kontrolldatei_angefragt" BOOLEAN DEFAULT false,
"ausweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
"benutzer_id" TEXT,
"rechnung_id" TEXT,
"aufnahme_id" TEXT NOT NULL,
CONSTRAINT "VerbrauchsausweisWohnen_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "documenttemplates" (
"id" SERIAL NOT NULL,
"name" VARCHAR(100) NOT NULL,
"shortdescription" VARCHAR(100) NOT NULL,
"longdescription" VARCHAR(5000) NOT NULL,
"user_id" TEXT NOT NULL,
"is_private" BOOLEAN NOT NULL DEFAULT true,
"documenttype" INTEGER NOT NULL,
"filename" VARCHAR(100) NOT NULL,
"created_at" TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "PK_DOCUMENTTEMPLATES" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "documenttypes" (
"id" SERIAL NOT NULL,
"name" VARCHAR(100) NOT NULL,
"shortdescription" VARCHAR(100) NOT NULL,
"longdescription" VARCHAR(5000) NOT NULL,
CONSTRAINT "PK_DOCUMENTTYPES" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "tokens" (
"id" SERIAL NOT NULL,
"token" VARCHAR(36) NOT NULL,
"user_id" TEXT NOT NULL,
"date_created" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"last_used" TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"times_used" INTEGER NOT NULL DEFAULT 0,
"permissions" INTEGER NOT NULL DEFAULT 0,
CONSTRAINT "PK_TOKENS" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "Anteilshaber_id_key" ON "Anteilshaber"("id");
-- CreateIndex
CREATE UNIQUE INDEX "ApiRequests_id_key" ON "ApiRequests"("id");
-- CreateIndex
CREATE UNIQUE INDEX "Aufnahme_id_key" ON "Aufnahme"("id");
-- CreateIndex
CREATE UNIQUE INDEX "BedarfsausweisGewerbe_id_key" ON "BedarfsausweisGewerbe"("id");
-- CreateIndex
CREATE UNIQUE INDEX "BedarfsausweisGewerbe_aufnahme_id_key" ON "BedarfsausweisGewerbe"("aufnahme_id");
-- CreateIndex
CREATE UNIQUE INDEX "BedarfsausweisGewerbe_rechnung_id_key" ON "BedarfsausweisGewerbe"("rechnung_id");
-- CreateIndex
CREATE UNIQUE INDEX "BedarfsausweisGewerbe_geg_einpreisung_id_key" ON "BedarfsausweisGewerbe"("geg_einpreisung_id");
-- CreateIndex
CREATE UNIQUE INDEX "BedarfsausweisWohnen_id_key" ON "BedarfsausweisWohnen"("id");
-- CreateIndex
CREATE UNIQUE INDEX "BedarfsausweisWohnen_rechnung_id_key" ON "BedarfsausweisWohnen"("rechnung_id");
-- CreateIndex
CREATE UNIQUE INDEX "BedarfsausweisWohnen_aufnahme_id_key" ON "BedarfsausweisWohnen"("aufnahme_id");
-- CreateIndex
CREATE UNIQUE INDEX "benutzer_id_key" ON "benutzer"("id");
-- CreateIndex
CREATE UNIQUE INDEX "benutzer_email_idx" ON "benutzer"("email");
-- CreateIndex
CREATE UNIQUE INDEX "Bild_id_key" ON "Bild"("id");
-- CreateIndex
CREATE UNIQUE INDEX "Event_id_key" ON "Event"("id");
-- CreateIndex
CREATE UNIQUE INDEX "GEGEinpreisung_id_key" ON "GEGEinpreisung"("id");
-- CreateIndex
CREATE UNIQUE INDEX "GEGNachweisGewerbe_id_key" ON "GEGNachweisGewerbe"("id");
-- CreateIndex
CREATE UNIQUE INDEX "GEGNachweisGewerbe_aufnahme_id_key" ON "GEGNachweisGewerbe"("aufnahme_id");
-- CreateIndex
CREATE UNIQUE INDEX "GEGNachweisGewerbe_rechnung_id_key" ON "GEGNachweisGewerbe"("rechnung_id");
-- CreateIndex
CREATE UNIQUE INDEX "GEGNachweisGewerbe_geg_einpreisung_id_key" ON "GEGNachweisGewerbe"("geg_einpreisung_id");
-- CreateIndex
CREATE UNIQUE INDEX "GEGNachweisWohnen_id_key" ON "GEGNachweisWohnen"("id");
-- CreateIndex
CREATE UNIQUE INDEX "GEGNachweisWohnen_aufnahme_id_key" ON "GEGNachweisWohnen"("aufnahme_id");
-- CreateIndex
CREATE UNIQUE INDEX "GEGNachweisWohnen_rechnung_id_key" ON "GEGNachweisWohnen"("rechnung_id");
-- CreateIndex
CREATE UNIQUE INDEX "GEGNachweisWohnen_geg_einpreisung_id_key" ON "GEGNachweisWohnen"("geg_einpreisung_id");
-- CreateIndex
CREATE UNIQUE INDEX "Klimafaktoren_plz_month_year_key" ON "Klimafaktoren"("plz", "month", "year");
-- CreateIndex
CREATE UNIQUE INDEX "Objekt_id_key" ON "Objekt"("id");
-- CreateIndex
CREATE UNIQUE INDEX "Rechnung_id_key" ON "Rechnung"("id");
-- CreateIndex
CREATE UNIQUE INDEX "Rechnung_transaktions_referenz_key" ON "Rechnung"("transaktions_referenz");
-- CreateIndex
CREATE UNIQUE INDEX "RefreshTokens_token_key" ON "RefreshTokens"("token");
-- CreateIndex
CREATE UNIQUE INDEX "Tickets_id_key" ON "Tickets"("id");
-- CreateIndex
CREATE UNIQUE INDEX "Unterlage_id_key" ON "Unterlage"("id");
-- CreateIndex
CREATE UNIQUE INDEX "VerbrauchsausweisGewerbe_id_key" ON "VerbrauchsausweisGewerbe"("id");
-- CreateIndex
CREATE UNIQUE INDEX "VerbrauchsausweisGewerbe_rechnung_id_key" ON "VerbrauchsausweisGewerbe"("rechnung_id");
-- CreateIndex
CREATE UNIQUE INDEX "VerbrauchsausweisGewerbe_aufnahme_id_key" ON "VerbrauchsausweisGewerbe"("aufnahme_id");
-- CreateIndex
CREATE UNIQUE INDEX "VerbrauchsausweisWohnen_id_key" ON "VerbrauchsausweisWohnen"("id");
-- CreateIndex
CREATE UNIQUE INDEX "VerbrauchsausweisWohnen_rechnung_id_key" ON "VerbrauchsausweisWohnen"("rechnung_id");
-- CreateIndex
CREATE UNIQUE INDEX "VerbrauchsausweisWohnen_aufnahme_id_key" ON "VerbrauchsausweisWohnen"("aufnahme_id");
-- AddForeignKey
ALTER TABLE "Anteilshaber" ADD CONSTRAINT "Anteilshaber_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "Anteilshaber" ADD CONSTRAINT "Anteilshaber_objekt_id_fkey" FOREIGN KEY ("objekt_id") REFERENCES "Objekt"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "ApiRequests" ADD CONSTRAINT "ApiRequests_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "Aufnahme" ADD CONSTRAINT "Aufnahme_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "Aufnahme" ADD CONSTRAINT "Aufnahme_objekt_id_fkey" FOREIGN KEY ("objekt_id") REFERENCES "Objekt"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "BedarfsausweisGewerbe" ADD CONSTRAINT "BedarfsausweisGewerbe_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "BedarfsausweisGewerbe" ADD CONSTRAINT "BedarfsausweisGewerbe_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "BedarfsausweisGewerbe" ADD CONSTRAINT "BedarfsausweisGewerbe_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "BedarfsausweisGewerbe" ADD CONSTRAINT "BedarfsausweisGewerbe_geg_einpreisung_id_fkey" FOREIGN KEY ("geg_einpreisung_id") REFERENCES "GEGEinpreisung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "BedarfsausweisWohnen" ADD CONSTRAINT "BedarfsausweisWohnen_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "BedarfsausweisWohnen" ADD CONSTRAINT "BedarfsausweisWohnen_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "BedarfsausweisWohnen" ADD CONSTRAINT "BedarfsausweisWohnen_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "Bild" ADD CONSTRAINT "Bild_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "Event" ADD CONSTRAINT "Event_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "Event" ADD CONSTRAINT "Event_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "GEGEinpreisung" ADD CONSTRAINT "GEGEinpreisung_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "GEGNachweisGewerbe" ADD CONSTRAINT "GEGNachweisGewerbe_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "GEGNachweisGewerbe" ADD CONSTRAINT "GEGNachweisGewerbe_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "GEGNachweisGewerbe" ADD CONSTRAINT "GEGNachweisGewerbe_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "GEGNachweisGewerbe" ADD CONSTRAINT "GEGNachweisGewerbe_geg_einpreisung_id_fkey" FOREIGN KEY ("geg_einpreisung_id") REFERENCES "GEGEinpreisung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "GEGNachweisWohnen" ADD CONSTRAINT "GEGNachweisWohnen_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "GEGNachweisWohnen" ADD CONSTRAINT "GEGNachweisWohnen_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "GEGNachweisWohnen" ADD CONSTRAINT "GEGNachweisWohnen_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "GEGNachweisWohnen" ADD CONSTRAINT "GEGNachweisWohnen_geg_einpreisung_id_fkey" FOREIGN KEY ("geg_einpreisung_id") REFERENCES "GEGEinpreisung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "Objekt" ADD CONSTRAINT "Objekt_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Rechnung" ADD CONSTRAINT "Rechnung_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "RefreshTokens" ADD CONSTRAINT "RefreshTokens_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Tickets" ADD CONSTRAINT "Tickets_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Tickets" ADD CONSTRAINT "Tickets_bearbeiter_id_fkey" FOREIGN KEY ("bearbeiter_id") REFERENCES "benutzer"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Unterlage" ADD CONSTRAINT "Unterlage_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "VerbrauchsausweisGewerbe" ADD CONSTRAINT "VerbrauchsausweisGewerbe_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "VerbrauchsausweisGewerbe" ADD CONSTRAINT "VerbrauchsausweisGewerbe_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "VerbrauchsausweisGewerbe" ADD CONSTRAINT "VerbrauchsausweisGewerbe_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "VerbrauchsausweisWohnen" ADD CONSTRAINT "VerbrauchsausweisWohnen_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "VerbrauchsausweisWohnen" ADD CONSTRAINT "VerbrauchsausweisWohnen_rechnung_id_fkey" FOREIGN KEY ("rechnung_id") REFERENCES "Rechnung"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "VerbrauchsausweisWohnen" ADD CONSTRAINT "VerbrauchsausweisWohnen_aufnahme_id_fkey" FOREIGN KEY ("aufnahme_id") REFERENCES "Aufnahme"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
-- AddForeignKey
ALTER TABLE "documenttemplates" ADD CONSTRAINT "benutzer_fk" FOREIGN KEY ("user_id") REFERENCES "benutzer"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "documenttemplates" ADD CONSTRAINT "documenttypes_fk" FOREIGN KEY ("documenttype") REFERENCES "documenttypes"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "tokens" ADD CONSTRAINT "fk_benutzer_tokens_user_id" FOREIGN KEY ("user_id") REFERENCES "benutzer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION;

View File

@@ -52,6 +52,7 @@ model Rechnung {
bezahlt_am DateTime?
storniert_am DateTime?
transaktions_referenz String? @unique @db.VarChar
partner_code String?
benutzer_id String
benutzer Benutzer @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)

View File

@@ -58,3 +58,12 @@ export function getZodBaseType(schema: ZodType<any>): ZodType<any> {
}
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,89 +1025,56 @@ 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"/>
@@ -1021,9 +1082,9 @@ grid-cols-3 sm:grid-cols-5 justify-around justify-items-center items-center"
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>
{/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
)
);
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
);
fs.writeFileSync(pdfDatenblattPath, pdfDatenblatt);
}
if (pdfAusweis) {
const command = new PutObjectCommand({
Bucket: "ibc-pdfs",
Key: `ID_${ausweis.id}_Energieausweis.pdf`,
Body: pdfAusweis,
ACL: "private",
});
let text: string;
const response = await s3Client.send(command);
}
if (rechnung.status === Enums.Rechnungsstatus.paid) {
text = `
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;
async complete(results, file) {
for (const dataset of results.data as any) {
if (dataset.id in processed) {
return;
}
const user_id = dataset.user_id;
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}`);
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 (dataset.email) {
user = await prisma.benutzer.findUnique({
where: {
email: dataset.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.");
}
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 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_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,
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",
},
},
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);
/* -------------------------------- 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
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
}
})
}
}
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
}
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(),
},
name: image
}
})
}
}
});
} 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(),
},
});
} 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(),
},
});
}
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(),
},
});
} 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(),
},
});
} 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(),
},
});
}
processed[dataset.id as string] = true;
saveProcessed()
processed[dataset.id as string] = true;
saveProcessed()
},
complete(results, file) {
saveProcessed()
}
},
});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long