Merge remote-tracking branch 'origin/main' into Jens
This commit is contained in:
16
.env
Normal file
16
.env
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Environment variables declared in this file are automatically made available to Prisma.
|
||||||
|
# See the documentation for more detail: https://pris.ly/d/prisma-schema#accessing-environment-variables-from-the-schema
|
||||||
|
|
||||||
|
# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB.
|
||||||
|
# See the documentation for all the connection string options: https://pris.ly/d/connection-strings
|
||||||
|
|
||||||
|
POSTGRES_DB=main
|
||||||
|
POSTGRES_HOST=localhost
|
||||||
|
POSTGRES_PORT=5432
|
||||||
|
POSTGRES_USER=main
|
||||||
|
POSTGRES_PASSWORD=hHMP8cd^N3SnzGRR
|
||||||
|
|
||||||
|
DB_CONTAINER_NAME=database
|
||||||
|
|
||||||
|
POSTGRES_DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"
|
||||||
|
POSTGRES_DATABASE_URL_EXTERNAL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_CONTAINER_NAME}:${POSTGRES_PORT}/${POSTGRES_DB}"
|
||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -20,10 +20,6 @@ pnpm-debug.log*
|
|||||||
pnpm-lock.yaml
|
pnpm-lock.yaml
|
||||||
bun.lockb
|
bun.lockb
|
||||||
|
|
||||||
# environment variables
|
|
||||||
.env
|
|
||||||
.env.production
|
|
||||||
|
|
||||||
# macOS-specific files
|
# macOS-specific files
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
|
|||||||
20
Dockerfile
20
Dockerfile
@@ -1,10 +1,16 @@
|
|||||||
FROM oven/bun:1.0.23
|
FROM postgres:latest
|
||||||
|
ENV POSTGRES_USER ${POSTGRES_USER}
|
||||||
|
ENV POSTGRES_PASSWORD ${POSTGRES_PASSWORD}
|
||||||
|
ENV POSTGRES_DB ${POSTGRES_DB}
|
||||||
|
|
||||||
EXPOSE 3000
|
COPY ./prisma/migrations/ /docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
WORKDIR /online-energieausweis
|
EXPOSE 5432
|
||||||
COPY ./package.json ./
|
|
||||||
COPY . .
|
|
||||||
RUN bun install --prod
|
|
||||||
|
|
||||||
CMD ["bun", "run", "build:production"]
|
# Use a loop to copy migration.sql from each folder to the corresponding directory in the build context
|
||||||
|
RUN for folder in /docker-entrypoint-initdb.d/*; do \
|
||||||
|
if [ -d "$folder" ]; then \
|
||||||
|
cp "$folder/migration.sql" "$folder.sql"; \
|
||||||
|
rm -rf "$folder"; \
|
||||||
|
fi \
|
||||||
|
done
|
||||||
74
Makefile
74
Makefile
@@ -1,31 +1,60 @@
|
|||||||
.PHONY: dev database online-energieausweis all prod bun-install-database # api bun-install-api
|
.PHONY: dev online-energieausweis all prod backup run-database build-database install-dependencies wait-for-database prod database
|
||||||
|
|
||||||
|
DB_CONTAINER_NAME := database
|
||||||
|
DB_NAME := main
|
||||||
|
DB_USER := main
|
||||||
|
DB_PASSWORD := hHMP8cd^N3SnzGRR
|
||||||
|
DB_PORT := 5432
|
||||||
|
DB_VOLUME := postgres_data
|
||||||
|
PERSISTENT_DIR := $(HOME)/persistent/$(APP_NAME)
|
||||||
|
BACKUP_FILENAME := $(HOME)/backups/$(shell date +"%Y-%m-%d_%H-%M-%S").sql.gz
|
||||||
|
|
||||||
online-energieausweis:
|
online-energieausweis:
|
||||||
bun run dev --host
|
bun run dev --host
|
||||||
|
|
||||||
dev: database online-energieausweis # api
|
dev: install-dependencies database online-energieausweis
|
||||||
|
|
||||||
database:
|
database:
|
||||||
$(MAKE) -C ../database dev
|
docker compose up
|
||||||
|
|
||||||
bun-install-database:
|
backup:
|
||||||
cd ../database
|
mkdir -p $(PERSISTENT_DIR)
|
||||||
bun link
|
- docker exec -t $(DB_CONTAINER_NAME) pg_dump --data-only -U $(DB_USER) $(DB_NAME) | gzip > $(BACKUP_FILENAME)
|
||||||
|
|
||||||
|
rundatabase: stop_database
|
||||||
|
docker volume rm -f $(DB_VOLUME)
|
||||||
|
docker volume create $(DB_VOLUME)
|
||||||
|
docker build -t $(DB_CONTAINER_NAME) .
|
||||||
|
docker run -d --name $(DB_CONTAINER_NAME) \
|
||||||
|
-e POSTGRES_USER=$(DB_USER) \
|
||||||
|
-e POSTGRES_PASSWORD=$(DB_PASSWORD) \
|
||||||
|
-p $(DB_PORT):5432 \
|
||||||
|
-v $(DB_VOLUME):/var/lib/postgresql/data \
|
||||||
|
-v $(PERSISTENT_DIR):/persistent \
|
||||||
|
$(DB_CONTAINER_NAME)
|
||||||
|
|
||||||
|
stop-database:
|
||||||
|
-docker stop $(DB_CONTAINER_NAME)
|
||||||
|
-docker rm $(DB_CONTAINER_NAME)
|
||||||
|
|
||||||
|
wait-fordatabase:
|
||||||
|
@while ! docker exec $(DB_CONTAINER_NAME) pg_isready -U $(DB_USER) -h localhost -p $(DB_PORT) > /dev/null 2>&1; do \
|
||||||
|
sleep 1; \
|
||||||
|
done
|
||||||
|
|
||||||
|
restore-backup:
|
||||||
|
gunzip -c $(BACKUP_FILENAME) | docker exec -i $(DB_CONTAINER_NAME) psql -U $(DB_USER) -d postgres
|
||||||
|
|
||||||
|
install-dependencies:
|
||||||
bun install
|
bun install
|
||||||
|
bunx prisma generate
|
||||||
# bun-install-api: bun-install-database
|
|
||||||
# cd ../api
|
|
||||||
# bun install
|
|
||||||
# bun link @ibcornelsen/database
|
|
||||||
|
|
||||||
# api:
|
|
||||||
# $(MAKE) -C ../api dev
|
|
||||||
|
|
||||||
all:
|
all:
|
||||||
mkdir -p ~/logs
|
mkdir -p ~/logs
|
||||||
bun run dev 2>&1 | tee ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log
|
bun run dev 2>&1 | tee ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log
|
||||||
|
|
||||||
prod: bun-install-database # bun-install-api
|
prod: install-dependencies run-database
|
||||||
|
bun run build
|
||||||
mkdir -p ~/logs
|
mkdir -p ~/logs
|
||||||
mkdir -p ~/persistent/online-energieausweis
|
mkdir -p ~/persistent/online-energieausweis
|
||||||
|
|
||||||
@@ -35,18 +64,9 @@ prod: bun-install-database # bun-install-api
|
|||||||
$(MAKE) prod; \
|
$(MAKE) prod; \
|
||||||
cd ../online-energieausweis; \
|
cd ../online-energieausweis; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Auch die API sollte bereits laufen
|
|
||||||
# @if [ $$(pm2 pid api) -eq "0" ]; then \
|
|
||||||
# cd ../api; \
|
|
||||||
# $(MAKE) prod; \
|
|
||||||
# cd ../online-energieausweis; \
|
|
||||||
# fi
|
|
||||||
|
|
||||||
- rm -f ~/online-energieausweis/.env;
|
# - echo "PRIVATE_KEY=$(cat /etc/letsencrypt/live/ibcornelsen.de/privkey.pem | base64 | tr -d '\n')" >> ~/online-energieausweis/.env;
|
||||||
- touch ~/online-energieausweis/.env;
|
# - echo "CERTIFICATE=$(cat /etc/letsencrypt/live/ibcornelsen.de/fullchain.pem | base64 | tr -d '\n')" >> ~/online-energieausweis/.env;
|
||||||
- echo "PRIVATE_KEY=$(cat /etc/letsencrypt/live/ibcornelsen.de/privkey.pem | base64 | tr -d '\n')" >> ~/online-energieausweis/.env;
|
|
||||||
- echo "CERTIFICATE=$(cat /etc/letsencrypt/live/ibcornelsen.de/fullchain.pem | base64 | tr -d '\n')" >> ~/online-energieausweis/.env;
|
|
||||||
|
|
||||||
- pm2 delete online-energieausweis
|
- pm2 delete online-energieausweis
|
||||||
pm2 start --name "online-energieausweis" --log ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log --time bun -- astro dev
|
pm2 start --name "online-energieausweis" --log ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log --time bun -- run ./server.ts
|
||||||
@@ -4,38 +4,27 @@ import svelte from "@astrojs/svelte";
|
|||||||
import tailwind from "@astrojs/tailwind";
|
import tailwind from "@astrojs/tailwind";
|
||||||
import node from "@astrojs/node";
|
import node from "@astrojs/node";
|
||||||
import mdx from "@astrojs/mdx";
|
import mdx from "@astrojs/mdx";
|
||||||
import dsv from "@rollup/plugin-dsv"
|
|
||||||
import astroTypesafeAPI from "astro-typesafe-api"
|
import astroTypesafeAPI from "astro-typesafe-api"
|
||||||
|
|
||||||
import { fileURLToPath } from "url";
|
|
||||||
|
|
||||||
// https://astro.build/config
|
// https://astro.build/config
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
integrations: [svelte(), tailwind(), mdx(), astroTypesafeAPI()],
|
integrations: [svelte(), tailwind(), mdx(), astroTypesafeAPI()],
|
||||||
outDir: "./dist",
|
outDir: "./dist",
|
||||||
output: "server",
|
output: "server",
|
||||||
vite: {
|
|
||||||
optimizeDeps: {
|
|
||||||
exclude: ["@ibcornelsen/api", "@ibcornelsen/database"]
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
alias: {
|
|
||||||
"#": fileURLToPath(new URL("./src", import.meta.url))
|
|
||||||
}
|
|
||||||
},
|
|
||||||
ssr: {
|
|
||||||
noExternal: ["@pdfme/generator", "@pdfme/common", "@pdfme/schemas"]
|
|
||||||
},
|
|
||||||
build: {
|
|
||||||
commonjsOptions: {
|
|
||||||
transformMixedEsModules: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
plugins: [dsv()]
|
|
||||||
},
|
|
||||||
adapter: node({
|
adapter: node({
|
||||||
mode: "middleware"
|
mode: "middleware"
|
||||||
}),
|
}),
|
||||||
|
vite: {
|
||||||
|
ssr: {
|
||||||
|
external: ["@prisma/client"],
|
||||||
|
resolve: {
|
||||||
|
alias: {
|
||||||
|
".prisma/client/index-browser": "./node_modules/.prisma/client/index-browser.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
server: {
|
server: {
|
||||||
port: 3000
|
port: 3000
|
||||||
},
|
},
|
||||||
|
|||||||
2074970
backup/klimafaktoren.json
Normal file
2074970
backup/klimafaktoren.json
Normal file
File diff suppressed because it is too large
Load Diff
71474
backup/postleitzahlen.json
Normal file
71474
backup/postleitzahlen.json
Normal file
File diff suppressed because it is too large
Load Diff
715
dbml/schema.dbml
Normal file
715
dbml/schema.dbml
Normal file
@@ -0,0 +1,715 @@
|
|||||||
|
//// ------------------------------------------------------
|
||||||
|
//// THIS FILE WAS AUTOMATICALLY GENERATED (DO NOT MODIFY)
|
||||||
|
//// ------------------------------------------------------
|
||||||
|
|
||||||
|
Project "IBCornelsen Database" {
|
||||||
|
database_type: 'PostgreSQL'
|
||||||
|
Note: ''
|
||||||
|
}
|
||||||
|
|
||||||
|
Table Anteilshaber {
|
||||||
|
id Int [pk, increment]
|
||||||
|
benutzer_id Int [not null]
|
||||||
|
rolle String
|
||||||
|
privilegien BigInt
|
||||||
|
uid String [unique, not null]
|
||||||
|
benutzer benutzer [not null]
|
||||||
|
objekt_id Int [not null]
|
||||||
|
objekt Objekt [not null]
|
||||||
|
}
|
||||||
|
|
||||||
|
Table ApiRequests {
|
||||||
|
id Int [pk, increment]
|
||||||
|
date DateTime [default: `now()`, not null]
|
||||||
|
ip String [not null]
|
||||||
|
method String [not null]
|
||||||
|
path String [not null]
|
||||||
|
status Int [not null]
|
||||||
|
responseTime Float [not null]
|
||||||
|
responseSize Int [not null]
|
||||||
|
userAgent String [not null]
|
||||||
|
user_id Int
|
||||||
|
user benutzer
|
||||||
|
}
|
||||||
|
|
||||||
|
Table Aufnahme {
|
||||||
|
id Int [pk, increment]
|
||||||
|
uid String [unique, not null, note: '@zod.describe("UID der Gebäude Aufnahme")']
|
||||||
|
benutzer_id Int
|
||||||
|
benutzer benutzer
|
||||||
|
ausweisart Ausweisart [note: '@zod.describe("Art des korrespondierenden Ausweises, wie z.B. VerbrauchsausweisWohnen")']
|
||||||
|
gebaeudetyp String [note: '@zod.describe("Art des Gebäudes und seiner primären Nutzungsart")']
|
||||||
|
gebaeudeteil String [note: '@zod.describe("Betrachteter Teil des Gebäudes, z.B. Gesamtgebäude, Wohnteil, Gewerbeteil")']
|
||||||
|
baujahr_gebaeude Int[] [not null, note: '@zod.describe("Alle Jahre in denen das Gebäude konstruiert oder grundlegend verändert wurde")']
|
||||||
|
baujahr_heizung Int[] [not null, note: '@zod.describe("Alle Jahre in denen die Heizung eingebaut oder grundlegend verändert wurde")']
|
||||||
|
baujahr_klima Int[] [not null, note: '@zod.describe("Alle Jahre in denen die Klimaanlage eingebaut oder grundlegend verändert wurde")']
|
||||||
|
einheiten Int [note: '@zod.describe("Anzahl der (Wohn)Einheiten im Gebäude")']
|
||||||
|
flaeche Int [note: '@zod.describe("Wohnfläche bei Wohngebäuden, Nutzfläche bei Gewerbegebäuden")']
|
||||||
|
nutzflaeche Int [note: '@zod.describe("(energetische) Nutzfläche des Gebäudes. Bei Gewerbegebäuden entspricht Sie der Nutzfläche")']
|
||||||
|
saniert Boolean [note: '@zod.describe("Falls das Gebäude energetisch saniert ist, sollte dieser Wert auf true stehen")']
|
||||||
|
keller Heizungsstatus [note: '@zod.describe("Ob ein Keller vorhanden, beheizt oder unbeheizt ist")']
|
||||||
|
dachgeschoss Heizungsstatus [note: '@zod.describe("Ob ein Dachgeschoss vorhanden, beheizt oder unbeheizt ist")']
|
||||||
|
lueftung Lueftungskonzept [note: '@zod.describe("Art der Gebäudelüftung")']
|
||||||
|
kuehlung String [note: '@zod.describe("Art der Gebäudekühlung")']
|
||||||
|
leerstand Int [note: '@zod.describe("Prozentualer Leerstand des Gebäudes in einem durchschnittlichen Jahr")']
|
||||||
|
alternative_heizung Boolean [note: '@zod.describe("Falls der Heizungsverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")']
|
||||||
|
alternative_warmwasser Boolean [note: '@zod.describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")']
|
||||||
|
alternative_lueftung Boolean [note: '@zod.describe("Falls die Lüftung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")']
|
||||||
|
alternative_kuehlung Boolean [note: '@zod.describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")']
|
||||||
|
brennstoff_1 String [note: '@zod.describe("Genutzer Brennstoff der primären Energiequelle")']
|
||||||
|
brennstoff_2 String [note: '@zod.describe("Genutzer Brennstoff der sekundären Energiequelle")']
|
||||||
|
boxpruefung Boolean [default: false]
|
||||||
|
energieeffizienzklasse String [note: '@zod.describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes")']
|
||||||
|
erstellungsdatum DateTime [default: `now()`, note: '@zod.describe("Datum an dem der Kunde den Ausweis erstellt hat")']
|
||||||
|
ausstellungsdatum DateTime [note: '@zod.describe("Datum an dem der Aussteller den Ausweis ausgestellt hat")']
|
||||||
|
zentralheizung Boolean [note: '@zod.describe("Falls das Gebäude über eine Zentralbeheizung verfügt, sollte dieser Wert auf true stehen")']
|
||||||
|
solarsystem_warmwasser Boolean [note: '@zod.describe("Falls das Gebäude über ein Solarsystem für Warmwasser verfügt, sollte dieser Wert auf true stehen")']
|
||||||
|
warmwasser_rohre_gedaemmt Boolean [note: '@zod.describe("Falls die Warmwasserrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")']
|
||||||
|
niedertemperatur_kessel Boolean [note: '@zod.describe("Falls das Gebäude über einen Niedertemperaturkessel verfügt, sollte dieser Wert auf true stehen")']
|
||||||
|
brennwert_kessel Boolean [note: '@zod.describe("Falls das Gebäude über einen Brennwertkessel verfügt, sollte dieser Wert auf true stehen")']
|
||||||
|
heizungsrohre_gedaemmt Boolean [note: '@zod.describe("Falls die Heizungsrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")']
|
||||||
|
standard_kessel Boolean
|
||||||
|
waermepumpe Boolean [note: '@zod.describe("Falls das Gebäude über eine Wärmepumpe verfügt, sollte dieser Wert auf true stehen")']
|
||||||
|
raum_temperatur_regler Boolean [note: '@zod.describe("Falls das Gebäude über einen Raumtemperaturregler verfügt, sollte dieser Wert auf true stehen")']
|
||||||
|
photovoltaik Boolean [note: '@zod.describe("Falls das Gebäude über eine Photovoltaikanlage verfügt, sollte dieser Wert auf true stehen")']
|
||||||
|
durchlauf_erhitzer Boolean [note: '@zod.describe("Falls das Gebäude über einen Durchlauferhitzer verfügt, sollte dieser Wert auf true stehen")']
|
||||||
|
einzelofen Boolean
|
||||||
|
zirkulation Boolean [note: '@zod.describe("Falls das Gebäude über eine Zirkulationspumpe verfügt, sollte dieser Wert auf true stehen")']
|
||||||
|
einfach_verglasung Boolean [note: '@zod.describe("Falls die Fenster des Gebäudes einfach gedämmt sind, sollte dieser Wert auf true stehen")']
|
||||||
|
dreifach_verglasung Boolean [note: '@zod.describe("Falls die Fenster des Gebäudes dreifach gedämmt sind, sollte dieser Wert auf true stehen")']
|
||||||
|
fenster_teilweise_undicht Boolean [note: '@zod.describe("Falls die Fenster des Gebäudes teilweise undicht sind, sollte dieser Wert auf true stehen")']
|
||||||
|
doppel_verglasung Boolean [note: '@zod.describe("Falls die Fenster des Gebäudes doppelt gedämmt sind, sollte dieser Wert auf true stehen")']
|
||||||
|
fenster_dicht Boolean [note: '@zod.describe("Falls die Fenster des Gebäudes dicht sind, sollte dieser Wert auf true stehen")']
|
||||||
|
rolllaeden_kaesten_gedaemmt Boolean [note: '@zod.describe("Falls das Gebäude über gedämmte Rolllädenkästen verfügt, sollte dieser Wert auf true stehen")']
|
||||||
|
isolier_verglasung Boolean [note: '@zod.describe("Falls die Fenster des Gebäudes isolier Verglasung haben, sollte dieser Wert auf true stehen")']
|
||||||
|
tueren_undicht Boolean [note: '@zod.describe("Falls die Türen des Gebäudes undicht sind, sollte dieser Wert auf true stehen")']
|
||||||
|
tueren_dicht Boolean [note: '@zod.describe("Falls die Türen des Gebäudes dicht sind, sollte dieser Wert auf true stehen")']
|
||||||
|
dachgeschoss_gedaemmt Boolean [note: '@zod.describe("Falls das Dachgeschoss des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")']
|
||||||
|
keller_decke_gedaemmt Boolean [note: '@zod.describe("Falls die Kellerdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")']
|
||||||
|
keller_wand_gedaemmt Boolean [note: '@zod.describe("Falls die Kellerwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")']
|
||||||
|
aussenwand_gedaemmt Boolean [note: '@zod.describe("Falls die Außenwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")']
|
||||||
|
oberste_geschossdecke_gedaemmt Boolean [note: '@zod.describe("Falls die oberste Geschossdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")']
|
||||||
|
aussenwand_min_12cm_gedaemmt Boolean [note: '@zod.describe("Falls die Außenwände des Gebäudes mindestens 12cm gedämmt sind, sollte dieser Wert auf true stehen")']
|
||||||
|
dachgeschoss_min_12cm_gedaemmt Boolean [note: '@zod.describe("Falls das Dachgeschoss des Gebäudes mindestens 12cm gedämmt ist, sollte dieser Wert auf true stehen")']
|
||||||
|
oberste_geschossdecke_min_12cm_gedaemmt Boolean [note: '@zod.describe("Falls die oberste Geschossdecke des Gebäudes mindestens 12cm gedämmt ist, sollte dieser Wert auf true stehen")']
|
||||||
|
events Event [not null]
|
||||||
|
bilder Bild [not null]
|
||||||
|
unterlagen Unterlage [not null]
|
||||||
|
bedarfsausweise_wohnen BedarfsausweisWohnen [not null]
|
||||||
|
verbrauchsausweise_gewerbe VerbrauchsausweisGewerbe [not null]
|
||||||
|
verbrauchsausweise_wohnen VerbrauchsausweisWohnen [not null]
|
||||||
|
geg_nachweise_wohnen GEGNachweisWohnen [not null]
|
||||||
|
geg_nachweise_gewerbe GEGNachweisGewerbe [not null]
|
||||||
|
bedarfsausweise_gewerbe BedarfsausweisGewerbe [not null]
|
||||||
|
objekt_id Int [not null]
|
||||||
|
objekt Objekt [not null]
|
||||||
|
}
|
||||||
|
|
||||||
|
Table BedarfsausweisGewerbe {
|
||||||
|
id Int [pk, increment]
|
||||||
|
uid String [unique, not null]
|
||||||
|
benutzer_id Int [note: '@zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")']
|
||||||
|
benutzer benutzer
|
||||||
|
aufnahme_id Int [unique, not null]
|
||||||
|
aufnahme Aufnahme [not null]
|
||||||
|
rechnung_id Int [unique]
|
||||||
|
rechnung Rechnung
|
||||||
|
geg_einpreisung_id Int [unique]
|
||||||
|
geg_einpreisung GEGEinpreisung
|
||||||
|
}
|
||||||
|
|
||||||
|
Table BedarfsausweisWohnen {
|
||||||
|
id Int [pk, increment]
|
||||||
|
uid String [unique, not null]
|
||||||
|
benutzer_id Int
|
||||||
|
ausstellgrund Ausstellgrund
|
||||||
|
registriernummer String
|
||||||
|
alternative_heizung Boolean
|
||||||
|
alternative_warmwasser Boolean
|
||||||
|
alternative_lueftung Boolean
|
||||||
|
alternative_kuehlung Boolean
|
||||||
|
anzahl_vollgeschosse Int
|
||||||
|
geschosshoehe Float
|
||||||
|
anzahl_gauben Int
|
||||||
|
breite_gauben Float
|
||||||
|
masse_a Float
|
||||||
|
masse_b Float
|
||||||
|
masse_c Float
|
||||||
|
masse_d Float
|
||||||
|
masse_e Float
|
||||||
|
masse_f Float
|
||||||
|
fensterflaeche_so_sw Float
|
||||||
|
fensterflaeche_nw_no Float
|
||||||
|
aussenwandflaeche_unbeheizt Float
|
||||||
|
dachflaeche Float
|
||||||
|
deckenflaeche Float
|
||||||
|
dach_u_wert Float
|
||||||
|
decke_u_wert Float
|
||||||
|
aussenwand_flaeche Float
|
||||||
|
aussenwand_u_wert Float
|
||||||
|
fussboden_flaeche Float
|
||||||
|
fussboden_u_wert Float
|
||||||
|
volumen Float
|
||||||
|
dicht Boolean
|
||||||
|
fenster_flaeche_1 Float
|
||||||
|
fenster_art_1 Float
|
||||||
|
fenster_flaeche_2 Float
|
||||||
|
fenster_art_2 Float
|
||||||
|
dachfenster_flaeche Float
|
||||||
|
dachfenster_art Float
|
||||||
|
haustuer_flaeche Float
|
||||||
|
haustuer_art Float
|
||||||
|
dach_bauart String
|
||||||
|
decke_bauart String
|
||||||
|
dach_daemmung Float
|
||||||
|
decke_daemmung Float
|
||||||
|
aussenwand_daemmung Float
|
||||||
|
boden_daemmung Float
|
||||||
|
aussenwand_bauart String
|
||||||
|
boden_bauart String
|
||||||
|
warmwasser_verteilung String
|
||||||
|
warmwasser_speicherung String
|
||||||
|
warmwasser_erzeugung String
|
||||||
|
heizung_zentral Boolean
|
||||||
|
heizung_verteilung String
|
||||||
|
heizung_speicherung String
|
||||||
|
waerme_erzeugung_heizung String
|
||||||
|
anteil_zusatzheizung Float
|
||||||
|
kollektor_flaeche Float
|
||||||
|
ausgestellt Boolean [default: false]
|
||||||
|
storniert Boolean [default: false, note: '@zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
bestellt Boolean [default: false, note: '@zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
zurueckgestellt Boolean [default: false, note: '@zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
prueftext String [note: '@zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung")']
|
||||||
|
beschreibung String
|
||||||
|
kontrolldatei_angefragt Boolean [default: false, note: '@zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde")']
|
||||||
|
benutzer benutzer
|
||||||
|
rechnung_id Int [unique]
|
||||||
|
rechnung Rechnung
|
||||||
|
aufnahme_id Int [unique, not null, note: '@zod.describe("ID der korrespondierenden Gebäudeaufnahme")']
|
||||||
|
aufnahme Aufnahme [not null]
|
||||||
|
}
|
||||||
|
|
||||||
|
Table benutzer {
|
||||||
|
id Int [pk, increment]
|
||||||
|
uid String [unique, not null]
|
||||||
|
name String
|
||||||
|
vorname String
|
||||||
|
email String [unique, not null]
|
||||||
|
passwort String [not null]
|
||||||
|
profilbild String
|
||||||
|
plz String
|
||||||
|
ort String
|
||||||
|
adresse String
|
||||||
|
telefon String
|
||||||
|
anrede String
|
||||||
|
rolle BenutzerRolle [not null, default: 'USER']
|
||||||
|
firma String
|
||||||
|
lex_office_id String
|
||||||
|
BedarfsausweisWohnen BedarfsausweisWohnen [not null]
|
||||||
|
documenttemplates documenttemplates [not null]
|
||||||
|
objekte Objekt [not null]
|
||||||
|
rechnungen Rechnung [not null]
|
||||||
|
tokens tokens [not null]
|
||||||
|
VerbrauchsausweisGewerbe VerbrauchsausweisGewerbe [not null]
|
||||||
|
VerbrauchsausweisWohnen VerbrauchsausweisWohnen [not null]
|
||||||
|
ApiRequests ApiRequests [not null]
|
||||||
|
RefreshTokens RefreshTokens [not null]
|
||||||
|
aufnahmen Aufnahme [not null]
|
||||||
|
geg_einpreisungen GEGEinpreisung [not null]
|
||||||
|
geg_nachweise_gewerbe GEGNachweisGewerbe [not null]
|
||||||
|
geg_nachweise_wohnen GEGNachweisWohnen [not null]
|
||||||
|
bedarfsausweise_gewerbe BedarfsausweisGewerbe [not null]
|
||||||
|
ErstellteTickets Tickets [not null]
|
||||||
|
BearbeiteteTickets Tickets [not null]
|
||||||
|
events Event [not null]
|
||||||
|
}
|
||||||
|
|
||||||
|
Table Bild {
|
||||||
|
id Int [pk, increment]
|
||||||
|
kategorie BilderKategorie [not null]
|
||||||
|
uid String [unique, not null]
|
||||||
|
aufnahme_id Int
|
||||||
|
aufnahme Aufnahme
|
||||||
|
}
|
||||||
|
|
||||||
|
Table Event {
|
||||||
|
id Int [pk, increment]
|
||||||
|
uid String [unique, not null]
|
||||||
|
date DateTime [default: `now()`, not null]
|
||||||
|
title String [not null]
|
||||||
|
description String
|
||||||
|
aufnahme_id Int [not null]
|
||||||
|
aufnahme Aufnahme [not null]
|
||||||
|
benutzer_id Int
|
||||||
|
benutzer benutzer
|
||||||
|
}
|
||||||
|
|
||||||
|
Table GEGEinpreisung {
|
||||||
|
id Int [pk, increment]
|
||||||
|
uid String [unique, not null]
|
||||||
|
empfaenger String
|
||||||
|
strasse String
|
||||||
|
plz String
|
||||||
|
ort String
|
||||||
|
zusatzzeile String
|
||||||
|
telefon String
|
||||||
|
email String
|
||||||
|
abweichende_versand_adresse Boolean [default: false]
|
||||||
|
versand_empfaenger String
|
||||||
|
versand_strasse String
|
||||||
|
versand_plz String
|
||||||
|
versand_ort String
|
||||||
|
versand_zusatzzeile String
|
||||||
|
status Einpreisungsstatus [not null]
|
||||||
|
geg_nachweis_wohnen GEGNachweisWohnen
|
||||||
|
geg_nachweis_gewerbe GEGNachweisGewerbe
|
||||||
|
bedarfsausweis_gewerbe BedarfsausweisGewerbe
|
||||||
|
benutzer_id Int [note: '@zod.describe("Die ID des Benutzers, der diese Einpreisung bekommt.")']
|
||||||
|
benutzer benutzer
|
||||||
|
}
|
||||||
|
|
||||||
|
Table GEGNachweisGewerbe {
|
||||||
|
id Int [pk, increment]
|
||||||
|
uid String [unique, not null]
|
||||||
|
ausstellgrund Ausstellgrund [note: '@zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf")']
|
||||||
|
keller_beheizt Boolean [note: '@zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen")']
|
||||||
|
storniert Boolean [default: false, note: '@zod.describe("Falls die Nachweisanfrage storniert wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
bestellt Boolean [default: false, note: '@zod.describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
zurueckgestellt Boolean [default: false, note: '@zod.describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
beschreibung String [note: '@zod.describe("Beschreibung des Bauvorhabens")']
|
||||||
|
benutzer_id Int [note: '@zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")']
|
||||||
|
benutzer benutzer
|
||||||
|
aufnahme_id Int [unique, not null]
|
||||||
|
aufnahme Aufnahme [not null]
|
||||||
|
rechnung_id Int [unique]
|
||||||
|
rechnung Rechnung
|
||||||
|
geg_einpreisung_id Int [unique]
|
||||||
|
geg_einpreisung GEGEinpreisung
|
||||||
|
}
|
||||||
|
|
||||||
|
Table GEGNachweisWohnen {
|
||||||
|
id Int [pk, increment]
|
||||||
|
uid String [unique, not null]
|
||||||
|
ausstellgrund Ausstellgrund [note: '@zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf")']
|
||||||
|
keller_beheizt Boolean [note: '@zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen")']
|
||||||
|
storniert Boolean [default: false, note: '@zod.describe("Falls die Nachweisanfrage storniert wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
bestellt Boolean [default: false, note: '@zod.describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
zurueckgestellt Boolean [default: false, note: '@zod.describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
beschreibung String [note: '@zod.describe("Beschreibung des Bauvorhabens")']
|
||||||
|
benutzer_id Int [note: '@zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")']
|
||||||
|
benutzer benutzer
|
||||||
|
aufnahme_id Int [unique, not null]
|
||||||
|
aufnahme Aufnahme [not null]
|
||||||
|
rechnung_id Int [unique]
|
||||||
|
rechnung Rechnung
|
||||||
|
geg_einpreisung_id Int [unique]
|
||||||
|
geg_einpreisung GEGEinpreisung
|
||||||
|
}
|
||||||
|
|
||||||
|
Table Klimafaktoren {
|
||||||
|
id Int [pk, increment]
|
||||||
|
plz String [not null]
|
||||||
|
month Int [not null]
|
||||||
|
year Int [not null]
|
||||||
|
klimafaktor Float [not null, default: 1]
|
||||||
|
|
||||||
|
indexes {
|
||||||
|
(plz, month, year) [unique]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Table Objekt {
|
||||||
|
id Int [pk, increment]
|
||||||
|
uid String [unique, not null]
|
||||||
|
benutzer_id Int
|
||||||
|
latitude Float
|
||||||
|
longitude Float
|
||||||
|
plz String [note: '@zod.describe("Postleitzahl des Gebäudes")']
|
||||||
|
ort String [note: '@zod.describe("Ort des Gebäudes")']
|
||||||
|
adresse String [note: '@zod.describe("Adresse (Straße und Hausnummer) des Gebäudes")']
|
||||||
|
erstellungsdatum DateTime [default: `now()`]
|
||||||
|
benutzer benutzer
|
||||||
|
aufnahmen Aufnahme [not null]
|
||||||
|
anteilshaber Anteilshaber [not null]
|
||||||
|
}
|
||||||
|
|
||||||
|
Table Postleitzahlen {
|
||||||
|
id Int [pk, increment]
|
||||||
|
plz String [not null]
|
||||||
|
stadt String [not null]
|
||||||
|
bundesland String [not null]
|
||||||
|
landkreis String [not null]
|
||||||
|
lat Float [not null]
|
||||||
|
lon Float [not null]
|
||||||
|
}
|
||||||
|
|
||||||
|
Table Rechnung {
|
||||||
|
id Int [pk, increment]
|
||||||
|
uid String [unique, not null]
|
||||||
|
benutzer_id Int [not null]
|
||||||
|
empfaenger String
|
||||||
|
strasse String
|
||||||
|
plz String
|
||||||
|
ort String
|
||||||
|
zusatzzeile String
|
||||||
|
telefon String
|
||||||
|
email String
|
||||||
|
abweichende_versand_adresse Boolean [default: false]
|
||||||
|
versand_empfaenger String
|
||||||
|
versand_strasse String
|
||||||
|
versand_plz String
|
||||||
|
versand_ort String
|
||||||
|
versand_zusatzzeile String
|
||||||
|
bezahlmethode Bezahlmethoden [not null]
|
||||||
|
status Rechnungsstatus [not null]
|
||||||
|
services Service[] [not null]
|
||||||
|
ausweistyp AusweisTyp [not null, default: 'Standard']
|
||||||
|
betrag Float [not null]
|
||||||
|
erstellt_am DateTime [default: `now()`, not null]
|
||||||
|
bezahlt_am DateTime
|
||||||
|
storniert_am DateTime
|
||||||
|
transaktions_referenz String [unique]
|
||||||
|
benutzer benutzer [not null]
|
||||||
|
verbrauchsausweis_wohnen VerbrauchsausweisWohnen
|
||||||
|
verbrauchsausweis_gewerbe VerbrauchsausweisGewerbe
|
||||||
|
bedarfsausweis_wohnen BedarfsausweisWohnen
|
||||||
|
bedarfsausweis_gewerbe BedarfsausweisGewerbe
|
||||||
|
geg_nachweis_gewerbe GEGNachweisGewerbe
|
||||||
|
geg_nachweis_wohnen GEGNachweisWohnen
|
||||||
|
}
|
||||||
|
|
||||||
|
Table RefreshTokens {
|
||||||
|
id Int [pk, increment]
|
||||||
|
benutzer_id Int [not null]
|
||||||
|
token String [unique, not null]
|
||||||
|
ip String [not null]
|
||||||
|
expiry DateTime [not null]
|
||||||
|
user benutzer [not null]
|
||||||
|
}
|
||||||
|
|
||||||
|
Table Tickets {
|
||||||
|
id Int [pk, increment]
|
||||||
|
uid String [unique, not null]
|
||||||
|
benutzer_id Int
|
||||||
|
created_at DateTime [default: `now()`, not null]
|
||||||
|
updated_at DateTime
|
||||||
|
deleted_at DateTime
|
||||||
|
status TicketStatus [not null, default: 'OFFEN']
|
||||||
|
titel String [not null]
|
||||||
|
beschreibung String [not null]
|
||||||
|
metadata Json
|
||||||
|
email String [not null]
|
||||||
|
bearbeiter_id Int
|
||||||
|
prioritaet Int [default: 0]
|
||||||
|
benutzer benutzer
|
||||||
|
bearbeiter benutzer
|
||||||
|
}
|
||||||
|
|
||||||
|
Table Unterlage {
|
||||||
|
id Int [pk, increment]
|
||||||
|
uid String [unique, not null]
|
||||||
|
name String
|
||||||
|
kategorie String
|
||||||
|
mime String
|
||||||
|
aufnahme_id Int
|
||||||
|
aufnahme Aufnahme
|
||||||
|
}
|
||||||
|
|
||||||
|
Table VerbrauchsausweisGewerbe {
|
||||||
|
id Int [pk, increment]
|
||||||
|
uid String [unique, not null]
|
||||||
|
benutzer_id Int
|
||||||
|
ausstellgrund Ausstellgrund
|
||||||
|
registriernummer String
|
||||||
|
zusaetzliche_heizquelle Boolean
|
||||||
|
brennstoff_1 String
|
||||||
|
einheit_1 String
|
||||||
|
brennstoff_2 String
|
||||||
|
einheit_2 String
|
||||||
|
startdatum DateTime
|
||||||
|
verbrauch_1 Int
|
||||||
|
verbrauch_2 Int
|
||||||
|
verbrauch_3 Int
|
||||||
|
verbrauch_4 Int
|
||||||
|
verbrauch_5 Int
|
||||||
|
verbrauch_6 Int
|
||||||
|
strom_1 Int
|
||||||
|
strom_2 Int
|
||||||
|
strom_3 Int
|
||||||
|
stromverbrauch_enthaelt_heizung Boolean
|
||||||
|
stromverbrauch_enthaelt_warmwasser Boolean
|
||||||
|
stromverbrauch_enthaelt_lueftung Boolean
|
||||||
|
stromverbrauch_enthaelt_beleuchtung Boolean
|
||||||
|
stromverbrauch_enthaelt_kuehlung Boolean
|
||||||
|
stromverbrauch_enthaelt_sonstige String
|
||||||
|
kuehlung_enthalten Boolean
|
||||||
|
anteil_kuehlung_1 Float
|
||||||
|
anteil_kuehlung_2 Float
|
||||||
|
keller_beheizt Boolean
|
||||||
|
alternative_heizung Boolean
|
||||||
|
alternative_warmwasser Boolean
|
||||||
|
alternative_lueftung Boolean
|
||||||
|
alternative_kuehlung Boolean
|
||||||
|
warmwasser_enthalten Boolean
|
||||||
|
anteil_warmwasser_1 Float
|
||||||
|
anteil_warmwasser_2 Float
|
||||||
|
ausgestellt Boolean [default: false]
|
||||||
|
storniert Boolean [default: false, note: '@zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
bestellt Boolean [default: false, note: '@zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
zurueckgestellt Boolean [default: false, note: '@zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
prueftext String [note: '@zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung")']
|
||||||
|
beschreibung String
|
||||||
|
kontrolldatei_angefragt Boolean [default: false, note: '@zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde")']
|
||||||
|
benutzer benutzer
|
||||||
|
rechnung_id Int [unique]
|
||||||
|
rechnung Rechnung
|
||||||
|
aufnahme_id Int [unique, not null, note: '@zod.describe("ID der korrespondierenden Gebäudeaufnahme")']
|
||||||
|
aufnahme Aufnahme [not null]
|
||||||
|
}
|
||||||
|
|
||||||
|
Table VerbrauchsausweisWohnen {
|
||||||
|
id Int [pk, increment]
|
||||||
|
uid String [unique, not null, note: '@zod.describe("UID des Ausweises")']
|
||||||
|
benutzer_id Int [note: '@zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")']
|
||||||
|
ausstellgrund Ausstellgrund [note: '@zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf")']
|
||||||
|
registriernummer String [note: '@zod.describe("Die Registriernummer des Ausweises")']
|
||||||
|
zusaetzliche_heizquelle Boolean [note: '@zod.describe("Falls eine sekundäre Heizquelle existiert, sollte dieser Wert auf true stehen")']
|
||||||
|
einheit_1 String [note: '@zod.describe("Einheit des Energieträgers der primären Heizquelle")']
|
||||||
|
einheit_2 String [note: '@zod.describe("Einheit des Energieträgers der sekundären Heizquelle")']
|
||||||
|
startdatum DateTime
|
||||||
|
verbrauch_1 Int [note: '@zod.describe("Energieverbrauch der primären Heizquelle im ersten der drei Verbrauchsjahre")']
|
||||||
|
verbrauch_2 Int [note: '@zod.describe("Energieverbrauch der primären Heizquelle im zweiten der drei Verbrauchsjahre")']
|
||||||
|
verbrauch_3 Int [note: '@zod.describe("Energieverbrauch der primären Heizquelle im letzten der drei Verbrauchsjahre")']
|
||||||
|
verbrauch_4 Int [note: '@zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im ersten der drei Verbrauchsjahre")']
|
||||||
|
verbrauch_5 Int [note: '@zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im zweiten der drei Verbrauchsjahre")']
|
||||||
|
verbrauch_6 Int [note: '@zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im letzten der drei Verbrauchsjahre")']
|
||||||
|
warmwasser_enthalten Boolean [note: '@zod.describe("Falls Warmwasser im Verbrauchswert enthalten ist, sollte dieser Wert auf true stehen")']
|
||||||
|
warmwasser_anteil_bekannt Boolean [note: '@zod.describe("Falls der Warmwasser Anteil am Verbrauch bekannt ist, sollte dieser Wert auf true stehen")']
|
||||||
|
keller_beheizt Boolean [note: '@zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen")']
|
||||||
|
faktorKeller Float [note: '@zod.describe("Der Faktor mit dem die Wohnfläche erhöht wird wenn die beheizte Gesamtfläche (energetische Nutzfläche) unbekannt ist.")']
|
||||||
|
alternative_heizung Boolean [note: '@zod.describe("Falls der Heizungsverbrauch alternative Energieversorgungssysteme beinhaltet, sollte dieser Wert auf true stehen.")']
|
||||||
|
alternative_warmwasser Boolean [note: '@zod.describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme (z.B. Solarsystem, Wärmepumpe, etc.) beinhaltet, sollte dieser Wert auf true stehen.")']
|
||||||
|
alternative_lueftung Boolean [note: '@zod.describe("Falls die Lüftung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen.")']
|
||||||
|
alternative_kuehlung Boolean [note: '@zod.describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen.")']
|
||||||
|
anteil_warmwasser_1 Float [note: '@zod.describe("Anteil des Warmwassers am Gesamtverbrauch der primären Energiequelle in Prozent")']
|
||||||
|
anteil_warmwasser_2 Float [note: '@zod.describe("Anteil des Warmwassers am Gesamtverbrauch der sekundären Energiequelle in Prozent")']
|
||||||
|
ausgestellt Boolean [default: false]
|
||||||
|
storniert Boolean [default: false, note: '@zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
bestellt Boolean [default: false, note: '@zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
zurueckgestellt Boolean [default: false, note: '@zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")']
|
||||||
|
prueftext String [note: '@zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung")']
|
||||||
|
beschreibung String
|
||||||
|
kontrolldatei_angefragt Boolean [default: false, note: '@zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde")']
|
||||||
|
benutzer benutzer
|
||||||
|
rechnung_id Int [unique]
|
||||||
|
rechnung Rechnung
|
||||||
|
aufnahme_id Int [unique, not null, note: '@zod.describe("ID der korrespondierenden Gebäudeaufnahme")']
|
||||||
|
aufnahme Aufnahme [not null]
|
||||||
|
}
|
||||||
|
|
||||||
|
Table documenttemplates {
|
||||||
|
id Int [pk, increment]
|
||||||
|
name String [not null]
|
||||||
|
shortdescription String [not null]
|
||||||
|
longdescription String [not null]
|
||||||
|
user_id Int [not null]
|
||||||
|
is_private Boolean [not null, default: true]
|
||||||
|
documenttype Int [not null]
|
||||||
|
filename String [not null]
|
||||||
|
created_at DateTime [default: `now()`, not null]
|
||||||
|
updated_at DateTime [default: `now()`, not null]
|
||||||
|
benutzer benutzer [not null]
|
||||||
|
documenttypes documenttypes [not null]
|
||||||
|
}
|
||||||
|
|
||||||
|
Table documenttypes {
|
||||||
|
id Int [pk, increment]
|
||||||
|
name String [not null]
|
||||||
|
shortdescription String [not null]
|
||||||
|
longdescription String [not null]
|
||||||
|
documenttemplates documenttemplates [not null]
|
||||||
|
}
|
||||||
|
|
||||||
|
Table tokens {
|
||||||
|
id Int [pk, increment]
|
||||||
|
token String [not null]
|
||||||
|
user_id Int [not null]
|
||||||
|
date_created DateTime [default: `now()`, not null]
|
||||||
|
last_used DateTime [default: `now()`, not null]
|
||||||
|
times_used Int [not null, default: 0]
|
||||||
|
permissions Int [not null, default: 0]
|
||||||
|
benutzer benutzer [not null]
|
||||||
|
}
|
||||||
|
|
||||||
|
Enum Heizungsstatus {
|
||||||
|
BEHEIZT
|
||||||
|
UNBEHEIZT
|
||||||
|
NICHT_VORHANDEN
|
||||||
|
}
|
||||||
|
|
||||||
|
Enum Lueftungskonzept {
|
||||||
|
Fensterlueftung
|
||||||
|
Schachtlueftung
|
||||||
|
LueftungsanlageMitWaermerueckgewinnung
|
||||||
|
LueftungsanlageOhneWaermerueckgewinnung
|
||||||
|
}
|
||||||
|
|
||||||
|
Enum BenutzerRolle {
|
||||||
|
USER
|
||||||
|
ADMIN
|
||||||
|
}
|
||||||
|
|
||||||
|
Enum BilderKategorie {
|
||||||
|
Heizung
|
||||||
|
Fenster
|
||||||
|
Gebaeude
|
||||||
|
Daemmung
|
||||||
|
}
|
||||||
|
|
||||||
|
Enum Einpreisungsstatus {
|
||||||
|
open
|
||||||
|
canceled
|
||||||
|
pending
|
||||||
|
expired
|
||||||
|
}
|
||||||
|
|
||||||
|
Enum Bezahlmethoden {
|
||||||
|
paypal
|
||||||
|
giropay
|
||||||
|
sofort
|
||||||
|
creditcard
|
||||||
|
rechnung
|
||||||
|
}
|
||||||
|
|
||||||
|
Enum Rechnungsstatus {
|
||||||
|
open
|
||||||
|
canceled
|
||||||
|
pending
|
||||||
|
authorized
|
||||||
|
expired
|
||||||
|
failed
|
||||||
|
paid
|
||||||
|
}
|
||||||
|
|
||||||
|
Enum AusweisTyp {
|
||||||
|
Standard
|
||||||
|
Beratung
|
||||||
|
Offline
|
||||||
|
}
|
||||||
|
|
||||||
|
Enum TicketStatus {
|
||||||
|
OFFEN
|
||||||
|
IN_BEARBEITUNG
|
||||||
|
IN_WARTESCHLEIFE
|
||||||
|
GESCHLOSSEN
|
||||||
|
GELOEST
|
||||||
|
}
|
||||||
|
|
||||||
|
Enum UnterlagenKategorie {
|
||||||
|
Grundriss
|
||||||
|
Sonstiges
|
||||||
|
}
|
||||||
|
|
||||||
|
Enum Ausstellgrund {
|
||||||
|
Neubau
|
||||||
|
Vermietung
|
||||||
|
Verkauf
|
||||||
|
Modernisierung
|
||||||
|
Sonstiges
|
||||||
|
}
|
||||||
|
|
||||||
|
Enum Ausweisart {
|
||||||
|
VerbrauchsausweisWohnen
|
||||||
|
VerbrauchsausweisGewerbe
|
||||||
|
BedarfsausweisWohnen
|
||||||
|
BedarfsausweisGewerbe
|
||||||
|
GEGNachweisWohnen
|
||||||
|
GEGNachweisBedarfsausweis
|
||||||
|
GEGNachweisGewerbe
|
||||||
|
}
|
||||||
|
|
||||||
|
Enum Service {
|
||||||
|
Telefonberatung
|
||||||
|
Aushang
|
||||||
|
Qualitaetsdruck
|
||||||
|
SameDay
|
||||||
|
}
|
||||||
|
|
||||||
|
Ref: Anteilshaber.benutzer_id - benutzer.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: Anteilshaber.objekt_id > Objekt.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: ApiRequests.user_id > benutzer.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: Aufnahme.benutzer_id > benutzer.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: Aufnahme.objekt_id > Objekt.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: BedarfsausweisGewerbe.benutzer_id > benutzer.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: BedarfsausweisGewerbe.aufnahme_id > Aufnahme.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: BedarfsausweisGewerbe.rechnung_id - Rechnung.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: BedarfsausweisGewerbe.geg_einpreisung_id - GEGEinpreisung.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: BedarfsausweisWohnen.benutzer_id > benutzer.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: BedarfsausweisWohnen.rechnung_id - Rechnung.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: BedarfsausweisWohnen.aufnahme_id > Aufnahme.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: Bild.aufnahme_id > Aufnahme.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: Event.aufnahme_id > Aufnahme.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: Event.benutzer_id > benutzer.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: GEGEinpreisung.benutzer_id > benutzer.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: GEGNachweisGewerbe.benutzer_id > benutzer.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: GEGNachweisGewerbe.aufnahme_id > Aufnahme.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: GEGNachweisGewerbe.rechnung_id - Rechnung.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: GEGNachweisGewerbe.geg_einpreisung_id - GEGEinpreisung.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: GEGNachweisWohnen.benutzer_id > benutzer.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: GEGNachweisWohnen.aufnahme_id > Aufnahme.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: GEGNachweisWohnen.rechnung_id - Rechnung.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: GEGNachweisWohnen.geg_einpreisung_id - GEGEinpreisung.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: Objekt.benutzer_id > benutzer.id
|
||||||
|
|
||||||
|
Ref: Rechnung.benutzer_id > benutzer.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: RefreshTokens.benutzer_id > benutzer.id [delete: Cascade]
|
||||||
|
|
||||||
|
Ref: Tickets.benutzer_id > benutzer.id
|
||||||
|
|
||||||
|
Ref: Tickets.bearbeiter_id > benutzer.id
|
||||||
|
|
||||||
|
Ref: Unterlage.aufnahme_id > Aufnahme.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: VerbrauchsausweisGewerbe.benutzer_id > benutzer.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: VerbrauchsausweisGewerbe.rechnung_id - Rechnung.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: VerbrauchsausweisGewerbe.aufnahme_id > Aufnahme.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: VerbrauchsausweisWohnen.benutzer_id > benutzer.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: VerbrauchsausweisWohnen.rechnung_id - Rechnung.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: VerbrauchsausweisWohnen.aufnahme_id > Aufnahme.id [delete: No Action]
|
||||||
|
|
||||||
|
Ref: documenttemplates.user_id > benutzer.id [delete: Cascade]
|
||||||
|
|
||||||
|
Ref: documenttemplates.documenttype > documenttypes.id [delete: Cascade]
|
||||||
|
|
||||||
|
Ref: tokens.user_id > benutzer.id [delete: No Action]
|
||||||
@@ -1,26 +1,8 @@
|
|||||||
version: '3'
|
version: '3'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
ibcornelsen-online-energieausweis:
|
|
||||||
build: ./
|
|
||||||
command: bun run dev --host
|
|
||||||
environment:
|
|
||||||
PORT: 3000
|
|
||||||
NODE_ENV: "development"
|
|
||||||
ports:
|
|
||||||
- "3000:3000"
|
|
||||||
volumes:
|
|
||||||
- ./:/online-energieausweis
|
|
||||||
- ./node_modules/@ibcornelsen/ui:/online-energieausweis/node_modules/@ibcornelsen/ui
|
|
||||||
- ./node_modules/@ibcornelsen/database:/online-energieausweis/node_modules/@ibcornelsen/database
|
|
||||||
# - ./node_modules/@ibcornelsen/api:/online-energieausweis/node_modules/@ibcornelsen/api
|
|
||||||
- ./node_modules/radix-svelte-icons:/online-energieausweis/node_modules/radix-svelte-icons
|
|
||||||
- ../api/persistent:/persistent
|
|
||||||
ibcornelsen-api:
|
|
||||||
extends:
|
|
||||||
file: ../api/docker-compose.yml
|
|
||||||
service: ibcornelsen-api
|
|
||||||
database:
|
database:
|
||||||
extends:
|
build: ./
|
||||||
file: ../database/docker-compose.yml
|
env_file:
|
||||||
service: database
|
- .env
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
@@ -22,7 +22,6 @@
|
|||||||
"@astrojs/node": "^8.3.4",
|
"@astrojs/node": "^8.3.4",
|
||||||
"@astrojs/svelte": "^2.2.0",
|
"@astrojs/svelte": "^2.2.0",
|
||||||
"@astrojs/tailwind": "^3.1.3",
|
"@astrojs/tailwind": "^3.1.3",
|
||||||
"@ibcornelsen/database": "link:@ibcornelsen/database",
|
|
||||||
"@ibcornelsen/ui": "^0.0.2",
|
"@ibcornelsen/ui": "^0.0.2",
|
||||||
"@mollie/api-client": "^4.1.0",
|
"@mollie/api-client": "^4.1.0",
|
||||||
"@pdfme/common": "^5.2.16",
|
"@pdfme/common": "^5.2.16",
|
||||||
@@ -68,6 +67,7 @@
|
|||||||
"@rollup/plugin-dsv": "^3.0.5",
|
"@rollup/plugin-dsv": "^3.0.5",
|
||||||
"@tailwindcss/typography": "^0.5.16",
|
"@tailwindcss/typography": "^0.5.16",
|
||||||
"@types/body-scroll-lock": "^3.1.2",
|
"@types/body-scroll-lock": "^3.1.2",
|
||||||
|
"@types/bun": "^1.2.2",
|
||||||
"@types/express": "^5.0.0",
|
"@types/express": "^5.0.0",
|
||||||
"@types/fontkit": "^2.0.7",
|
"@types/fontkit": "^2.0.7",
|
||||||
"@types/is-base64": "^1.1.3",
|
"@types/is-base64": "^1.1.3",
|
||||||
@@ -92,7 +92,12 @@
|
|||||||
"postcss-import": "^16.1.0",
|
"postcss-import": "^16.1.0",
|
||||||
"postcss-nesting": "^13.0.1",
|
"postcss-nesting": "^13.0.1",
|
||||||
"prettier": "^2.8.8",
|
"prettier": "^2.8.8",
|
||||||
"typescript": "^4.9.5"
|
"prisma": "^6.4.1",
|
||||||
|
"prisma-dbml-generator": "^0.12.0",
|
||||||
|
"prisma-generator-fake-data": "^0.14.3",
|
||||||
|
"tsx": "^4.19.3",
|
||||||
|
"typescript": "^4.9.5",
|
||||||
|
"zod-prisma": "^0.5.4"
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"zod": "^3.24.1"
|
"zod": "^3.24.1"
|
||||||
|
|||||||
1
prisma/null.ts
Normal file
1
prisma/null.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export const x = 5
|
||||||
37
prisma/prisma-enum-generator.ts
Normal file
37
prisma/prisma-enum-generator.ts
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import { generatorHandler } from "@prisma/generator-helper";
|
||||||
|
import fs from "fs";
|
||||||
|
import path from "path";
|
||||||
|
|
||||||
|
const header = `// This file was generated by a custom prisma generator, do not edit manually.\n`;
|
||||||
|
|
||||||
|
generatorHandler({
|
||||||
|
onManifest() {
|
||||||
|
return {
|
||||||
|
defaultOutput: "./enums/index.ts",
|
||||||
|
prettyName: "Prisma Enum Generator",
|
||||||
|
};
|
||||||
|
},
|
||||||
|
async onGenerate(options) {
|
||||||
|
const enums = options.dmmf.datamodel.enums;
|
||||||
|
|
||||||
|
const output = enums.map((e) => {
|
||||||
|
let enumString = `export const ${e.name} = {\n`;
|
||||||
|
e.values.forEach(({ name: value }) => {
|
||||||
|
enumString += ` ${value}: "${value}",\n`;
|
||||||
|
});
|
||||||
|
enumString += `} as const;\n\n`;
|
||||||
|
enumString += `export type ${e.name} = (typeof ${e.name})[keyof typeof ${e.name}];\n`;
|
||||||
|
|
||||||
|
return enumString;
|
||||||
|
});
|
||||||
|
|
||||||
|
const outputFile = options.generator.output;
|
||||||
|
if (!outputFile || !outputFile.value) {
|
||||||
|
throw new Error("No output file specified");
|
||||||
|
}
|
||||||
|
|
||||||
|
const outputPath = path.resolve(outputFile.value);
|
||||||
|
fs.mkdirSync(path.dirname(outputPath), { recursive: true });
|
||||||
|
fs.writeFileSync(outputPath, header + output.join("\n"), "utf-8");
|
||||||
|
},
|
||||||
|
});
|
||||||
11
prisma/schema/Anteilshaber.prisma
Normal file
11
prisma/schema/Anteilshaber.prisma
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
model Anteilshaber {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
benutzer_id Int
|
||||||
|
rolle String? @db.VarChar
|
||||||
|
privilegien BigInt?
|
||||||
|
uid String @unique @default(dbgenerated("'ant-' || gen_random_uuid()"))
|
||||||
|
benutzer Benutzer @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
objekt_id Int
|
||||||
|
objekt Objekt @relation(fields: [objekt_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
14
prisma/schema/ApiRequests.prisma
Normal file
14
prisma/schema/ApiRequests.prisma
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
model ApiRequests {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
date DateTime @default(now()) @db.Timestamp(6)
|
||||||
|
ip String @db.VarChar(50)
|
||||||
|
method String @db.VarChar(10)
|
||||||
|
path String @db.VarChar(100)
|
||||||
|
status Int
|
||||||
|
responseTime Float
|
||||||
|
responseSize Int
|
||||||
|
userAgent String @db.VarChar(500)
|
||||||
|
user_id Int?
|
||||||
|
user Benutzer? @relation(fields: [user_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
150
prisma/schema/Aufnahme.prisma
Normal file
150
prisma/schema/Aufnahme.prisma
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
|
||||||
|
enum Heizungsstatus {
|
||||||
|
BEHEIZT
|
||||||
|
UNBEHEIZT
|
||||||
|
NICHT_VORHANDEN
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Lueftungskonzept {
|
||||||
|
Fensterlueftung
|
||||||
|
Schachtlueftung
|
||||||
|
LueftungsanlageMitWaermerueckgewinnung
|
||||||
|
LueftungsanlageOhneWaermerueckgewinnung
|
||||||
|
}
|
||||||
|
|
||||||
|
model Aufnahme {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
/// @zod.describe("UID der Gebäude Aufnahme")
|
||||||
|
uid String @unique @default(dbgenerated("'auf-' || gen_random_uuid()"))
|
||||||
|
benutzer_id Int?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
/// @zod.describe("Art des korrespondierenden Ausweises, wie z.B. VerbrauchsausweisWohnen")
|
||||||
|
ausweisart Ausweisart?
|
||||||
|
/// @zod.describe("Art des Gebäudes und seiner primären Nutzungsart")
|
||||||
|
gebaeudetyp String? @db.VarChar
|
||||||
|
/// @zod.describe("Betrachteter Teil des Gebäudes, z.B. Gesamtgebäude, Wohnteil, Gewerbeteil")
|
||||||
|
gebaeudeteil String? @db.VarChar
|
||||||
|
/// @zod.describe("Alle Jahre in denen das Gebäude konstruiert oder grundlegend verändert wurde")
|
||||||
|
baujahr_gebaeude Int[]
|
||||||
|
/// @zod.describe("Alle Jahre in denen die Heizung eingebaut oder grundlegend verändert wurde")
|
||||||
|
baujahr_heizung Int[]
|
||||||
|
/// @zod.describe("Alle Jahre in denen die Klimaanlage eingebaut oder grundlegend verändert wurde")
|
||||||
|
baujahr_klima Int[]
|
||||||
|
/// @zod.describe("Anzahl der (Wohn)Einheiten im Gebäude")
|
||||||
|
einheiten Int?
|
||||||
|
/// @zod.describe("Wohnfläche bei Wohngebäuden, Nutzfläche bei Gewerbegebäuden")
|
||||||
|
flaeche Int?
|
||||||
|
/// @zod.describe("(energetische) Nutzfläche des Gebäudes. Bei Gewerbegebäuden entspricht Sie der Nutzfläche")
|
||||||
|
nutzflaeche Int?
|
||||||
|
/// @zod.describe("Falls das Gebäude energetisch saniert ist, sollte dieser Wert auf true stehen")
|
||||||
|
saniert Boolean?
|
||||||
|
/// @zod.describe("Ob ein Keller vorhanden, beheizt oder unbeheizt ist")
|
||||||
|
keller Heizungsstatus?
|
||||||
|
/// @zod.describe("Ob ein Dachgeschoss vorhanden, beheizt oder unbeheizt ist")
|
||||||
|
dachgeschoss Heizungsstatus?
|
||||||
|
/// @zod.describe("Art der Gebäudelüftung")
|
||||||
|
lueftung Lueftungskonzept?
|
||||||
|
/// @zod.describe("Art der Gebäudekühlung")
|
||||||
|
kuehlung String? @db.VarChar(50)
|
||||||
|
/// @zod.describe("Prozentualer Leerstand des Gebäudes in einem durchschnittlichen Jahr")
|
||||||
|
leerstand Int?
|
||||||
|
|
||||||
|
/// @zod.describe("Falls der Heizungsverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")
|
||||||
|
alternative_heizung Boolean?
|
||||||
|
/// @zod.describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")
|
||||||
|
alternative_warmwasser Boolean?
|
||||||
|
/// @zod.describe("Falls die Lüftung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")
|
||||||
|
alternative_lueftung Boolean?
|
||||||
|
/// @zod.describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")
|
||||||
|
alternative_kuehlung Boolean?
|
||||||
|
|
||||||
|
/// @zod.describe("Genutzer Brennstoff der primären Energiequelle")
|
||||||
|
brennstoff_1 String? @db.VarChar(50)
|
||||||
|
/// @zod.describe("Genutzer Brennstoff der sekundären Energiequelle")
|
||||||
|
brennstoff_2 String? @db.VarChar(50)
|
||||||
|
|
||||||
|
boxpruefung Boolean? @default(false)
|
||||||
|
|
||||||
|
/// @zod.describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes")
|
||||||
|
energieeffizienzklasse String? @db.VarChar(5)
|
||||||
|
|
||||||
|
/// @zod.describe("Datum an dem der Kunde den Ausweis erstellt hat")
|
||||||
|
erstellungsdatum DateTime? @default(now())
|
||||||
|
/// @zod.describe("Datum an dem der Aussteller den Ausweis ausgestellt hat")
|
||||||
|
ausstellungsdatum DateTime?
|
||||||
|
|
||||||
|
/// @zod.describe("Falls das Gebäude über eine Zentralbeheizung verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
zentralheizung Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über ein Solarsystem für Warmwasser verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
solarsystem_warmwasser Boolean?
|
||||||
|
/// @zod.describe("Falls die Warmwasserrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
warmwasser_rohre_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über einen Niedertemperaturkessel verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
niedertemperatur_kessel Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über einen Brennwertkessel verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
brennwert_kessel Boolean?
|
||||||
|
/// @zod.describe("Falls die Heizungsrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
heizungsrohre_gedaemmt Boolean?
|
||||||
|
standard_kessel Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über eine Wärmepumpe verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
waermepumpe Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über einen Raumtemperaturregler verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
raum_temperatur_regler Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über eine Photovoltaikanlage verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
photovoltaik Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über einen Durchlauferhitzer verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
durchlauf_erhitzer Boolean?
|
||||||
|
einzelofen Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über eine Zirkulationspumpe verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
zirkulation Boolean?
|
||||||
|
/// @zod.describe("Falls die Fenster des Gebäudes einfach gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
einfach_verglasung Boolean?
|
||||||
|
/// @zod.describe("Falls die Fenster des Gebäudes dreifach gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
dreifach_verglasung Boolean?
|
||||||
|
/// @zod.describe("Falls die Fenster des Gebäudes teilweise undicht sind, sollte dieser Wert auf true stehen")
|
||||||
|
fenster_teilweise_undicht Boolean?
|
||||||
|
/// @zod.describe("Falls die Fenster des Gebäudes doppelt gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
doppel_verglasung Boolean?
|
||||||
|
/// @zod.describe("Falls die Fenster des Gebäudes dicht sind, sollte dieser Wert auf true stehen")
|
||||||
|
fenster_dicht Boolean?
|
||||||
|
/// @zod.describe("Falls das Gebäude über gedämmte Rolllädenkästen verfügt, sollte dieser Wert auf true stehen")
|
||||||
|
rolllaeden_kaesten_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls die Fenster des Gebäudes isolier Verglasung haben, sollte dieser Wert auf true stehen")
|
||||||
|
isolier_verglasung Boolean?
|
||||||
|
/// @zod.describe("Falls die Türen des Gebäudes undicht sind, sollte dieser Wert auf true stehen")
|
||||||
|
tueren_undicht Boolean?
|
||||||
|
/// @zod.describe("Falls die Türen des Gebäudes dicht sind, sollte dieser Wert auf true stehen")
|
||||||
|
tueren_dicht Boolean?
|
||||||
|
/// @zod.describe("Falls das Dachgeschoss des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")
|
||||||
|
dachgeschoss_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls die Kellerdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")
|
||||||
|
keller_decke_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls die Kellerwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
keller_wand_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls die Außenwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
aussenwand_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls die oberste Geschossdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen")
|
||||||
|
oberste_geschossdecke_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls die Außenwände des Gebäudes mindestens 12cm gedämmt sind, sollte dieser Wert auf true stehen")
|
||||||
|
aussenwand_min_12cm_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls das Dachgeschoss des Gebäudes mindestens 12cm gedämmt ist, sollte dieser Wert auf true stehen")
|
||||||
|
dachgeschoss_min_12cm_gedaemmt Boolean?
|
||||||
|
/// @zod.describe("Falls die oberste Geschossdecke des Gebäudes mindestens 12cm gedämmt ist, sollte dieser Wert auf true stehen")
|
||||||
|
oberste_geschossdecke_min_12cm_gedaemmt Boolean?
|
||||||
|
|
||||||
|
events Event[]
|
||||||
|
bilder Bild[]
|
||||||
|
unterlagen Unterlage[]
|
||||||
|
bedarfsausweise_wohnen BedarfsausweisWohnen[]
|
||||||
|
verbrauchsausweise_gewerbe VerbrauchsausweisGewerbe[]
|
||||||
|
verbrauchsausweise_wohnen VerbrauchsausweisWohnen[]
|
||||||
|
geg_nachweise_wohnen GEGNachweisWohnen[]
|
||||||
|
geg_nachweise_gewerbe GEGNachweisGewerbe[]
|
||||||
|
bedarfsausweise_gewerbe BedarfsausweisGewerbe[]
|
||||||
|
|
||||||
|
objekt_id Int
|
||||||
|
objekt Objekt @relation(fields: [objekt_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
16
prisma/schema/BedarfsausweisGewerbe.prisma
Normal file
16
prisma/schema/BedarfsausweisGewerbe.prisma
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
model BedarfsausweisGewerbe {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
uid String @unique @default(dbgenerated("'bag-' || gen_random_uuid()"))
|
||||||
|
|
||||||
|
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
|
||||||
|
benutzer_id Int?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
aufnahme_id Int @unique
|
||||||
|
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
rechnung_id Int? @unique
|
||||||
|
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
geg_einpreisung_id Int? @unique
|
||||||
|
geg_einpreisung GEGEinpreisung? @relation(fields: [geg_einpreisung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
86
prisma/schema/BedarfsausweisWohnen.prisma
Normal file
86
prisma/schema/BedarfsausweisWohnen.prisma
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
|
||||||
|
model BedarfsausweisWohnen {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
uid String @unique @default(dbgenerated("'baw-' || gen_random_uuid()"))
|
||||||
|
benutzer_id Int?
|
||||||
|
ausstellgrund Ausstellgrund?
|
||||||
|
registriernummer String? @db.VarChar
|
||||||
|
|
||||||
|
alternative_heizung Boolean?
|
||||||
|
alternative_warmwasser Boolean?
|
||||||
|
alternative_lueftung Boolean?
|
||||||
|
alternative_kuehlung Boolean?
|
||||||
|
|
||||||
|
anzahl_vollgeschosse Int?
|
||||||
|
geschosshoehe Float?
|
||||||
|
anzahl_gauben Int?
|
||||||
|
breite_gauben Float?
|
||||||
|
masse_a Float?
|
||||||
|
masse_b Float?
|
||||||
|
masse_c Float?
|
||||||
|
masse_d Float?
|
||||||
|
masse_e Float?
|
||||||
|
masse_f Float?
|
||||||
|
fensterflaeche_so_sw Float?
|
||||||
|
fensterflaeche_nw_no Float?
|
||||||
|
aussenwandflaeche_unbeheizt Float?
|
||||||
|
dachflaeche Float?
|
||||||
|
deckenflaeche Float?
|
||||||
|
dach_u_wert Float?
|
||||||
|
decke_u_wert Float?
|
||||||
|
aussenwand_flaeche Float?
|
||||||
|
aussenwand_u_wert Float?
|
||||||
|
fussboden_flaeche Float?
|
||||||
|
fussboden_u_wert Float?
|
||||||
|
volumen Float?
|
||||||
|
dicht Boolean?
|
||||||
|
fenster_flaeche_1 Float?
|
||||||
|
fenster_art_1 Float?
|
||||||
|
fenster_flaeche_2 Float?
|
||||||
|
fenster_art_2 Float?
|
||||||
|
dachfenster_flaeche Float?
|
||||||
|
dachfenster_art Float?
|
||||||
|
haustuer_flaeche Float?
|
||||||
|
haustuer_art Float?
|
||||||
|
dach_bauart String? @db.VarChar
|
||||||
|
decke_bauart String? @db.VarChar
|
||||||
|
dach_daemmung Float?
|
||||||
|
decke_daemmung Float?
|
||||||
|
aussenwand_daemmung Float?
|
||||||
|
boden_daemmung Float?
|
||||||
|
aussenwand_bauart String? @db.VarChar
|
||||||
|
boden_bauart String? @db.VarChar
|
||||||
|
warmwasser_verteilung String? @db.VarChar
|
||||||
|
warmwasser_speicherung String? @db.VarChar
|
||||||
|
warmwasser_erzeugung String? @db.VarChar
|
||||||
|
heizung_zentral Boolean?
|
||||||
|
heizung_verteilung String? @db.VarChar
|
||||||
|
heizung_speicherung String? @db.VarChar
|
||||||
|
waerme_erzeugung_heizung String? @db.VarChar
|
||||||
|
anteil_zusatzheizung Float?
|
||||||
|
kollektor_flaeche Float?
|
||||||
|
|
||||||
|
ausgestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen")
|
||||||
|
storniert Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
bestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
zurueckgestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung")
|
||||||
|
prueftext String? @db.VarChar(1000)
|
||||||
|
|
||||||
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
|
/// @zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde")
|
||||||
|
kontrolldatei_angefragt Boolean? @default(false)
|
||||||
|
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
rechnung_id Int? @unique
|
||||||
|
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
/// @zod.describe("ID der korrespondierenden Gebäudeaufnahme")
|
||||||
|
aufnahme_id Int @unique
|
||||||
|
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
52
prisma/schema/Benutzer.prisma
Normal file
52
prisma/schema/Benutzer.prisma
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
|
||||||
|
enum BenutzerRolle {
|
||||||
|
USER
|
||||||
|
ADMIN
|
||||||
|
}
|
||||||
|
|
||||||
|
model Benutzer {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
uid String @unique @default(dbgenerated("'usr-' || gen_random_uuid()"))
|
||||||
|
name String? @db.VarChar(50)
|
||||||
|
vorname String? @db.VarChar(50)
|
||||||
|
email String @unique(map: "benutzer_email_idx") @db.VarChar(255)
|
||||||
|
passwort String @db.VarChar(255)
|
||||||
|
profilbild String? @db.VarChar
|
||||||
|
plz String? @db.VarChar(5)
|
||||||
|
ort String? @db.VarChar(50)
|
||||||
|
adresse String? @db.VarChar(100)
|
||||||
|
telefon String? @db.VarChar(50)
|
||||||
|
anrede String? @db.VarChar(50)
|
||||||
|
rolle BenutzerRolle @default(USER)
|
||||||
|
firma String?
|
||||||
|
lex_office_id String?
|
||||||
|
|
||||||
|
Anteilshaber Anteilshaber[] @ignore
|
||||||
|
BedarfsausweisWohnen BedarfsausweisWohnen[]
|
||||||
|
documenttemplates documenttemplates[]
|
||||||
|
objekte Objekt[]
|
||||||
|
rechnungen Rechnung[]
|
||||||
|
tokens tokens[]
|
||||||
|
VerbrauchsausweisGewerbe VerbrauchsausweisGewerbe[]
|
||||||
|
VerbrauchsausweisWohnen VerbrauchsausweisWohnen[]
|
||||||
|
ApiRequests ApiRequests[]
|
||||||
|
RefreshTokens RefreshTokens[]
|
||||||
|
aufnahmen Aufnahme[]
|
||||||
|
|
||||||
|
// ---------------------------------- GEG ----------------------------------
|
||||||
|
geg_einpreisungen GEGEinpreisung[]
|
||||||
|
geg_nachweise_gewerbe GEGNachweisGewerbe[]
|
||||||
|
geg_nachweise_wohnen GEGNachweisWohnen[]
|
||||||
|
bedarfsausweise_gewerbe BedarfsausweisGewerbe[]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ErstellteTickets Tickets[] @relation("ErstellteTickets")
|
||||||
|
BearbeiteteTickets Tickets[] @relation("BearbeiteteTickets")
|
||||||
|
events Event[]
|
||||||
|
|
||||||
|
@@map("benutzer")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
16
prisma/schema/Bild.prisma
Normal file
16
prisma/schema/Bild.prisma
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
enum BilderKategorie {
|
||||||
|
Heizung
|
||||||
|
Fenster
|
||||||
|
Gebaeude
|
||||||
|
Daemmung
|
||||||
|
}
|
||||||
|
|
||||||
|
model Bild {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
kategorie BilderKategorie
|
||||||
|
uid String @unique @default(dbgenerated("'img-' || gen_random_uuid()"))
|
||||||
|
|
||||||
|
aufnahme_id Int?
|
||||||
|
aufnahme Aufnahme? @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
20
prisma/schema/Event.prisma
Normal file
20
prisma/schema/Event.prisma
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
// Dieses Model wird für getriggerte Events verwendet
|
||||||
|
// Hier werden beispielsweise Events wie "Nachricht Verschickt" gespeichert.
|
||||||
|
// Diese Events werden dann in der Admin-Oberfläche angezeigt.
|
||||||
|
model Event {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
uid String @unique @default(dbgenerated("'evt-' || gen_random_uuid()"))
|
||||||
|
date DateTime @default(now()) @db.Timestamp(6)
|
||||||
|
|
||||||
|
title String @db.VarChar(255)
|
||||||
|
description String? @db.Text
|
||||||
|
|
||||||
|
|
||||||
|
// Verlinkung des Gebäudes
|
||||||
|
aufnahme_id Int
|
||||||
|
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
// Verlinkung des Benutzers
|
||||||
|
benutzer_id Int?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
36
prisma/schema/GEGEinpreisung.prisma
Normal file
36
prisma/schema/GEGEinpreisung.prisma
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
enum Einpreisungsstatus {
|
||||||
|
open
|
||||||
|
canceled
|
||||||
|
pending
|
||||||
|
expired
|
||||||
|
}
|
||||||
|
|
||||||
|
model GEGEinpreisung {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
uid String @unique @default(dbgenerated("'gge-' || gen_random_uuid()"))
|
||||||
|
|
||||||
|
empfaenger String? @db.VarChar
|
||||||
|
strasse String? @db.VarChar
|
||||||
|
plz String? @db.VarChar
|
||||||
|
ort String? @db.VarChar
|
||||||
|
zusatzzeile String? @db.VarChar
|
||||||
|
telefon String? @db.VarChar
|
||||||
|
email String? @db.VarChar
|
||||||
|
|
||||||
|
abweichende_versand_adresse Boolean? @default(false)
|
||||||
|
versand_empfaenger String? @db.VarChar
|
||||||
|
versand_strasse String? @db.VarChar
|
||||||
|
versand_plz String? @db.VarChar
|
||||||
|
versand_ort String? @db.VarChar
|
||||||
|
versand_zusatzzeile String? @db.VarChar
|
||||||
|
|
||||||
|
status Einpreisungsstatus
|
||||||
|
|
||||||
|
geg_nachweis_wohnen GEGNachweisWohnen?
|
||||||
|
geg_nachweis_gewerbe GEGNachweisGewerbe?
|
||||||
|
bedarfsausweis_gewerbe BedarfsausweisGewerbe?
|
||||||
|
|
||||||
|
/// @zod.describe("Die ID des Benutzers, der diese Einpreisung bekommt.")
|
||||||
|
benutzer_id Int?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
30
prisma/schema/GEGNachweisGewerbe.prisma
Normal file
30
prisma/schema/GEGNachweisGewerbe.prisma
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
model GEGNachweisGewerbe {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
uid String @unique @default(dbgenerated("'gnw-' || gen_random_uuid()"))
|
||||||
|
|
||||||
|
/// @zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf")
|
||||||
|
ausstellgrund Ausstellgrund?
|
||||||
|
/// @zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen")
|
||||||
|
keller_beheizt Boolean?
|
||||||
|
|
||||||
|
/// @zod.describe("Falls die Nachweisanfrage storniert wurde, sollte dieser Wert auf true stehen")
|
||||||
|
storniert Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
bestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
zurueckgestellt Boolean? @default(false)
|
||||||
|
|
||||||
|
/// @zod.describe("Beschreibung des Bauvorhabens")
|
||||||
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
|
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
|
||||||
|
benutzer_id Int?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
aufnahme_id Int @unique
|
||||||
|
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
rechnung_id Int? @unique
|
||||||
|
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
geg_einpreisung_id Int? @unique
|
||||||
|
geg_einpreisung GEGEinpreisung? @relation(fields: [geg_einpreisung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
30
prisma/schema/GEGNachweisWohnen.prisma
Normal file
30
prisma/schema/GEGNachweisWohnen.prisma
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
model GEGNachweisWohnen {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
uid String @unique @default(dbgenerated("'gnw-' || gen_random_uuid()"))
|
||||||
|
|
||||||
|
/// @zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf")
|
||||||
|
ausstellgrund Ausstellgrund?
|
||||||
|
/// @zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen")
|
||||||
|
keller_beheizt Boolean?
|
||||||
|
|
||||||
|
/// @zod.describe("Falls die Nachweisanfrage storniert wurde, sollte dieser Wert auf true stehen")
|
||||||
|
storniert Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
bestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
zurueckgestellt Boolean? @default(false)
|
||||||
|
|
||||||
|
/// @zod.describe("Beschreibung des Bauvorhabens")
|
||||||
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
|
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
|
||||||
|
benutzer_id Int?
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
aufnahme_id Int @unique
|
||||||
|
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
rechnung_id Int? @unique
|
||||||
|
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
geg_einpreisung_id Int? @unique
|
||||||
|
geg_einpreisung GEGEinpreisung? @relation(fields: [geg_einpreisung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
11
prisma/schema/Klimafaktoren.prisma
Normal file
11
prisma/schema/Klimafaktoren.prisma
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
model Klimafaktoren {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
plz String @db.VarChar(5)
|
||||||
|
month Int
|
||||||
|
year Int
|
||||||
|
klimafaktor Float @default(1)
|
||||||
|
|
||||||
|
// Mithilfe eines composite keys können wir einfach den Monat und das Jahr mit der Postleitzahl verknüpfen
|
||||||
|
// somit müssen wir nicht mehr eine Zeile für jeden Monat anlegen.
|
||||||
|
@@unique([plz, month, year])
|
||||||
|
}
|
||||||
21
prisma/schema/Objekt.prisma
Normal file
21
prisma/schema/Objekt.prisma
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
model Objekt {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
uid String @unique @default(dbgenerated("'obj-' || gen_random_uuid()"))
|
||||||
|
benutzer_id Int?
|
||||||
|
|
||||||
|
latitude Float?
|
||||||
|
longitude Float?
|
||||||
|
|
||||||
|
/// @zod.describe("Postleitzahl des Gebäudes")
|
||||||
|
plz String? @db.VarChar(5)
|
||||||
|
/// @zod.describe("Ort des Gebäudes")
|
||||||
|
ort String? @db.VarChar(50)
|
||||||
|
/// @zod.describe("Adresse (Straße und Hausnummer) des Gebäudes")
|
||||||
|
adresse String? @db.VarChar(100)
|
||||||
|
|
||||||
|
erstellungsdatum DateTime? @default(now())
|
||||||
|
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id])
|
||||||
|
aufnahmen Aufnahme[]
|
||||||
|
anteilshaber Anteilshaber[]
|
||||||
|
}
|
||||||
9
prisma/schema/Postleitzahlen.prisma
Normal file
9
prisma/schema/Postleitzahlen.prisma
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
model Postleitzahlen {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
plz String @db.VarChar(5)
|
||||||
|
stadt String @db.VarChar(100)
|
||||||
|
bundesland String @db.VarChar(100)
|
||||||
|
landkreis String @db.VarChar(100)
|
||||||
|
lat Float
|
||||||
|
lon Float
|
||||||
|
}
|
||||||
66
prisma/schema/Rechnung.prisma
Normal file
66
prisma/schema/Rechnung.prisma
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
|
||||||
|
enum Bezahlmethoden {
|
||||||
|
paypal
|
||||||
|
giropay
|
||||||
|
sofort
|
||||||
|
creditcard
|
||||||
|
rechnung
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Rechnungsstatus {
|
||||||
|
open
|
||||||
|
canceled
|
||||||
|
pending
|
||||||
|
authorized
|
||||||
|
expired
|
||||||
|
failed
|
||||||
|
paid
|
||||||
|
}
|
||||||
|
|
||||||
|
enum AusweisTyp {
|
||||||
|
Standard
|
||||||
|
Beratung
|
||||||
|
Offline
|
||||||
|
}
|
||||||
|
|
||||||
|
model Rechnung {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
uid String @unique @default(dbgenerated("'inv-' || gen_random_uuid()"))
|
||||||
|
|
||||||
|
benutzer_id Int
|
||||||
|
empfaenger String? @db.VarChar
|
||||||
|
strasse String? @db.VarChar
|
||||||
|
plz String? @db.VarChar
|
||||||
|
ort String? @db.VarChar
|
||||||
|
zusatzzeile String? @db.VarChar
|
||||||
|
telefon String? @db.VarChar
|
||||||
|
email String? @db.VarChar
|
||||||
|
|
||||||
|
abweichende_versand_adresse Boolean? @default(false)
|
||||||
|
versand_empfaenger String? @db.VarChar
|
||||||
|
versand_strasse String? @db.VarChar
|
||||||
|
versand_plz String? @db.VarChar
|
||||||
|
versand_ort String? @db.VarChar
|
||||||
|
versand_zusatzzeile String? @db.VarChar
|
||||||
|
|
||||||
|
bezahlmethode Bezahlmethoden
|
||||||
|
status Rechnungsstatus
|
||||||
|
services Service[]
|
||||||
|
ausweistyp AusweisTyp @default(Standard)
|
||||||
|
betrag Float
|
||||||
|
erstellt_am DateTime @default(now())
|
||||||
|
bezahlt_am DateTime?
|
||||||
|
storniert_am DateTime?
|
||||||
|
transaktions_referenz String? @unique @db.VarChar
|
||||||
|
|
||||||
|
benutzer Benutzer @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
verbrauchsausweis_wohnen VerbrauchsausweisWohnen?
|
||||||
|
verbrauchsausweis_gewerbe VerbrauchsausweisGewerbe?
|
||||||
|
bedarfsausweis_wohnen BedarfsausweisWohnen?
|
||||||
|
bedarfsausweis_gewerbe BedarfsausweisGewerbe?
|
||||||
|
geg_nachweis_gewerbe GEGNachweisGewerbe?
|
||||||
|
geg_nachweis_wohnen GEGNachweisWohnen?
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
13
prisma/schema/RefreshTokens.prisma
Normal file
13
prisma/schema/RefreshTokens.prisma
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
model RefreshTokens {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
benutzer_id Int
|
||||||
|
token String @unique
|
||||||
|
// Wir nehmen die IP Adresse des Clients mit auf.
|
||||||
|
// Falls sich die IP Adresse eines Refresh Token Owners ändert, können wir diesen einfach invalidieren.
|
||||||
|
ip String
|
||||||
|
expiry DateTime
|
||||||
|
|
||||||
|
// Relationen
|
||||||
|
user Benutzer @relation(fields: [benutzer_id], references: [id], onDelete: Cascade)
|
||||||
|
}
|
||||||
30
prisma/schema/Tickets.prisma
Normal file
30
prisma/schema/Tickets.prisma
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
|
||||||
|
enum TicketStatus {
|
||||||
|
OFFEN
|
||||||
|
IN_BEARBEITUNG
|
||||||
|
IN_WARTESCHLEIFE
|
||||||
|
GESCHLOSSEN
|
||||||
|
GELOEST
|
||||||
|
}
|
||||||
|
|
||||||
|
model Tickets {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
uid String @unique @default(dbgenerated("'tkt-' || gen_random_uuid()"))
|
||||||
|
benutzer_id Int?
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime? @updatedAt
|
||||||
|
deleted_at DateTime?
|
||||||
|
// Attribute
|
||||||
|
status TicketStatus @default(OFFEN)
|
||||||
|
titel String
|
||||||
|
beschreibung String
|
||||||
|
metadata Json?
|
||||||
|
email String
|
||||||
|
|
||||||
|
bearbeiter_id Int?
|
||||||
|
prioritaet Int? @default(0)
|
||||||
|
|
||||||
|
// Relationen
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], name: "ErstellteTickets")
|
||||||
|
bearbeiter Benutzer? @relation(fields: [bearbeiter_id], references: [id], name: "BearbeiteteTickets")
|
||||||
|
}
|
||||||
16
prisma/schema/Unterlage.prisma
Normal file
16
prisma/schema/Unterlage.prisma
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
enum UnterlagenKategorie {
|
||||||
|
Grundriss
|
||||||
|
Sonstiges
|
||||||
|
}
|
||||||
|
|
||||||
|
model Unterlage {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
uid String @unique @default(dbgenerated("'pln-' || gen_random_uuid()"))
|
||||||
|
name String?
|
||||||
|
kategorie String?
|
||||||
|
mime String?
|
||||||
|
|
||||||
|
aufnahme_id Int?
|
||||||
|
aufnahme Aufnahme? @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
72
prisma/schema/VerbrauchsausweisGewerbe.prisma
Normal file
72
prisma/schema/VerbrauchsausweisGewerbe.prisma
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
|
||||||
|
model VerbrauchsausweisGewerbe {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
uid String @unique @default(dbgenerated("'vag-' || gen_random_uuid()"))
|
||||||
|
benutzer_id Int?
|
||||||
|
ausstellgrund Ausstellgrund?
|
||||||
|
registriernummer String? @db.VarChar
|
||||||
|
zusaetzliche_heizquelle Boolean?
|
||||||
|
brennstoff_1 String? @db.VarChar(50)
|
||||||
|
einheit_1 String? @db.VarChar(50)
|
||||||
|
brennstoff_2 String? @db.VarChar(50)
|
||||||
|
einheit_2 String? @db.VarChar(50)
|
||||||
|
startdatum DateTime? @db.Timestamp(6)
|
||||||
|
verbrauch_1 Int?
|
||||||
|
verbrauch_2 Int?
|
||||||
|
verbrauch_3 Int?
|
||||||
|
verbrauch_4 Int?
|
||||||
|
verbrauch_5 Int?
|
||||||
|
verbrauch_6 Int?
|
||||||
|
|
||||||
|
strom_1 Int?
|
||||||
|
strom_2 Int?
|
||||||
|
strom_3 Int?
|
||||||
|
|
||||||
|
stromverbrauch_enthaelt_heizung Boolean?
|
||||||
|
stromverbrauch_enthaelt_warmwasser Boolean?
|
||||||
|
stromverbrauch_enthaelt_lueftung Boolean?
|
||||||
|
stromverbrauch_enthaelt_beleuchtung Boolean?
|
||||||
|
stromverbrauch_enthaelt_kuehlung Boolean?
|
||||||
|
stromverbrauch_enthaelt_sonstige String? @db.VarChar(50)
|
||||||
|
|
||||||
|
kuehlung_enthalten Boolean?
|
||||||
|
anteil_kuehlung_1 Float?
|
||||||
|
anteil_kuehlung_2 Float?
|
||||||
|
|
||||||
|
|
||||||
|
keller_beheizt Boolean?
|
||||||
|
|
||||||
|
alternative_heizung Boolean?
|
||||||
|
alternative_warmwasser Boolean?
|
||||||
|
alternative_lueftung Boolean?
|
||||||
|
alternative_kuehlung Boolean?
|
||||||
|
|
||||||
|
warmwasser_enthalten Boolean?
|
||||||
|
anteil_warmwasser_1 Float?
|
||||||
|
anteil_warmwasser_2 Float?
|
||||||
|
|
||||||
|
ausgestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen")
|
||||||
|
storniert Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
bestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
zurueckgestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung")
|
||||||
|
prueftext String? @db.VarChar(1000)
|
||||||
|
|
||||||
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
|
/// @zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde")
|
||||||
|
kontrolldatei_angefragt Boolean? @default(false)
|
||||||
|
|
||||||
|
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
rechnung_id Int? @unique
|
||||||
|
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
/// @zod.describe("ID der korrespondierenden Gebäudeaufnahme")
|
||||||
|
aufnahme_id Int @unique
|
||||||
|
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
77
prisma/schema/VerbrauchsausweisWohnen.prisma
Normal file
77
prisma/schema/VerbrauchsausweisWohnen.prisma
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
|
||||||
|
model VerbrauchsausweisWohnen {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
/// @zod.describe("UID des Ausweises")
|
||||||
|
uid String @unique @default(dbgenerated("'vaw-' || gen_random_uuid()"))
|
||||||
|
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
|
||||||
|
benutzer_id Int?
|
||||||
|
/// @zod.describe("Ausstellgrund wie z.B. Vermietung oder Verkauf")
|
||||||
|
ausstellgrund Ausstellgrund?
|
||||||
|
/// @zod.describe("Die Registriernummer des Ausweises")
|
||||||
|
registriernummer String? @db.VarChar
|
||||||
|
/// @zod.describe("Falls eine sekundäre Heizquelle existiert, sollte dieser Wert auf true stehen")
|
||||||
|
zusaetzliche_heizquelle Boolean?
|
||||||
|
/// @zod.describe("Einheit des Energieträgers der primären Heizquelle")
|
||||||
|
einheit_1 String? @db.VarChar(50)
|
||||||
|
/// @zod.describe("Einheit des Energieträgers der sekundären Heizquelle")
|
||||||
|
einheit_2 String? @db.VarChar(50)
|
||||||
|
startdatum DateTime? @db.Timestamptz(6)
|
||||||
|
/// @zod.describe("Energieverbrauch der primären Heizquelle im ersten der drei Verbrauchsjahre")
|
||||||
|
verbrauch_1 Int?
|
||||||
|
/// @zod.describe("Energieverbrauch der primären Heizquelle im zweiten der drei Verbrauchsjahre")
|
||||||
|
verbrauch_2 Int?
|
||||||
|
/// @zod.describe("Energieverbrauch der primären Heizquelle im letzten der drei Verbrauchsjahre")
|
||||||
|
verbrauch_3 Int?
|
||||||
|
/// @zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im ersten der drei Verbrauchsjahre")
|
||||||
|
verbrauch_4 Int?
|
||||||
|
/// @zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im zweiten der drei Verbrauchsjahre")
|
||||||
|
verbrauch_5 Int?
|
||||||
|
/// @zod.describe("Energieverbrauch der sekund̈́ären Heizquelle im letzten der drei Verbrauchsjahre")
|
||||||
|
verbrauch_6 Int?
|
||||||
|
/// @zod.describe("Falls Warmwasser im Verbrauchswert enthalten ist, sollte dieser Wert auf true stehen")
|
||||||
|
warmwasser_enthalten Boolean?
|
||||||
|
/// @zod.describe("Falls der Warmwasser Anteil am Verbrauch bekannt ist, sollte dieser Wert auf true stehen")
|
||||||
|
warmwasser_anteil_bekannt Boolean?
|
||||||
|
/// @zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen")
|
||||||
|
keller_beheizt Boolean?
|
||||||
|
/// @zod.describe("Der Faktor mit dem die Wohnfläche erhöht wird wenn die beheizte Gesamtfläche (energetische Nutzfläche) unbekannt ist.")
|
||||||
|
faktorKeller Float?
|
||||||
|
|
||||||
|
/// @zod.describe("Falls der Heizungsverbrauch alternative Energieversorgungssysteme beinhaltet, sollte dieser Wert auf true stehen.")
|
||||||
|
alternative_heizung Boolean?
|
||||||
|
/// @zod.describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme (z.B. Solarsystem, Wärmepumpe, etc.) beinhaltet, sollte dieser Wert auf true stehen.")
|
||||||
|
alternative_warmwasser Boolean?
|
||||||
|
/// @zod.describe("Falls die Lüftung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen.")
|
||||||
|
alternative_lueftung Boolean?
|
||||||
|
/// @zod.describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen.")
|
||||||
|
alternative_kuehlung Boolean?
|
||||||
|
|
||||||
|
/// @zod.describe("Anteil des Warmwassers am Gesamtverbrauch der primären Energiequelle in Prozent")
|
||||||
|
anteil_warmwasser_1 Float?
|
||||||
|
/// @zod.describe("Anteil des Warmwassers am Gesamtverbrauch der sekundären Energiequelle in Prozent")
|
||||||
|
anteil_warmwasser_2 Float?
|
||||||
|
|
||||||
|
ausgestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen")
|
||||||
|
storniert Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
bestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen")
|
||||||
|
zurueckgestellt Boolean? @default(false)
|
||||||
|
/// @zod.describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung")
|
||||||
|
prueftext String? @db.VarChar(1000)
|
||||||
|
|
||||||
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
|
/// @zod.describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde")
|
||||||
|
kontrolldatei_angefragt Boolean? @default(false)
|
||||||
|
|
||||||
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
rechnung_id Int? @unique
|
||||||
|
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|
||||||
|
/// @zod.describe("ID der korrespondierenden Gebäudeaufnahme")
|
||||||
|
aufnahme_id Int @unique
|
||||||
|
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
}
|
||||||
15
prisma/schema/documenttemplates.prisma
Normal file
15
prisma/schema/documenttemplates.prisma
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
model documenttemplates {
|
||||||
|
id Int @id(map: "PK_DOCUMENTTEMPLATES") @default(autoincrement())
|
||||||
|
name String @db.VarChar(100)
|
||||||
|
shortdescription String @db.VarChar(100)
|
||||||
|
longdescription String @db.VarChar(5000)
|
||||||
|
user_id Int
|
||||||
|
is_private Boolean @default(true)
|
||||||
|
documenttype Int
|
||||||
|
filename String @db.VarChar(100)
|
||||||
|
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||||
|
updated_at DateTime @default(now()) @db.Timestamp(0)
|
||||||
|
benutzer Benutzer @relation(fields: [user_id], references: [id], onDelete: Cascade, map: "benutzer_fk")
|
||||||
|
documenttypes documenttypes @relation(fields: [documenttype], references: [id], onDelete: Cascade, map: "documenttypes_fk")
|
||||||
|
}
|
||||||
8
prisma/schema/documenttypes.prisma
Normal file
8
prisma/schema/documenttypes.prisma
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
model documenttypes {
|
||||||
|
id Int @id(map: "PK_DOCUMENTTYPES") @default(autoincrement())
|
||||||
|
name String @db.VarChar(100)
|
||||||
|
shortdescription String @db.VarChar(100)
|
||||||
|
longdescription String @db.VarChar(5000)
|
||||||
|
documenttemplates documenttemplates[]
|
||||||
|
}
|
||||||
66
prisma/schema/schema.prisma
Normal file
66
prisma/schema/schema.prisma
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
generator client {
|
||||||
|
provider = "prisma-client-js"
|
||||||
|
binaryTargets = ["native", "debian-openssl-1.1.x"]
|
||||||
|
previewFeatures = ["prismaSchemaFolder"]
|
||||||
|
}
|
||||||
|
|
||||||
|
generator faker {
|
||||||
|
provider = "bunx prisma-generator-fake-data"
|
||||||
|
output = "../../src/types/fake-data.ts"
|
||||||
|
}
|
||||||
|
|
||||||
|
generator zod {
|
||||||
|
provider = "bunx zod-prisma"
|
||||||
|
output = "../../src/generated/zod"
|
||||||
|
relationModel = false
|
||||||
|
modelCase = "PascalCase"
|
||||||
|
modelSuffix = "Schema"
|
||||||
|
useDecimalJs = false
|
||||||
|
imports = ""
|
||||||
|
prismaJsonNullability = true
|
||||||
|
useNullish = true
|
||||||
|
}
|
||||||
|
|
||||||
|
generator enum {
|
||||||
|
provider = "tsx ./prisma/prisma-enum-generator.ts"
|
||||||
|
output = "../../src/generated/enums.ts"
|
||||||
|
}
|
||||||
|
|
||||||
|
generator dbml {
|
||||||
|
provider = "bunx prisma-dbml-generator"
|
||||||
|
output = "../../dbml"
|
||||||
|
outputName = "schema.dbml"
|
||||||
|
projectName = "IBCornelsen Database"
|
||||||
|
projectDatabaseType = "PostgreSQL"
|
||||||
|
}
|
||||||
|
|
||||||
|
datasource db {
|
||||||
|
provider = "postgresql"
|
||||||
|
url = env("POSTGRES_DATABASE_URL")
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Ausstellgrund {
|
||||||
|
Neubau
|
||||||
|
Vermietung
|
||||||
|
Verkauf
|
||||||
|
Modernisierung
|
||||||
|
Sonstiges
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Ausweisart {
|
||||||
|
VerbrauchsausweisWohnen
|
||||||
|
VerbrauchsausweisGewerbe
|
||||||
|
BedarfsausweisWohnen
|
||||||
|
BedarfsausweisGewerbe
|
||||||
|
GEGNachweisWohnen
|
||||||
|
GEGNachweisBedarfsausweis
|
||||||
|
GEGNachweisGewerbe
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
enum Service {
|
||||||
|
Telefonberatung
|
||||||
|
Aushang
|
||||||
|
Qualitaetsdruck
|
||||||
|
SameDay
|
||||||
|
}
|
||||||
11
prisma/schema/tokens.prisma
Normal file
11
prisma/schema/tokens.prisma
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
model tokens {
|
||||||
|
id Int @id(map: "PK_TOKENS") @default(autoincrement())
|
||||||
|
token String @db.VarChar(36)
|
||||||
|
user_id Int
|
||||||
|
date_created DateTime @default(now()) @db.Timestamp(6)
|
||||||
|
last_used DateTime @default(now()) @db.Timestamp(6)
|
||||||
|
times_used Int @default(0)
|
||||||
|
permissions Int @default(0)
|
||||||
|
benutzer Benutzer @relation(fields: [user_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "fk_benutzer_tokens_user_id")
|
||||||
|
}
|
||||||
382
prisma/seed.ts
Normal file
382
prisma/seed.ts
Normal file
@@ -0,0 +1,382 @@
|
|||||||
|
// Das wird ausgeführt, wenn wir `npx prisma db seed` ausführen
|
||||||
|
// Hier können wir unsere Datenbank mit Beispieldaten füllen
|
||||||
|
// Mehr Infos: https://www.prisma.io/docs/orm/prisma-migrate/workflows/seeding
|
||||||
|
|
||||||
|
import { PrismaClient } from "@prisma/client";
|
||||||
|
import crypto from "node:crypto";
|
||||||
|
import { faker } from "@faker-js/faker";
|
||||||
|
import { Enums } from "../src/lib/client/prisma";
|
||||||
|
import moment from "moment";
|
||||||
|
|
||||||
|
function hashPassword(password: string): string {
|
||||||
|
const salt = crypto.randomBytes(16).toString("hex");
|
||||||
|
const hash = hashWithGivenSalt(password, salt) + salt;
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
function hashWithGivenSalt(password: string, salt: string): string {
|
||||||
|
const hash = crypto.scryptSync(password, salt, 32).toString("hex");
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
const prisma = new PrismaClient({
|
||||||
|
log: ["warn", "error"],
|
||||||
|
errorFormat: "pretty",
|
||||||
|
datasources: {
|
||||||
|
db: {
|
||||||
|
url: process.env.POSTGRES_DATABASE_URL,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Wir wollen erstmal das Backup mit den Klimafaktoren und der PLZ Liste einfuegen.
|
||||||
|
// Dazu muessen wir die Tabelle leeren.
|
||||||
|
|
||||||
|
await prisma.klimafaktoren.deleteMany({
|
||||||
|
where: {
|
||||||
|
id: { not: 0 },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await prisma.postleitzahlen.deleteMany({
|
||||||
|
where: {
|
||||||
|
id: { not: 0 },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Jetzt koennen wir die Daten aus dem Backup einlesen.
|
||||||
|
|
||||||
|
const klimafaktoren = await Bun.file("./backup/klimafaktoren.json").json();
|
||||||
|
|
||||||
|
await prisma.klimafaktoren.createMany({
|
||||||
|
data: klimafaktoren.map((klimafaktor: [number, number, number, string]) => {
|
||||||
|
return {
|
||||||
|
plz: klimafaktor[3],
|
||||||
|
month: klimafaktor[1],
|
||||||
|
year: klimafaktor[0],
|
||||||
|
klimafaktor: klimafaktor[2],
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
const postleitzahlen = await Bun.file("./backup/postleitzahlen.json").json();
|
||||||
|
|
||||||
|
await prisma.postleitzahlen.createMany({
|
||||||
|
data: postleitzahlen.map(
|
||||||
|
(postleitzahl: {
|
||||||
|
plz: string;
|
||||||
|
ort: string;
|
||||||
|
landkreis: string;
|
||||||
|
bundesland: string;
|
||||||
|
lat: number;
|
||||||
|
lon: number;
|
||||||
|
}) => {
|
||||||
|
return {
|
||||||
|
plz: postleitzahl.plz,
|
||||||
|
stadt: postleitzahl.ort,
|
||||||
|
landkreis: postleitzahl.landkreis,
|
||||||
|
bundesland: postleitzahl.bundesland,
|
||||||
|
lat: postleitzahl.lat,
|
||||||
|
lon: postleitzahl.lon,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
),
|
||||||
|
});
|
||||||
|
|
||||||
|
// Admin erstellen
|
||||||
|
await prisma.benutzer.create({
|
||||||
|
data: {
|
||||||
|
email: "admin@ib-cornelsen.de",
|
||||||
|
passwort: hashPassword("passwort"),
|
||||||
|
rolle: "ADMIN",
|
||||||
|
name: "Admin",
|
||||||
|
vorname: "Admin",
|
||||||
|
adresse: "Adminstraße 1",
|
||||||
|
plz: "12345",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Test Benutzer erstellen
|
||||||
|
await prisma.benutzer.create({
|
||||||
|
data: {
|
||||||
|
email: "user@ib-cornelsen.de",
|
||||||
|
passwort: hashPassword("passwort"),
|
||||||
|
rolle: "USER",
|
||||||
|
name: "User",
|
||||||
|
vorname: "User",
|
||||||
|
adresse: "Userstraße 1",
|
||||||
|
plz: "12345",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Benutzer erstellen
|
||||||
|
|
||||||
|
for (let i = 0; i < 10; i++) {
|
||||||
|
let firstName = faker.person.firstName();
|
||||||
|
let lastName = faker.person.lastName();
|
||||||
|
const benutzer = await prisma.benutzer.create({
|
||||||
|
data: {
|
||||||
|
email: faker.internet.email({
|
||||||
|
firstName: firstName,
|
||||||
|
lastName: lastName,
|
||||||
|
}),
|
||||||
|
passwort: hashPassword(faker.internet.password()),
|
||||||
|
name: lastName,
|
||||||
|
vorname: firstName,
|
||||||
|
adresse: faker.location.street(),
|
||||||
|
plz: faker.location.zipCode({ format: "#####" }),
|
||||||
|
ort: faker.location.city(),
|
||||||
|
rolle: "USER",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
for (let j = 0; j < Math.round(Math.random() * 5); j++) {
|
||||||
|
// Für jeden Nutzer erstellen wir auch noch bis zu 5 Ausweise.
|
||||||
|
await prisma.objekt.create({
|
||||||
|
data: {
|
||||||
|
adresse: faker.location.street(),
|
||||||
|
latitude: faker.location.latitude(),
|
||||||
|
longitude: faker.location.longitude(),
|
||||||
|
ort: faker.location.city(),
|
||||||
|
plz: faker.location.zipCode({ format: "#####" }),
|
||||||
|
benutzer: {
|
||||||
|
connect: {
|
||||||
|
id: benutzer.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
aufnahmen: {
|
||||||
|
create: {
|
||||||
|
alternative_heizung: faker.datatype.boolean(),
|
||||||
|
alternative_kuehlung: faker.datatype.boolean(),
|
||||||
|
alternative_lueftung: faker.datatype.boolean(),
|
||||||
|
alternative_warmwasser: faker.datatype.boolean(),
|
||||||
|
aussenwand_gedaemmt: faker.datatype.boolean(),
|
||||||
|
aussenwand_min_12cm_gedaemmt: faker.datatype.boolean(),
|
||||||
|
baujahr_gebaeude: [faker.date.past().getFullYear()],
|
||||||
|
baujahr_heizung: [faker.date.past().getFullYear()],
|
||||||
|
baujahr_klima: [faker.date.past().getFullYear()],
|
||||||
|
benutzer: {
|
||||||
|
connect: {
|
||||||
|
id: benutzer.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
verbrauchsausweise_wohnen: {
|
||||||
|
create: {
|
||||||
|
benutzer: {
|
||||||
|
connect: {
|
||||||
|
id: benutzer.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function importVerbrauchsausweisWohnenAltesSystem(
|
||||||
|
count: number = 5
|
||||||
|
) {
|
||||||
|
const response = await fetch(
|
||||||
|
"https://online-energieausweis.org/user/ausweis-import.php",
|
||||||
|
{
|
||||||
|
method: "POST",
|
||||||
|
body: JSON.stringify({
|
||||||
|
i: count,
|
||||||
|
offset: 0,
|
||||||
|
q: {},
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const data = await response.json();
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function verbrauchsausweisWohnenImportTranslate(
|
||||||
|
ausweis: Record<string, any>
|
||||||
|
) {
|
||||||
|
let firstName = faker.person.firstName();
|
||||||
|
let lastName = faker.person.lastName();
|
||||||
|
const benutzer = await prisma.benutzer.create({
|
||||||
|
data: {
|
||||||
|
email: faker.internet.email({
|
||||||
|
firstName: firstName,
|
||||||
|
lastName: lastName,
|
||||||
|
}),
|
||||||
|
passwort: hashPassword(faker.internet.password()),
|
||||||
|
name: lastName,
|
||||||
|
vorname: firstName,
|
||||||
|
adresse: faker.location.street(),
|
||||||
|
plz: faker.location.zipCode({ format: "#####" }),
|
||||||
|
ort: faker.location.city(),
|
||||||
|
rolle: "USER",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO: Bilder Importieren
|
||||||
|
const gebaeudeStammdaten = await prisma.objekt.create({
|
||||||
|
data: {
|
||||||
|
adresse: ausweis.objekt_strasse,
|
||||||
|
plz: ausweis.objekt_plz,
|
||||||
|
ort: ausweis.objekt_ort,
|
||||||
|
uid: faker.string.uuid(),
|
||||||
|
latitude: null,
|
||||||
|
longitude: null,
|
||||||
|
benutzer: {
|
||||||
|
connect: {
|
||||||
|
id: benutzer.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const gebaeudeAufnahmeAllgemein =
|
||||||
|
await prisma.aufnahme.create({
|
||||||
|
data: {
|
||||||
|
benutzer: {
|
||||||
|
connect: {
|
||||||
|
id: benutzer.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
baujahr_gebaeude: [parseInt(ausweis.baujahr_gebaeude)],
|
||||||
|
baujahr_heizung: ausweis.baujahr_anlage ? [parseInt(ausweis.baujahr_anlage)] : [],
|
||||||
|
baujahr_klima: ausweis.baujahr_klimaanlage ? [parseInt(ausweis.baujahr_klimaanlage)] : [],
|
||||||
|
nutzflaeche: parseInt(ausweis.nutzflaeche),
|
||||||
|
einheiten: parseInt(ausweis.anzahl_einheiten),
|
||||||
|
saniert: ausweis.objekt_saniert ? true : false,
|
||||||
|
keller:
|
||||||
|
ausweis.keller_beheizt == "Beheizt"
|
||||||
|
? Enums.Heizungsstatus.BEHEIZT
|
||||||
|
: ausweis.keller_beheizt == "Unbeheizt"
|
||||||
|
? Enums.Heizungsstatus.UNBEHEIZT
|
||||||
|
: Enums.Heizungsstatus.NICHT_VORHANDEN,
|
||||||
|
dachgeschoss:
|
||||||
|
ausweis.dachgeschoss == "Beheizt"
|
||||||
|
? Enums.Heizungsstatus.BEHEIZT
|
||||||
|
: ausweis.dachgeschoss == "Unbeheizt"
|
||||||
|
? Enums.Heizungsstatus.UNBEHEIZT
|
||||||
|
: Enums.Heizungsstatus.NICHT_VORHANDEN,
|
||||||
|
flaeche: parseInt(ausweis.wohnflaeche),
|
||||||
|
gebaeudetyp: ausweis.objekt_typ,
|
||||||
|
gebaeudeteil: ausweis.objekt_gebaeudeteil,
|
||||||
|
lueftung: ausweis.lueftungskonzept,
|
||||||
|
// NOTE: Warum ist das kein Bool?
|
||||||
|
kuehlung: ausweis.wird_gekuehlt ? "true" : "false",
|
||||||
|
brennstoff_1: ausweis.energietraeger_1,
|
||||||
|
brennstoff_2: ausweis.energietraeger_2,
|
||||||
|
alternative_heizung: ausweis.alheizung ? true : false,
|
||||||
|
alternative_kuehlung: ausweis.alkuehlung ? true : false,
|
||||||
|
alternative_lueftung: ausweis.allueftung ? true : false,
|
||||||
|
alternative_warmwasser: ausweis.alwarmwasser ? true : false,
|
||||||
|
ausweisart: Enums.Ausweisart.VerbrauchsausweisWohnen,
|
||||||
|
energieeffizienzklasse: "",
|
||||||
|
aussenwand_gedaemmt: ausweis.aussenwand_gedaemmt ? true : false,
|
||||||
|
aussenwand_min_12cm_gedaemmt: ausweis.aussenwand_min_12cm_gedaemmt ? true : false,
|
||||||
|
bestellt: ausweis.bestellt ? true : false,
|
||||||
|
boxpruefung: ausweis.boxpruefung ? true : false,
|
||||||
|
brennwert_kessel: ausweis.brennwert_kessel ? true : false,
|
||||||
|
dachgeschoss_gedaemmt: ausweis.dachgeschoss_gedaemmt ? true : false,
|
||||||
|
dachgeschoss_min_12cm_gedaemmt: ausweis.dachgeschoss_min_12cm_gedaemmt ? true : false,
|
||||||
|
doppel_verglasung: ausweis.doppel_verglasung ? true : false,
|
||||||
|
dreifach_verglasung: ausweis.dreifach_verglasung ? true : false,
|
||||||
|
durchlauf_erhitzer: ausweis.durchlauf_erhitzer ? true : false,
|
||||||
|
einfach_verglasung: ausweis.einfach_verglasung ? true : false,
|
||||||
|
einzelofen: ausweis.einzelofen ? true : false,
|
||||||
|
erledigt: ausweis.erledigt ? true : false,
|
||||||
|
fenster_dicht: ausweis.fenster_dicht ? true : false,
|
||||||
|
fenster_teilweise_undicht: ausweis.fenster_teilweise_undicht ? true : false,
|
||||||
|
heizungsrohre_gedaemmt: ausweis.heizungsrohre_gedaemmt ? true : false,
|
||||||
|
isolier_verglasung: ausweis.isolier_verglasung ? true : false,
|
||||||
|
keller_decke_gedaemmt: ausweis.keller_decke_gedaemmt ? true : false,
|
||||||
|
keller_wand_gedaemmt: ausweis.keller_wand_gedaemmt ? true : false,
|
||||||
|
niedertemperatur_kessel: ausweis.niedertemperatur_kessel ? true : false,
|
||||||
|
oberste_geschossdecke_gedaemmt: ausweis.oberste_geschossdecke_gedaemmt ? true : false,
|
||||||
|
oberste_geschossdecke_min_12cm_gedaemmt: ausweis.oberste_geschossdecke_min_12cm_gedaemmt ? true : false,
|
||||||
|
raum_temperatur_regler: ausweis.raum_temperatur_regler ? true : false,
|
||||||
|
rolllaeden_kaesten_gedaemmt: ausweis.rolllaeden_kaesten_gedaemmt ? true : false,
|
||||||
|
solarsystem_warmwasser: ausweis.solarsystem_warmwasser ? true : false,
|
||||||
|
standard_kessel: ausweis.standard_kessel ? true : false,
|
||||||
|
waermepumpe: ausweis.waermepumpe ? true : false,
|
||||||
|
warmwasser_rohre_gedaemmt: ausweis.warmwasser_rohre_gedaemmt ? true : false,
|
||||||
|
zentralheizung: ausweis.zentralheizung ? true : false,
|
||||||
|
zirkulation: ausweis.zirkulation ? true : false,
|
||||||
|
photovoltaik: ausweis.photovoltaik ? true : false,
|
||||||
|
leerstand: ausweis.leerstand,
|
||||||
|
prueftext: ausweis["check-texts"],
|
||||||
|
|
||||||
|
storniert: false,
|
||||||
|
tueren_dicht: ausweis.tueren_dicht ? true : false,
|
||||||
|
tueren_undicht: ausweis.tueren_undicht ? true : false,
|
||||||
|
zurueckgestellt: ausweis.zurueckGestellt ? true : false,
|
||||||
|
uid: faker.string.uuid(),
|
||||||
|
ausstellungsdatum: moment(ausweis.bestelldatum).toDate(),
|
||||||
|
erstellungsdatum: moment(ausweis.erstellungsdatum).toDate(),
|
||||||
|
objekt: {
|
||||||
|
connect: {
|
||||||
|
id: gebaeudeStammdaten.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
let startdatum = moment(
|
||||||
|
`${ausweis.energieverbrauch_zeitraum_jahr}-${ausweis.energieverbrauch_zeitraum_monat}-01`
|
||||||
|
).toDate();
|
||||||
|
|
||||||
|
if (isNaN(startdatum.getTime())) {
|
||||||
|
startdatum = new Date();
|
||||||
|
}
|
||||||
|
|
||||||
|
const verbrauchsausweisWohnen = await prisma.verbrauchsausweisWohnen.create(
|
||||||
|
{
|
||||||
|
data: {
|
||||||
|
aufnahme: {
|
||||||
|
connect: {
|
||||||
|
id: gebaeudeAufnahmeAllgemein.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
benutzer: {
|
||||||
|
connect: {
|
||||||
|
id: benutzer.id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
verbrauch_1: parseInt(ausweis.energieverbrauch_1_heizquelle_1),
|
||||||
|
verbrauch_2: parseInt(ausweis.energieverbrauch_2_heizquelle_1),
|
||||||
|
verbrauch_3: parseInt(ausweis.energieverbrauch_3_heizquelle_1),
|
||||||
|
verbrauch_4: parseInt(ausweis.energieverbrauch_1_heizquelle_2),
|
||||||
|
verbrauch_5: parseInt(ausweis.energieverbrauch_2_heizquelle_2),
|
||||||
|
verbrauch_6: parseInt(ausweis.energieverbrauch_3_heizquelle_2),
|
||||||
|
einheit_1: ausweis.energietraeger_einheit_heizquelle_1,
|
||||||
|
einheit_2: ausweis.energietraeger_einheit_heizquelle_2,
|
||||||
|
warmwasser_enthalten: ausweis.warmwasser_enthalten ? true : false,
|
||||||
|
uid: faker.string.uuid(),
|
||||||
|
alternative_heizung: ausweis.alheizung ? true : false,
|
||||||
|
alternative_kuehlung: ausweis.alkuehlung ? true : false,
|
||||||
|
alternative_lueftung: ausweis.allueftung ? true : false,
|
||||||
|
alternative_warmwasser: ausweis.alwarmwasser ? true : false,
|
||||||
|
anteil_warmwasser_1: ausweis.anteil_warmwasser_1,
|
||||||
|
anteil_warmwasser_2: ausweis.anteil_warmwasser_2,
|
||||||
|
ausstellgrund: ausweis.ausstellgrund,
|
||||||
|
keller_beheizt: ausweis.keller_beheizt ? true : false,
|
||||||
|
registriernummer: ausweis.regnummer,
|
||||||
|
// Der Monat im alten System ist 1-basiert, in der neuen Datenbank 0-basiert
|
||||||
|
// Also müssen wir hier 1 abziehen
|
||||||
|
startdatum,
|
||||||
|
warmwasser_anteil_bekannt: ausweis.warmwasser_anteil_bekannt ? true : false,
|
||||||
|
zusaetzliche_heizquelle: ausweis.zusaetzliche_heizquelle ? true : false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
return verbrauchsausweisWohnen;
|
||||||
|
}
|
||||||
|
|
||||||
|
const ausweise = (await importVerbrauchsausweisWohnenAltesSystem(10)) as { data: any[], result_count: number };
|
||||||
|
|
||||||
|
for (const ausweis of ausweise.data) {
|
||||||
|
await verbrauchsausweisWohnenImportTranslate(ausweis);
|
||||||
|
}
|
||||||
@@ -9,6 +9,6 @@ app.use(ssrHandler);
|
|||||||
app.use(express.json({ limit: "50mb" }))
|
app.use(express.json({ limit: "50mb" }))
|
||||||
app.use(express.urlencoded({ limit: "50mb" }))
|
app.use(express.urlencoded({ limit: "50mb" }))
|
||||||
|
|
||||||
app.listen(80, function() {
|
app.listen(3000, function() {
|
||||||
console.log('Server started on http://localhost:80');
|
console.log('Server started on http://localhost:3000');
|
||||||
});
|
});
|
||||||
@@ -12,11 +12,11 @@ export const createCaller = createCallerFactory({
|
|||||||
"admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"),
|
"admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"),
|
||||||
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
|
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
|
||||||
"admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"),
|
"admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"),
|
||||||
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
|
|
||||||
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
|
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
|
||||||
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
|
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
|
||||||
"auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"),
|
"auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"),
|
||||||
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
|
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
|
||||||
|
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
|
||||||
"bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"),
|
"bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"),
|
||||||
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
||||||
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
|
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { exclude } from "#lib/exclude.js";
|
|||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
import { AufnahmeClient, BedarfsausweisWohnenClient, BildClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js";
|
import { AufnahmeClient, BedarfsausweisWohnenClient, BildClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
|
|
||||||
export async function ausweisSpeichern(
|
export async function ausweisSpeichern(
|
||||||
ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient,
|
ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import {
|
|||||||
VerbrauchsausweisWohnenClient,
|
VerbrauchsausweisWohnenClient,
|
||||||
} from "#components/Ausweis/types.js";
|
} from "#components/Ausweis/types.js";
|
||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
import { addNotification, updateNotification } from "@ibcornelsen/ui";
|
import { addNotification, updateNotification } from "@ibcornelsen/ui";
|
||||||
import { api } from "astro-typesafe-api/client";
|
import { api } from "astro-typesafe-api/client";
|
||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { exclude } from "#lib/exclude.js";
|
|||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
import { AufnahmeClient, BedarfsausweisWohnenClient, BildClient, ObjektClient, UnterlageClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js";
|
import { AufnahmeClient, BedarfsausweisWohnenClient, BildClient, ObjektClient, UnterlageClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
|
|
||||||
export async function nachweisSpeichern(
|
export async function nachweisSpeichern(
|
||||||
nachweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient,
|
nachweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Buffer } from "buffer";
|
import { Buffer } from "buffer";
|
||||||
import { AufnahmeClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "./Ausweis/types.js";
|
import { AufnahmeClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "./Ausweis/types.js";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
import { openWindowWithPost } from "#lib/helpers/window.js";
|
import { openWindowWithPost } from "#lib/helpers/window.js";
|
||||||
|
|
||||||
export let ausweis: VerbrauchsausweisWohnenClient;
|
export let ausweis: VerbrauchsausweisWohnenClient;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
import ImageGrid from "#components/ImageGrid.svelte";
|
import ImageGrid from "#components/ImageGrid.svelte";
|
||||||
import {
|
import {
|
||||||
Enums,
|
Enums,
|
||||||
} from "@ibcornelsen/database/client";
|
} from "#lib/client/prisma";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
AufnahmeClient,
|
AufnahmeClient,
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
import { auditHeizungGebaeudeBaujahr } from "../Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js";
|
import { auditHeizungGebaeudeBaujahr } from "../Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js";
|
||||||
import { addNotification, deleteNotification } from "#components/Notifications/shared.js";
|
import { addNotification, deleteNotification } from "#components/Notifications/shared.js";
|
||||||
import TagInput from "../TagInput.svelte";
|
import TagInput from "../TagInput.svelte";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma.js";
|
||||||
import {
|
import {
|
||||||
BedarfsausweisWohnenClient,
|
BedarfsausweisWohnenClient,
|
||||||
AufnahmeClient,
|
AufnahmeClient,
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
import Overlay from "#components/Overlay.svelte";
|
import Overlay from "#components/Overlay.svelte";
|
||||||
import EmbeddedAuthFlowModule from "#modules/EmbeddedAuthFlowModule.svelte";
|
import EmbeddedAuthFlowModule from "#modules/EmbeddedAuthFlowModule.svelte";
|
||||||
|
|
||||||
import { AusweisTyp, Enums } from "@ibcornelsen/database/client";
|
import { AusweisTyp, Enums } from "#lib/client/prisma.js";
|
||||||
import { openWindowWithPost } from "#lib/helpers/window.js";
|
import { openWindowWithPost } from "#lib/helpers/window.js";
|
||||||
import { PRICES } from "#lib/constants.js";
|
import { PRICES } from "#lib/constants.js";
|
||||||
import { nachweisSpeichern } from "#client/lib/nachweisSpeichern.js";
|
import { nachweisSpeichern } from "#client/lib/nachweisSpeichern.js";
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
export let showWeiter: boolean = true;
|
export let showWeiter: boolean = true;
|
||||||
|
|
||||||
let ausweistyp: AusweisTyp = Enums.AusweisTyp.Standard;
|
export let ausweistyp: AusweisTyp = Enums.AusweisTyp.Standard;
|
||||||
|
|
||||||
async function ausweisAbschicken() {
|
async function ausweisAbschicken() {
|
||||||
openWindowWithPost("/kundendaten", {
|
openWindowWithPost("/kundendaten", {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import ImageGrid from "../ImageGrid.svelte";;
|
import ImageGrid from "../ImageGrid.svelte";;
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
import { BedarfsausweisWohnenClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "./types.js";
|
import { BedarfsausweisWohnenClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "./types.js";
|
||||||
|
|
||||||
export let images: UploadedGebaeudeBild[] = [];
|
export let images: UploadedGebaeudeBild[] = [];
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import ImageGrid from "../ImageGrid.svelte";;
|
import ImageGrid from "../ImageGrid.svelte";;
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
import { BedarfsausweisWohnenClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "./types.js";
|
import { BedarfsausweisWohnenClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "./types.js";
|
||||||
|
|
||||||
export let images: UploadedGebaeudeBild[] = [];
|
export let images: UploadedGebaeudeBild[] = [];
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
import Inputlabel from "#components/labels/InputLabel.svelte";
|
import Inputlabel from "#components/labels/InputLabel.svelte";
|
||||||
|
|
||||||
import ZipSearch from "#components/PlzSuche.svelte";
|
import ZipSearch from "#components/PlzSuche.svelte";
|
||||||
import { Enums } from "@ibcornelsen/database/client"
|
import { Enums } from "#lib/client/prisma"
|
||||||
import { AufnahmeClient, ObjektClient } from "./types.js";
|
import { AufnahmeClient, ObjektClient } from "./types.js";
|
||||||
|
|
||||||
export let aufnahme: AufnahmeClient;
|
export let aufnahme: AufnahmeClient;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import ImageGrid from "../ImageGrid.svelte";;
|
import ImageGrid from "../ImageGrid.svelte";;
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
import { BedarfsausweisWohnenClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "./types.js";
|
import { BedarfsausweisWohnenClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "./types.js";
|
||||||
|
|
||||||
export let images: UploadedGebaeudeBild[] = [];
|
export let images: UploadedGebaeudeBild[] = [];
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
VerbrauchsausweisWohnenClient,
|
VerbrauchsausweisWohnenClient,
|
||||||
} from "./types.js";
|
} from "./types.js";
|
||||||
import ThickArrowUp from "radix-svelte-icons/src/lib/icons/ThickArrowUp.svelte";
|
import ThickArrowUp from "radix-svelte-icons/src/lib/icons/ThickArrowUp.svelte";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.js";
|
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016 } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016.js";
|
||||||
|
|
||||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient;
|
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import {
|
|||||||
VerbrauchsausweisGewerbe,
|
VerbrauchsausweisGewerbe,
|
||||||
VerbrauchsausweisWohnen,
|
VerbrauchsausweisWohnen,
|
||||||
GEGNachweisWohnen,
|
GEGNachweisWohnen,
|
||||||
} from "@ibcornelsen/database/client";
|
} from "#lib/client/prisma";
|
||||||
import { z, ZodSchema } from "zod";
|
import { z, ZodSchema } from "zod";
|
||||||
|
|
||||||
export type OmitKeys<T, K extends keyof T> = Omit<T, K>;
|
export type OmitKeys<T, K extends keyof T> = Omit<T, K>;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
import { addNotification } from "#components/Notifications/shared.js";
|
import { addNotification } from "#components/Notifications/shared.js";
|
||||||
import { CheckCircled, CrossCircled, Image } from "radix-svelte-icons";
|
import { CheckCircled, CrossCircled, Image } from "radix-svelte-icons";
|
||||||
import ChevronDown from "radix-svelte-icons/src/lib/icons/ChevronDown.svelte";
|
import ChevronDown from "radix-svelte-icons/src/lib/icons/ChevronDown.svelte";
|
||||||
import { Event } from "@ibcornelsen/database/client";
|
import { Event } from "#lib/client/prisma";
|
||||||
import { api } from "astro-typesafe-api/client";
|
import { api } from "astro-typesafe-api/client";
|
||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
import { api } from "astro-typesafe-api/client";
|
import { api } from "astro-typesafe-api/client";
|
||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
import { Enums, Objekt } from "@ibcornelsen/database/client";
|
import { Enums, Objekt } from "#lib/client/prisma";
|
||||||
|
|
||||||
export let ausweis: VerbrauchsausweisWohnenClient;
|
export let ausweis: VerbrauchsausweisWohnenClient;
|
||||||
export let aufnahme: AufnahmeKomplettClient;
|
export let aufnahme: AufnahmeKomplettClient;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { ObjektKomplettClient } from "#components/Ausweis/types.js";
|
import { ObjektKomplettClient } from "#components/Ausweis/types.js";
|
||||||
import { Enums } from "@ibcornelsen/database/server";
|
import { Enums } from "#lib/client/prisma";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import { File, OpenInNewWindow } from "radix-svelte-icons";
|
import { File, OpenInNewWindow } from "radix-svelte-icons";
|
||||||
|
|
||||||
|
|||||||
@@ -83,16 +83,6 @@
|
|||||||
Ausweise Prüfen
|
Ausweise Prüfen
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
<a use:ripple={rippleOptions} class="button-tab" href="/dashboard/admin/pdf-designer">
|
|
||||||
PDF Designer
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a use:ripple={rippleOptions} class="button-tab" href="/dashboard/admin/pdf-viewer">
|
|
||||||
PDF Viewer
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</details></li>
|
</details></li>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Buffer } from "buffer";
|
import { Buffer } from "buffer";
|
||||||
import { AufnahmeClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "./Ausweis/types.js";
|
import { AufnahmeClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "./Ausweis/types.js";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
import { openWindowWithPost } from "#lib/helpers/window.js";
|
import { openWindowWithPost } from "#lib/helpers/window.js";
|
||||||
|
|
||||||
export let ausweis: VerbrauchsausweisWohnenClient;
|
export let ausweis: VerbrauchsausweisWohnenClient;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
import { auditHeizungGebaeudeBaujahr } from "../Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js";
|
import { auditHeizungGebaeudeBaujahr } from "../Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js";
|
||||||
import { addNotification, deleteNotification } from "#components/Notifications/shared.js";
|
import { addNotification, deleteNotification } from "#components/Notifications/shared.js";
|
||||||
import TagInput from "../TagInput.svelte";
|
import TagInput from "../TagInput.svelte";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma.js";
|
||||||
import {
|
import {
|
||||||
AufnahmeClient,
|
AufnahmeClient,
|
||||||
ObjektClient,
|
ObjektClient,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import UploadImages from "./UploadImages.svelte";
|
import UploadImages from "./UploadImages.svelte";
|
||||||
import type { Enums } from "@ibcornelsen/database/client";
|
import type { Enums } from "#lib/client/prisma";
|
||||||
import { BedarfsausweisWohnenClient, BildClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "./Ausweis/types.js";
|
import { BedarfsausweisWohnenClient, BildClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "./Ausweis/types.js";
|
||||||
import { RotateCounterClockwise, Trash, Upload } from "radix-svelte-icons";
|
import { RotateCounterClockwise, Trash, Upload } from "radix-svelte-icons";
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { Bezahlmethoden } from "@ibcornelsen/database/client";
|
import type { Bezahlmethoden } from "#lib/client/prisma";
|
||||||
|
|
||||||
export let name: string;
|
export let name: string;
|
||||||
export let icon: string;
|
export let icon: string;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import HelpLabel from "#components/labels/HelpLabel.svelte";
|
import HelpLabel from "#components/labels/HelpLabel.svelte";
|
||||||
import type { Enums } from "@ibcornelsen/database/client";
|
import type { Enums } from "#lib/client/prisma";
|
||||||
|
|
||||||
export let max: number = 2;
|
export let max: number = 2;
|
||||||
export let min: number = 1;
|
export let min: number = 1;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
import { PRICES } from "#lib/constants";
|
import { PRICES } from "#lib/constants";
|
||||||
export let bullets;
|
export let bullets;
|
||||||
export let title;
|
export let title;
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
|
|
||||||
bullets = [
|
bullets = [
|
||||||
["Prüfung durch Dipl. Ing.<br>Registrierung beim DiBt<br>rechtssicher nach GEG",true, true, true],
|
["Prüfung durch Dipl. Ing.<br>Registrierung beim DiBt<br>rechtssicher nach GEG",true, true, true],
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
import { PRICES } from "#lib/constants";
|
import { PRICES } from "#lib/constants";
|
||||||
export let bullets;
|
export let bullets;
|
||||||
export let title;
|
export let title;
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
|
|
||||||
bullets = [
|
bullets = [
|
||||||
["Prüfung durch Dipl. Ing.<br>Registrierung beim DiBt<br>rechtssicher nach GEG",true, true, true],
|
["Prüfung durch Dipl. Ing.<br>Registrierung beim DiBt<br>rechtssicher nach GEG",true, true, true],
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script>
|
<script>
|
||||||
import { PRICES } from "#lib/constants";
|
import { PRICES } from "#lib/constants";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
export let bullets;
|
export let bullets;
|
||||||
export let title;
|
export let title;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { PRICES } from "#lib/constants.js";
|
import { PRICES } from "#lib/constants.js";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
export let bullets;
|
export let bullets;
|
||||||
export let title;
|
export let title;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script>
|
<script>
|
||||||
import { PRICES } from "#lib/constants";
|
import { PRICES } from "#lib/constants";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="mt-6 mb-6 m-auto w-[99%] relative">
|
<div class="mt-6 mb-6 m-auto w-[99%] relative">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script>
|
<script>
|
||||||
import { PRICES } from "#lib/constants";
|
import { PRICES } from "#lib/constants";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="mt-6 mb-6 m-auto w-[99%] relative">
|
<div class="mt-6 mb-6 m-auto w-[99%] relative">
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import CardPriceiInfo from "#components/design/sidebars/cards/cardPriceiInfo.sve
|
|||||||
import CardProduktSidebar from "#components/design/sidebars/cards/CardProduktSidebar.svelte";
|
import CardProduktSidebar from "#components/design/sidebars/cards/CardProduktSidebar.svelte";
|
||||||
|
|
||||||
import { PRICES } from "#lib/constants";
|
import { PRICES } from "#lib/constants";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import CardPriceiInfo from "#components/design/sidebars/cards/cardPriceiInfo.sve
|
|||||||
import CardProduktSidebar from "#components/design/sidebars/cards/CardProduktSidebar.svelte";
|
import CardProduktSidebar from "#components/design/sidebars/cards/CardProduktSidebar.svelte";
|
||||||
|
|
||||||
import { PRICES } from "#lib/constants";
|
import { PRICES } from "#lib/constants";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
---
|
---
|
||||||
|
|
||||||
<div class="hidden 2xl:block">
|
<div class="hidden 2xl:block">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { PRICES } from "#lib/constants.js";
|
import { PRICES } from "#lib/constants.js";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div id ="cardBAGpromo"
|
<div id ="cardBAGpromo"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { PRICES } from "#lib/constants.js";
|
import { PRICES } from "#lib/constants.js";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div id ="cardBApromo"
|
<div id ="cardBApromo"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script>
|
<script>
|
||||||
import { PRICES } from "#lib/constants";
|
import { PRICES } from "#lib/constants";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div id ="cardPriceinfo" class="box card hidden lg:block">
|
<div id ="cardPriceinfo" class="box card hidden lg:block">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { PRICES } from "#lib/constants.js";
|
import { PRICES } from "#lib/constants.js";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div id ="cardVAGpromo"
|
<div id ="cardVAGpromo"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { PRICES } from "#lib/constants.js";
|
import { PRICES } from "#lib/constants.js";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
import { fade } from "svelte/transition";
|
import { fade } from "svelte/transition";
|
||||||
import WidgetCardTemplate from "#components/widgets/WidgetCardTemplate_IBC.svelte";
|
import WidgetCardTemplate from "#components/widgets/WidgetCardTemplate_IBC.svelte";
|
||||||
import { PRICES } from "#lib/constants.js";
|
import { PRICES } from "#lib/constants.js";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
|
|
||||||
let gebaeudetyp: string = "bitte auswählen";
|
let gebaeudetyp: string = "bitte auswählen";
|
||||||
let anlass: string = "bitte auswählen";
|
let anlass: string = "bitte auswählen";
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
import { fade } from "svelte/transition";
|
import { fade } from "svelte/transition";
|
||||||
import WidgetCardTemplate from "#components/widgets/immowelt/WidgetCardTemplate_immowelt.svelte";
|
import WidgetCardTemplate from "#components/widgets/immowelt/WidgetCardTemplate_immowelt.svelte";
|
||||||
import { PRICES } from "#lib/constants.js";
|
import { PRICES } from "#lib/constants.js";
|
||||||
import { Enums } from "@ibcornelsen/database/client";
|
import { Enums } from "#lib/client/prisma";
|
||||||
|
|
||||||
let gebaeudetyp: string = "bitte auswählen";
|
let gebaeudetyp: string = "bitte auswählen";
|
||||||
let anlass: string = "bitte auswählen";
|
let anlass: string = "bitte auswählen";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { prisma } from "@ibcornelsen/database/server";
|
import { prisma } from "#lib/server/prisma";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import csv from "csvtojson"
|
import csv from "csvtojson"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import fuelList from "#components/Ausweis/brennstoffListe.js";
|
import fuelList from "#components/Ausweis/brennstoffListe.js";
|
||||||
import { faker } from "@faker-js/faker";
|
import { faker } from "@faker-js/faker";
|
||||||
import { type Enums } from "@ibcornelsen/database/client";
|
import { type Enums } from "#lib/client/prisma";
|
||||||
import "cypress-file-upload"
|
import "cypress-file-upload"
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import fuelList from "#components/Ausweis/brennstoffListe.js";
|
import fuelList from "#components/Ausweis/brennstoffListe.js";
|
||||||
import { faker } from "@faker-js/faker";
|
import { faker } from "@faker-js/faker";
|
||||||
import { type Enums } from "@ibcornelsen/database/client";
|
import { type Enums } from "#lib/client/prisma";
|
||||||
|
|
||||||
|
|
||||||
import "cypress-file-upload"
|
import "cypress-file-upload"
|
||||||
|
|||||||
120
src/generated/enums.ts
Normal file
120
src/generated/enums.ts
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
// This file was generated by a custom prisma generator, do not edit manually.
|
||||||
|
export const Heizungsstatus = {
|
||||||
|
BEHEIZT: "BEHEIZT",
|
||||||
|
UNBEHEIZT: "UNBEHEIZT",
|
||||||
|
NICHT_VORHANDEN: "NICHT_VORHANDEN",
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type Heizungsstatus = (typeof Heizungsstatus)[keyof typeof Heizungsstatus];
|
||||||
|
|
||||||
|
export const Lueftungskonzept = {
|
||||||
|
Fensterlueftung: "Fensterlueftung",
|
||||||
|
Schachtlueftung: "Schachtlueftung",
|
||||||
|
LueftungsanlageMitWaermerueckgewinnung: "LueftungsanlageMitWaermerueckgewinnung",
|
||||||
|
LueftungsanlageOhneWaermerueckgewinnung: "LueftungsanlageOhneWaermerueckgewinnung",
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type Lueftungskonzept = (typeof Lueftungskonzept)[keyof typeof Lueftungskonzept];
|
||||||
|
|
||||||
|
export const BenutzerRolle = {
|
||||||
|
USER: "USER",
|
||||||
|
ADMIN: "ADMIN",
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type BenutzerRolle = (typeof BenutzerRolle)[keyof typeof BenutzerRolle];
|
||||||
|
|
||||||
|
export const BilderKategorie = {
|
||||||
|
Heizung: "Heizung",
|
||||||
|
Fenster: "Fenster",
|
||||||
|
Gebaeude: "Gebaeude",
|
||||||
|
Daemmung: "Daemmung",
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type BilderKategorie = (typeof BilderKategorie)[keyof typeof BilderKategorie];
|
||||||
|
|
||||||
|
export const Einpreisungsstatus = {
|
||||||
|
open: "open",
|
||||||
|
canceled: "canceled",
|
||||||
|
pending: "pending",
|
||||||
|
expired: "expired",
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type Einpreisungsstatus = (typeof Einpreisungsstatus)[keyof typeof Einpreisungsstatus];
|
||||||
|
|
||||||
|
export const Bezahlmethoden = {
|
||||||
|
paypal: "paypal",
|
||||||
|
giropay: "giropay",
|
||||||
|
sofort: "sofort",
|
||||||
|
creditcard: "creditcard",
|
||||||
|
rechnung: "rechnung",
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type Bezahlmethoden = (typeof Bezahlmethoden)[keyof typeof Bezahlmethoden];
|
||||||
|
|
||||||
|
export const Rechnungsstatus = {
|
||||||
|
open: "open",
|
||||||
|
canceled: "canceled",
|
||||||
|
pending: "pending",
|
||||||
|
authorized: "authorized",
|
||||||
|
expired: "expired",
|
||||||
|
failed: "failed",
|
||||||
|
paid: "paid",
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type Rechnungsstatus = (typeof Rechnungsstatus)[keyof typeof Rechnungsstatus];
|
||||||
|
|
||||||
|
export const AusweisTyp = {
|
||||||
|
Standard: "Standard",
|
||||||
|
Beratung: "Beratung",
|
||||||
|
Offline: "Offline",
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type AusweisTyp = (typeof AusweisTyp)[keyof typeof AusweisTyp];
|
||||||
|
|
||||||
|
export const TicketStatus = {
|
||||||
|
OFFEN: "OFFEN",
|
||||||
|
IN_BEARBEITUNG: "IN_BEARBEITUNG",
|
||||||
|
IN_WARTESCHLEIFE: "IN_WARTESCHLEIFE",
|
||||||
|
GESCHLOSSEN: "GESCHLOSSEN",
|
||||||
|
GELOEST: "GELOEST",
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type TicketStatus = (typeof TicketStatus)[keyof typeof TicketStatus];
|
||||||
|
|
||||||
|
export const UnterlagenKategorie = {
|
||||||
|
Grundriss: "Grundriss",
|
||||||
|
Sonstiges: "Sonstiges",
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type UnterlagenKategorie = (typeof UnterlagenKategorie)[keyof typeof UnterlagenKategorie];
|
||||||
|
|
||||||
|
export const Ausstellgrund = {
|
||||||
|
Neubau: "Neubau",
|
||||||
|
Vermietung: "Vermietung",
|
||||||
|
Verkauf: "Verkauf",
|
||||||
|
Modernisierung: "Modernisierung",
|
||||||
|
Sonstiges: "Sonstiges",
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type Ausstellgrund = (typeof Ausstellgrund)[keyof typeof Ausstellgrund];
|
||||||
|
|
||||||
|
export const Ausweisart = {
|
||||||
|
VerbrauchsausweisWohnen: "VerbrauchsausweisWohnen",
|
||||||
|
VerbrauchsausweisGewerbe: "VerbrauchsausweisGewerbe",
|
||||||
|
BedarfsausweisWohnen: "BedarfsausweisWohnen",
|
||||||
|
BedarfsausweisGewerbe: "BedarfsausweisGewerbe",
|
||||||
|
GEGNachweisWohnen: "GEGNachweisWohnen",
|
||||||
|
GEGNachweisBedarfsausweis: "GEGNachweisBedarfsausweis",
|
||||||
|
GEGNachweisGewerbe: "GEGNachweisGewerbe",
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type Ausweisart = (typeof Ausweisart)[keyof typeof Ausweisart];
|
||||||
|
|
||||||
|
export const Service = {
|
||||||
|
Telefonberatung: "Telefonberatung",
|
||||||
|
Aushang: "Aushang",
|
||||||
|
Qualitaetsdruck: "Qualitaetsdruck",
|
||||||
|
SameDay: "SameDay",
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type Service = (typeof Service)[keyof typeof Service];
|
||||||
10
src/generated/zod/anteilshaber.ts
Normal file
10
src/generated/zod/anteilshaber.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
|
||||||
|
export const AnteilshaberSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
benutzer_id: z.number().int(),
|
||||||
|
rolle: z.string().nullish(),
|
||||||
|
privilegien: z.bigint().nullish(),
|
||||||
|
uid: z.string(),
|
||||||
|
objekt_id: z.number().int(),
|
||||||
|
})
|
||||||
14
src/generated/zod/apirequests.ts
Normal file
14
src/generated/zod/apirequests.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
|
||||||
|
export const ApiRequestsSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
date: z.date(),
|
||||||
|
ip: z.string(),
|
||||||
|
method: z.string(),
|
||||||
|
path: z.string(),
|
||||||
|
status: z.number().int(),
|
||||||
|
responseTime: z.number(),
|
||||||
|
responseSize: z.number().int(),
|
||||||
|
userAgent: z.string(),
|
||||||
|
user_id: z.number().int().nullish(),
|
||||||
|
})
|
||||||
64
src/generated/zod/aufnahme.ts
Normal file
64
src/generated/zod/aufnahme.ts
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
import { Ausweisart, Heizungsstatus, Heizungsstatus, Lueftungskonzept } from "@prisma/client"
|
||||||
|
|
||||||
|
export const AufnahmeSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
uid: z.string().describe("UID der Gebäude Aufnahme"),
|
||||||
|
benutzer_id: z.number().int().nullish(),
|
||||||
|
ausweisart: z.nativeEnum(Ausweisart).describe("Art des korrespondierenden Ausweises, wie z.B. VerbrauchsausweisWohnen").nullish(),
|
||||||
|
gebaeudetyp: z.string().describe("Art des Gebäudes und seiner primären Nutzungsart").nullish(),
|
||||||
|
gebaeudeteil: z.string().describe("Betrachteter Teil des Gebäudes, z.B. Gesamtgebäude, Wohnteil, Gewerbeteil").nullish(),
|
||||||
|
baujahr_gebaeude: z.number().int().array().describe("Alle Jahre in denen das Gebäude konstruiert oder grundlegend verändert wurde"),
|
||||||
|
baujahr_heizung: z.number().int().array().describe("Alle Jahre in denen die Heizung eingebaut oder grundlegend verändert wurde"),
|
||||||
|
baujahr_klima: z.number().int().array().describe("Alle Jahre in denen die Klimaanlage eingebaut oder grundlegend verändert wurde"),
|
||||||
|
einheiten: z.number().int().describe("Anzahl der (Wohn)Einheiten im Gebäude").nullish(),
|
||||||
|
flaeche: z.number().int().describe("Wohnfläche bei Wohngebäuden, Nutzfläche bei Gewerbegebäuden").nullish(),
|
||||||
|
nutzflaeche: z.number().int().describe("(energetische) Nutzfläche des Gebäudes. Bei Gewerbegebäuden entspricht Sie der Nutzfläche").nullish(),
|
||||||
|
saniert: z.boolean().describe("Falls das Gebäude energetisch saniert ist, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
keller: z.nativeEnum(Heizungsstatus).describe("Ob ein Keller vorhanden, beheizt oder unbeheizt ist").nullish(),
|
||||||
|
dachgeschoss: z.nativeEnum(Heizungsstatus).describe("Ob ein Dachgeschoss vorhanden, beheizt oder unbeheizt ist").nullish(),
|
||||||
|
lueftung: z.nativeEnum(Lueftungskonzept).describe("Art der Gebäudelüftung").nullish(),
|
||||||
|
kuehlung: z.string().describe("Art der Gebäudekühlung").nullish(),
|
||||||
|
leerstand: z.number().int().describe("Prozentualer Leerstand des Gebäudes in einem durchschnittlichen Jahr").nullish(),
|
||||||
|
alternative_heizung: z.boolean().describe("Falls der Heizungsverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
alternative_warmwasser: z.boolean().describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
alternative_lueftung: z.boolean().describe("Falls die Lüftung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
alternative_kuehlung: z.boolean().describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
brennstoff_1: z.string().describe("Genutzer Brennstoff der primären Energiequelle").nullish(),
|
||||||
|
brennstoff_2: z.string().describe("Genutzer Brennstoff der sekundären Energiequelle").nullish(),
|
||||||
|
boxpruefung: z.boolean().nullish(),
|
||||||
|
energieeffizienzklasse: z.string().describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes").nullish(),
|
||||||
|
erstellungsdatum: z.date().describe("Datum an dem der Kunde den Ausweis erstellt hat").nullish(),
|
||||||
|
ausstellungsdatum: z.date().describe("Datum an dem der Aussteller den Ausweis ausgestellt hat").nullish(),
|
||||||
|
zentralheizung: z.boolean().describe("Falls das Gebäude über eine Zentralbeheizung verfügt, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
solarsystem_warmwasser: z.boolean().describe("Falls das Gebäude über ein Solarsystem für Warmwasser verfügt, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
warmwasser_rohre_gedaemmt: z.boolean().describe("Falls die Warmwasserrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
niedertemperatur_kessel: z.boolean().describe("Falls das Gebäude über einen Niedertemperaturkessel verfügt, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
brennwert_kessel: z.boolean().describe("Falls das Gebäude über einen Brennwertkessel verfügt, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
heizungsrohre_gedaemmt: z.boolean().describe("Falls die Heizungsrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
standard_kessel: z.boolean().nullish(),
|
||||||
|
waermepumpe: z.boolean().describe("Falls das Gebäude über eine Wärmepumpe verfügt, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
raum_temperatur_regler: z.boolean().describe("Falls das Gebäude über einen Raumtemperaturregler verfügt, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
photovoltaik: z.boolean().describe("Falls das Gebäude über eine Photovoltaikanlage verfügt, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
durchlauf_erhitzer: z.boolean().describe("Falls das Gebäude über einen Durchlauferhitzer verfügt, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
einzelofen: z.boolean().nullish(),
|
||||||
|
zirkulation: z.boolean().describe("Falls das Gebäude über eine Zirkulationspumpe verfügt, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
einfach_verglasung: z.boolean().describe("Falls die Fenster des Gebäudes einfach gedämmt sind, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
dreifach_verglasung: z.boolean().describe("Falls die Fenster des Gebäudes dreifach gedämmt sind, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
fenster_teilweise_undicht: z.boolean().describe("Falls die Fenster des Gebäudes teilweise undicht sind, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
doppel_verglasung: z.boolean().describe("Falls die Fenster des Gebäudes doppelt gedämmt sind, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
fenster_dicht: z.boolean().describe("Falls die Fenster des Gebäudes dicht sind, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
rolllaeden_kaesten_gedaemmt: z.boolean().describe("Falls das Gebäude über gedämmte Rolllädenkästen verfügt, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
isolier_verglasung: z.boolean().describe("Falls die Fenster des Gebäudes isolier Verglasung haben, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
tueren_undicht: z.boolean().describe("Falls die Türen des Gebäudes undicht sind, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
tueren_dicht: z.boolean().describe("Falls die Türen des Gebäudes dicht sind, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
dachgeschoss_gedaemmt: z.boolean().describe("Falls das Dachgeschoss des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
keller_decke_gedaemmt: z.boolean().describe("Falls die Kellerdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
keller_wand_gedaemmt: z.boolean().describe("Falls die Kellerwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
aussenwand_gedaemmt: z.boolean().describe("Falls die Außenwände des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
oberste_geschossdecke_gedaemmt: z.boolean().describe("Falls die oberste Geschossdecke des Gebäudes gedämmt ist, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
aussenwand_min_12cm_gedaemmt: z.boolean().describe("Falls die Außenwände des Gebäudes mindestens 12cm gedämmt sind, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
dachgeschoss_min_12cm_gedaemmt: z.boolean().describe("Falls das Dachgeschoss des Gebäudes mindestens 12cm gedämmt ist, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
oberste_geschossdecke_min_12cm_gedaemmt: z.boolean().describe("Falls die oberste Geschossdecke des Gebäudes mindestens 12cm gedämmt ist, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
objekt_id: z.number().int(),
|
||||||
|
})
|
||||||
10
src/generated/zod/bedarfsausweisgewerbe.ts
Normal file
10
src/generated/zod/bedarfsausweisgewerbe.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
|
||||||
|
export const BedarfsausweisGewerbeSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
uid: z.string(),
|
||||||
|
benutzer_id: z.number().int().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
||||||
|
aufnahme_id: z.number().int(),
|
||||||
|
rechnung_id: z.number().int().nullish(),
|
||||||
|
geg_einpreisung_id: z.number().int().nullish(),
|
||||||
|
})
|
||||||
71
src/generated/zod/bedarfsausweiswohnen.ts
Normal file
71
src/generated/zod/bedarfsausweiswohnen.ts
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
import { Ausstellgrund } from "@prisma/client"
|
||||||
|
|
||||||
|
export const BedarfsausweisWohnenSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
uid: z.string(),
|
||||||
|
benutzer_id: z.number().int().nullish(),
|
||||||
|
ausstellgrund: z.nativeEnum(Ausstellgrund).nullish(),
|
||||||
|
registriernummer: z.string().nullish(),
|
||||||
|
alternative_heizung: z.boolean().nullish(),
|
||||||
|
alternative_warmwasser: z.boolean().nullish(),
|
||||||
|
alternative_lueftung: z.boolean().nullish(),
|
||||||
|
alternative_kuehlung: z.boolean().nullish(),
|
||||||
|
anzahl_vollgeschosse: z.number().int().nullish(),
|
||||||
|
geschosshoehe: z.number().nullish(),
|
||||||
|
anzahl_gauben: z.number().int().nullish(),
|
||||||
|
breite_gauben: z.number().nullish(),
|
||||||
|
masse_a: z.number().nullish(),
|
||||||
|
masse_b: z.number().nullish(),
|
||||||
|
masse_c: z.number().nullish(),
|
||||||
|
masse_d: z.number().nullish(),
|
||||||
|
masse_e: z.number().nullish(),
|
||||||
|
masse_f: z.number().nullish(),
|
||||||
|
fensterflaeche_so_sw: z.number().nullish(),
|
||||||
|
fensterflaeche_nw_no: z.number().nullish(),
|
||||||
|
aussenwandflaeche_unbeheizt: z.number().nullish(),
|
||||||
|
dachflaeche: z.number().nullish(),
|
||||||
|
deckenflaeche: z.number().nullish(),
|
||||||
|
dach_u_wert: z.number().nullish(),
|
||||||
|
decke_u_wert: z.number().nullish(),
|
||||||
|
aussenwand_flaeche: z.number().nullish(),
|
||||||
|
aussenwand_u_wert: z.number().nullish(),
|
||||||
|
fussboden_flaeche: z.number().nullish(),
|
||||||
|
fussboden_u_wert: z.number().nullish(),
|
||||||
|
volumen: z.number().nullish(),
|
||||||
|
dicht: z.boolean().nullish(),
|
||||||
|
fenster_flaeche_1: z.number().nullish(),
|
||||||
|
fenster_art_1: z.number().nullish(),
|
||||||
|
fenster_flaeche_2: z.number().nullish(),
|
||||||
|
fenster_art_2: z.number().nullish(),
|
||||||
|
dachfenster_flaeche: z.number().nullish(),
|
||||||
|
dachfenster_art: z.number().nullish(),
|
||||||
|
haustuer_flaeche: z.number().nullish(),
|
||||||
|
haustuer_art: z.number().nullish(),
|
||||||
|
dach_bauart: z.string().nullish(),
|
||||||
|
decke_bauart: z.string().nullish(),
|
||||||
|
dach_daemmung: z.number().nullish(),
|
||||||
|
decke_daemmung: z.number().nullish(),
|
||||||
|
aussenwand_daemmung: z.number().nullish(),
|
||||||
|
boden_daemmung: z.number().nullish(),
|
||||||
|
aussenwand_bauart: z.string().nullish(),
|
||||||
|
boden_bauart: z.string().nullish(),
|
||||||
|
warmwasser_verteilung: z.string().nullish(),
|
||||||
|
warmwasser_speicherung: z.string().nullish(),
|
||||||
|
warmwasser_erzeugung: z.string().nullish(),
|
||||||
|
heizung_zentral: z.boolean().nullish(),
|
||||||
|
heizung_verteilung: z.string().nullish(),
|
||||||
|
heizung_speicherung: z.string().nullish(),
|
||||||
|
waerme_erzeugung_heizung: z.string().nullish(),
|
||||||
|
anteil_zusatzheizung: z.number().nullish(),
|
||||||
|
kollektor_flaeche: z.number().nullish(),
|
||||||
|
ausgestellt: z.boolean().nullish(),
|
||||||
|
storniert: z.boolean().describe("Falls der Ausweis storniert wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
bestellt: z.boolean().describe("Falls der Ausweis bestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
zurueckgestellt: z.boolean().describe("Falls der Ausweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
prueftext: z.string().describe("Durch den Kunden hinzugefügte Anmerkung zur Vorabprüfung").nullish(),
|
||||||
|
beschreibung: z.string().nullish(),
|
||||||
|
kontrolldatei_angefragt: z.boolean().describe("Ob bei der Anfrage der Registriernummer eine Kontrolldatei angefragt wurde").nullish(),
|
||||||
|
rechnung_id: z.number().int().nullish(),
|
||||||
|
aufnahme_id: z.number().int().describe("ID der korrespondierenden Gebäudeaufnahme"),
|
||||||
|
})
|
||||||
20
src/generated/zod/benutzer.ts
Normal file
20
src/generated/zod/benutzer.ts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
import { BenutzerRolle } from "@prisma/client"
|
||||||
|
|
||||||
|
export const BenutzerSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
uid: z.string(),
|
||||||
|
name: z.string().nullish(),
|
||||||
|
vorname: z.string().nullish(),
|
||||||
|
email: z.string(),
|
||||||
|
passwort: z.string(),
|
||||||
|
profilbild: z.string().nullish(),
|
||||||
|
plz: z.string().nullish(),
|
||||||
|
ort: z.string().nullish(),
|
||||||
|
adresse: z.string().nullish(),
|
||||||
|
telefon: z.string().nullish(),
|
||||||
|
anrede: z.string().nullish(),
|
||||||
|
rolle: z.nativeEnum(BenutzerRolle),
|
||||||
|
firma: z.string().nullish(),
|
||||||
|
lex_office_id: z.string().nullish(),
|
||||||
|
})
|
||||||
9
src/generated/zod/bild.ts
Normal file
9
src/generated/zod/bild.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
import { BilderKategorie } from "@prisma/client"
|
||||||
|
|
||||||
|
export const BildSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
kategorie: z.nativeEnum(BilderKategorie),
|
||||||
|
uid: z.string(),
|
||||||
|
aufnahme_id: z.number().int().nullish(),
|
||||||
|
})
|
||||||
14
src/generated/zod/documenttemplates.ts
Normal file
14
src/generated/zod/documenttemplates.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
|
||||||
|
export const documenttemplatesSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
name: z.string(),
|
||||||
|
shortdescription: z.string(),
|
||||||
|
longdescription: z.string(),
|
||||||
|
user_id: z.number().int(),
|
||||||
|
is_private: z.boolean(),
|
||||||
|
documenttype: z.number().int(),
|
||||||
|
filename: z.string(),
|
||||||
|
created_at: z.date(),
|
||||||
|
updated_at: z.date(),
|
||||||
|
})
|
||||||
8
src/generated/zod/documenttypes.ts
Normal file
8
src/generated/zod/documenttypes.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
|
||||||
|
export const documenttypesSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
name: z.string(),
|
||||||
|
shortdescription: z.string(),
|
||||||
|
longdescription: z.string(),
|
||||||
|
})
|
||||||
11
src/generated/zod/event.ts
Normal file
11
src/generated/zod/event.ts
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
|
||||||
|
export const EventSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
uid: z.string(),
|
||||||
|
date: z.date(),
|
||||||
|
title: z.string(),
|
||||||
|
description: z.string().nullish(),
|
||||||
|
aufnahme_id: z.number().int(),
|
||||||
|
benutzer_id: z.number().int().nullish(),
|
||||||
|
})
|
||||||
22
src/generated/zod/gegeinpreisung.ts
Normal file
22
src/generated/zod/gegeinpreisung.ts
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
import { Einpreisungsstatus } from "@prisma/client"
|
||||||
|
|
||||||
|
export const GEGEinpreisungSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
uid: z.string(),
|
||||||
|
empfaenger: z.string().nullish(),
|
||||||
|
strasse: z.string().nullish(),
|
||||||
|
plz: z.string().nullish(),
|
||||||
|
ort: z.string().nullish(),
|
||||||
|
zusatzzeile: z.string().nullish(),
|
||||||
|
telefon: z.string().nullish(),
|
||||||
|
email: z.string().nullish(),
|
||||||
|
abweichende_versand_adresse: z.boolean().nullish(),
|
||||||
|
versand_empfaenger: z.string().nullish(),
|
||||||
|
versand_strasse: z.string().nullish(),
|
||||||
|
versand_plz: z.string().nullish(),
|
||||||
|
versand_ort: z.string().nullish(),
|
||||||
|
versand_zusatzzeile: z.string().nullish(),
|
||||||
|
status: z.nativeEnum(Einpreisungsstatus),
|
||||||
|
benutzer_id: z.number().int().describe("Die ID des Benutzers, der diese Einpreisung bekommt.").nullish(),
|
||||||
|
})
|
||||||
17
src/generated/zod/gegnachweisgewerbe.ts
Normal file
17
src/generated/zod/gegnachweisgewerbe.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
import { Ausstellgrund } from "@prisma/client"
|
||||||
|
|
||||||
|
export const GEGNachweisGewerbeSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
uid: z.string(),
|
||||||
|
ausstellgrund: z.nativeEnum(Ausstellgrund).describe("Ausstellgrund wie z.B. Vermietung oder Verkauf").nullish(),
|
||||||
|
keller_beheizt: z.boolean().describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
storniert: z.boolean().describe("Falls die Nachweisanfrage storniert wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
bestellt: z.boolean().describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
zurueckgestellt: z.boolean().describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
beschreibung: z.string().describe("Beschreibung des Bauvorhabens").nullish(),
|
||||||
|
benutzer_id: z.number().int().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
||||||
|
aufnahme_id: z.number().int(),
|
||||||
|
rechnung_id: z.number().int().nullish(),
|
||||||
|
geg_einpreisung_id: z.number().int().nullish(),
|
||||||
|
})
|
||||||
17
src/generated/zod/gegnachweiswohnen.ts
Normal file
17
src/generated/zod/gegnachweiswohnen.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
import { Ausstellgrund } from "@prisma/client"
|
||||||
|
|
||||||
|
export const GEGNachweisWohnenSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
uid: z.string(),
|
||||||
|
ausstellgrund: z.nativeEnum(Ausstellgrund).describe("Ausstellgrund wie z.B. Vermietung oder Verkauf").nullish(),
|
||||||
|
keller_beheizt: z.boolean().describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
storniert: z.boolean().describe("Falls die Nachweisanfrage storniert wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
bestellt: z.boolean().describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
zurueckgestellt: z.boolean().describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
beschreibung: z.string().describe("Beschreibung des Bauvorhabens").nullish(),
|
||||||
|
benutzer_id: z.number().int().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
||||||
|
aufnahme_id: z.number().int(),
|
||||||
|
rechnung_id: z.number().int().nullish(),
|
||||||
|
geg_einpreisung_id: z.number().int().nullish(),
|
||||||
|
})
|
||||||
23
src/generated/zod/index.ts
Normal file
23
src/generated/zod/index.ts
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
export * from "./anteilshaber"
|
||||||
|
export * from "./apirequests"
|
||||||
|
export * from "./aufnahme"
|
||||||
|
export * from "./bedarfsausweisgewerbe"
|
||||||
|
export * from "./bedarfsausweiswohnen"
|
||||||
|
export * from "./benutzer"
|
||||||
|
export * from "./bild"
|
||||||
|
export * from "./event"
|
||||||
|
export * from "./gegeinpreisung"
|
||||||
|
export * from "./gegnachweisgewerbe"
|
||||||
|
export * from "./gegnachweiswohnen"
|
||||||
|
export * from "./klimafaktoren"
|
||||||
|
export * from "./objekt"
|
||||||
|
export * from "./postleitzahlen"
|
||||||
|
export * from "./rechnung"
|
||||||
|
export * from "./refreshtokens"
|
||||||
|
export * from "./tickets"
|
||||||
|
export * from "./unterlage"
|
||||||
|
export * from "./verbrauchsausweisgewerbe"
|
||||||
|
export * from "./verbrauchsausweiswohnen"
|
||||||
|
export * from "./documenttemplates"
|
||||||
|
export * from "./documenttypes"
|
||||||
|
export * from "./tokens"
|
||||||
9
src/generated/zod/klimafaktoren.ts
Normal file
9
src/generated/zod/klimafaktoren.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
|
||||||
|
export const KlimafaktorenSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
plz: z.string(),
|
||||||
|
month: z.number().int(),
|
||||||
|
year: z.number().int(),
|
||||||
|
klimafaktor: z.number(),
|
||||||
|
})
|
||||||
13
src/generated/zod/objekt.ts
Normal file
13
src/generated/zod/objekt.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
|
||||||
|
export const ObjektSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
uid: z.string(),
|
||||||
|
benutzer_id: z.number().int().nullish(),
|
||||||
|
latitude: z.number().nullish(),
|
||||||
|
longitude: z.number().nullish(),
|
||||||
|
plz: z.string().describe("Postleitzahl des Gebäudes").nullish(),
|
||||||
|
ort: z.string().describe("Ort des Gebäudes").nullish(),
|
||||||
|
adresse: z.string().describe("Adresse (Straße und Hausnummer) des Gebäudes").nullish(),
|
||||||
|
erstellungsdatum: z.date().nullish(),
|
||||||
|
})
|
||||||
11
src/generated/zod/postleitzahlen.ts
Normal file
11
src/generated/zod/postleitzahlen.ts
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
|
||||||
|
export const PostleitzahlenSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
plz: z.string(),
|
||||||
|
stadt: z.string(),
|
||||||
|
bundesland: z.string(),
|
||||||
|
landkreis: z.string(),
|
||||||
|
lat: z.number(),
|
||||||
|
lon: z.number(),
|
||||||
|
})
|
||||||
30
src/generated/zod/rechnung.ts
Normal file
30
src/generated/zod/rechnung.ts
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
import { Bezahlmethoden, Rechnungsstatus, Service, AusweisTyp } from "@prisma/client"
|
||||||
|
|
||||||
|
export const RechnungSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
uid: z.string(),
|
||||||
|
benutzer_id: z.number().int(),
|
||||||
|
empfaenger: z.string().nullish(),
|
||||||
|
strasse: z.string().nullish(),
|
||||||
|
plz: z.string().nullish(),
|
||||||
|
ort: z.string().nullish(),
|
||||||
|
zusatzzeile: z.string().nullish(),
|
||||||
|
telefon: z.string().nullish(),
|
||||||
|
email: z.string().nullish(),
|
||||||
|
abweichende_versand_adresse: z.boolean().nullish(),
|
||||||
|
versand_empfaenger: z.string().nullish(),
|
||||||
|
versand_strasse: z.string().nullish(),
|
||||||
|
versand_plz: z.string().nullish(),
|
||||||
|
versand_ort: z.string().nullish(),
|
||||||
|
versand_zusatzzeile: z.string().nullish(),
|
||||||
|
bezahlmethode: z.nativeEnum(Bezahlmethoden),
|
||||||
|
status: z.nativeEnum(Rechnungsstatus),
|
||||||
|
services: z.nativeEnum(Service).array(),
|
||||||
|
ausweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
betrag: z.number(),
|
||||||
|
erstellt_am: z.date(),
|
||||||
|
bezahlt_am: z.date().nullish(),
|
||||||
|
storniert_am: z.date().nullish(),
|
||||||
|
transaktions_referenz: z.string().nullish(),
|
||||||
|
})
|
||||||
9
src/generated/zod/refreshtokens.ts
Normal file
9
src/generated/zod/refreshtokens.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import * as z from "zod"
|
||||||
|
|
||||||
|
export const RefreshTokensSchema = z.object({
|
||||||
|
id: z.number().int(),
|
||||||
|
benutzer_id: z.number().int(),
|
||||||
|
token: z.string(),
|
||||||
|
ip: z.string(),
|
||||||
|
expiry: z.date(),
|
||||||
|
})
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user