836 Commits

Author SHA1 Message Date
Moritz Utcke
c0c22453f1 Datenbank 2025-04-29 12:20:21 -03:00
Moritz Utcke
e18f27675d Fix 2025-04-29 11:30:29 -03:00
Moritz Utcke
1380dcb43a Partner 2025-04-29 11:15:57 -03:00
Moritz Utcke
a8be6db8aa Ausweis erstellen 2025-04-29 10:39:11 -03:00
Moritz Utcke
e24310bdb7 Ausweis Erstellen Button 2025-04-28 23:57:36 -03:00
Moritz Utcke
39e8527c59 Merge branch 'staging' into dev 2025-04-28 17:28:14 -03:00
Moritz Utcke
76bd0bb5dd hilfe 2025-04-28 17:18:45 -03:00
Moritz Utcke
4b9e7dda5f ahhhhh 2025-04-28 17:14:28 -03:00
Moritz Utcke
73b44d574b Update 2025-04-28 17:11:54 -03:00
Moritz Utcke
f778641be6 No Checkout 2025-04-28 17:07:26 -03:00
Moritz Utcke
75723d666e Update 2025-04-28 16:59:34 -03:00
Moritz Utcke
272b044157 Update 2025-04-28 16:52:41 -03:00
Moritz Utcke
10bc17963a Update 2025-04-28 16:48:34 -03:00
Moritz Utcke
35c24b0380 Update 2025-04-28 16:40:49 -03:00
Moritz Utcke
3e09686cf6 Update 2025-04-28 16:34:28 -03:00
Moritz Utcke
aca01b859f Auto PR 2025-04-28 16:31:33 -03:00
Moritz Utcke
344651dfc1 Update Workflow 2025-04-28 15:38:06 -03:00
Moritz Utcke
4a2eb72f0a Update workflow 2025-04-28 14:10:18 -03:00
Moritz Utcke
eb1763a6c1 Merge remote-tracking branch 'origin/staging' into staging 2025-04-28 14:06:31 -03:00
Moritz Utcke
e276c71461 Update workflow 2025-04-28 14:06:17 -03:00
Moritz Utcke
2bf4eba44d Update Workflow 2025-04-28 14:02:46 -03:00
Moritz Utcke
9e2d7ecf08 Merge branch 'main' into staging 2025-04-28 13:32:22 -03:00
Moritz Utcke
058b61908f Update Workflow 2025-04-28 13:31:50 -03:00
Moritz Utcke
5a6bfcc900 Merge branch 'staging' 2025-04-28 13:29:59 -03:00
Moritz Utcke
ec0d5ddf5a Update workflow 2025-04-28 13:23:33 -03:00
Moritz Utcke
7204957749 Update dev pipeline 2025-04-28 13:14:37 -03:00
Moritz Utcke
8c4345924f Update dev pipeline 2025-04-28 13:10:16 -03:00
Moritz Utcke
ed609a4690 Merge branch 'main' into dev 2025-04-28 13:08:08 -03:00
Moritz Utcke
b29b26ef0e Update 2025-04-28 12:58:54 -03:00
Moritz Utcke
d6f01bef98 Merge branch 'main' into staging 2025-04-28 12:53:22 -03:00
Moritz Utcke
bfb17795a6 Workflows 2025-04-28 12:52:09 -03:00
Moritz Utcke
dc5c6ac557 Workflows 2025-04-28 12:50:12 -03:00
Moritz Utcke
6416b0f749 Workflows 2025-04-28 12:45:21 -03:00
Moritz Utcke
a094036d07 Merge branch 'feature-branch' into dev 2025-04-28 11:29:11 -03:00
Moritz Utcke
8c69e6add1 Größe geändert 2025-04-28 11:26:23 -03:00
Jens Cornelsen
78decc697e . 2025-04-28 14:03:41 +02:00
Jens Cornelsen
5c846ec400 Text Dashboard Warmwasserzuschlag 2025-04-28 13:59:19 +02:00
Moritz Utcke
b13b145d16 Fix dev 2025-04-28 08:57:19 -03:00
Jens Cornelsen
c2542e7dab Kühlung vorhanden fix 2025-04-28 13:16:54 +02:00
Jens Cornelsen
422a03a2e8 Warmwasserzuschlag fix 2025-04-28 13:04:02 +02:00
Moritz Utcke
e09513d50e Zusatzartikel und Hilfe Anfordern 2025-04-27 17:15:24 -03:00
Moritz Utcke
e159e81c2d Neuausstellung + Verschlankung 2025-04-27 16:29:20 -03:00
Jens Cornelsen
a113d09775 Merge pull request #525 from IBCornelsen/dev
info popup entfernt
2025-04-26 10:03:20 +02:00
Jens Cornelsen
25aa048c4a info popup entfernt 2025-04-26 10:00:11 +02:00
Jens Cornelsen
207bf31058 Merge pull request #524 from IBCornelsen/dev
Button Ausweis erstellen
2025-04-25 19:37:26 +02:00
Jens Cornelsen
f9daeceeca Button Ausweis erstellen 2025-04-25 19:26:21 +02:00
Jens Cornelsen
b47a5fd5f6 Merge pull request #523 from IBCornelsen/dev
update main
2025-04-25 10:57:12 +02:00
Jens Cornelsen
88c35f81f7 Text verbessert 2025-04-25 10:55:08 +02:00
Jens Cornelsen
cc583080ea Preis fix Bedarfsausweis 2025-04-24 17:18:47 +02:00
Carl Mahnke
e535cdaeba Bedarfsausweis ausstellen - cleanup 2025-04-24 16:56:52 +02:00
Carl Mahnke
f17a8a6481 Bedarfsausweis Austellen - Fix Rechnung PDF Anhang 2025-04-24 16:51:12 +02:00
Carl Mahnke
d5fb937dd6 Bedarfsausweis Austellen - Fix Rechnung PDF Anhang 2025-04-24 16:47:41 +02:00
Carl Mahnke
23246fbda2 Bedarfsausweis Austellen - Fix Rechnung PDF Anhang 2025-04-24 16:35:18 +02:00
Jens Cornelsen
735344cea4 Merge pull request #522 from IBCornelsen/dev
update main
2025-04-24 15:58:03 +02:00
Jens Cornelsen
8488472ebc . 2025-04-24 15:37:01 +02:00
Jens Cornelsen
299ec89216 . 2025-04-24 15:24:43 +02:00
Jens Cornelsen
a9aaa508f5 Auto stash before rebase of "dev" onto "origin/dev" 2025-04-24 15:17:39 +02:00
Carl Mahnke
52261e8d2a Bedarfsausweis ausstellen Timeout deaktivieren 2025-04-24 14:56:43 +02:00
Carl Mahnke
4ac3999f67 Bedarfsausweis austellen Rechnung PDF Error Logging 2025-04-24 14:50:15 +02:00
Carl Mahnke
9c059eb4b6 Bedarfsausweis austellen 2025-04-24 14:48:06 +02:00
Carl Mahnke
ba5d5ac5d5 Merge remote-tracking branch 'origin/dev' into Dev-Carl 2025-04-24 14:25:18 +02:00
Jens Cornelsen
6d48cee1fa . 2025-04-24 14:22:57 +02:00
Carl Mahnke
d157ed3c0f Bedarfsausweis Ausstellen: Fixing PDF Mime Type + LexOffice Rechnung anhängen 2025-04-24 14:20:31 +02:00
Jens Cornelsen
0495d48669 . 2025-04-24 14:13:20 +02:00
Jens Cornelsen
7ba5c9de92 Dashboard 2025-04-24 13:42:52 +02:00
Carl Mahnke
b64282a7ca Disable LexOffice Rechnung for Testing 2025-04-24 12:58:50 +02:00
Carl Mahnke
bd67288887 Merge remote-tracking branch 'origin/dev' into Dev-Carl 2025-04-24 12:55:05 +02:00
Carl Mahnke
68f51d4553 Merge branch 'main' into Dev-Carl 2025-04-24 12:54:22 +02:00
Jens Cornelsen
5dbbde0856 Merge pull request #521 from IBCornelsen/main
get main
2025-04-24 12:52:04 +02:00
Carl Mahnke
a9f01a5a8e Verbrauchsausweis: Fix Attachments 2025-04-24 10:45:43 +02:00
Carl Mahnke
28a383a476 Bedarfsausweis: Revert Check, ob Rechnung PDF bereits existiert 2025-04-24 10:37:54 +02:00
Jens Cornelsen
56b6bcd1a1 Fix Attachment 2025-04-24 09:59:28 +02:00
Jens Cornelsen
14b3cdf744 Merge pull request #520 from IBCornelsen/main
get main
2025-04-23 19:42:38 +02:00
Jens Cornelsen
38f77d862d Merge branch 'dev' into main 2025-04-23 19:40:44 +02:00
Carl Mahnke
f3c2c82d8d Quickfix Tel 2 2025-04-23 18:32:36 +02:00
Carl Mahnke
87f6bf14d8 Merge remote-tracking branch 'origin/dev' into Dev-Carl 2025-04-23 18:27:59 +02:00
Carl Mahnke
72ed91ddcc Bedarfsausweis: Check, ob rechnung PDF bereits existiert 2025-04-23 18:22:29 +02:00
Jens Cornelsen
a4c3c38912 api caller 2025-04-23 18:20:46 +02:00
Jens Cornelsen
e86b44f5a0 Telefonnummer Dashboard 2025-04-23 18:18:40 +02:00
Carl Mahnke
101b1e9aab Bedarfsausweis: Check, ob Rechnung PDF bereits existiert 2025-04-23 18:00:53 +02:00
Carl Mahnke
ecd4b08119 Auto stash before merge of "Dev-Carl" and "origin/dev" 2025-04-23 17:38:05 +02:00
Moritz Utcke
f958eb07bf Bedarfsausweis 2025-04-23 10:49:58 -03:00
Carl Mahnke
611866508c Aushang PDF 2025-04-23 15:43:22 +02:00
Moritz Utcke
076c49c054 Bedarfsausweis Wohnen ausstellen 2025-04-23 10:34:30 -03:00
Jens Cornelsen
9c8b1b1913 Merge pull request #519 from IBCornelsen/dev
update main
2025-04-23 10:46:53 +02:00
Jens Cornelsen
cfad65878e . 2025-04-23 10:08:34 +02:00
Moritz Utcke
379ae672c4 Merge remote-tracking branch 'origin/dev' into dev 2025-04-22 19:42:52 -03:00
Moritz Utcke
b568f5c101 Bedarfsausweis 2025-04-22 19:41:57 -03:00
Jens Cornelsen
7c36bb8728 Merge pull request #518 from IBCornelsen/dev
Fix Bedarfsausweis
2025-04-23 00:12:45 +02:00
Jens Cornelsen
df0fa82482 Fix Bedarfsausweis 2025-04-23 00:05:32 +02:00
Jens Cornelsen
70fd424488 Textkorrekturen 2025-04-22 21:17:09 +02:00
Moritz Utcke
8470ad5915 Highlight rausgenommen 2025-04-22 15:04:43 -03:00
Moritz Utcke
a8a9553d20 Stornierungsbestätigung 2025-04-22 15:01:07 -03:00
Moritz Utcke
8d8fb96f0d Merge remote-tracking branch 'origin/dev' into dev 2025-04-22 13:06:21 -03:00
Jens Cornelsen
25280f2cd1 Merge pull request #517 from IBCornelsen/dev
Update main
2025-04-22 18:01:46 +02:00
Jens Cornelsen
3ab5992210 Adresse Angebotsanfragen 2025-04-22 17:27:00 +02:00
Moritz Utcke
de8dd9e9f1 Auto stash before merge of "dev" and "origin/dev" 2025-04-22 10:32:34 -03:00
Jens Cornelsen
3e15724c3e Navigation 2025-04-22 15:15:03 +02:00
Jens Cornelsen
dfe7856d03 Infotext hinzugefügt 2025-04-22 13:16:12 +02:00
Jens Cornelsen
b70417e9ed . 2025-04-22 13:02:13 +02:00
Jens Cornelsen
f5d6fa03e5 Navigation 2025-04-22 12:56:15 +02:00
Jens Cornelsen
e35378ced8 Auto stash before rebase of "dev" onto "origin/dev" 2025-04-22 12:45:31 +02:00
Moritz Utcke
414727fdc1 Unterlagen und Bilder 2025-04-22 00:09:08 -03:00
Moritz Utcke
e2c14dace9 Suche 2025-04-21 21:40:17 -03:00
Moritz Utcke
568f9769ee Dashboard objekte redirect 2025-04-21 21:19:49 -03:00
Moritz Utcke
6901973e5c Merge branch 'dashboard' into dev 2025-04-21 20:25:20 -03:00
Moritz Utcke
a588837605 Verwendungszweck 2025-04-21 20:24:57 -03:00
Jens Cornelsen
6e6ac36178 Merge pull request #516 from IBCornelsen/dashboard
Neues Dashboard
2025-04-22 01:10:38 +02:00
Moritz Utcke
cfc6d3c230 Rechnung Optional 2025-04-21 20:06:11 -03:00
Jens Cornelsen
b6aa1fdf6d Merge remote-tracking branch 'origin/dev' into dashboard 2025-04-22 00:59:41 +02:00
Moritz Utcke
d9f6b7e825 Speichern direkt auf Ausweis 2025-04-21 19:59:30 -03:00
Jens Cornelsen
68bffa8944 Auto stash before rebase of "dashboard" onto "origin/dashboard" 2025-04-22 00:47:02 +02:00
Moritz Utcke
f8e890e9a9 Bestätigungsmail weg 2025-04-21 19:09:57 -03:00
Moritz Utcke
64eb0d4e15 Fix 2025-04-21 18:18:31 -03:00
Moritz Utcke
d7a862e061 Fix 2025-04-21 17:56:23 -03:00
Moritz Utcke
6a2c386b5d GEGNachweise 2025-04-21 17:55:37 -03:00
Moritz Utcke
62e6dd44b9 Dashboard Template 2025-04-21 17:53:19 -03:00
Moritz Utcke
05b31a4862 Dashboard 2025-04-21 16:15:47 -03:00
Moritz Utcke
55305f31b7 Unnötige Dateien entfernt 2025-04-21 15:35:29 -03:00
Moritz Utcke
1f86a063ef Ausweis erstellen aus Dashboard 2025-04-21 15:23:59 -03:00
Moritz Utcke
217885587e Merge remote-tracking branch 'origin/dev' into dev 2025-04-21 15:18:48 -03:00
Moritz Utcke
28f8933f72 Ausweis als Admin bearbeiten 2025-04-21 15:18:41 -03:00
Moritz Utcke
5360ec3d24 Ausweis als Admin bearbeiten 2025-04-21 15:08:43 -03:00
Moritz Utcke
6339a3aeda Merge remote-tracking branch 'origin/main' into dev 2025-04-21 15:06:04 -03:00
Jens Cornelsen
974d0e28a1 Kühlungszuschlag fix 2025-04-21 19:57:15 +02:00
Jens Cornelsen
e9dab58a57 . 2025-04-21 19:23:15 +02:00
Jens Cornelsen
3aa72ea258 Warmwasserzuschlag fix 2025-04-21 19:10:14 +02:00
Moritz Utcke
0b161cf53e Bedarfsausweis Wohnen Sektion Rausgenomment 2025-04-21 13:00:04 -03:00
Jens Cornelsen
590723b297 Merge pull request #515 from IBCornelsen/dev
Datum Fetch, Rechnung, Mollie, etc
2025-04-21 16:33:14 +02:00
Jens Cornelsen
fd390238d9 Ausweis Box Design Änderung Text 2025-04-21 16:30:19 +02:00
Moritz Utcke
6388669d66 Verbrauch Datum 2025-04-21 09:34:07 -04:00
Moritz Utcke
b475e4dd79 fix GetRechung 2025-04-20 20:55:22 -04:00
Moritz Utcke
f5373fc7b1 Fix 2025-04-20 20:49:37 -04:00
Moritz Utcke
265e58d80d Fix Undefined 2025-04-20 20:37:46 -04:00
Moritz Utcke
d2fac65a6d Bugfixes 2025-04-20 20:34:29 -04:00
Moritz Utcke
b0df7fc4cf bump astro-typesafe-api 2025-04-20 19:41:42 -04:00
Moritz Utcke
e21a829cb6 Bugfixes 2025-04-20 17:21:46 -04:00
Jens Cornelsen
bef1cff348 Dashboard Verbrauchsausweis 2025-04-19 22:02:12 +02:00
Jens Cornelsen
f9555c7a1e Merge pull request #514 from IBCornelsen/main
get main
2025-04-19 02:41:59 +02:00
Jens Cornelsen
03389a04ba Zusammenfassung Verbrauchsausweis 2025-04-19 02:35:55 +02:00
Jens Cornelsen
008a6f05a5 Zusammenfassung Eingaben 2025-04-19 01:48:35 +02:00
Jens Cornelsen
6aa8816dd1 . 2025-04-18 18:12:59 +02:00
Jens Cornelsen
70427e8a45 . 2025-04-18 16:15:28 +02:00
Jens Cornelsen
51ea0ec007 . 2025-04-18 16:03:52 +02:00
Jens Cornelsen
1381f5787a Merge pull request #513 from IBCornelsen/dev
Verbrauchsausweis Gewerbe  Anzeige Zuschläge korrigiert
2025-04-18 15:37:46 +02:00
Jens Cornelsen
722db2d2ec . 2025-04-18 15:27:28 +02:00
Jens Cornelsen
72458f4631 . 2025-04-18 14:59:42 +02:00
Jens Cornelsen
bde6b3e102 . 2025-04-18 14:37:36 +02:00
Jens Cornelsen
936ca5abaa Kühlungszuschlag Strom 2025-04-18 14:27:43 +02:00
Jens Cornelsen
1f03bf5570 Leerstandszuschlag Strom 2025-04-18 13:57:22 +02:00
Jens Cornelsen
e7e2390bcd Kühlungszuschlag korrigiert 2025-04-18 13:41:48 +02:00
Jens Cornelsen
3ac6164c82 Warmwasserzuschlag raus 2025-04-18 13:26:30 +02:00
Jens Cornelsen
3bb6778e67 Leerstandszuschlag 2025-04-18 13:04:06 +02:00
Jens Cornelsen
fa797c00c2 Merge pull request #512 from IBCornelsen/main
get main
2025-04-18 12:27:28 +02:00
Jens Cornelsen
f0ae1a9205 . 2025-04-17 23:34:45 +02:00
Jens Cornelsen
af7da9c07f . 2025-04-17 23:29:36 +02:00
Jens Cornelsen
4106253b58 . 2025-04-17 23:26:43 +02:00
Jens Cornelsen
c787dce10c . 2025-04-17 23:18:04 +02:00
Jens Cornelsen
b265910b2a . 2025-04-17 23:03:17 +02:00
Jens Cornelsen
5e3f4c0f59 . 2025-04-17 22:46:02 +02:00
Jens Cornelsen
2fe07ebfad Zusammenfasssung Ausweisseite 2025-04-17 22:39:20 +02:00
Jens Cornelsen
7be766d2c7 Zahllinks erstmal entfernt 2025-04-17 20:58:37 +02:00
Jens Cornelsen
15651fc803 Fix Kühlung "nicht vorhanden" 2025-04-17 18:13:22 +02:00
Jens Cornelsen
5b3b81551e Merge remote-tracking branch 'origin/main' into dev 2025-04-17 18:03:03 +02:00
Jens Cornelsen
330841f8ee . 2025-04-17 01:46:45 +02:00
Jens Cornelsen
0708c6ce43 . 2025-04-17 01:41:23 +02:00
Jens Cornelsen
2c1945584d . 2025-04-17 01:36:49 +02:00
Jens Cornelsen
183178f943 . 2025-04-17 01:30:16 +02:00
Jens Cornelsen
b1b95159fa plz und ort in Ausweis pdf eingefügt 2025-04-17 01:20:18 +02:00
Jens Cornelsen
b0828592c5 Filter nur bestellte Ausweise und nicht ausgestellte im Dashboard für Admins 2025-04-17 01:02:58 +02:00
Jens Cornelsen
21446b3bf3 Filter nur bestellte Ausweise und nicht ausgestellte im Dashboard für Admins 2025-04-17 00:52:09 +02:00
Jens Cornelsen
935fbfba78 Firma in Adresse 2025-04-16 17:34:48 +02:00
Jens Cornelsen
fa195a79f5 Firma Benutzer in Adresse 2025-04-16 17:28:14 +02:00
Jens Cornelsen
f6a367c567 Adresse DB Rückgängig 2025-04-16 17:18:02 +02:00
Jens Cornelsen
bf6d8f47e7 Kühlung repariert VWBWTKEN9TR 2025-04-16 11:12:47 +02:00
Jens Cornelsen
02761610d1 Korrektur Kreuz 2025-04-15 20:37:14 +02:00
Jens Cornelsen
bf3107d3b7 Kühlungszuschlag 2025-04-15 18:24:28 +02:00
Jens Cornelsen
66e596bb57 Nochmal Zuschlag Kühlung 2025-04-15 18:12:22 +02:00
Jens Cornelsen
cdfdb6c001 PDF gefixt !! 2025-04-15 17:49:58 +02:00
Jens Cornelsen
c583229cc8 PDF Anzeige 2025-04-15 17:39:52 +02:00
Jens Cornelsen
417009fd6e PDF Verbrauchsausweis Anzeige gefixt 2025-04-15 17:08:34 +02:00
Jens Cornelsen
d3ffbca858 . 2025-04-15 17:01:22 +02:00
Jens Cornelsen
db4fc19c1a . 2025-04-15 16:57:40 +02:00
Jens Cornelsen
eefae0635a . 2025-04-15 16:49:55 +02:00
Jens Cornelsen
1d7c12ec60 . 2025-04-15 16:46:43 +02:00
Jens Cornelsen
4d7f94e292 . 2025-04-15 16:34:39 +02:00
Jens Cornelsen
e13810b16a . 2025-04-15 16:25:37 +02:00
Jens Cornelsen
d4be779cf1 . 2025-04-15 16:17:45 +02:00
Jens Cornelsen
3912262f4b fix pdf Verbrauchsausweis gewerbe 2025-04-15 16:05:24 +02:00
Jens Cornelsen
ed753b71c1 . 2025-04-15 15:47:37 +02:00
Jens Cornelsen
5b78e8b075 x statt haken 2025-04-15 15:41:01 +02:00
Jens Cornelsen
71dd1de503 test 2025-04-15 15:30:09 +02:00
Jens Cornelsen
2a95f7750a . 2025-04-15 15:26:13 +02:00
Jens Cornelsen
6d3dcb503a unicode 2025-04-15 15:21:38 +02:00
Jens Cornelsen
57c6bbd96c . 2025-04-15 15:18:08 +02:00
Jens Cornelsen
3f18ad9c59 . 2025-04-15 15:12:50 +02:00
Jens Cornelsen
c09cdcc788 . 2025-04-15 15:06:56 +02:00
Jens Cornelsen
473ff8d774 haken alternative 2025-04-15 14:58:17 +02:00
Jens Cornelsen
4ec3f42a8b . 2025-04-15 14:55:07 +02:00
Jens Cornelsen
36a4d7415c . 2025-04-15 14:37:26 +02:00
Jens Cornelsen
df81964b86 Elemente pdf 2025-04-15 14:24:46 +02:00
Carl Mahnke
7130b6ba65 Verbrauchsausweis Gewerbe ausstellen 2025-04-15 13:36:19 +02:00
Jens Cornelsen
bfa79fb06e Anzeige Elemente PDF - fix 2025-04-15 13:05:44 +02:00
Jens Cornelsen
52e2459d47 Bereiche wieder aktiviert 2025-04-14 17:45:57 +02:00
Jens Cornelsen
5081f70570 Höhe Dashboard full 2025-04-14 17:10:41 +02:00
Jens Cornelsen
f4e6b7baf8 dashboard layout 2025-04-14 17:07:55 +02:00
Jens Cornelsen
e55388e4b7 . 2025-04-14 17:06:50 +02:00
Jens Cornelsen
f14c376791 Pfad gefixr 2025-04-14 16:54:20 +02:00
Jens Cornelsen
071fd8c7be Höhe full 2025-04-14 16:51:00 +02:00
Jens Cornelsen
2bb2bd74db Nutzfläche gerundet 2025-04-14 11:41:36 +02:00
Jens Cornelsen
9d9fdebf3a . 2025-04-14 11:29:30 +02:00
Jens Cornelsen
0d9675fb35 . 2025-04-14 11:21:18 +02:00
Jens Cornelsen
7b5b272c17 . 2025-04-14 11:00:02 +02:00
Jens Cornelsen
a7427c3462 . 2025-04-14 10:45:58 +02:00
Jens Cornelsen
2b8ebcf182 . 2025-04-14 10:41:31 +02:00
Jens Cornelsen
eb72b600b4 . 2025-04-14 10:38:10 +02:00
Jens Cornelsen
606b851661 . 2025-04-14 10:26:23 +02:00
Jens Cornelsen
15f94c7752 Kühlungszuschlag bei Kühlung vorhanden 2025-04-14 10:21:18 +02:00
Jens Cornelsen
04dbd4adcd . 2025-04-14 00:50:08 +02:00
Jens Cornelsen
853fe54e3b Kundenprüfung Anteil WW 2025-04-14 00:37:16 +02:00
Jens Cornelsen
e2490f2296 . 2025-04-14 00:16:50 +02:00
Jens Cornelsen
cbddcf0968 Anzeige Nutzfläche gefixt 2025-04-14 00:01:42 +02:00
Jens Cornelsen
8b1e5df851 kuehlung fix 2025-04-13 23:07:36 +02:00
Jens Cornelsen
29d8e5e7b3 . 2025-04-13 21:53:59 +02:00
Jens Cornelsen
e86328b0c2 VG . 2025-04-13 20:07:50 +02:00
Jens Cornelsen
b8d37d4e38 bestellt bei BW auf false wenn keine Rechnung und user nicht 2025-04-13 19:55:32 +02:00
Jens Cornelsen
fd93f3fd54 . 2025-04-13 15:48:37 +02:00
Jens Cornelsen
9035de79ce . 2025-04-13 15:42:09 +02:00
Jens Cornelsen
2304de45b1 . 2025-04-13 13:53:22 +02:00
Jens Cornelsen
f1007d325f . 2025-04-13 13:37:29 +02:00
Jens Cornelsen
44679dbef0 . 2025-04-13 13:33:40 +02:00
Jens Cornelsen
682c97b3e7 . 2025-04-13 13:29:30 +02:00
Jens Cornelsen
b65c3eeeaa . 2025-04-13 13:24:27 +02:00
Jens Cornelsen
883c019293 . 2025-04-13 13:22:11 +02:00
Jens Cornelsen
50c2e3a6ce . 2025-04-13 13:14:35 +02:00
Jens Cornelsen
b7082e2318 Korrektur reset 2025-04-13 13:01:20 +02:00
Jens Cornelsen
f30b1cbd09 Besteller hinzugefügt 2025-04-13 11:57:45 +02:00
Jens Cornelsen
8936479c78 . 2025-04-13 02:32:15 +02:00
Jens Cornelsen
f02b30c6b5 . 2025-04-13 02:25:57 +02:00
Jens Cornelsen
fd34f6bcf7 . 2025-04-13 02:08:54 +02:00
Jens Cornelsen
e9eb113c33 . 2025-04-13 01:56:12 +02:00
Jens Cornelsen
1caee4e19e . 2025-04-13 01:22:35 +02:00
Jens Cornelsen
e18188d2a8 . 2025-04-13 01:10:50 +02:00
Jens Cornelsen
682cf056b6 . 2025-04-13 01:02:58 +02:00
Jens Cornelsen
5d11889fb2 Dashboard 2025-04-13 00:57:59 +02:00
Jens Cornelsen
566780b5e2 . 2025-04-13 00:49:12 +02:00
Jens Cornelsen
2d025b9fde . 2025-04-13 00:35:11 +02:00
Jens Cornelsen
64e97b6593 . 2025-04-13 00:23:05 +02:00
Jens Cornelsen
a05daedc54 . 2025-04-13 00:06:49 +02:00
Jens Cornelsen
e5756abb4d . 2025-04-12 23:48:20 +02:00
Jens Cornelsen
bfd30ace70 . 2025-04-12 23:37:27 +02:00
Jens Cornelsen
5858bff825 Dashboard 2025-04-12 23:26:19 +02:00
Jens Cornelsen
99c1a127b4 . 2025-04-12 23:04:09 +02:00
Jens Cornelsen
70af2e2d07 . 2025-04-12 22:35:55 +02:00
Jens Cornelsen
7db145af7c Dashboard 2025-04-12 22:24:11 +02:00
Jens Cornelsen
dfe13dd6bd . 2025-04-12 21:27:03 +02:00
Jens Cornelsen
33596e4b61 . 2025-04-12 21:21:26 +02:00
Jens Cornelsen
ca9c1b025a . 2025-04-12 21:14:22 +02:00
Jens Cornelsen
ca5102cd77 Dashboard 2025-04-12 21:01:02 +02:00
Jens Cornelsen
cfe160f34d . 2025-04-12 20:34:12 +02:00
Jens Cornelsen
d0a7033bf4 . 2025-04-12 20:29:52 +02:00
Jens Cornelsen
415291b083 . 2025-04-12 20:17:13 +02:00
Jens Cornelsen
4208c3ecc5 . 2025-04-12 20:09:32 +02:00
Jens Cornelsen
76dbe27c5d . 2025-04-12 20:00:59 +02:00
Jens Cornelsen
cfbf1dd69b . 2025-04-12 19:52:18 +02:00
Jens Cornelsen
313b6e328e . 2025-04-12 19:51:01 +02:00
Jens Cornelsen
22532f3783 . 2025-04-12 19:50:13 +02:00
Jens Cornelsen
3ced32b235 . 2025-04-12 19:46:08 +02:00
Jens Cornelsen
300b1d5ea3 . 2025-04-12 19:31:19 +02:00
Jens Cornelsen
40df8c7104 Dashboard 2025-04-12 19:22:19 +02:00
Carl Mahnke
83727ac71d Migrationsskripte Verbrauchsausweis Wohnen + Gewerbe 2025-04-12 18:13:40 +02:00
Carl Mahnke
f31d710b20 Migrationsskript Bedarfsausweis Wohnen Ohne Limit 2025-04-12 17:36:31 +02:00
Carl Mahnke
6da7c0e501 Migrationsskript Bedarfsausweis Wohnen Limit 10 2025-04-12 17:27:51 +02:00
Carl Mahnke
f7b6a50482 Migrationsskript Bedarfsausweis Wohnen Test 2025-04-12 17:14:02 +02:00
Carl Mahnke
48f72a2f0f Migrations Skripte 2025-04-12 16:40:21 +02:00
Jens Cornelsen
43d2c114f4 Merge pull request #511 from IBCornelsen/main
update dev
2025-04-12 13:40:34 +02:00
Jens Cornelsen
aa84dd967e . 2025-04-11 21:07:52 +02:00
Jens Cornelsen
c413f76fe2 . 2025-04-11 20:58:52 +02:00
Jens Cornelsen
7762310bf3 . 2025-04-11 20:48:12 +02:00
Jens Cornelsen
7dd3a6c60d . 2025-04-11 20:29:22 +02:00
Jens Cornelsen
80a6992f5b . 2025-04-11 20:03:22 +02:00
Jens Cornelsen
4b651b733b . 2025-04-11 19:37:34 +02:00
Jens Cornelsen
c269306d9d . 2025-04-11 19:31:51 +02:00
Jens Cornelsen
cf0f0bdee0 . 2025-04-11 19:19:22 +02:00
Jens Cornelsen
d4e2d50e00 Skala und Rchnung 2025-04-11 18:58:11 +02:00
Jens Cornelsen
e303c44822 PDF Name auf Energieausweis geändert 2025-04-11 17:33:40 +02:00
Jens Cornelsen
3eb30d2248 Auto stash before rebase of "main" onto "origin/main" 2025-04-11 17:10:52 +02:00
Carl Mahnke
9b6b30ae30 Kuehlung gefixt 2025-04-11 15:06:28 +02:00
Moritz Utcke
9d9e6f7786 Merge branch 'dev' 2025-04-10 00:34:03 -04:00
Moritz Utcke
98f32ca279 Ausstellen 2025-04-10 00:33:54 -04:00
Moritz Utcke
ab7e5bc6d6 Merge branch 'dev' 2025-04-09 22:17:11 -04:00
Moritz Utcke
636c5463b2 Ausstellen 2025-04-09 22:17:00 -04:00
Moritz Utcke
85c0216e9d Merge branch 'dev' 2025-04-09 21:45:33 -04:00
Moritz Utcke
5e2861546f Ausstellen Error 2025-04-09 21:45:04 -04:00
Moritz Utcke
c1fc08ecba Merge branch 'dev' 2025-04-09 21:35:43 -04:00
Moritz Utcke
458a6ab254 Ausstellen 2025-04-09 21:35:24 -04:00
Moritz Utcke
1259f642e1 Merge pull request #508 from IBCornelsen/revert-507-revert-506-dev
Revert "Revert "Bugfixes""
2025-04-09 20:16:35 -04:00
Moritz Utcke
3cb71b8e2c Revert "Revert "Bugfixes"" 2025-04-09 20:13:52 -04:00
Moritz Utcke
eb8bae6d69 Merge pull request #507 from IBCornelsen/revert-506-dev
Revert "Bugfixes"
2025-04-09 19:25:36 -04:00
Moritz Utcke
4f382c150d Revert "Bugfixes" 2025-04-09 19:25:21 -04:00
Moritz Utcke
53ea51885a Merge pull request #506 from IBCornelsen/dev
Bugfixes
2025-04-09 19:11:44 -04:00
Moritz Utcke
f5ae2cd0d4 Mollie 2025-04-09 13:54:39 -04:00
Moritz Utcke
8860750487 Mollie 2025-04-09 13:25:06 -04:00
Moritz Utcke
a58c8d466e Verbrauchsausweis Gewerbe 2025-04-09 13:10:11 -04:00
Moritz Utcke
8daee69576 Bugfixes 2025-04-09 11:46:27 -04:00
Moritz Utcke
7665141a5a Formular Button 2025-04-09 09:18:11 -04:00
Moritz Utcke
7327d39c57 Ausweis ID im Ausweis 2025-04-09 09:06:43 -04:00
Moritz Utcke
9177ca18f0 Merge pull request #505 from IBCornelsen/dev
Updates und Verbesserungen
2025-04-08 19:59:34 -04:00
Moritz Utcke
0956744878 Ausstellen 2025-04-08 19:34:51 -04:00
Moritz Utcke
b0235056a7 Adresse 2025-04-08 18:50:27 -04:00
Moritz Utcke
d354189d3c Ausweis, Ausstellung, Adresse 2025-04-08 18:49:29 -04:00
Moritz Utcke
07760aa26a Bugfix Process not defined 2025-04-08 15:13:17 -04:00
Moritz Utcke
13322836aa Recover DB 2025-04-08 13:53:32 -04:00
Moritz Utcke
d8acd0476a Actions 2025-04-08 13:06:42 -04:00
Moritz Utcke
a2e0d50b1f Update .gitignore 2025-04-08 10:23:14 -04:00
Moritz Utcke
176f1c08ad Klimafaktoren 2025-04-07 23:55:42 -04:00
Moritz Utcke
1970a105a9 Webhook 2025-04-07 21:41:27 -04:00
Moritz Utcke
71438a39eb Ausstellen 2025-04-07 21:31:47 -04:00
Moritz Utcke
ba7792a4b9 Ausstellen 2025-04-07 21:27:38 -04:00
Moritz Utcke
145bf46ee1 Partner Code 2025-04-07 20:36:47 -04:00
Moritz Utcke
ecdce5b279 Suche 2025-04-07 18:46:28 -04:00
Moritz Utcke
c0d4ede483 Daten Umziehen 2025-04-07 18:45:33 -04:00
Moritz Utcke
3fa207ea9c Merge remote-tracking branch 'origin/main' 2025-04-07 18:38:21 -04:00
Moritz Utcke
2a302a4b59 astro-typesafe-api-caller entfernt 2025-04-07 18:37:39 -04:00
Moritz Utcke
42e0907bb9 Merge pull request #504 from IBCornelsen/Jens
Preise Bedarfsausweis
2025-04-07 18:37:30 -04:00
Moritz Utcke
a20aa88096 Merge branch 'main' into Jens 2025-04-07 18:37:23 -04:00
Jens Cornelsen
aef820f448 WIP on main 2025-04-08 00:33:17 +02:00
Moritz Utcke
f487b25aa1 UUID Match 2025-04-07 18:29:30 -04:00
Moritz Utcke
babd929f6a Passwort Zurücksetzen 2025-04-07 18:12:51 -04:00
Moritz Utcke
1d27e2bd67 DB Schema 2025-04-07 16:12:02 -04:00
Moritz Utcke
2abb143cfe Datenbank und ID Generierung 2025-04-07 15:33:30 -04:00
Jens Cornelsen
5289273fc2 Popup 2025-04-07 11:06:17 +02:00
Moritz Utcke
32d8e2383e ID Verbrauchsausweis 2025-04-07 04:27:12 -04:00
Moritz Utcke
f9538e770a Abweichung 2025-04-07 04:19:35 -04:00
Moritz Utcke
05b2711f7f Merge remote-tracking branch 'origin/main' 2025-04-07 04:12:36 -04:00
Moritz Utcke
703f06c7a7 Kundendaten Box 2025-04-07 04:12:22 -04:00
Moritz Utcke
6d8dcb1b0e Live 2025-04-07 03:16:04 -04:00
Jens Cornelsen
1e883866ed Merge pull request #502 from IBCornelsen/Jens
Merge pull request #501 from IBCornelsen/main
2025-04-07 09:04:56 +02:00
Moritz Utcke
17f2983c3a Merge pull request #501 from IBCornelsen/main
get main
2025-04-07 04:02:58 -03:00
Moritz Utcke
607dfed53f Merge branch 'Jens' into main 2025-04-07 04:02:51 -03:00
Moritz Utcke
0f20fc1184 Rechnung Import 2025-04-07 02:56:28 -04:00
Jens Cornelsen
a8202ff10d Produktübersichten final 2025-04-07 08:53:49 +02:00
Moritz Utcke
e06c8273e8 Datenbank und Ausweise 2025-04-07 02:14:26 -04:00
Jens Cornelsen
63fda2ce72 Merge pull request #500 from IBCornelsen/main
get main
2025-04-07 07:20:08 +02:00
Moritz Utcke
7d3b0396c7 Merge remote-tracking branch 'origin/main' 2025-04-07 00:47:53 -04:00
Moritz Utcke
21c47a5310 Bedarfsausweis Wohnen 2025-04-07 00:47:31 -04:00
Jens Cornelsen
2086ac3d9c Merge pull request #499 from IBCornelsen/Jens
Preise hinzugefügt
2025-04-07 06:46:47 +02:00
Jens Cornelsen
c3ffc0446a Merge pull request #498 from IBCornelsen/main
get main
2025-04-07 06:40:09 +02:00
Jens Cornelsen
33411d8473 . 2025-04-07 06:39:07 +02:00
Jens Cornelsen
528d4a33eb Preise XL angepasst 2025-04-07 06:34:00 +02:00
Moritz Utcke
1332b8e798 Merge remote-tracking branch 'origin/main' 2025-04-06 23:22:02 -04:00
Moritz Utcke
f1bb2fc55c Datenbank und Checkliste 2025-04-06 23:21:55 -04:00
Jens Cornelsen
ef7e0a1df9 Merge pull request #497 from IBCornelsen/Jens
.
2025-04-07 04:14:16 +02:00
Jens Cornelsen
e8083462e2 Merge pull request #496 from IBCornelsen/main
get main
2025-04-07 04:11:57 +02:00
Jens Cornelsen
86f8a9fba7 Ohne Makler 2025-04-07 04:05:00 +02:00
Moritz Utcke
b7f9649036 Datenbank Popup 2025-04-06 18:54:46 -04:00
Jens Cornelsen
3acf581775 Merge pull request #495 from IBCornelsen/Jens
Info Popup
2025-04-07 00:33:31 +02:00
Jens Cornelsen
18227c7beb Merge pull request #494 from IBCornelsen/main
.
2025-04-07 00:31:23 +02:00
Jens Cornelsen
0811e2dd16 . 2025-04-07 00:25:51 +02:00
Jens Cornelsen
f305d2f6eb . 2025-04-07 00:14:29 +02:00
Jens Cornelsen
c2ea0bcd37 Info Popup 2025-04-07 00:07:58 +02:00
Moritz Utcke
6b0b88e9ac Fix 2025-04-06 15:56:21 -04:00
Moritz Utcke
221e94a8d7 Auto stash before merge of "main" and "origin/main" 2025-04-06 15:54:51 -04:00
Jens Cornelsen
371b8422ce Merge pull request #493 from IBCornelsen/Jens
PDF Icons und Bestätigungsbox Kunden
2025-04-06 21:24:40 +02:00
Jens Cornelsen
4b43aa3e8f Auto stash before rebase of "Jens" onto "origin/Jens" 2025-04-06 21:21:45 +02:00
Jens Cornelsen
d72a93fbff Merge pull request #492 from IBCornelsen/main
get main
2025-04-06 21:09:44 +02:00
Moritz Utcke
ba51f36a8e GEG 2025-04-06 14:45:33 -04:00
Moritz Utcke
1fa3faff52 Bezeichnung 2025-04-06 14:00:29 -04:00
Moritz Utcke
820da9a235 Kreuz icon 2025-04-06 13:55:57 -04:00
Moritz Utcke
91485aa009 Ausweistyp mitgeben 2025-04-06 13:52:55 -04:00
Moritz Utcke
c8c6238583 Speichern, laden, bearbeiten 2025-04-06 13:50:45 -04:00
Moritz Utcke
624fd3c045 Bedarfsausweis Gewerbe 2025-04-06 13:27:08 -04:00
Moritz Utcke
7b0fdbf5f8 Bugfixes 2025-04-06 12:57:20 -04:00
Jens Cornelsen
1f4e2eb4ce Merge pull request #491 from IBCornelsen/main
get main
2025-04-06 18:31:20 +02:00
Moritz Utcke
0b89320007 Speichern verbessert 2025-04-06 10:42:36 -04:00
Moritz Utcke
074ee8b463 Bugfixes 2025-04-05 22:35:08 -03:00
Jens Cornelsen
55ff99a4ca Merge pull request #490 from IBCornelsen/main
get main
2025-04-06 00:42:28 +02:00
Jens Cornelsen
009e1a8cad Bestätigungsbox vor Bestellung 2025-04-06 00:35:52 +02:00
Moritz Utcke
6c108f0455 Merge remote-tracking branch 'origin/main' 2025-04-05 13:07:50 -03:00
Moritz Utcke
09cd167a70 Unterlagen und weitere Fehler 2025-04-05 13:06:50 -03:00
Jens Cornelsen
4239bc7917 Merge pull request #489 from IBCornelsen/Jens
Impressum. Datenschutz und AGB hinzugefügt
2025-04-05 15:43:35 +02:00
Jens Cornelsen
77665af171 Impressum. Datenschutz und AGB hinzugefügt 2025-04-05 15:38:37 +02:00
Jens Cornelsen
2a51b96b24 Merge pull request #488 from IBCornelsen/Jens
Profil Platzhalter
2025-04-05 14:12:22 +02:00
Jens Cornelsen
559dfe38e6 Profil Platzhalter 2025-04-05 14:10:03 +02:00
Jens Cornelsen
2dadfebccf Merge pull request #487 from IBCornelsen/Jens
Dashboard angepasst
2025-04-05 13:30:27 +02:00
Jens Cornelsen
0bc4fd6670 Dashboard angepasst 2025-04-05 13:27:05 +02:00
Jens Cornelsen
516e854616 Merge pull request #486 from IBCornelsen/Jens
Text Partner
2025-04-04 12:31:27 +02:00
Jens Cornelsen
912970923f Text Partner 2025-04-04 12:28:28 +02:00
Jens Cornelsen
4e5ee5174f Merge pull request #485 from IBCornelsen/main
get main
2025-04-04 11:21:30 +02:00
Jens Cornelsen
51e9a5c97c . 2025-04-04 09:26:36 +02:00
Jens Cornelsen
09c4f5b06e . 2025-04-04 09:23:03 +02:00
Jens Cornelsen
aff26d7e16 Abstand zum Footer 2025-04-04 09:19:15 +02:00
Jens Cornelsen
49920caecc Merge pull request #484 from IBCornelsen/main
get main
2025-04-04 09:07:30 +02:00
UMBENOMENA
5f9c010d09 Merge pull request #483 from IBCornelsen/UMBE
.
2025-04-03 22:44:40 +02:00
Robert Jagtiani
edce3ca5a3 . 2025-04-03 22:44:05 +02:00
UMBENOMENA
d0c4b32a2c Merge pull request #482 from IBCornelsen/UMBE
.
2025-04-03 22:35:27 +02:00
Robert Jagtiani
3acd5c5170 . 2025-04-03 22:29:46 +02:00
UMBENOMENA
79e8c9e19a Merge pull request #481 from IBCornelsen/UMBE
.
2025-04-03 21:55:20 +02:00
Robert Jagtiani
cc2a92a2a5 . 2025-04-03 21:51:10 +02:00
UMBENOMENA
f0e1126dbb Merge pull request #480 from IBCornelsen/UMBE
.
2025-04-03 21:34:06 +02:00
Robert Jagtiani
8804346424 . 2025-04-03 21:33:09 +02:00
Robert Jagtiani
a194e8a17e . 2025-04-03 21:09:22 +02:00
UMBENOMENA
f0dbb2a1af Merge pull request #479 from IBCornelsen/UMBE
.
2025-04-03 15:16:03 +02:00
Robert Jagtiani
6fb22d2ee0 . 2025-04-03 15:15:36 +02:00
Robert Jagtiani
78523171e9 Auto stash before checking out "origin/main"
.
2025-04-02 18:48:52 +02:00
Robert Jagtiani
cfdfef039e fonts 2025-04-02 16:01:01 +02:00
Robert Jagtiani
fecbf8948b . 2025-04-02 15:06:43 +02:00
Robert Jagtiani
40d33532c8 . 2025-04-02 14:45:19 +02:00
UMBENOMENA
69d40eb52b Merge pull request #472 from IBCornelsen/main
getMain
2025-04-02 14:41:38 +02:00
UMBENOMENA
4c79e8cb67 Merge pull request #471 from IBCornelsen/UMBE
.
2025-04-02 14:38:13 +02:00
UMBENOMENA
3fa4ede71f Merge branch 'main' into UMBE 2025-04-02 14:37:42 +02:00
Robert Jagtiani
15b818acdb . 2025-04-02 14:33:36 +02:00
Jens Cornelsen
fa4c4d16d0 Merge pull request #470 from IBCornelsen/main
get main
2025-04-02 12:02:52 +02:00
Moritz Utcke
5997037328 Mime 2025-04-01 14:55:32 -03:00
Moritz Utcke
29c63a585d Success 2025-04-01 14:13:13 -03:00
Moritz Utcke
71f5093a49 Tests 2025-04-01 13:49:47 -03:00
Moritz Utcke
be94bd482c Datenblatt und Verbrauchsausweis verbessert 2025-04-01 09:43:43 -03:00
Moritz Utcke
14e1d89024 Bilder fix Datenblatt 2025-04-01 09:35:15 -03:00
Moritz Utcke
c8b41458e1 Felder angepasst und Tests 2025-03-30 20:18:30 -03:00
Moritz Utcke
e2e576e4fe Auto stash before merge of "main" and "origin/main" 2025-03-30 17:05:32 -03:00
Jens Cornelsen
2f35b8c403 Merge pull request #469 from IBCornelsen/Jens
18599 Berechnungsfunktionen überarbeitet
2025-03-30 17:59:56 +02:00
Jens Cornelsen
5ea258705c 18599 Berechnungsfunktionen überarbeitet 2025-03-30 17:54:38 +02:00
Jens Cornelsen
f4dbe590df Merge pull request #468 from IBCornelsen/Jens
.
2025-03-29 14:01:50 +01:00
Jens Cornelsen
f4bbc979f9 . 2025-03-29 13:59:57 +01:00
Jens Cornelsen
8175b97073 Merge pull request #467 from IBCornelsen/Jens
Produktübersichten
2025-03-29 13:30:47 +01:00
Jens Cornelsen
085cf9783b Produktübersichten
Links der Produktarten in den Produktübersichten für Verbrauchsausweis Gewerbe, arfsausweis Wohnen, und Bedarfsausweis Gewerbe hinzugefügt
2025-03-29 13:28:01 +01:00
Jens Cornelsen
f80b04ee77 Merge pull request #466 from IBCornelsen/main
get Main
2025-03-29 12:07:12 +01:00
UMBENOMENA
e1a83aed77 Merge pull request #465 from IBCornelsen/main
getMain
2025-03-26 15:33:20 +01:00
Moritz Utcke
9acf9e1e50 Tests 2025-03-25 22:42:28 -03:00
Moritz Utcke
75ade8ebaa Verbesserungen im Prozess 2025-03-25 19:15:16 -03:00
Moritz Utcke
0117f94c07 ID 2025-03-25 14:37:33 -03:00
Moritz Utcke
00772317e7 ID statt UID 2025-03-25 14:34:19 -03:00
Moritz Utcke
efc1e8329a Backend URL 2025-03-25 14:13:33 -03:00
Moritz Utcke
fc9fca0ee6 backend URL 2025-03-25 14:04:41 -03:00
Moritz Utcke
5d66eb10ca Highlight und neue ID 2025-03-25 14:01:13 -03:00
Moritz Utcke
84a3a2dd39 Ausweistyp 2025-03-24 16:39:39 -03:00
Moritz Utcke
a9c2b5c173 Ausweistyp Kundendaten 2025-03-24 16:15:10 -03:00
Jens Cornelsen
1678ac64b8 Merge pull request #464 from IBCornelsen/main
get main
2025-03-24 10:12:55 +01:00
Moritz Utcke
83b618b59d ID Suchen 2025-03-23 19:21:14 -03:00
Moritz Utcke
302ae192ac ID auf Datenblatt 2025-03-23 19:07:57 -03:00
Moritz Utcke
3af32c0153 Preise anpassen 2025-03-23 17:38:07 -03:00
Moritz Utcke
9f64f8a3c2 Ausweistyp 2025-03-23 16:25:40 -03:00
Moritz Utcke
048c1fc4d4 Progressbar 2025-03-23 16:25:09 -03:00
Moritz Utcke
6f00b66013 Workflow 2025-03-23 14:51:39 -03:00
Moritz Utcke
d42209c3a0 Workflow 2025-03-23 14:42:05 -03:00
UMBENOMENA
7ce6e1d7a0 Merge pull request #463 from IBCornelsen/UMBE
.
2025-03-21 13:01:35 +01:00
Robert Jagtiani
666b94bfad . 2025-03-21 13:01:10 +01:00
UMBENOMENA
a597947e80 Merge pull request #462 from IBCornelsen/UMBE
Ausweise, kleine Änderungen TRELLO
2025-03-20 19:02:39 +01:00
Robert Jagtiani
51a8cc576b Ausweise, kleine Änderungen TRELLO 2025-03-20 18:59:56 +01:00
UMBENOMENA
9901688668 Merge pull request #461 from IBCornelsen/main
getMain
2025-03-20 17:05:05 +01:00
Moritz Utcke
c39efcdbf0 Github 2025-03-20 11:12:33 -03:00
Moritz Utcke
01cd027e09 Github 2025-03-20 11:10:17 -03:00
Moritz Utcke
e3f7214af2 Github 2025-03-20 11:06:41 -03:00
Moritz Utcke
f77a013767 Nothing 2025-03-20 11:03:38 -03:00
Moritz Utcke
8b3e6b80c4 Bedarfsausweis Wohnen 2025-03-20 09:12:37 -03:00
Moritz Utcke
9706a839d6 Kundendaten 2025-03-19 23:39:48 -03:00
Moritz Utcke
d38bd8a6ad Makefile don't destroy database 2025-03-19 21:27:01 -03:00
Moritz Utcke
9e7f1da680 Makefile 2025-03-19 21:06:59 -03:00
Moritz Utcke
499cbfb47d Merge remote-tracking branch 'origin/main' 2025-03-19 21:06:44 -03:00
Moritz Utcke
7c7e76ca82 Makefile 2025-03-19 21:06:35 -03:00
Moritz Utcke
a57c97f59d Makefile 2025-03-19 21:04:58 -03:00
Moritz Utcke
91872ee3d3 client:only 2025-03-19 20:56:57 -03:00
Moritz Utcke
5cf9892da0 ID 2025-03-19 20:46:11 -03:00
Moritz Utcke
2db7508859 Filtern nach ID 2025-03-19 20:43:47 -03:00
Moritz Utcke
06eb1dff34 Alte Ausweis ID 2025-03-19 18:54:22 -03:00
Moritz Utcke
bba1fc0b47 Admin Tools 2025-03-19 18:39:41 -03:00
Moritz Utcke
113f40ebb1 int id 2025-03-19 13:17:48 -03:00
Moritz Utcke
147b1ff44f Alte Ausweis Id 2025-03-19 13:15:40 -03:00
Moritz Utcke
dee9afcda4 Straße in Imports 2025-03-19 13:07:02 -03:00
Moritz Utcke
bf5cc87510 Makefile 2025-03-19 13:02:23 -03:00
Moritz Utcke
fb6b88c499 Merge branch 'main' of https://github.com/IBCornelsen/online-energieausweis into main 2025-03-19 16:01:20 +00:00
Moritz Utcke
b1d5cde032 Klimafaktoren 2025-03-19 16:00:59 +00:00
Moritz Utcke
cb7b1f0c41 Klimafaktoren gefixt 2025-03-19 12:59:46 -03:00
Moritz Utcke
6c0ab35f91 Studio in Prod 2025-03-19 12:42:41 -03:00
Moritz Utcke
219ffc7fbb Klimfaktoren 2025-03-19 12:31:37 -03:00
Moritz Utcke
973fd76d1a Bildupload fix 2025-03-19 12:21:06 -03:00
Moritz Utcke
915898c26f Bilder speichern nach ausweis gespeichert fix 2025-03-19 11:30:09 -03:00
Moritz Utcke
8277eb100c PDF Datenblatt Bilder 2025-03-19 11:20:37 -03:00
Moritz Utcke
aea651c7f7 S3 Fix 2025-03-19 11:12:53 -03:00
Moritz Utcke
959fcd7f3b Resolve build error 2025-03-19 10:44:04 -03:00
Moritz Utcke
8d73143932 S3 Object Storage 2025-03-18 18:25:24 -03:00
Moritz Utcke
e01de6f03e Dashboard 2025-03-17 21:17:06 -03:00
Moritz Utcke
27027c0f0e Merge remote-tracking branch 'origin/main' 2025-03-17 20:43:49 -03:00
Moritz Utcke
90522e1f81 Mal schauen 2025-03-17 20:43:44 -03:00
Jens Cornelsen
7ef726c7c2 Merge pull request #460 from IBCornelsen/Jens
.
2025-03-17 03:09:59 +01:00
Jens Cornelsen
ba459c2ef4 . 2025-03-17 03:05:06 +01:00
Jens Cornelsen
89256c8ab1 Merge pull request #459 from IBCornelsen/Jens
Bestätigungstext angepasst
2025-03-17 02:53:03 +01:00
Jens Cornelsen
34af0d655f Mail 2025-03-17 02:43:07 +01:00
Jens Cornelsen
1c282c0d9a Merge remote-tracking branch 'origin/main' into Jens 2025-03-17 02:39:37 +01:00
Jens Cornelsen
34a1f1015b Bestätigungstext angepasst 2025-03-17 02:36:21 +01:00
Moritz Utcke
661a75ee9c Bugfixes 2025-03-16 22:22:34 -03:00
Jens Cornelsen
afd9ef16df Merge pull request #457 from IBCornelsen/main
get main
2025-03-17 02:16:06 +01:00
Jens Cornelsen
48d94b08ad . 2025-03-17 02:14:34 +01:00
Moritz Utcke
310794a049 Ansichtsausweis 2025-03-16 18:01:28 -03:00
Moritz Utcke
cd7fce3b1b Fehler gefixt 2025-03-16 17:59:15 -03:00
Moritz Utcke
d47651b5a1 Verbrauchsausweis Gewerbe 2025-03-15 20:52:43 -03:00
Moritz Utcke
8e9dfc5153 Admin formular aufrufen 2025-03-15 20:51:37 -03:00
Moritz Utcke
de94e1ba6d Ausweis gespeichert 2025-03-15 20:05:48 -03:00
Jens Cornelsen
5b6c0c7d97 Merge pull request #456 from IBCornelsen/Jens
E-Mail Text Registrierung  und Speicherung
2025-03-15 22:29:38 +01:00
Jens Cornelsen
d9dfa18e28 E-Mail Text Registrierung und Speicherung 2025-03-15 22:27:06 +01:00
Jens Cornelsen
c66d7dd260 Merge pull request #455 from IBCornelsen/Jens
.
2025-03-15 21:55:31 +01:00
Jens Cornelsen
215640f57a . 2025-03-15 21:52:11 +01:00
Jens Cornelsen
539e7a6b36 . 2025-03-15 21:44:06 +01:00
Jens Cornelsen
5a1c02e6f5 Merge pull request #454 from IBCornelsen/Jens
.
2025-03-15 21:39:31 +01:00
Jens Cornelsen
45da8032de . 2025-03-15 21:36:40 +01:00
Jens Cornelsen
8703b3b633 Merge pull request #453 from IBCornelsen/Jens
Button bearbeiten bei Beratung und Offline hinzugefügt
2025-03-15 21:19:10 +01:00
Jens Cornelsen
69298f2c71 Button bearbeiten bei Beratung und Offline hinzugefügt 2025-03-15 21:16:56 +01:00
Jens Cornelsen
ab5f9d71d3 Merge pull request #452 from IBCornelsen/Jens
E-Mail Text Buttons dashboard
2025-03-15 21:05:48 +01:00
Jens Cornelsen
1cbb01c8e7 E-Mail Text Buttons dashboard 2025-03-15 20:57:24 +01:00
UMBENOMENA
2d3db305db Merge pull request #451 from IBCornelsen/main
getMain
2025-03-15 16:35:00 +01:00
Jens Cornelsen
50b53e8bba Merge pull request #450 from IBCornelsen/Jens
.
2025-03-14 01:28:38 +01:00
Jens Cornelsen
65ccda0ac0 . 2025-03-14 01:26:49 +01:00
Jens Cornelsen
c25928cd18 Merge pull request #449 from IBCornelsen/Jens
.
2025-03-14 00:52:44 +01:00
Jens Cornelsen
6a0ffe25f2 . 2025-03-14 00:50:07 +01:00
Jens Cornelsen
850b0bfff8 Merge pull request #448 from IBCornelsen/Jens
.
2025-03-14 00:31:16 +01:00
Jens Cornelsen
a4f1e10f0e . 2025-03-14 00:29:34 +01:00
Jens Cornelsen
6bcad2fecc Merge pull request #447 from IBCornelsen/Jens
.
2025-03-14 00:17:59 +01:00
Jens Cornelsen
93f22bfe5d . 2025-03-14 00:15:29 +01:00
Jens Cornelsen
3f2d62e125 Merge pull request #446 from IBCornelsen/Jens
Email
2025-03-14 00:04:58 +01:00
Jens Cornelsen
f85a61dcff Email 2025-03-14 00:02:13 +01:00
Jens Cornelsen
5388b4eb91 Merge pull request #445 from IBCornelsen/Jens
E-Mail Text
2025-03-13 22:50:35 +01:00
Jens Cornelsen
02f70e84fc Merge pull request #444 from IBCornelsen/main
get main
2025-03-13 22:46:52 +01:00
Jens Cornelsen
e0faf0bced . 2025-03-13 22:40:00 +01:00
Moritz Utcke
3a66e21ebd Merge remote-tracking branch 'origin/main' 2025-03-13 18:37:40 -03:00
Moritz Utcke
4ecbeab1da Verbrauchsausweis Wohnen Email 2025-03-13 18:37:27 -03:00
Jens Cornelsen
9c34ac833c Merge pull request #443 from IBCornelsen/Jens
Korrektur E-Mail Text
2025-03-13 22:26:22 +01:00
Jens Cornelsen
fc3f4b0e3e Korrektur E-Mail Text 2025-03-13 22:23:05 +01:00
Jens Cornelsen
64978b7e65 Merge pull request #442 from IBCornelsen/main
get main
2025-03-13 22:08:50 +01:00
Moritz Utcke
4378f25642 GEG Nachweis Wohnen Test 2025-03-13 17:23:54 -03:00
Moritz Utcke
9ad163a469 Dashboard Ausweistyp 2025-03-13 17:19:13 -03:00
Moritz Utcke
2a47b8f482 Email Betreff 2025-03-13 17:12:45 -03:00
Jens Cornelsen
5084346b28 Merge pull request #441 from IBCornelsen/main
get main
2025-03-13 17:08:06 +01:00
Moritz Utcke
2391629b36 ID ohne strich 2025-03-12 19:56:01 -03:00
Moritz Utcke
8964c9f533 Redirect 2025-03-12 18:20:23 -03:00
Moritz Utcke
2000e8b80e Merge remote-tracking branch 'origin/main' 2025-03-12 18:14:19 -03:00
Moritz Utcke
00015b30cd Bedarfsausweis gewerbe 2025-03-12 18:14:13 -03:00
Jens Cornelsen
b4af4ad667 Merge pull request #440 from IBCornelsen/Jens
.
2025-03-12 21:20:57 +01:00
Jens Cornelsen
6b255232c6 . 2025-03-12 21:18:34 +01:00
Jens Cornelsen
54b9ff8ce5 Merge pull request #439 from IBCornelsen/Jens
Merge pull request #438 from IBCornelsen/main
2025-03-12 21:10:26 +01:00
Jens Cornelsen
b7f4f9e8a4 Merge pull request #438 from IBCornelsen/main
get  main
2025-03-12 21:04:21 +01:00
Jens Cornelsen
f4647ebd53 Merge branch 'Jens' into main 2025-03-12 21:04:03 +01:00
Jens Cornelsen
ed4f5fdf37 E-Mail Text geg-anfordern 2025-03-12 20:58:23 +01:00
Moritz Utcke
5f5cdc5728 Merge remote-tracking branch 'origin/main' 2025-03-12 16:21:46 -03:00
Moritz Utcke
0b93b2d230 GEG Nachweis Gewerbe 2025-03-12 16:21:27 -03:00
UMBENOMENA
7f213930b1 Merge pull request #437 from IBCornelsen/UMBE
.
2025-03-12 19:36:17 +01:00
Robert Jagtiani
76240ce840 . 2025-03-12 19:34:19 +01:00
UMBENOMENA
011f4b37ba Merge pull request #436 from IBCornelsen/UMBE
.
2025-03-12 19:27:46 +01:00
Robert Jagtiani
691df89535 . 2025-03-12 19:25:32 +01:00
UMBENOMENA
bbb0fcaa8f Merge pull request #435 from IBCornelsen/UMBE
Verbrauchsausweis Gewerbe & Navigation
2025-03-12 18:32:38 +01:00
Robert Jagtiani
e741af6901 Verbrauchsausweis Gewerbe & Navigation 2025-03-12 18:32:02 +01:00
UMBENOMENA
68dd22e509 Merge pull request #434 from IBCornelsen/main
getMain
2025-03-12 17:45:50 +01:00
Jens Cornelsen
2a1e3568af Merge pull request #433 from IBCornelsen/main
get main
2025-03-12 17:35:23 +01:00
Moritz Utcke
cf68652880 Datenblatt 2025-03-11 19:35:34 -03:00
Moritz Utcke
b1d2a40534 Verbrauchsausweis Gewerbe 2025-03-11 18:54:03 -03:00
Moritz Utcke
c588f69b0c Dashboard Error 2025-03-11 16:42:48 -03:00
Moritz Utcke
8b489a94cc Bugfixes und Bezahlen 2025-03-11 09:15:22 -03:00
Moritz Utcke
9b50053007 Merge remote-tracking branch 'origin/main' 2025-03-10 20:12:02 -03:00
Moritz Utcke
4979a1d112 Fehler gefixt 2025-03-10 20:11:57 -03:00
UMBENOMENA
08a26cbc2d Merge pull request #432 from IBCornelsen/UMBE
widget immowelt
2025-03-10 01:13:08 +01:00
UMBENOMENA
51f6909aaf Merge pull request #431 from IBCornelsen/main
getMain
2025-03-10 01:11:41 +01:00
Robert Jagtiani
deb73f0e3c widget immowelt 2025-03-10 01:10:02 +01:00
Jens Cornelsen
c93a78066c Merge pull request #430 from IBCornelsen/main
get main
2025-03-09 21:37:55 +01:00
Moritz Utcke
e69362536e GEG Nachweis und Gebäudeliste 2025-03-09 07:35:59 -03:00
Moritz Utcke
a1e5945d73 Verbesserungen 2025-03-09 06:34:01 -03:00
Moritz Utcke
c3c7fd313f Verbrauchsausweis Gewerbe 2025-03-08 14:46:16 -03:00
Moritz Utcke
c4de916057 Email ID 2025-03-07 16:24:24 -03:00
Moritz Utcke
096f325292 Kundendaten Header 2025-03-07 15:49:05 -03:00
Moritz Utcke
0333f9315a PDF 2025-03-07 15:32:25 -03:00
Moritz Utcke
a5894a3285 Bilder 2025-03-07 14:58:59 -03:00
Moritz Utcke
d0e0f4aa27 Speichern 2025-03-07 14:47:09 -03:00
Jens Cornelsen
f174cf8428 Merge pull request #429 from IBCornelsen/Jens
Roten Rand entfernt
2025-03-07 15:50:11 +01:00
Jens Cornelsen
fc35f35f5f Roten Rand entfernt 2025-03-07 15:49:20 +01:00
Jens Cornelsen
ad53e45c15 Merge pull request #428 from IBCornelsen/Jens
Plausibilitätsprüfungen - Text angepasst
2025-03-07 15:43:34 +01:00
Jens Cornelsen
7b3166ad3a Merge pull request #427 from IBCornelsen/main
get main
2025-03-07 15:38:42 +01:00
Jens Cornelsen
0e07d9784e Plausibilitätsprüfungen - Text angepasst 2025-03-07 15:37:24 +01:00
UMBENOMENA
a1b6681eeb Merge pull request #426 from IBCornelsen/UMBE
.
2025-03-07 15:14:56 +01:00
Robert Jagtiani
ba96a54d2e . 2025-03-07 15:12:46 +01:00
UMBENOMENA
aa429d0a0d Merge pull request #425 from IBCornelsen/UMBE
.
2025-03-07 14:54:12 +01:00
Robert Jagtiani
a10c46d8cb . 2025-03-07 14:53:41 +01:00
UMBENOMENA
4a59c69f68 Merge pull request #424 from IBCornelsen/main
getMain
2025-03-07 14:35:05 +01:00
Moritz Utcke
d1ab64780b Rote Boxen und Email 2025-03-06 20:19:08 -03:00
Moritz Utcke
534b26080d Logout 2025-03-06 16:22:38 -03:00
Moritz Utcke
1c0a391c16 Logout 2025-03-06 15:49:10 -03:00
Jens Cornelsen
142a1e2988 Merge pull request #423 from IBCornelsen/main
get main
2025-03-06 18:45:54 +01:00
Jens Cornelsen
6214d2dd02 T63 - T65 fertiggestellt 2025-03-06 18:35:31 +01:00
Moritz Utcke
8b3c4b3b76 Speichern 2025-03-05 22:32:27 -03:00
Moritz Utcke
e867a74478 Kundendaten werden lokal gespeichert 2025-03-05 22:25:00 -03:00
Moritz Utcke
9b61b66890 Hilfe bestellen 2025-03-05 21:35:48 -03:00
Moritz Utcke
25da5c9bb0 Felder Prüfung 2025-03-05 21:33:16 -03:00
Moritz Utcke
9b33755cdd Updats 2025-03-05 13:11:39 -03:00
Jens Cornelsen
d7f57a4d04 Merge pull request #422 from IBCornelsen/Jens
T49, T52, T53, T54, T55, T56, T58, T59, T60, T61, T62, T63, T64 und T65 fertiggestellt
2025-03-02 23:13:47 +01:00
Jens Cornelsen
daf3307e2a T49, T52, T53, T54, T55, T56, T58, T59, T60, T61, T62, T63, T64 und T65 fertiggestellt 2025-03-02 23:09:58 +01:00
Jens Cornelsen
3becee4b4f Merge pull request #421 from IBCornelsen/Jens
Überarbeitung Produktübersichten
2025-02-27 19:43:55 +01:00
Jens Cornelsen
512dd0ecdf Überarbeitung Produktübersichten 2025-02-27 19:41:33 +01:00
Jens Cornelsen
b466794e16 Merge pull request #420 from IBCornelsen/main
get main
2025-02-27 19:12:02 +01:00
Jens Cornelsen
eed6d9b3bd Merge pull request #419 from IBCornelsen/Jens
.
2025-02-27 19:10:13 +01:00
Jens Cornelsen
6576609166 . 2025-02-27 19:07:49 +01:00
UMBENOMENA
15b5ff8ac4 Merge pull request #418 from IBCornelsen/UMBE
Bedarfsausweis Wohnen
2025-02-27 00:39:24 +01:00
Robert Jagtiani
14ac72f8d2 Bedarfsausweis Wohnen 2025-02-27 00:39:05 +01:00
UMBENOMENA
76b7ccf5ec Merge pull request #417 from IBCornelsen/UMBE
.
2025-02-27 00:19:04 +01:00
Robert Jagtiani
38079d6df4 . 2025-02-27 00:17:36 +01:00
UMBENOMENA
5d6962b283 Merge pull request #416 from IBCornelsen/UMBE
produktübersichten angepasst(trello)
2025-02-27 00:14:41 +01:00
Robert Jagtiani
a860b133c9 produktübersichten angepasst(trello) 2025-02-27 00:14:13 +01:00
UMBENOMENA
4bf250734a Merge pull request #415 from IBCornelsen/UMBE
Bedarfsausweis Wohnen
2025-02-27 00:13:25 +01:00
Robert Jagtiani
af26efe23a Bedarfsausweis Wohnen 2025-02-26 23:55:26 +01:00
Jens Cornelsen
5f35cf6f96 Merge pull request #414 from IBCornelsen/Jens
T47, T48, T49, T50 und T51 fertiggestellt
2025-02-26 23:24:07 +01:00
Jens Cornelsen
aea0732c42 T47, T48, T49, T50 und T51 fertiggestellt 2025-02-26 23:21:22 +01:00
UMBENOMENA
49b090ea52 Merge pull request #413 from IBCornelsen/main
getMain
2025-02-26 21:58:04 +01:00
Jens Cornelsen
7c987f6581 Merge pull request #412 from IBCornelsen/Jens
T45, 46 und 47 hinzugefügt
2025-02-26 16:13:52 +01:00
Jens Cornelsen
1b96822f0b Merge pull request #411 from IBCornelsen/main
get main
2025-02-26 16:08:54 +01:00
Jens Cornelsen
476ce29c57 T45, 46 und 47 hinzugefügt 2025-02-26 16:04:40 +01:00
UMBENOMENA
d0c693a0fe Merge pull request #410 from IBCornelsen/UMBE
Navigation Korrektur
2025-02-26 00:16:16 +01:00
Robert Jagtiani
096000d001 navigation Korrektur 2025-02-26 00:15:44 +01:00
UMBENOMENA
12a85136b3 Merge pull request #409 from IBCornelsen/main
getMain
2025-02-25 23:47:35 +01:00
UMBENOMENA
567ad2cc12 Merge pull request #408 from IBCornelsen/UMBE
.
2025-02-25 23:09:15 +01:00
Robert Jagtiani
0d4736f1f0 . 2025-02-25 23:07:20 +01:00
Jens Cornelsen
59e08e66fb Merge pull request #407 from IBCornelsen/Jens
Navigation verändert
2025-02-25 23:05:58 +01:00
Jens Cornelsen
3606fbd856 Navigation verändert 2025-02-25 22:23:39 +01:00
Jens Cornelsen
e3b1490493 Merge pull request #406 from IBCornelsen/Jens
Links angepasst, Produktbeschreibung überarbeitet
2025-02-25 15:07:37 +01:00
Jens Cornelsen
5d2a3b4c30 Links angepasst, Produktbeschreibung überarbeitet 2025-02-25 15:05:20 +01:00
Jens Cornelsen
41f8f9903e Merge pull request #405 from IBCornelsen/main
get main
2025-02-25 12:37:02 +01:00
UMBENOMENA
83690789ac Merge pull request #404 from IBCornelsen/UMBE
immowelt
2025-02-24 21:37:25 +01:00
Robert Jagtiani
bdc4f7bf0a immowelt 2025-02-24 21:36:58 +01:00
UMBENOMENA
6178dcd229 Merge pull request #403 from IBCornelsen/UMBE
immowelt
2025-02-24 20:07:39 +01:00
Robert Jagtiani
e9c4e3d0c3 immowelt 2025-02-24 20:03:38 +01:00
Jens Cornelsen
1852c1071b Merge pull request #402 from IBCornelsen/Jens
Nutzfläche im Ausweis PDF gefixt, Berechnung gefixt
2025-02-24 16:53:21 +01:00
Jens Cornelsen
bc1e84b4d2 Merge pull request #400 from IBCornelsen/main
get main
2025-02-24 16:26:27 +01:00
Jens Cornelsen
d591a8700e Fehler Nutzfläche im PDF korrigiert. Berechnungsfehler korrigiert 2025-02-24 16:23:08 +01:00
UMBENOMENA
8886a37630 Merge pull request #399 from IBCornelsen/UMBE
.
2025-02-24 01:38:01 +01:00
Robert Jagtiani
924d3e8513 . 2025-02-24 01:36:02 +01:00
UMBENOMENA
57a43f64d7 Merge pull request #398 from IBCornelsen/main
getMain
2025-02-24 01:14:33 +01:00
UMBENOMENA
1a9c57546f Merge pull request #395 from IBCornelsen/UMBE
.
2025-02-24 00:48:53 +01:00
Robert Jagtiani
f223373f4f . 2025-02-24 00:48:27 +01:00
Jens Cornelsen
2fac04a148 Merge pull request #397 from IBCornelsen/Jens
Inhaltsseiten, GEG und Links
2025-02-24 00:19:02 +01:00
Jens Cornelsen
f328a8262f Merge pull request #396 from IBCornelsen/main
get main
2025-02-24 00:15:13 +01:00
Jens Cornelsen
253b3d664f Inhalte, GEG und Links 2025-02-24 00:12:42 +01:00
Robert Jagtiani
1c29b57d08 . 2025-02-23 23:46:01 +01:00
UMBENOMENA
ad7abeba05 Merge pull request #394 from IBCornelsen/UMBE
widget
2025-02-23 17:06:52 +01:00
Robert Jagtiani
cc2b9bdbf1 widget 2025-02-23 17:03:46 +01:00
UMBENOMENA
dee753ddba Merge pull request #393 from IBCornelsen/UMBE
widget Korrekturen - firefox,bilder
2025-02-23 15:37:22 +01:00
Robert Jagtiani
af50e6ffad widget Korrekturen - firefox,bilder 2025-02-23 15:35:19 +01:00
UMBENOMENA
e825377ff1 Merge pull request #392 from IBCornelsen/UMBE
verbrauch
2025-02-23 14:11:16 +01:00
Robert Jagtiani
1484f54fe2 verbrauch 2025-02-23 14:09:23 +01:00
Moritz Utcke
80b88df992 Kleinere Fehler gefixt 2025-02-23 22:58:17 +11:00
Moritz Utcke
35db825e6a Auto stash before merge of "main" and "origin/main" 2025-02-23 22:29:22 +11:00
Jens Cornelsen
f4aeff329a Merge pull request #391 from IBCornelsen/main
get main
2025-02-23 10:41:10 +01:00
UMBENOMENA
d7acd67326 Merge pull request #390 from IBCornelsen/UMBE
anfragen, progressbar, firefox usw...
2025-02-23 10:07:09 +01:00
Robert Jagtiani
ee7b1e4471 anfragen, progressbar, firefox usw... 2025-02-23 10:05:14 +01:00
Jens Cornelsen
778d0435f3 Merge pull request #388 from IBCornelsen/Jens
Dashboard
2025-02-23 04:40:17 +01:00
Jens Cornelsen
74a6844981 Merge pull request #387 from IBCornelsen/main
get main
2025-02-23 04:36:32 +01:00
Jens Cornelsen
8f9f79a02d Dashboard 2025-02-23 04:35:02 +01:00
UMBENOMENA
4a81a08157 Merge pull request #386 from IBCornelsen/UMBE
responsive
2025-02-23 01:25:00 +01:00
Robert Jagtiani
1bfa3276d6 responsive 2025-02-23 01:23:08 +01:00
UMBENOMENA
afa97cbae9 Merge pull request #385 from IBCornelsen/main
getMain
2025-02-22 21:11:44 +01:00
Jens Cornelsen
85ba433452 Merge pull request #384 from IBCornelsen/Jens
.
2025-02-22 19:43:24 +01:00
Jens Cornelsen
f8f53d0ac9 . 2025-02-22 19:41:20 +01:00
Jens Cornelsen
e4888849b1 Merge pull request #383 from IBCornelsen/Jens
.
2025-02-22 19:27:33 +01:00
Jens Cornelsen
cdb8b500bc . 2025-02-22 19:24:27 +01:00
Jens Cornelsen
106c420447 Merge pull request #382 from IBCornelsen/Jens
.
2025-02-22 18:56:30 +01:00
Jens Cornelsen
83c6aa8550 . 2025-02-22 18:54:21 +01:00
UMBENOMENA
f262710f59 Merge pull request #381 from IBCornelsen/UMBE
kundendaten
2025-02-22 18:49:00 +01:00
UMBENOMENA
04d69a4e95 Merge branch 'main' into UMBE 2025-02-22 18:48:50 +01:00
Robert Jagtiani
e96ac71d1d kundendaten 2025-02-22 18:47:22 +01:00
Jens Cornelsen
399b43149b Merge pull request #380 from IBCornelsen/Jens
logo
2025-02-22 18:37:53 +01:00
Jens Cornelsen
693b9968e9 logo 2025-02-22 18:36:02 +01:00
Jens Cornelsen
4edd73de52 Merge pull request #379 from IBCornelsen/Jens
CSS gefixt
2025-02-22 18:29:12 +01:00
Jens Cornelsen
e7a554cac0 CSS gefixt 2025-02-22 18:26:33 +01:00
Jens Cornelsen
a973586a2b Merge pull request #378 from IBCornelsen/Jens
Textgröße Gebäudadresse im Dashboard angebasst
2025-02-22 18:07:20 +01:00
Jens Cornelsen
c682dc4409 Textgröße Gebäudadresse im Dashboard angebasst 2025-02-22 18:03:47 +01:00
Jens Cornelsen
f404f5a1fe Merge pull request #377 from IBCornelsen/Jens
Höhe Fotoslider im Dashboard angepasst
2025-02-22 18:00:35 +01:00
Jens Cornelsen
3678cd7b37 Höhe des Fotobanners im Dashboard angepasst 2025-02-22 17:54:19 +01:00
Jens Cornelsen
14196bf66c Migrations 2025-02-22 16:21:29 +01:00
Jens Cornelsen
3f5f1cebe7 Merge pull request #373 from IBCornelsen/main
get main
2025-02-22 15:28:59 +01:00
Moritz Utcke
8fc6a88f58 AngabenZurHeizungsanlage.svelte gefixt 2025-02-22 13:29:27 +11:00
Moritz Utcke
591c5ec9e6 Merge remote-tracking branch 'origin/main' 2025-02-22 13:28:31 +11:00
Moritz Utcke
57c05b8672 Pfade Automatisch erstellen 2025-02-22 13:28:12 +11:00
UMBENOMENA
e6fdf39e00 Merge pull request #376 from IBCornelsen/UMBE
.
2025-02-22 03:18:19 +01:00
Jens Cornelsen
fabef77366 Merge pull request #375 from IBCornelsen/Jens
Inhaltsseiten komplett
2025-02-22 03:17:17 +01:00
Robert Jagtiani
b14d80d101 . 2025-02-22 03:15:10 +01:00
UMBENOMENA
a04a71df23 Merge pull request #374 from IBCornelsen/UMBE
Bedarfsausweis
2025-02-22 03:10:29 +01:00
Jens Cornelsen
eb4d67d04e Merge remote-tracking branch 'origin/main' into Jens 2025-02-22 03:10:24 +01:00
Robert Jagtiani
0e5a74725e Bedarfsausweis 2025-02-22 03:08:48 +01:00
Jens Cornelsen
fdbe165343 Inhaltsseiten komplett 2025-02-22 03:06:52 +01:00
Moritz Utcke
a40a809e12 Ordner 2025-02-22 12:40:51 +11:00
Moritz Utcke
69e169362b Persistent Directory 2025-02-22 12:37:54 +11:00
Moritz Utcke
6cf8910839 Bild Upload 2025-02-22 12:15:25 +11:00
Moritz Utcke
fb706c5999 Bilder 2025-02-22 12:03:36 +11:00
Moritz Utcke
b5d6ba731e clientAddress 2025-02-22 11:51:48 +11:00
Moritz Utcke
224697fd06 Merge remote-tracking branch 'origin/main' 2025-02-22 11:46:13 +11:00
Moritz Utcke
065e9a5e14 No Prerender 2025-02-22 11:46:09 +11:00
Jens Cornelsen
999cfbc7cb Merge pull request #372 from IBCornelsen/Jens
Inhaltsseiten
2025-02-22 01:36:39 +01:00
Jens Cornelsen
5f075814dd git 2025-02-22 01:34:44 +01:00
Jens Cornelsen
dfcd3e359c Merge remote-tracking branch 'origin/main' into Jens 2025-02-22 01:32:54 +01:00
Jens Cornelsen
67aaee6f09 Auto stash before merge of "main" and "origin/main" 2025-02-22 01:27:09 +01:00
Moritz Utcke
c05d02b002 makefile und ausweistyp 2025-02-22 11:23:44 +11:00
Moritz Utcke
412d2dc7ef Klimafaktoren 2025-02-22 11:11:57 +11:00
Moritz Utcke
d3ca67399c Makefile 2025-02-22 10:46:07 +11:00
Moritz Utcke
21e87339b9 Port 3000 2025-02-22 10:37:28 +11:00
Moritz Utcke
fa18a0f94e Port 2025-02-22 10:32:18 +11:00
Moritz Utcke
d050fcecec Makefile 2025-02-22 10:29:55 +11:00
Moritz Utcke
aa6effcc90 Merge remote-tracking branch 'origin/main' 2025-02-22 10:20:52 +11:00
Moritz Utcke
785e0f78ff Astro build funktioniert 2025-02-22 10:20:20 +11:00
Jens Cornelsen
c4942affe8 Merge pull request #370 from IBCornelsen/Jens
Inhaltsseiten
2025-02-21 22:38:05 +01:00
Jens Cornelsen
8ee620935e Auto stash before merge of "Jens" and "origin/Jens" 2025-02-21 22:33:38 +01:00
Jens Cornelsen
5ffcb4b3ff Auto stash before merge of "Jens" and "origin/Jens" 2025-02-21 22:33:07 +01:00
Jens Cornelsen
2a5416673b Auto stash before merge of "Jens" and "origin/Jens" 2025-02-21 22:32:27 +01:00
Jens Cornelsen
21446bf4e8 Auto stash before merge of "Jens" and "origin/Jens" 2025-02-21 22:31:51 +01:00
Jens Cornelsen
45ee28c332 Auto stash before merge of "Jens" and "origin/Jens" 2025-02-21 22:31:09 +01:00
Jens Cornelsen
c0df0d73af Auto stash before merge of "Jens" and "origin/Jens" 2025-02-21 22:30:18 +01:00
Jens Cornelsen
1ce0164e70 Auto stash before merge of "Jens" and "origin/Jens" 2025-02-21 22:29:39 +01:00
Jens Cornelsen
9d4359ea89 Auto stash before merge of "Jens" and "origin/Jens" 2025-02-21 22:29:07 +01:00
Jens Cornelsen
2eb44a9bb3 Auto stash before merge of "Jens" and "origin/Jens" 2025-02-21 22:27:30 +01:00
Jens Cornelsen
6242fc9ef8 Auto stash before merge of "Jens" and "origin/Jens" 2025-02-21 22:26:51 +01:00
Jens Cornelsen
270fcc329f Auto stash before merge of "Jens" and "origin/Jens" 2025-02-21 22:25:44 +01:00
Jens Cornelsen
0e50cbe118 Auto stash before merge of "Jens" and "origin/Jens" 2025-02-21 22:24:50 +01:00
Jens Cornelsen
47767e4316 Auto stash before merge of "Jens" and "origin/Jens" 2025-02-21 22:23:31 +01:00
Jens Cornelsen
37339da412 Auto stash before merge of "Jens" and "origin/Jens" 2025-02-21 22:21:44 +01:00
Jens Cornelsen
91704f6037 Merge pull request #369 from IBCornelsen/main
get main
2025-02-21 21:51:37 +01:00
UMBENOMENA
c9e372ce53 Merge pull request #368 from IBCornelsen/UMBE
.
2025-02-21 21:43:19 +01:00
Robert Jagtiani
226e9a6d77 . 2025-02-21 21:41:58 +01:00
Jens Cornelsen
b2121ec76e Merge pull request #367 from IBCornelsen/main
get main
2025-02-21 21:26:18 +01:00
UMBENOMENA
77eaa41cc3 Update constants.ts 2025-02-21 21:23:26 +01:00
UMBENOMENA
2e1ec82d77 Merge pull request #366 from IBCornelsen/main
.
2025-02-21 21:22:26 +01:00
UMBENOMENA
8669b6d7ff Update constants.ts 2025-02-21 21:20:28 +01:00
UMBENOMENA
192e71ac60 Update constants.ts 2025-02-21 19:15:03 +01:00
UMBENOMENA
095655e9e8 Merge pull request #365 from IBCornelsen/UMBE
price GEGGewerbe
2025-02-21 19:12:49 +01:00
UMBENOMENA
fb14dbd6bc Merge branch 'main' into UMBE 2025-02-21 19:12:43 +01:00
Robert Jagtiani
7c56d036fd price GEGGewerbe 2025-02-21 19:11:17 +01:00
Moritz Utcke
fa272cf0f3 Plausibilitätsprüfungen 2025-02-22 00:02:02 +11:00
Moritz Utcke
6a51b0b02f Dashboard 2025-02-21 23:57:46 +11:00
Moritz Utcke
d6e137d50f GEGNachweis Mail 2025-02-21 20:01:54 +11:00
Moritz Utcke
6e49ba328e Dahsboard Gefixt 2025-02-21 19:19:06 +11:00
Moritz Utcke
d31a958df7 Preise 2025-02-21 18:27:03 +11:00
Moritz Utcke
993d58c170 Verbesserungen 2025-02-21 18:22:33 +11:00
Moritz Utcke
d1e3b51635 Merge remote-tracking branch 'origin/main' 2025-02-21 12:25:58 +11:00
Moritz Utcke
1df144e5b2 GEG Einpreisung 2025-02-21 12:25:28 +11:00
Jens Cornelsen
3e160b3af1 Merge pull request #363 from IBCornelsen/Jens
Inhaltsseiten
2025-02-20 21:41:53 +01:00
Jens Cornelsen
26ea187a09 Inhaltsseiten 2025-02-20 21:40:04 +01:00
Jens Cornelsen
45e8ebb29d Merge pull request #362 from IBCornelsen/Jens
Inhaltsseiten
2025-02-20 20:07:21 +01:00
Jens Cornelsen
85fe01bc60 Korrektur 2025-02-20 20:05:52 +01:00
Jens Cornelsen
cba9d7a0e0 Inhaltsseiten 2025-02-20 19:55:51 +01:00
Jens Cornelsen
d672c957f9 Merge pull request #361 from IBCornelsen/main
get main
2025-02-20 13:37:25 +01:00
Moritz Utcke
685cb114f8 Verbrauchsausweis Gewerbe 2025-02-20 22:12:22 +11:00
Moritz Utcke
86532ec251 Ansichtsausweis 2025-02-20 21:41:29 +11:00
Moritz Utcke
b283013116 Button Oben Funktioniert wieder 2025-02-20 21:27:40 +11:00
Moritz Utcke
927f0157be Login Popup zu Kundendaten bewegt 2025-02-20 21:25:38 +11:00
Moritz Utcke
eac6f0c035 Bestellung 2025-02-20 17:07:49 +11:00
Moritz Utcke
727ea1c924 Merge remote-tracking branch 'origin/main' 2025-02-20 16:51:36 +11:00
Moritz Utcke
d538f754c4 Verbesserungen und Datenumzug 2025-02-20 16:50:21 +11:00
UMBENOMENA
4d801eef4c Merge pull request #360 from IBCornelsen/UMBE
.
2025-02-20 00:58:30 +01:00
Robert Jagtiani
dd60f42d7b . 2025-02-20 00:57:27 +01:00
Moritz Utcke
8049af9f17 Design 2025-02-20 10:35:23 +11:00
Moritz Utcke
39476ac5d5 Links 2025-02-20 10:24:05 +11:00
Moritz Utcke
dc0dfff31f Bild Upload 2025-02-20 10:21:48 +11:00
Moritz Utcke
d228908430 Fehler Behoben 2025-02-20 10:11:09 +11:00
Jens Cornelsen
d73b0af435 Merge pull request #359 from IBCornelsen/main
get main
2025-02-19 23:33:08 +01:00
UMBENOMENA
2f04be6da9 Merge pull request #357 from IBCornelsen/UMBE
.
2025-02-19 19:50:44 +01:00
UMBENOMENA
a38fea3955 Merge branch 'main' into UMBE 2025-02-19 19:50:37 +01:00
Robert Jagtiani
850a51569f . 2025-02-19 19:49:38 +01:00
UMBENOMENA
22ada149f4 Update Progressbar.svelte 2025-02-19 19:41:04 +01:00
UMBENOMENA
051f758566 Merge pull request #356 from IBCornelsen/main
getMain
2025-02-19 19:36:35 +01:00
UMBENOMENA
5bee70f95a Merge pull request #355 from IBCornelsen/UMBE
responsiv
2025-02-19 19:35:53 +01:00
UMBENOMENA
bfcc44dbe2 Merge branch 'main' into UMBE 2025-02-19 19:35:38 +01:00
Robert Jagtiani
cde5661e30 responsiv 2025-02-19 19:30:44 +01:00
Jens Cornelsen
902743f0d9 Merge pull request #354 from IBCornelsen/Jens
T42, T43 und T44 fertiggestellt
2025-02-19 19:05:29 +01:00
Jens Cornelsen
52e07ea0bf T42, T43 und T44 fertiggestellt 2025-02-19 19:04:01 +01:00
Jens Cornelsen
daec65e051 Merge pull request #352 from IBCornelsen/main
get main
2025-02-19 14:17:53 +01:00
Jens Cornelsen
7986adc9c6 Merge branch 'Jens' into main 2025-02-19 14:17:12 +01:00
Jens Cornelsen
0686f2930b T41 fertiggesellt und constants erweitert 2025-02-19 14:12:44 +01:00
Moritz Utcke
faa8f2c673 GEG Nachweis 2025-02-19 23:22:39 +11:00
Moritz Utcke
69566f1c74 Dashboard, Datenblatt usw. 2025-02-19 18:12:48 +11:00
Moritz Utcke
198912c792 Merge remote-tracking branch 'origin/main' 2025-02-19 11:11:58 +11:00
Moritz Utcke
df00cb88e2 Verbrauchsausweis Gewerbe 2025-02-19 11:11:24 +11:00
Jens Cornelsen
b2f86696cc Merge pull request #351 from IBCornelsen/Jens
T37, T38, T39 und T40 fertiggestellt
2025-02-18 23:05:14 +01:00
Jens Cornelsen
2b0fda66f1 T37, T38, T39 und T40 fertiggestellt 2025-02-18 23:03:05 +01:00
Jens Cornelsen
47533d5794 Merge pull request #350 from IBCornelsen/main
Aussteller
2025-02-18 13:42:36 +01:00
Moritz Utcke
78248ba0a4 Aussteller 2025-02-18 22:28:27 +11:00
Jens Cornelsen
b3b59591be Merge pull request #349 from IBCornelsen/main
getMain
2025-02-18 12:26:03 +01:00
Moritz Utcke
c3da028ed7 Buchstabe hervorheben 2025-02-18 22:17:44 +11:00
Moritz Utcke
feb3145169 Merge remote-tracking branch 'origin/main' 2025-02-18 22:05:53 +11:00
Moritz Utcke
003882a16a Verbrauchsausweis Wohnen Ausweis fertig 2025-02-18 22:05:33 +11:00
Moritz Utcke
137cef3114 Merge pull request #348 from IBCornelsen/main
Ausweis und weitere Änderungen
2025-02-18 14:27:41 +07:00
Moritz Utcke
0777fc39eb Merge branch 'Jens' into main 2025-02-18 14:27:35 +07:00
Jens Cornelsen
9359ee0432 Interpolation 2025-02-18 08:24:52 +01:00
Moritz Utcke
c8ba17fab3 Ausweis und weitere Änderungen 2025-02-18 18:17:02 +11:00
UMBENOMENA
faf9ef8b0b Merge pull request #347 from IBCornelsen/main
getMain
2025-02-17 15:49:55 +01:00
Jens Cornelsen
404f5845a4 Merge pull request #346 from IBCornelsen/main
.
2025-02-17 11:42:43 +01:00
Jens Cornelsen
8486421f12 Neue Ordner 2025-02-17 11:40:20 +01:00
Jens Cornelsen
3abaa89107 Merge pull request #345 from IBCornelsen/Jens
.
2025-02-17 11:29:46 +01:00
Jens Cornelsen
1af751042c Merge remote-tracking branch 'origin/Jens' into Jens 2025-02-17 11:27:28 +01:00
Jens Cornelsen
0daa65bd94 Merge pull request #344 from IBCornelsen/main
Update Jens
2025-02-17 11:25:01 +01:00
Jens Cornelsen
c4350ec75a T12, T13, T14 und T15 hinzugefügt 2025-02-17 11:13:02 +01:00
Moritz Utcke
9951179b2a Bestellen auf Rechnung 2025-02-17 20:46:27 +11:00
Moritz Utcke
7f6430f20f Anfang Aussschlusskriterien 2025-02-17 11:39:48 +07:00
Moritz Utcke
5f8d30a5a3 Fehler gefixt die beim Testen aufgefallen sind. 2025-02-17 11:24:07 +07:00
Jens Cornelsen
f18b5ca03c Merge pull request #343 from IBCornelsen/main
.
2025-02-15 15:59:41 +01:00
Jens Cornelsen
74f05d404c Merge pull request #342 from IBCornelsen/Jens
Überarbeitet und auf funktionDoppelteInterpolation umgestellt
2025-02-15 15:55:16 +01:00
Jens Cornelsen
8935479fad Überarbeitet und auf funktionDoppelteInterpolation umgestellt 2025-02-15 15:50:02 +01:00
Jens Cornelsen
23cadae581 Korrektur 2025-02-15 15:31:38 +01:00
Jens Cornelsen
b6db5cde51 Merge pull request #341 from IBCornelsen/Jens
Überarbeitet und Wertebereiche angepasst
2025-02-15 15:00:03 +01:00
Jens Cornelsen
a9ab3daa6f Überarbeitet und Wertebereiche angepasst 2025-02-15 14:58:34 +01:00
Jens Cornelsen
0d0f6c8851 Merge pull request #340 from IBCornelsen/main
Update Jens
2025-02-15 09:38:22 +01:00
Jens Cornelsen
8ac9005e8b Merge remote-tracking branch 'origin/main' 2025-02-15 09:29:47 +01:00
Jens Cornelsen
ae970e376e Funktion T108 fertiggestellt 2025-02-15 09:29:16 +01:00
UMBENOMENA
c6ab7adba3 Merge pull request #339 from IBCornelsen/UMBE
VA Gewerbe änderungen
2025-02-14 23:13:55 +01:00
Robert Jagtiani
dbd70febdb VA Gewerbe änderungen 2025-02-14 23:13:29 +01:00
UMBENOMENA
2acd91f270 Merge pull request #338 from IBCornelsen/UMBE
widget Einbau
2025-02-14 18:49:25 +01:00
Robert Jagtiani
0381a6f473 widget Einbau 2025-02-14 18:48:29 +01:00
Jens Cornelsen
e86c4d94b8 Merge pull request #337 from IBCornelsen/Jens
Funktionen für T105, T106 und T107 fertiggestellt
2025-02-14 18:48:17 +01:00
Jens Cornelsen
8d1f95ec89 Auto stash before merge of "Jens" and "origin/Jens" 2025-02-14 18:45:02 +01:00
Jens Cornelsen
89ce919802 Merge pull request #336 from IBCornelsen/main
Update
2025-02-14 14:18:52 +01:00
UMBENOMENA
ed5b71f8bf Merge pull request #335 from IBCornelsen/UMBE
Prüfbox & Progress
2025-02-14 01:21:48 +01:00
Robert Jagtiani
0927883055 Merge remote-tracking branch 'origin/UMBE' into UMBE 2025-02-14 01:16:39 +01:00
UMBENOMENA
2ac1e3f436 Merge pull request #334 from IBCornelsen/main
getMain
2025-02-14 01:06:15 +01:00
Robert Jagtiani
66297101ff progessbar und prüfbox 2025-02-14 00:52:02 +01:00
Moritz Utcke
6e2f29c673 Bedarfsausweis Wohnen API 2025-02-12 14:27:56 +07:00
Moritz Utcke
a4fe9b4f80 Merge remote-tracking branch 'origin/main' 2025-02-12 12:28:25 +07:00
Moritz Utcke
fe3b2809d9 Fehler von Jens gefixt 2025-02-12 12:28:17 +07:00
UMBENOMENA
e61481c1b0 Merge pull request #333 from IBCornelsen/UMBE
Ausweis Module RESPONSIV
2025-02-12 01:30:07 +01:00
UMBENOMENA
8b3371cf26 Merge branch 'main' into UMBE 2025-02-12 01:29:31 +01:00
Robert Jagtiani
e48753f9bd Ausweis Module RESPONSIV 2025-02-12 01:20:32 +01:00
UMBENOMENA
8b3578aa74 Merge pull request #332 from IBCornelsen/UMBE
.
2025-02-11 23:53:23 +01:00
Robert Jagtiani
094b40e604 . 2025-02-11 23:52:55 +01:00
UMBENOMENA
843c417f19 Merge pull request #331 from IBCornelsen/UMBE
widget & VA
2025-02-11 23:47:38 +01:00
Robert Jagtiani
f4ba7c8111 widget & VA 2025-02-11 23:40:53 +01:00
Jens Cornelsen
01d3312989 Merge pull request #330 from IBCornelsen/Jens
Merge pull request #327 from IBCornelsen/UMBE
2025-02-11 23:26:27 +01:00
Jens Cornelsen
60a0f3af70 Merge pull request #327 from IBCornelsen/UMBE
widget, preise
2025-02-11 23:24:43 +01:00
Jens Cornelsen
de8e68e21b Merge pull request #329 from IBCornelsen/Jens
.
2025-02-11 23:04:45 +01:00
Jens Cornelsen
158752b16d . 2025-02-11 23:01:52 +01:00
Jens Cornelsen
b1feb53b79 Merge pull request #328 from IBCornelsen/Jens
Interpolationen T83, T84, T85, T86, T88, T90 und T102 hinzugefügt
2025-02-11 22:53:45 +01:00
Jens Cornelsen
28ece60c76 Merge branch 'main' into Jens 2025-02-11 22:53:12 +01:00
Jens Cornelsen
30f699297c Interpolationen T83, T84, T85, T86, T88, T90 und T102 hinzugefügt 2025-02-11 22:29:55 +01:00
UMBENOMENA
91fd0ec516 Merge pull request #327 from IBCornelsen/UMBE
widget, preise
2025-02-11 21:48:56 +01:00
Robert Jagtiani
c6c7d5bc14 widget, preise 2025-02-11 21:47:19 +01:00
Jens Cornelsen
06f05104ab Merge pull request #326 from IBCornelsen/main
Update
2025-02-11 13:42:44 +01:00
Moritz Utcke
23c95dab63 Merge branch 'dev-moritz' 2025-02-11 17:33:46 +07:00
642 changed files with 1076714 additions and 30027 deletions

View File

@@ -1,3 +0,0 @@
# Jeden Monat müssen wir die neuen Klimafaktoren vom DWD abholen, der Cronjob läuft immer am 28. für die höchste Wahrscheinlichkeit
# dass die Daten schon da sind, falls der DWD mal später dran ist...
0 12 28 * * bun ./src/cronjobs/update-dwd-klimafaktoren.ts

16
.env Normal file
View 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}"

View File

@@ -0,0 +1,76 @@
name: Auto Merge Staging into Main
on:
schedule:
- cron: '0 2 * * *' # 2:00 UTC = 4:00 Europäische Zeit
workflow_dispatch:
jobs:
merge:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set Git user
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- name: Fetch all branches
run: |
git fetch origin main
git fetch origin staging
- name: Check if main has commits not in staging
id: check
run: |
git fetch origin
if [ $(git rev-list --count origin/staging..origin/main) -gt 0 ]; then
echo "❌ Staging is behind main and requires manual merging."
exit 1
fi
- name: Create PR from staging to main
id: create_pr
run: |
PR_URL=$(gh pr create --base main --head staging --title "Auto-merge staging into main" --body "This PR was created automatically by GitHub Actions. It merges the latest \`staging\` into \`main\`.")
echo "PR_URL=$PR_URL" >> $GITHUB_OUTPUT
PR_NUMBER=$(echo $PR_URL | awk -F'/' '{print $NF}')
echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Enable auto-merge on PR
if: steps.create_pr.outputs.PR_NUMBER != ''
run: |
gh pr merge ${{ steps.create_pr.outputs.PR_NUMBER }} --merge --auto
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
notify_failure:
needs: merge
if: failure()
runs-on: ubuntu-latest
steps:
- name: Send Discord notification on failure
run: |
curl -H "Content-Type: application/json" \
-X POST \
-d "{\"content\": \"🚨 Auto-Merge fehlgeschlagen! Bitte manuell prüfen: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}\"}" \
${{ secrets.DISCORD_WEBHOOK_URL }}
notify_success:
needs: merge
if: success()
runs-on: ubuntu-latest
steps:
- name: Send Discord notification on success
run: |
curl -H "Content-Type: application/json" \
-X POST \
-d "{\"content\": \"✅ Auto-Merge ausgeführt! Ergebnis jetzt auf [GitHub](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) und [online-energieausweis.org](https://online-energieausweis.org) einsehen.\"}" \
${{ secrets.DISCORD_WEBHOOK_URL }}

View File

@@ -1,16 +1,18 @@
name: Dev Pipeline name: Development Pipeline
on: on:
pull_request:
branches: [main]
push: push:
branches: [main] branches: [dev]
jobs: jobs:
deploy: deploy:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Install Bun
run: |
curl -fsSL https://bun.sh/install | bash
- uses: appleboy/ssh-action@master - uses: appleboy/ssh-action@master
with: with:
host: ${{ secrets.DEV_HOST }} host: ${{ secrets.DEV_HOST }}
@@ -18,9 +20,12 @@ jobs:
password: ${{ secrets.DEV_PASSWORD }} password: ${{ secrets.DEV_PASSWORD }}
port: 22 port: 22
script: | script: |
export PATH=$HOME/.bun/bin:$PATH
export PATH=$HOME/.nvm/versions/node/v22.14.0/bin:$PATH
echo $PATH
cd ~/online-energieausweis cd ~/online-energieausweis
git reset --hard origin/main git reset --hard origin/dev
git clean -f -d git clean -f -d
git pull origin main git pull origin dev
git status git status
make prod make prod

27
.github/workflows/prevent-wrong-pr.yml vendored Normal file
View File

@@ -0,0 +1,27 @@
name: PR Rules Enforcement
on:
pull_request:
branches:
- main
- staging
jobs:
check-pr:
runs-on: ubuntu-latest
name: Validate Pull Request Sources
steps:
- name: Prevent dev merges
run: |
if [[ "${{ github.head_ref }}" == "dev" ]]; then
echo "ERROR: Merging 'dev' into '${{ github.base_ref }}' is forbidden!"
exit 1
fi
- name: Allow only staging into main
if: github.base_ref == 'main'
run: |
if [[ "${{ github.head_ref }}" != "staging" ]]; then
echo "ERROR: Only 'staging' branch is allowed to merge into 'main'. Current: '${{ github.head_ref }}'"
exit 1
fi

31
.github/workflows/prod-pipeline.yml vendored Normal file
View File

@@ -0,0 +1,31 @@
name: Production Pipeline
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Bun
run: |
curl -fsSL https://bun.sh/install | bash
- uses: appleboy/ssh-action@master
with:
host: ${{ secrets.PROD_HOST }}
username: ${{ secrets.PROD_USERNAME }}
password: ${{ secrets.PROD_PASSWORD }}
port: 22
script: |
export PATH=$HOME/.bun/bin:$PATH
export PATH=$HOME/.nvm/versions/node/v22.14.0/bin:$PATH
echo $PATH
cd ~/online-energieausweis
git reset --hard origin/main
git clean -f -d
git pull origin main
git status
make prod

17
.gitignore vendored
View File

@@ -20,15 +20,22 @@ pnpm-debug.log*
pnpm-lock.yaml pnpm-lock.yaml
bun.lockb bun.lockb
# environment variables src/astro-typesafe-api-caller.ts
.env
.env.production
# macOS-specific files # macOS-specific files
.DS_Store .DS_Store
public/fonts/
*.Identifier *.Identifier
src/lib/Berechnungen/BedarfsausweisWohnen/18599-Tabellenverfahren-Wohngebaeude-komplett-ocr.pdf src/lib/Berechnungen/BedarfsausweisWohnen/18599-Tabellenverfahren-Wohngebaeude-komplett-ocr.pdf
src/astro-typesafe-api-caller.ts
dbml/schema.dbml
prisma/migrations/20250315143314_/migration.sql
# src/astro-typesafe-api-caller.ts
src/testing/ausweise.csv
src/testing/users.csv
src/testing/rechnungen.csv

View File

@@ -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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,52 +1,74 @@
.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 prisma-studio backup-database-cronjob update-dwd-klimafaktoren-cron
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: database online-energieausweis
database: database:
$(MAKE) -C ../database dev docker compose up
bun-install-database: prisma-studio:
cd ../database - pm2 delete prisma-studio
bun link pm2 start --name "prisma-studio" bunx -- prisma studio
backup:
mkdir -p $(PERSISTENT_DIR)
- docker exec -t $(DB_CONTAINER_NAME) pg_dump --data-only -U $(DB_USER) $(DB_NAME) | gzip > $(BACKUP_FILENAME)
run-database: 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-for-database:
@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 update-dwd-klimafaktoren-cron:
pm2 start bun --name "update-dwd-klimafaktoren-cron" --cron "0 12 28 * *" -- src/cronjobs/update-dwd-klimafaktoren.ts
prod: install-dependencies prisma-studio backup-database-cronjob update-dwd-klimafaktoren-cron
bun run build
mkdir -p ~/logs mkdir -p ~/logs
mkdir -p ~/persistent/online-energieausweis mkdir -p ~/persistent/online-energieausweis
# Wir müssen sichergehen, dass der Database Container läuft, sonst können wir ihn nicht linken.
@if [ ! $$(docker ps | grep database | wc -l) -gt 0 ]; then \
cd ../database; \
$(MAKE) prod; \
cd ../online-energieausweis; \
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;
- touch ~/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 NODE_ENV="production" pm2 start --name "online-energieausweis" --update-env --log ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log --time bun -- run ./server.ts
pm2 save
backup-database-cronjob:
- pm2 delete daily-db-backup
pm2 start bash --name "daily-db-backup" --cron "0 0 * * *" -- backup-database.bash

View File

@@ -4,38 +4,37 @@ 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: {
server: {
allowedHosts: ["ibcornelsen.de", "online-energieausweis.org"]
},
optimizeDeps: {
exclude: ["bun"]
},
build: {
rollupOptions: {
external: ["bun", "stream", "node:stream", "http", "node:http", "https", "http2", "path", "os", "crypto", "fs", "url", "util", "child_process"]
}
},
ssr: {
external: ["@prisma/client", "bun", "stream"],
resolve: {
alias: {
".prisma/client/index-browser": "./node_modules/.prisma/client/index-browser.js"
}
}
}
},
server: { server: {
port: 3000 port: 3000
}, },

28
backup-database.bash Normal file
View File

@@ -0,0 +1,28 @@
#!/bin/bash
FILE_NAME=data-dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br
FILE_NAME_COMPLETE=full-dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br
# Das wird benötigt für AWS Ionos Kompatibilität.
export AWS_REQUEST_CHECKSUM_CALCULATION=when_required
export AWS_RESPONSE_CHECKSUM_VALIDATION=when_required
# Wir exportieren die Datenbank und komprimieren sie.
# IMPORTANT: Dieser Befehl benötigt das `ionos` Profil, sonst wird er nicht funktionieren.
# Das Profil kann mit `aws configure --profile ionos` erstellt werden.
# Den Key dafür findet man auf https://dcd.ionos.com/latest/?lang=en#/key-management
docker exec -t online-energieausweis-database-1 pg_dump --data-only -U main main | brotli --best > $FILE_NAME
aws s3 cp $FILE_NAME s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3-eu-central-1.ionoscloud.com --storage-class STANDARD
echo "Uploaded $FILE_NAME"
docker exec -t online-energieausweis-database-1 pg_dumpall -c -U main | brotli --best > $FILE_NAME_COMPLETE
aws s3 cp $FILE_NAME_COMPLETE s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3-eu-central-1.ionoscloud.com --storage-class STANDARD
echo "Uploaded $FILE_NAME_COMPLETE"
# Wir entfernen das Backup
rm $FILE_NAME
rm $FILE_NAME_COMPLETE

File diff suppressed because it is too large Load Diff

71474
backup/postleitzahlen.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -39,11 +39,11 @@ bun link @ibcornelsen/database
PERSISTENT_DIR="${HOME}/persistent/${APP_NAME}"; PERSISTENT_DIR="${HOME}/persistent/${APP_NAME}";
mkdir -p $PERSISTENT_DIR; mkdir -p $PERSISTENT_DIR;
# TODO: Wir legen hier die .env Datei an, die die SSL Zertifikate enthält. # Wir legen hier die .env Datei an, die die SSL Zertifikate enthält.
rm -f ~/$APP_NAME/.env; rm -f ~/$APP_NAME/.env;
touch ~/$APP_NAME/.env; touch ~/$APP_NAME/.env;
echo "PRIVATE_KEY=$(cat /etc/letsencrypt/live/ibcornelsen.de/privkey.pem | base64 | tr -d '\n')" >> ~/$APP_NAME/.env; echo "PRIVATE_KEY=$(cat /etc/letsencrypt/live/online-energieausweis.org/privkey.pem | base64 | tr -d '\n')" >> ~/$APP_NAME/.env;
echo "CERTIFICATE=$(cat /etc/letsencrypt/live/ibcornelsen.de/fullchain.pem | base64 | tr -d '\n')" >> ~/$APP_NAME/.env; echo "CERTIFICATE=$(cat /etc/letsencrypt/live/online-energieausweis.org/fullchain.pem | base64 | tr -d '\n')" >> ~/$APP_NAME/.env;
# Wir müssen sichergehen, dass der Database Container läuft, sonst können wir ihn nicht linken. # Wir müssen sichergehen, dass der Database Container läuft, sonst können wir ihn nicht linken.
if [ ! $((docker ps | grep $DB_CONTAINER_NAME) | wc -l) -gt 0 ]; then if [ ! $((docker ps | grep $DB_CONTAINER_NAME) | wc -l) -gt 0 ]; then

975
bun.lock

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
import { defineConfig } from "cypress"; import { defineConfig } from "cypress";
import dsv from "@rollup/plugin-dsv" import dsv from "@rollup/plugin-dsv"
import { prisma } from "./src/lib/server/prisma"
import { fileURLToPath } from "url"; import { fileURLToPath } from "url";
import vitePreprocessor from "cypress-vite"; import vitePreprocessor from "cypress-vite";
@@ -9,7 +9,7 @@ export default defineConfig({
baseUrl: "http://localhost:3000", baseUrl: "http://localhost:3000",
viewportHeight: 900, viewportHeight: 900,
viewportWidth: 1660, viewportWidth: 1660,
supportFile: false, supportFile: fileURLToPath(new URL("./src/cypress/support/commands.ts", import.meta.url)),
specPattern: "./src/cypress/e2e/**/*.{ts,js}", specPattern: "./src/cypress/e2e/**/*.{ts,js}",
setupNodeEvents(on, config) { setupNodeEvents(on, config) {
on("file:preprocessor", vitePreprocessor({ on("file:preprocessor", vitePreprocessor({
@@ -18,6 +18,7 @@ export default defineConfig({
}, },
resolve: { resolve: {
alias: { alias: {
".prisma/client/index-browser": fileURLToPath(new URL("./node_modules/.prisma/client/index-browser.js", import.meta.url)),
"#": fileURLToPath(new URL("./src", import.meta.url)), "#": fileURLToPath(new URL("./src", import.meta.url)),
"#components": fileURLToPath(new URL("./src/components", import.meta.url)), "#components": fileURLToPath(new URL("./src/components", import.meta.url)),
"#lib": fileURLToPath(new URL("./src/lib", import.meta.url)) "#lib": fileURLToPath(new URL("./src/lib", import.meta.url))
@@ -31,6 +32,19 @@ export default defineConfig({
}, },
plugins: [dsv()] plugins: [dsv()]
})) }))
on("task", {
async verbrauchsausweisWohnen(query) {
return await prisma.verbrauchsausweisWohnen.findFirst(query)
},
async plz() {
const total = await prisma.postleitzahlen.count()
const result = await prisma.postleitzahlen.findFirst({
skip: Math.floor(Math.random() * total)
})
return result?.plz
}
})
}, },
}, },
component: { component: {

View File

@@ -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

View File

@@ -1,15 +0,0 @@
git clone https://github.com/IBCornelsen/online-energieausweis
git clone https://github.com/IBCornelsen/database
git clone https://github.com/IBCornelsen/api
cd ./database
bun link
bun install
cd ../api
bun link
bun install
cd ../online-energieausweis
bun link
bun install

View File

@@ -22,7 +22,8 @@
"@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", "@aws-sdk/client-s3": "^3.758.0",
"@highlight-run/node": "^3.12.0",
"@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",
@@ -31,26 +32,34 @@
"@trpc/client": "^10.45.2", "@trpc/client": "^10.45.2",
"@trpc/server": "^10.45.2", "@trpc/server": "^10.45.2",
"astro": "^4.16.17", "astro": "^4.16.17",
"astro-typesafe-api": "^0.2.1", "astro-typesafe-api": "^0.2.4",
"body-scroll-lock": "^4.0.0-beta.0", "body-scroll-lock": "^4.0.0-beta.0",
"buffer": "^6.0.3", "buffer": "^6.0.3",
"bun": "^1.1.45", "bun": "^1.2.5",
"csvtojson": "^2.0.10", "csvtojson": "^2.0.10",
"express": "^4.21.2", "express": "^4.21.2",
"flag-icons": "^6.15.0", "flag-icons": "^6.15.0",
"fontkit": "^2.0.4", "fontkit": "^2.0.4",
"highlight.run": "^9.14.0",
"is-base64": "^1.1.0", "is-base64": "^1.1.0",
"js-cookie": "^3.0.5", "js-cookie": "^3.0.5",
"js-interpolate": "^1.3.2", "js-interpolate": "^1.3.2",
"jsonwebtoken": "^9.0.2", "jsonwebtoken": "^9.0.2",
"jwt-decode": "^4.0.0", "jwt-decode": "^4.0.0",
"mime": "^4.0.6",
"moment": "^2.30.1", "moment": "^2.30.1",
"moment-timezone": "^0.5.46", "moment-timezone": "^0.5.46",
"nodemailer": "^6.10.0", "nodemailer": "^6.10.0",
"pdf-lib": "^1.17.1", "pdf-lib": "^1.17.1",
"postcss-nested": "^7.0.2", "postcss-nested": "^7.0.2",
"puppeteer": "^24.7.2",
"radix-svelte-icons": "^1.0.0", "radix-svelte-icons": "^1.0.0",
"sass": "^1.83.4", "sass": "^1.83.4",
"sharp": "^0.33.5",
"siema": "^1.5.1",
"soap": "^1.1.8",
"sqids": "^0.3.0",
"ssh2-sftp-client": "^12.0.0",
"svelte": "^3.59.2", "svelte": "^3.59.2",
"svelte-dialogs": "^1.2.2", "svelte-dialogs": "^1.2.2",
"svelte-preprocess": "^5.1.4", "svelte-preprocess": "^5.1.4",
@@ -58,6 +67,7 @@
"tailwindcss": "^3.4.17", "tailwindcss": "^3.4.17",
"trpc-openapi": "^1.2.0", "trpc-openapi": "^1.2.0",
"uuid": "^9.0.1", "uuid": "^9.0.1",
"winston": "^3.17.0",
"zod": "^3.24.1" "zod": "^3.24.1"
}, },
"devDependencies": { "devDependencies": {
@@ -65,12 +75,16 @@
"@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",
"@types/js-cookie": "^3.0.6", "@types/js-cookie": "^3.0.6",
"@types/jsonwebtoken": "^9.0.7", "@types/jsonwebtoken": "^9.0.7",
"@types/nodemailer": "^6.4.17", "@types/nodemailer": "^6.4.17",
"@types/papaparse": "^5.3.15",
"@types/siema": "^1.4.11",
"@types/ssh2-sftp-client": "^9.0.4",
"@types/uuid": "^9.0.8", "@types/uuid": "^9.0.8",
"@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^5.62.0", "@typescript-eslint/parser": "^5.62.0",
@@ -79,16 +93,22 @@
"cypress": "^13.17.0", "cypress": "^13.17.0",
"cypress-file-upload": "^5.0.8", "cypress-file-upload": "^5.0.8",
"cypress-vite": "^1.6.0", "cypress-vite": "^1.6.0",
"daisyui": "^4.12.23",
"eslint": "~8.15.0", "eslint": "~8.15.0",
"eslint-config-prettier": "8.1.0", "eslint-config-prettier": "8.1.0",
"papaparse": "^5.5.2",
"postcss": "^8.5.1", "postcss": "^8.5.1",
"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": "^5.8.3",
"zod-prisma": "^0.5.4"
}, },
"overrides": { "overrides": {
"zod": "^3.24.1" "zod": "^3.24.1"
} },
} "module": "index.ts"
}

BIN
persistent/images/haken.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

View File

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

View File

@@ -0,0 +1,14 @@
/*
Warnings:
- Added the required column `updated_at` to the `Rechnung` table without a default value. This is not possible if the table is not empty.
- Added the required column `updated_at` to the `benutzer` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE "Rechnung" ADD COLUMN "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
ADD COLUMN "updated_at" TIMESTAMP(3) NOT NULL;
-- AlterTable
ALTER TABLE "benutzer" ADD COLUMN "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
ADD COLUMN "updated_at" TIMESTAMP(3) NOT NULL;

View File

@@ -0,0 +1,9 @@
/*
Warnings:
- Added the required column `updated_at` to the `Bild` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE "Bild" ADD COLUMN "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
ADD COLUMN "updated_at" TIMESTAMP(3) NOT NULL;

View File

@@ -0,0 +1,26 @@
-- AlterTable
ALTER TABLE "BedarfsausweisGewerbe" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "BedarfsausweisWohnen" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "Bild" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "GEGNachweisGewerbe" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "GEGNachweisWohnen" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "Rechnung" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "VerbrauchsausweisGewerbe" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "VerbrauchsausweisWohnen" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;
-- AlterTable
ALTER TABLE "benutzer" ALTER COLUMN "updated_at" SET DEFAULT CURRENT_TIMESTAMP;

View File

@@ -0,0 +1,17 @@
-- AlterTable
ALTER TABLE "BedarfsausweisGewerbe" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'BedarfsausweisGewerbe';
-- AlterTable
ALTER TABLE "BedarfsausweisWohnen" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'BedarfsausweisWohnen';
-- AlterTable
ALTER TABLE "GEGNachweisGewerbe" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'GEGNachweisGewerbe';
-- AlterTable
ALTER TABLE "GEGNachweisWohnen" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'GEGNachweisWohnen';
-- AlterTable
ALTER TABLE "VerbrauchsausweisGewerbe" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'VerbrauchsausweisGewerbe';
-- AlterTable
ALTER TABLE "VerbrauchsausweisWohnen" ADD COLUMN "ausweisart" "Ausweisart" NOT NULL DEFAULT 'VerbrauchsausweisWohnen';

View File

@@ -0,0 +1,9 @@
-- AlterTable
ALTER TABLE "BedarfsausweisWohnen" ALTER COLUMN "fenster_art_1" SET DATA TYPE TEXT,
ALTER COLUMN "fenster_art_2" SET DATA TYPE TEXT,
ALTER COLUMN "dachfenster_art" SET DATA TYPE TEXT,
ALTER COLUMN "haustuer_art" SET DATA TYPE TEXT,
ALTER COLUMN "dach_daemmung" SET DATA TYPE TEXT,
ALTER COLUMN "decke_daemmung" SET DATA TYPE TEXT,
ALTER COLUMN "aussenwand_daemmung" SET DATA TYPE TEXT,
ALTER COLUMN "boden_daemmung" SET DATA TYPE TEXT;

View File

@@ -0,0 +1,10 @@
-- CreateTable
CREATE TABLE "Log" (
"id" SERIAL NOT NULL,
"level" TEXT NOT NULL,
"message" TEXT NOT NULL,
"meta" JSONB NOT NULL,
"timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Log_pkey" PRIMARY KEY ("id")
);

View File

@@ -0,0 +1,64 @@
-- CreateTable
CREATE TABLE "Attachment" (
"id" TEXT NOT NULL,
"name" TEXT,
"kategorie" TEXT,
"mime" TEXT NOT NULL,
CONSTRAINT "Attachment_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Message" (
"id" TEXT NOT NULL,
"content" TEXT NOT NULL,
"sender_id" TEXT NOT NULL,
"reply_to_id" TEXT,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Message_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "_AttachmentToMessage" (
"A" TEXT NOT NULL,
"B" TEXT NOT NULL,
CONSTRAINT "_AttachmentToMessage_AB_pkey" PRIMARY KEY ("A","B")
);
-- CreateTable
CREATE TABLE "_recipients" (
"A" VARCHAR(11) NOT NULL,
"B" TEXT NOT NULL,
CONSTRAINT "_recipients_AB_pkey" PRIMARY KEY ("A","B")
);
-- CreateIndex
CREATE UNIQUE INDEX "Attachment_id_key" ON "Attachment"("id");
-- CreateIndex
CREATE INDEX "_AttachmentToMessage_B_index" ON "_AttachmentToMessage"("B");
-- CreateIndex
CREATE INDEX "_recipients_B_index" ON "_recipients"("B");
-- AddForeignKey
ALTER TABLE "Message" ADD CONSTRAINT "Message_sender_id_fkey" FOREIGN KEY ("sender_id") REFERENCES "benutzer"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Message" ADD CONSTRAINT "Message_reply_to_id_fkey" FOREIGN KEY ("reply_to_id") REFERENCES "Message"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "_AttachmentToMessage" ADD CONSTRAINT "_AttachmentToMessage_A_fkey" FOREIGN KEY ("A") REFERENCES "Attachment"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "_AttachmentToMessage" ADD CONSTRAINT "_AttachmentToMessage_B_fkey" FOREIGN KEY ("B") REFERENCES "Message"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "_recipients" ADD CONSTRAINT "_recipients_A_fkey" FOREIGN KEY ("A") REFERENCES "benutzer"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "_recipients" ADD CONSTRAINT "_recipients_B_fkey" FOREIGN KEY ("B") REFERENCES "Message"("id") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@@ -0,0 +1,56 @@
/*
Warnings:
- You are about to drop the column `created_at` on the `Message` table. All the data in the column will be lost.
- You are about to drop the column `updated_at` on the `Message` table. All the data in the column will be lost.
- You are about to drop the `_recipients` table. If the table is not empty, all the data it contains will be lost.
- Added the required column `conversation_id` to the `Message` table without a default value. This is not possible if the table is not empty.
*/
-- DropForeignKey
ALTER TABLE "_recipients" DROP CONSTRAINT "_recipients_A_fkey";
-- DropForeignKey
ALTER TABLE "_recipients" DROP CONSTRAINT "_recipients_B_fkey";
-- AlterTable
ALTER TABLE "Message" DROP COLUMN "created_at",
DROP COLUMN "updated_at",
ADD COLUMN "conversation_id" TEXT NOT NULL,
ADD COLUMN "sentAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP;
-- DropTable
DROP TABLE "_recipients";
-- CreateTable
CREATE TABLE "Conversation" (
"id" TEXT NOT NULL,
"name" TEXT,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL
);
-- CreateTable
CREATE TABLE "Participant" (
"id" TEXT NOT NULL,
"benutzer_id" TEXT NOT NULL,
"conversation_id" TEXT NOT NULL,
"joined_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Participant_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "Conversation_id_key" ON "Conversation"("id");
-- CreateIndex
CREATE UNIQUE INDEX "Participant_benutzer_id_conversation_id_key" ON "Participant"("benutzer_id", "conversation_id");
-- AddForeignKey
ALTER TABLE "Message" ADD CONSTRAINT "Message_conversation_id_fkey" FOREIGN KEY ("conversation_id") REFERENCES "Conversation"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Participant" ADD CONSTRAINT "Participant_benutzer_id_fkey" FOREIGN KEY ("benutzer_id") REFERENCES "benutzer"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Participant" ADD CONSTRAINT "Participant_conversation_id_fkey" FOREIGN KEY ("conversation_id") REFERENCES "Conversation"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

View File

@@ -0,0 +1,3 @@
# Please do not edit this file manually
# It should be added in your version-control system (e.g., Git)
provider = "postgresql"

1
prisma/null.ts Normal file
View File

@@ -0,0 +1 @@
export const x = 5

View 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");
},
});

View File

@@ -0,0 +1,11 @@
model Anteilshaber {
id String @id @unique @db.VarChar(11)
rolle String? @db.VarChar
privilegien BigInt?
benutzer_id String
benutzer Benutzer @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
objekt_id String
objekt Objekt @relation(fields: [objekt_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}

View File

@@ -0,0 +1,14 @@
model ApiRequests {
id String @id @unique @db.VarChar(11)
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 String?
user Benutzer? @relation(fields: [user_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}

View File

@@ -0,0 +1,9 @@
model Attachment {
id String @id @unique @default(uuid())
name String?
kategorie String?
mime String
attached_to_messages Message[]
}

View File

@@ -0,0 +1,134 @@
enum Heizungsstatus {
BEHEIZT
UNBEHEIZT
NICHT_VORHANDEN
}
enum Lueftungskonzept {
Fensterlueftung
Schachtlueftung
LueftungsanlageMitWaermerueckgewinnung
LueftungsanlageOhneWaermerueckgewinnung
}
model Aufnahme {
id String @id @unique @db.VarChar(11)
benutzer_id String?
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
/// @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("Datum an dem der Kunde die Aufnahme erstellt hat")
erstellungsdatum DateTime? @default(now())
/// @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 String
objekt Objekt @relation(fields: [objekt_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}

View File

@@ -0,0 +1,44 @@
model BedarfsausweisGewerbe {
id String @id @unique @db.VarChar(11)
/// @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)
abluftanlage Boolean? @default(false)
zu_abluftanlage Boolean? @default(false)
konditionierung_der_zuluft Boolean? @default(false)
luftheizung Boolean? @default(false)
hallenheizung Boolean? @default(false)
dunkelstrahler Boolean? @default(false)
direktheizung Boolean? @default(false)
infrarotstrahler Boolean? @default(false)
fussbodenheizung Boolean? @default(false)
bauteilaktivierung Boolean? @default(false)
klimatisierung Boolean? @default(false)
nachweistyp AusweisTyp @default(Standard)
ausweisart Ausweisart @default(BedarfsausweisGewerbe)
created_at DateTime @default(now())
updated_at DateTime @updatedAt @default(now())
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
benutzer_id String?
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
aufnahme_id String @unique
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
rechnung_id String? @unique
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
geg_einpreisung_id String? @unique
geg_einpreisung GEGEinpreisung? @relation(fields: [geg_einpreisung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}

View File

@@ -0,0 +1,113 @@
model BedarfsausweisWohnen {
id String @id @unique @db.VarChar(11)
alte_ausweis_id Int?
benutzer_id String?
ausstellgrund Ausstellgrund?
registriernummer String? @db.VarChar
alternative_heizung Boolean?
alternative_warmwasser Boolean?
alternative_lueftung Boolean?
alternative_kuehlung Boolean?
/// @zod.describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes")
energieeffizienzklasse String? @db.VarChar(5)
/// @zod.describe("Datum an dem der Aussteller den Ausweis ausgestellt hat")
ausstellungsdatum DateTime?
boxpruefung Boolean? @default(false)
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 String?
fenster_flaeche_2 Float?
fenster_art_2 String?
dachfenster_flaeche Float?
dachfenster_art String?
haustuer_flaeche Float?
haustuer_art String?
dach_bauart String? @db.VarChar
decke_bauart String? @db.VarChar
dach_daemmung String?
decke_daemmung String?
aussenwand_daemmung String?
boden_daemmung String?
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)
created_at DateTime @default(now())
updated_at DateTime @updatedAt @default(now())
pruefpunkt_heizungsalter Boolean? @default(false)
pruefpunkt_verbrauch_niedrig Boolean? @default(false)
pruefpunkt_verbrauch_hoch Boolean? @default(false)
pruefpunkt_verbrauch_null Boolean? @default(false)
pruefpunkt_verbrauch_abweichung Boolean? @default(false)
pruefpunkt_wohnflaeche_einheiten Boolean? @default(false)
pruefpunkt_strom_null Boolean? @default(false)
pruefpunkt_strom_abweichung Boolean? @default(false)
pruefpunkt_plz Boolean? @default(false)
pruefpunkt_heizungsanlage Boolean? @default(false)
pruefpunkt_anteil_warmwasser Boolean? @default(false)
pruefpunkt_wohnflaeche Boolean? @default(false)
pruefpunkt_geometrie Boolean? @default(false)
pruefpunkt_fenster Boolean? @default(false)
ausweistyp AusweisTyp @default(Standard)
ausweisart Ausweisart @default(BedarfsausweisWohnen)
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
rechnung_id String? @unique
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
/// @zod.describe("ID der korrespondierenden Gebäudeaufnahme")
aufnahme_id String @unique
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}

View File

@@ -0,0 +1,59 @@
enum BenutzerRolle {
USER
ADMIN
}
model Benutzer {
id String @id @unique @db.VarChar(11)
alte_id Int?
name String? @db.VarChar(100)
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(150)
telefon String? @db.VarChar(50)
anrede String? @db.VarChar(50)
rolle BenutzerRolle @default(USER)
firma String?
lex_office_id String?
verified Boolean @default(false)
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[]
created_at DateTime @default(now())
updated_at DateTime @updatedAt @default(now())
ErstellteTickets Tickets[] @relation("ErstellteTickets")
BearbeiteteTickets Tickets[] @relation("BearbeiteteTickets")
events Event[]
conversations Participant[]
messages Message[]
@@map("benutzer")
}

20
prisma/schema/Bild.prisma Normal file
View File

@@ -0,0 +1,20 @@
enum BilderKategorie {
Heizung
Fenster
Gebaeude
Daemmung
AnlagenTechnik
}
model Bild {
id String @id @unique @db.VarChar(11)
kategorie BilderKategorie
name String
created_at DateTime @default(now())
updated_at DateTime @updatedAt @default(now())
aufnahme_id String?
aufnahme Aufnahme? @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}

View File

@@ -0,0 +1,9 @@
model Conversation {
id String @unique @default(cuid())
name String?
participants Participant[]
messages Message[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

View File

@@ -0,0 +1,19 @@
// 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 String @id @unique @db.VarChar(11)
date DateTime @default(now()) @db.Timestamp(6)
title String @db.VarChar(255)
description String? @db.Text
// Verlinkung des Gebäudes
aufnahme_id String
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
// Verlinkung des Benutzers
benutzer_id String?
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}

View File

@@ -0,0 +1,35 @@
enum Einpreisungsstatus {
open
canceled
pending
expired
}
model GEGEinpreisung {
id String @id @unique @db.VarChar(11)
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 String?
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}

View File

@@ -0,0 +1,35 @@
model GEGNachweisGewerbe {
id String @id @unique @db.VarChar(11)
/// @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
nachweistyp AusweisTyp @default(Standard)
ausweisart Ausweisart @default(GEGNachweisGewerbe)
created_at DateTime @default(now())
updated_at DateTime @updatedAt @default(now())
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
benutzer_id String?
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
aufnahme_id String @unique
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
rechnung_id String? @unique
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
geg_einpreisung_id String? @unique
geg_einpreisung GEGEinpreisung? @relation(fields: [geg_einpreisung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}

View File

@@ -0,0 +1,35 @@
model GEGNachweisWohnen {
id String @id @unique @db.VarChar(11)
/// @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
nachweistyp AusweisTyp @default(Standard)
ausweisart Ausweisart @default(GEGNachweisWohnen)
created_at DateTime @default(now())
updated_at DateTime @updatedAt @default(now())
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
benutzer_id String?
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
aufnahme_id String @unique
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
rechnung_id String? @unique
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
geg_einpreisung_id String? @unique
geg_einpreisung GEGEinpreisung? @relation(fields: [geg_einpreisung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}

View 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])
}

7
prisma/schema/Log.prisma Normal file
View File

@@ -0,0 +1,7 @@
model Log {
id Int @id @default(autoincrement())
level String
message String
meta Json
timestamp DateTime @default(now())
}

View File

@@ -0,0 +1,17 @@
model Message {
id String @id @default(cuid())
attachments Attachment[]
reply_to_id String? // Nullable because not all messages are replies
reply_to Message? @relation("MessageReplies", fields: [reply_to_id], references: [id])
replies Message[] @relation("MessageReplies")
content String
sender_id String
conversation_id String
sentAt DateTime @default(now())
sender Benutzer @relation(fields: [sender_id], references: [id])
conversation Conversation @relation(fields: [conversation_id], references: [id])
}

View File

@@ -0,0 +1,20 @@
model Objekt {
id String @id @unique @db.VarChar(11)
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_id String?
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id])
aufnahmen Aufnahme[]
anteilshaber Anteilshaber[]
}

View File

@@ -0,0 +1,11 @@
model Participant {
id String @id @default(cuid())
benutzer_id String
conversation_id String
joined_at DateTime @default(now())
benutzer Benutzer @relation(fields: [benutzer_id], references: [id])
conversation Conversation @relation(fields: [conversation_id], references: [id])
@@unique([benutzer_id, conversation_id])
}

View 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
}

View File

@@ -0,0 +1,73 @@
enum Bezahlmethoden {
paypal
giropay
sofort
creditcard
rechnung
}
enum Rechnungsstatus {
open
canceled
pending
authorized
expired
failed
paid
}
enum AusweisTyp {
Standard
standardXL
Beratung
BeratungXL
Offline
OfflineXL
}
model Rechnung {
id String @id @unique @db.VarChar(11)
alte_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[]
betrag Float
erstellt_am DateTime @default(now())
bezahlt_am DateTime?
storniert_am DateTime?
transaktions_referenz String? @db.VarChar
partner_code String?
lex_office_id String?
created_at DateTime @default(now())
updated_at DateTime @updatedAt @default(now())
benutzer_id String
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?
}

View File

@@ -0,0 +1,13 @@
model RefreshTokens {
id Int @id @default(autoincrement())
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
benutzer_id String
user Benutzer @relation(fields: [benutzer_id], references: [id], onDelete: Cascade)
}

View File

@@ -0,0 +1,29 @@
enum TicketStatus {
OFFEN
IN_BEARBEITUNG
IN_WARTESCHLEIFE
GESCHLOSSEN
GELOEST
}
model Tickets {
id String @id @unique @db.VarChar(11)
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 String?
prioritaet Int? @default(0)
// Relationen
benutzer_id String?
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], name: "ErstellteTickets")
bearbeiter Benutzer? @relation(fields: [bearbeiter_id], references: [id], name: "BearbeiteteTickets")
}

View File

@@ -0,0 +1,15 @@
enum UnterlagenKategorie {
Grundriss
Sonstiges
}
model Unterlage {
id String @id @unique @db.VarChar(11)
name String?
kategorie String?
mime String
aufnahme_id String?
aufnahme Aufnahme? @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}

View File

@@ -0,0 +1,103 @@
model VerbrauchsausweisGewerbe {
id String @id @unique @db.VarChar(11)
alte_ausweis_id Int?
ausstellgrund Ausstellgrund?
registriernummer String? @db.VarChar
zusaetzliche_heizquelle Boolean?
einheit_1 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?
/// @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)
/// @zod.describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes")
energieeffizienzklasse String? @db.VarChar(5)
/// @zod.describe("Datum an dem der Aussteller den Ausweis ausgestellt hat")
ausstellungsdatum DateTime?
boxpruefung Boolean? @default(false)
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(255)
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?
/// @zod.describe("Falls der Warmwasser Anteil am Verbrauch bekannt ist, sollte dieser Wert auf true stehen")
warmwasser_anteil_bekannt 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)
created_at DateTime @default(now())
updated_at DateTime @updatedAt @default(now())
ausweistyp AusweisTyp @default(Standard)
ausweisart Ausweisart @default(VerbrauchsausweisGewerbe)
pruefpunkt_heizungsalter Boolean? @default(false)
pruefpunkt_verbrauch_niedrig Boolean? @default(false)
pruefpunkt_verbrauch_hoch Boolean? @default(false)
pruefpunkt_verbrauch_null Boolean? @default(false)
pruefpunkt_verbrauch_abweichung Boolean? @default(false)
pruefpunkt_wohnflaeche_einheiten Boolean? @default(false)
pruefpunkt_strom_null Boolean? @default(false)
pruefpunkt_strom_abweichung Boolean? @default(false)
pruefpunkt_plz Boolean? @default(false)
pruefpunkt_heizungsanlage Boolean? @default(false)
pruefpunkt_anteil_warmwasser Boolean? @default(false)
pruefpunkt_wohnflaeche Boolean? @default(false)
pruefpunkt_geometrie Boolean? @default(false)
pruefpunkt_fenster Boolean? @default(false)
benutzer_id String?
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
rechnung_id String? @unique
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
/// @zod.describe("ID der korrespondierenden Gebäudeaufnahme")
aufnahme_id String @unique
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}

View File

@@ -0,0 +1,108 @@
model VerbrauchsausweisWohnen {
/// @zod.describe("ID des Ausweises")
id String @id @unique @db.VarChar(11)
alte_ausweis_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)
/// @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)
/// @zod.describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes")
energieeffizienzklasse String? @db.VarChar(5)
/// @zod.describe("Datum an dem der Aussteller den Ausweis ausgestellt hat")
ausstellungsdatum DateTime?
boxpruefung Boolean? @default(false)
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("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)
ausweistyp AusweisTyp @default(Standard)
ausweisart Ausweisart @default(VerbrauchsausweisWohnen)
created_at DateTime @default(now())
updated_at DateTime @updatedAt @default(now())
pruefpunkt_heizungsalter Boolean? @default(false)
pruefpunkt_verbrauch_niedrig Boolean? @default(false)
pruefpunkt_verbrauch_hoch Boolean? @default(false)
pruefpunkt_verbrauch_null Boolean? @default(false)
pruefpunkt_verbrauch_abweichung Boolean? @default(false)
pruefpunkt_wohnflaeche_einheiten Boolean? @default(false)
pruefpunkt_strom_null Boolean? @default(false)
pruefpunkt_strom_abweichung Boolean? @default(false)
pruefpunkt_plz Boolean? @default(false)
pruefpunkt_heizungsanlage Boolean? @default(false)
pruefpunkt_anteil_warmwasser Boolean? @default(false)
pruefpunkt_wohnflaeche Boolean? @default(false)
pruefpunkt_geometrie Boolean? @default(false)
pruefpunkt_fenster Boolean? @default(false)
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
benutzer_id String?
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
rechnung_id String? @unique
rechnung Rechnung? @relation(fields: [rechnung_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
/// @zod.describe("ID der korrespondierenden Gebäudeaufnahme")
aufnahme_id String @unique
aufnahme Aufnahme @relation(fields: [aufnahme_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
}

View 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 String
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")
}

View 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[]
}

View File

@@ -0,0 +1,52 @@
generator client {
provider = "prisma-client-js"
binaryTargets = ["native", "debian-openssl-1.1.x"]
previewFeatures = ["prismaSchemaFolder"]
}
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"
}
datasource db {
provider = "postgresql"
url = env("POSTGRES_DATABASE_URL")
}
enum Ausstellgrund {
Neubau
Vermietung
Verkauf
Modernisierung
Sonstiges
}
enum Ausweisart {
VerbrauchsausweisWohnen
VerbrauchsausweisGewerbe
BedarfsausweisWohnen
BedarfsausweisGewerbe
GEGNachweisWohnen
GEGNachweisGewerbe
}
enum Service {
Telefonberatung
Aushang
Qualitaetsdruck
SameDay
}

View File

@@ -0,0 +1,11 @@
model tokens {
id Int @id(map: "PK_TOKENS") @default(autoincrement())
token String @db.VarChar(36)
user_id String
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")
}

384
prisma/seed.ts Normal file
View File

@@ -0,0 +1,384 @@
// 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",
id: "USADMIN1"
},
});
// 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",
id: "USUSER01"
},
});
// 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);
// }

92
public/effizienz-icon.svg Normal file
View File

@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="106.48949mm"
height="127.93927mm"
viewBox="0 0 106.48949 127.93927"
version="1.1"
id="svg1"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm" />
<defs
id="defs1" />
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-51.858335,-84.402082)">
<g
id="g9"
transform="matrix(0.26458333,0,0,0.26458333,51.858333,68.995396)">
<path
id="path3610"
d="m 0.02,129.3 v 59.43 h 250.93 l 21.58,-29.71 -21.65,-29.71 H 0.02 Z"
fill="#16a550" />
<path
id="path3612"
d="M 276.66,199.86 0.29,200.29 0,259.48 h 276.66 l 22.23,-29.42 -22.23,-30.21 v 0 z"
fill="#54cc4e" />
<path
id="path3614"
d="M 301.97,269.43 0,269.82 l 0.03,59.51 302.02,0.55 22.36,-30.23 -22.44,-30.23 v 0 z"
fill="#ffbc00" />
<path
id="path3616"
d="m 0,341.06 v 59.63 h 328.48 l 22.29,-29.81 -22.48,-29.81 H 0 Z"
fill="#ff5e0d" />
<path
id="path3618"
d="M 353.44,411.87 0.01,412.2 v 59.29 h 354.12 l 22.8,-29.81 z"
fill="#ff321d" />
<path
id="path3620"
d="m 0.02,482.15 v 59.63 l 379.93,-0.07 22.53,-29.76 -23.08,-29.76 z"
fill="#dd2238" />
<path
id="path3295"
d="m 0.02,58.23 v 61 H 224 l 22.32,-30.5 -22.39,-30.5 z"
fill="#128440" />
<path
d="M 45.88,103.36 43.77,96.42 H 33.15 l -2.11,6.94 H 24.38 L 34.67,74.1 h 7.55 l 10.32,29.26 z M 42.29,91.24 c -1.95,-6.29 -3.05,-9.84 -3.3,-10.66 -0.25,-0.82 -0.42,-1.47 -0.53,-1.95 -0.44,1.7 -1.69,5.91 -3.77,12.62 h 7.59 z"
fill="#ffffff"
id="path2" />
<path
d="m 24.51,144.44 h 9.07 c 4.13,0 7.13,0.59 9,1.76 1.87,1.18 2.8,3.05 2.8,5.61 0,1.74 -0.41,3.17 -1.23,4.29 -0.82,1.12 -1.9,1.79 -3.26,2.01 v 0.2 c 1.85,0.41 3.18,1.18 4,2.31 0.82,1.13 1.23,2.63 1.23,4.5 0,2.66 -0.96,4.73 -2.88,6.22 -1.92,1.49 -4.53,2.23 -7.82,2.23 h -10.9 v -29.14 z m 6.18,11.54 h 3.59 c 1.67,0 2.89,-0.26 3.64,-0.78 0.75,-0.52 1.13,-1.38 1.13,-2.57 0,-1.12 -0.41,-1.92 -1.23,-2.4 -0.82,-0.48 -2.11,-0.73 -3.88,-0.73 h -3.25 z m 0,4.9 v 7.59 h 4.03 c 1.7,0 2.96,-0.33 3.77,-0.98 0.81,-0.65 1.22,-1.65 1.22,-2.99 0,-2.42 -1.73,-3.63 -5.18,-3.63 H 30.7 Z"
fill="#ffffff"
id="path3" />
<path
d="m 37.77,219.84 c -2.33,0 -4.13,0.87 -5.4,2.62 -1.27,1.75 -1.91,4.18 -1.91,7.31 0,6.5 2.44,9.75 7.32,9.75 2.05,0 4.52,-0.51 7.43,-1.53 v 5.18 c -2.39,1 -5.06,1.49 -8.01,1.49 -4.24,0 -7.48,-1.29 -9.73,-3.86 -2.25,-2.57 -3.37,-6.26 -3.37,-11.07 0,-3.03 0.55,-5.68 1.65,-7.96 1.1,-2.28 2.69,-4.03 4.75,-5.24 2.07,-1.22 4.49,-1.82 7.27,-1.82 2.78,0 5.67,0.68 8.53,2.05 l -1.99,5.02 c -1.09,-0.52 -2.19,-0.97 -3.29,-1.36 -1.1,-0.39 -2.19,-0.58 -3.25,-0.58 z"
fill="#ffffff"
id="path5" />
<path
d="m 48.27,299.37 c 0,4.8 -1.37,8.47 -4.1,11.02 -2.73,2.55 -6.67,3.83 -11.83,3.83 h -8.25 v -29.14 h 9.15 c 4.76,0 8.45,1.26 11.08,3.77 2.63,2.51 3.95,6.02 3.95,10.52 z m -6.42,0.16 c 0,-6.26 -2.76,-9.39 -8.29,-9.39 h -3.29 v 18.98 h 2.65 c 5.95,0 8.93,-3.2 8.93,-9.59 z"
fill="#ffffff"
id="path6" />
<path
d="M 41.26,385.44 H 24.47 V 356.3 h 16.78 v 5.06 h -10.6 v 6.4 h 9.87 v 5.06 h -9.87 v 7.51 h 10.6 v 5.1 z"
fill="#ffffff"
id="path7" />
<path
d="m 30.59,456.25 h -6.08 v -29.14 h 16.7 v 5.06 H 30.59 v 7.51 h 9.89 v 5.04 h -9.89 v 11.52 z"
fill="#ffffff"
id="path8" />
<path
d="m 37.03,510.18 h 11.56 v 15.11 c -1.87,0.61 -3.64,1.04 -5.29,1.29 -1.65,0.25 -3.35,0.37 -5.07,0.37 -4.4,0 -7.76,-1.29 -10.08,-3.88 -2.32,-2.58 -3.48,-6.3 -3.48,-11.13 0,-4.83 1.35,-8.37 4.04,-11 2.69,-2.63 6.42,-3.95 11.19,-3.95 2.99,0 5.87,0.6 8.65,1.79 l -2.05,4.94 c -2.13,-1.06 -4.34,-1.59 -6.64,-1.59 -2.67,0 -4.81,0.9 -6.42,2.69 -1.61,1.79 -2.41,4.21 -2.41,7.24 0,3.03 0.65,5.58 1.94,7.25 1.29,1.67 3.18,2.5 5.65,2.5 1.29,0 2.6,-0.13 3.93,-0.4 v -6.08 h -5.52 v -5.14 z"
fill="#ffffff"
id="path9" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

75
public/fonts/Content.svg Normal file
View File

@@ -0,0 +1,75 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Copyright (C) 2017 by original authors @ fontello.com</metadata>
<defs>
<font id="t3_content" horiz-adv-x="1000" >
<font-face font-family="t3_content" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="search" unicode="&#xe101;" d="M643 386q0 103-73 176t-177 74-177-74-73-176 73-177 177-73 177 73 73 177z m286-465q0-29-22-50t-50-21q-30 0-50 21l-191 191q-100-69-223-69-80 0-153 31t-125 84-84 125-31 153 31 152 84 126 125 84 153 31 153-31 125-84 84-126 31-152q0-123-69-223l191-191q21-21 21-51z" horiz-adv-x="928.6" />
<glyph glyph-name="experte" unicode="&#xe102;" d="M571 457v-232q0-22-15-38t-38-16-38 16-16 38v196h-35v-509q0-25-19-44t-44-18-44 18-18 44v259h-36v-259q0-25-19-44t-44-18-44 18-18 44v509h-36v-196q0-22-15-38t-38-16-38 16-16 38v232q0 45 31 76t76 31h357q45 0 76-31t31-76z m-160 250q0-52-37-88t-88-37-89 37-36 88 36 89 89 36 88-36 37-89z" horiz-adv-x="571.4" />
<glyph glyph-name="linktipp" unicode="&#xe103;" d="M813 171q0 23-16 38l-116 116q-16 16-38 16-24 0-40-18 1-1 10-10t12-12 9-11 7-14 2-15q0-23-16-38t-38-16q-8 0-15 2t-14 7-11 9-12 12-10 10q-19-17-19-40 0-23 16-38l115-116q15-15 38-15 22 0 38 15l82 81q16 16 16 37z m-393 394q0 22-15 38l-115 115q-16 16-38 16-22 0-38-15l-82-82q-16-15-16-37 0-22 16-38l116-116q15-15 38-15 23 0 40 17-2 2-11 11t-12 12-8 10-7 14-2 16q0 22 15 38t38 15q9 0 16-2t14-7 11-8 12-12 10-11q18 17 18 41z m500-394q0-66-48-113l-82-81q-46-47-113-47-68 0-114 48l-115 115q-46 47-46 114 0 68 49 116l-49 49q-48-49-116-49-67 0-114 47l-116 116q-47 47-47 114t47 113l82 82q47 46 114 46 67 0 114-47l115-116q46-46 46-113 0-69-49-117l49-49q48 49 116 49 67 0 114-47l116-116q47-47 47-114z" horiz-adv-x="928.6" />
<glyph glyph-name="zitat" unicode="&#xe104;" d="M429 671v-392q0-58-23-111t-61-91-91-61-111-23h-36q-14 0-25 11t-11 25v71q0 15 11 25t25 11h36q59 0 101 42t42 101v17q0 23-16 38t-38 16h-125q-44 0-76 31t-31 76v214q0 45 31 76t76 32h214q45 0 76-32t32-76z m500 0v-392q0-58-23-111t-61-91-91-61-111-23h-36q-14 0-25 11t-11 25v71q0 15 11 25t25 11h36q59 0 101 42t42 101v17q0 23-16 38t-38 16h-125q-44 0-76 31t-31 76v214q0 45 31 76t76 32h214q45 0 76-32t32-76z" horiz-adv-x="928.6" />
<glyph glyph-name="medien" unicode="&#xe105;" d="M994 331q0 19-30 19h-607q-22 0-48-12t-39-29l-164-203q-11-13-11-22 0-20 30-20h607q23 0 48 13t40 29l164 203q10 12 10 22z m-637 90h429v90q0 22-16 38t-38 15h-321q-23 0-38 16t-16 38v36q0 22-15 38t-38 15h-179q-22 0-38-15t-16-38v-476l143 175q25 30 65 49t78 19z m708-90q0-35-25-67l-165-203q-24-30-65-49t-78-19h-607q-51 0-88 37t-37 88v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h303q52 0 88-37t37-88v-90h107q30 0 56-13t37-40q8-17 8-37z" horiz-adv-x="1071.4" />
<glyph glyph-name="newsletter" unicode="&#xe106;" d="M984 844q19-13 15-36l-142-857q-3-16-18-25-8-5-18-5-6 0-13 3l-294 120-166-182q-10-12-27-12-7 0-12 2-11 4-17 13t-6 21v252l-264 108q-20 8-22 30-2 22 18 33l928 536q20 12 38-1z m-190-837l123 739-800-462 187-76 482 356-267-444z" horiz-adv-x="1000" />
<glyph glyph-name="anleitung" unicode="&#xe107;" d="M213-54q0-45-31-70t-75-26q-60 0-96 37l31 49q28-25 60-25 16 0 28 8t12 24q0 35-59 31l-14 31q4 6 18 24t24 31 20 21v1q-9 0-27-1t-27 0v-30h-59v85h186v-49l-53-65q28-6 45-27t17-49z m1 350v-89h-202q-4 20-4 30 0 29 14 52t31 38 37 27 31 24 14 25q0 14-9 22t-22 7q-25 0-45-32l-47 33q13 28 40 44t59 16q40 0 68-23t28-63q0-28-19-51t-42-36-42-28-20-30h71v34h59z m786-178v-107q0-7-5-13t-13-5h-678q-8 0-13 5t-5 13v107q0 8 5 13t13 5h678q7 0 13-6t5-12z m-786 502v-56h-187v56h60q0 22 0 67t1 68v7h-1q-5-10-28-30l-40 42 76 71h59v-225h60z m786-216v-108q0-7-5-12t-13-5h-678q-8 0-13 5t-5 12v108q0 7 5 12t13 5h678q7 0 13-5t5-12z m0 285v-107q0-7-5-12t-13-6h-678q-8 0-13 6t-5 12v107q0 8 5 13t13 5h678q7 0 13-5t5-13z" horiz-adv-x="1000" />
<glyph glyph-name="rechner" unicode="&#xe108;" d="M214-7q0 29-21 50t-50 21-51-21-21-50 21-51 51-21 50 21 21 51z m215 0q0 29-21 50t-51 21-50-21-21-50 21-51 50-21 51 21 21 51z m-215 214q0 30-21 51t-50 21-51-21-21-51 21-50 51-21 50 21 21 50z m429-214q0 29-21 50t-51 21-50-21-21-50 21-51 50-21 51 21 21 51z m-214 214q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m-215 214q0 30-21 51t-50 21-51-21-21-51 21-50 51-21 50 21 21 50z m429-214q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m-214 214q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m428-428v214q0 29-21 50t-50 22-50-22-22-50v-214q0-29 22-50t50-22 50 22 21 50z m-214 428q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m214 179v143q0 14-10 25t-26 11h-714q-14 0-25-11t-11-25v-143q0-14 11-25t25-11h714q15 0 26 11t10 25z m0-179q0 30-21 51t-50 21-51-21-21-51 21-50 51-21 50 21 21 50z m72 358v-858q0-29-22-50t-50-21h-786q-29 0-50 21t-21 50v858q0 29 21 50t50 21h786q29 0 50-21t22-50z" horiz-adv-x="1000" />
<glyph glyph-name="teilen" unicode="&#xe109;" d="M650 200q62 0 106-43t44-107q0-62-44-106t-106-44-106 44-44 106q0 6 1 14t1 12l-260 156q-42-32-92-32-62 0-106 44t-44 106 44 106 106 44q54 0 92-30l260 156q0 4-1 12t-1 12q0 62 44 106t106 44 106-43 44-107q0-62-44-106t-106-44q-52 0-90 32l-262-156q2-8 2-26 0-16-2-24l262-156q36 30 90 30z" horiz-adv-x="800" />
<glyph glyph-name="circle" unicode="&#xe110;" d="M857 350q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
<glyph glyph-name="plus" unicode="&#xe111;" d="M786 439v-107q0-22-16-38t-38-15h-232v-233q0-22-16-37t-38-16h-107q-22 0-38 16t-15 37v233h-232q-23 0-38 15t-16 38v107q0 23 16 38t38 16h232v232q0 22 15 38t38 16h107q23 0 38-16t16-38v-232h232q23 0 38-16t16-38z" horiz-adv-x="785.7" />
<glyph glyph-name="minus" unicode="&#xe112;" d="M786 439v-107q0-22-16-38t-38-15h-678q-23 0-38 15t-16 38v107q0 23 16 38t38 16h678q23 0 38-16t16-38z" horiz-adv-x="785.7" />
<glyph glyph-name="rss" unicode="&#xe113;" d="M214 100q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m286-69q1-15-9-26-10-12-27-12h-75q-14 0-24 9t-11 23q-12 128-103 219t-219 103q-14 1-23 11t-9 24v75q0 16 12 26 9 10 24 10h3q89-7 170-45t145-101q63-63 101-145t45-171z m286-1q1-15-10-26-10-11-26-11h-80q-14 0-25 10t-10 23q-7 120-57 228t-129 188-188 129-227 57q-14 1-24 11t-10 24v80q0 16 11 26 10 10 25 10h1q147-8 280-67t238-164q104-104 164-238t67-280z" horiz-adv-x="785.7" />
<glyph glyph-name="pin" unicode="&#xe114;" d="M268 368v250q0 8-5 13t-13 5-13-5-5-13v-250q0-8 5-13t13-5 13 5 5 13z m375-197q0-14-11-25t-25-10h-239l-29-270q-1-7-6-11t-11-5h-1q-15 0-17 15l-43 271h-225q-15 0-25 10t-11 25q0 69 44 124t99 55v286q-29 0-50 21t-22 50 22 50 50 22h357q29 0 50-22t21-50-21-50-50-21v-286q55 0 99-55t44-124z" horiz-adv-x="642.9" />
<glyph glyph-name="spin1" unicode="&#xe115;" d="M496 850c-176 0-331-90-421-226-18-27-33-55-46-85-12-29-21-60-28-92 0 0 0-1 0-1l0 0 0 0c0-1 0-2 0-2 0-7 5-12 11-12l101 0c5 0 10 4 11 9 29 113 109 206 214 253 20 10 41 17 63 23 31 7 62 11 95 11l0 0 0 0 0 0c25 0 50-2 74-7 5-1 10-2 14-3 6-1 10-3 14-4l0 0c5-1 11 1 13 6l51 87c0 0 1 1 1 2 2 6-1 13-7 15-22 7-43 13-65 17-5 1-9 1-13 2-27 5-54 7-82 7l0 0 0 0z m327-114c-5 0-9-2-11-6l-50-87c-3-4-2-10 2-14 29-29 54-63 73-101 4-7 7-14 11-22 19-46 30-97 30-151l0 0 0 0c0-77-22-149-62-209-7-11-15-23-24-33-9-11-18-21-28-31l0 0 0 0 0 0c-4-4-5-10-2-14l50-87c0-1 1-2 2-3 4-5 11-5 16-1 58 52 104 117 134 190 6 15 11 29 15 44 14 46 21 94 21 144 0 108-34 209-92 291-11 16-23 31-37 46-13 14-26 28-41 41l0 0c-1 1-1 1-2 1-2 1-4 2-5 2z m-811-468l0 0c-1 0-2 0-3 0-6-1-10-8-9-14 34-166 149-302 302-366 30-12 61-21 93-28 32-6 66-10 100-10l0 0 0 0c40 0 79 5 117 14 7 1 14 3 22 5 6 2 13 5 20 7 1 0 2 1 3 1 6 3 8 10 4 16l-50 87c-3 5-8 7-13 6-14-4-28-7-42-9-3-1-6-1-8-2-18-2-35-3-53-3l0 0 0 0c-128 0-242 63-311 160-1 0-1 0-1 0-13 19-25 40-35 61-10 21-18 43-24 65-1 6-6 10-11 10l-101 0z" horiz-adv-x="1000" />
<glyph glyph-name="zoom" unicode="&#xe116;" d="M0 403q0 185 131 316t316 131 318-131 131-316q0-141-82-256l186-186-111-111-186 186q-115-82-256-82-185 0-316 131t-131 318z m127 0q0-133 94-227t226-93 227 93 94 227-94 225-227 93-226-93-94-225z m129-65l0 127 129 0 0 129 127 0 0-129 129 0 0-127-129 0 0-129-127 0 0 129-129 0z" horiz-adv-x="1000" />
<glyph glyph-name="bookmark" unicode="&#xe117;" d="M643 707h-572v-693l237 227 49 47 50-47 236-227v693z m7 72q12 0 24-5 19-8 29-23t11-35v-719q0-19-11-35t-29-23q-10-4-24-4-27 0-47 18l-246 236-246-236q-20-19-46-19-13 0-25 5-18 7-29 23t-11 35v719q0 19 11 35t29 23q12 5 25 5h585z" horiz-adv-x="714.3" />
<glyph glyph-name="fazit" unicode="&#xe118;" d="M464 797l447-446-447-448-157 160 175 176-464 0 0 224 464 0-175 176z" horiz-adv-x="928" />
<glyph glyph-name="close" unicode="&#xe119;" d="M724 112q0-22-15-38l-76-76q-16-15-38-15t-38 15l-164 165-164-165q-16-15-38-15t-38 15l-76 76q-16 16-16 38t16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38z" horiz-adv-x="785.7" />
<glyph glyph-name="check" unicode="&#xe120;" d="M933 534q0-22-16-38l-404-404-76-76q-16-15-38-15t-38 15l-76 76-202 202q-15 16-15 38t15 38l76 76q16 16 38 16t38-16l164-165 366 367q16 16 38 16t38-16l76-76q16-15 16-38z" horiz-adv-x="1000" />
<glyph glyph-name="sparen" unicode="&#xe121;" d="M545 121l19-89q2-7-1-13t-10-8l-3 0q-2-1-6-2t-9-3-12-3-14-3-16-2-19-3-21-2-21 0q-131 0-228 73t-133 196h-53q-7 0-13 5t-5 13v63q0 7 5 12t13 6h37q-1 31 0 58h-37q-8 0-13 5t-5 13v64q0 8 5 13t13 5h55q37 117 135 188t224 72q57 0 108-13 6-2 11-9 4-6 2-13l-24-89q-2-7-8-11t-13-1l-2 1q-3 0-7 1l-10 2t-12 2-15 2-16 1-16 1q-71 0-126-36t-84-98h261q9 0 14-7 6-7 4-15l-13-63q-3-15-18-15h-273q-1-20 0-58h257q8 0 13-7 5-7 4-15l-14-63q-1-6-6-10t-11-4h-216q27-65 84-104t127-38q10 0 20 1t19 2 16 2 14 3 10 3l7 1 3 2q7 2 14-2 7-3 9-11z" horiz-adv-x="571.4" />
<glyph glyph-name="info-circled" unicode="&#xe122;" d="M571 82v89q0 8-5 13t-12 5h-54v286q0 8-5 13t-13 5h-178q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h53v-179h-53q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h250q7 0 12 5t5 13z m-71 500v89q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h107q8 0 13 5t5 13z m357-232q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
<glyph glyph-name="attention" unicode="&#xe123;" d="M571 83v106q0 8-5 13t-12 5h-108q-7 0-12-5t-5-13v-106q0-8 5-13t12-6h108q7 0 12 6t5 13z m-1 208l10 257q0 6-5 10-7 6-14 6h-122q-6 0-14-6-5-4-5-12l9-255q0-5 6-9t13-3h103q8 0 14 3t5 9z m-7 522l428-786q20-35-1-70-9-17-26-26t-35-10h-858q-18 0-35 10t-26 26q-21 35-1 70l429 786q9 17 26 27t36 10 36-10 27-27z" horiz-adv-x="1000" />
<glyph glyph-name="youtube-play" unicode="&#xe124;" d="M397 221l270 139-270 141v-280z m103 481q94 0 181-3t128-5l41-2q0 0 9-1t13-2 13-2 16-5 16-7 17-11 16-15q4-3 9-10t16-33 15-56q4-36 7-76t3-64v-98q1-81-10-162-4-30-14-55t-18-35l-8-9q-7-8-16-15t-17-10-16-7-16-5-13-2-13-2-9-1q-140-11-350-11-115 2-201 4t-111 4l-28 3-20 2q-20 3-30 5t-29 12-31 23q-4 3-9 10t-16 33-15 56q-4 36-7 76t-3 64v98q-1 81 10 162 4 31 14 55t18 35l8 9q8 9 16 15t17 11 16 7 16 5 13 2 13 2 9 1q140 10 350 10z" horiz-adv-x="1000" />
<glyph glyph-name="download" unicode="&#xe125;" d="M714 100q0 15-10 25t-25 11-25-11-11-25 11-25 25-11 25 11 10 25z m143 0q0 15-10 25t-26 11-25-11-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-37t-38-16h-821q-23 0-38 16t-16 37v179q0 22 16 38t38 16h259l75-76q33-32 76-32t76 32l76 76h259q22 0 38-16t16-38z m-182 318q10-23-8-39l-250-250q-10-11-25-11t-25 11l-250 250q-17 16-8 39 10 21 33 21h143v250q0 15 11 25t25 11h143q14 0 25-11t10-25v-250h143q24 0 33-21z" horiz-adv-x="928.6" />
<glyph glyph-name="praxistipp" unicode="&#xe126;" d="M411 529q0-8-6-13t-12-5-13 5-5 13q0 25-30 39t-59 14q-7 0-13 5t-5 13 5 13 13 5q28 0 55-9t49-30 21-50z m89 0q0 40-19 74t-50 57-69 35-76 12-76-12-69-35-50-57-20-74q0-57 38-101 6-6 17-18t17-19q72-85 79-166h127q8 81 79 166 6 6 17 19t17 18q38 44 38 101z m71 0q0-87-57-150-25-27-42-48t-33-54-19-60q26-15 26-46 0-20-13-35 13-15 13-36 0-29-25-45 8-13 8-26 0-26-18-40t-43-14q-11-25-34-39t-48-15-49 15-33 39q-26 0-44 14t-17 40q0 13 7 26-25 16-25 45 0 21 14 36-14 15-14 35 0 31 26 46-2 28-19 60t-33 54-41 48q-58 63-58 150 0 55 25 103t65 79 92 49 104 19 104-19 91-49 66-79 24-103z" horiz-adv-x="571.4" />
<glyph glyph-name="mail" unicode="&#xe127;" d="M929 11v428q-18-20-39-36-149-115-238-189-28-24-46-37t-48-28-57-13h-2q-26 0-57 13t-48 28-46 37q-88 74-238 189-21 16-39 36v-428q0-7 6-13t12-5h822q7 0 12 5t6 13z m0 586v14t-1 7-1 7-3 5-5 4-8 2h-822q-7 0-12-6t-6-12q0-94 83-159 107-84 223-176 4-3 20-17t25-21 25-17 28-16 24-5h2q11 0 24 5t28 16 25 17 25 21 20 17q116 92 224 176 30 24 56 65t26 73z m71 21v-607q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v607q0 37 26 63t63 26h822q37 0 63-26t26-63z" horiz-adv-x="1000" />
<glyph glyph-name="star" unicode="&#xe128;" d="M929 489q0-12-15-27l-202-197 48-279q0-4 0-12 0-11-6-19t-17-9q-10 0-22 7l-251 132-250-132q-12-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27 0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26z" horiz-adv-x="928.6" />
<glyph glyph-name="star-empty" unicode="&#xe129;" d="M635 290l170 166-235 34-106 213-105-213-236-34 171-166-41-235 211 111 211-111z m294 199q0-12-15-27l-202-197 48-279q0-4 0-12 0-28-23-28-10 0-22 7l-251 132-250-132q-12-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27 0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26z" horiz-adv-x="928.6" />
<glyph glyph-name="comment-empty" unicode="&#xe130;" d="M500 636q-114 0-213-39t-157-105-59-142q0-62 40-119t113-98l48-28-15-53q-13-51-39-97 85 36 154 96l24 21 32-3q38-5 72-5 114 0 213 39t157 105 59 142-59 142-157 105-213 39z m500-286q0-97-67-179t-182-130-251-48q-39 0-81 4-110-97-257-135-27-8-63-12h-3q-8 0-15 6t-9 15v1q-2 2 0 6t1 6 2 5l4 5t4 5 4 5q4 5 17 19t20 22 17 22 18 28 15 33 15 42q-88 50-138 123t-51 157q0 97 67 179t182 130 251 48 251-48 182-130 67-179z" horiz-adv-x="1000" />
<glyph glyph-name="print" unicode="&#xe131;" d="M214-7h500v143h-500v-143z m0 357h500v214h-89q-22 0-38 16t-16 38v89h-357v-357z m643-36q0 15-10 25t-26 11-25-11-10-25 10-25 25-10 26 10 10 25z m72 0v-232q0-7-6-12t-12-6h-125v-89q0-22-16-38t-38-16h-536q-22 0-37 16t-16 38v89h-125q-7 0-13 6t-5 12v232q0 44 32 76t75 31h36v304q0 22 16 38t37 16h375q23 0 50-12t42-26l85-85q15-16 27-43t11-49v-143h35q45 0 76-31t32-76z" horiz-adv-x="928.6" />
<glyph glyph-name="calendar-empty" unicode="&#xe132;" d="M71-79h786v572h-786v-572z m215 679v161q0 8-5 13t-13 5h-36q-8 0-13-5t-5-13v-161q0-8 5-13t13-5h36q8 0 13 5t5 13z m428 0v161q0 8-5 13t-13 5h-35q-8 0-13-5t-5-13v-161q0-8 5-13t13-5h35q8 0 13 5t5 13z m215 36v-715q0-29-22-50t-50-21h-786q-29 0-50 21t-21 50v715q0 29 21 50t50 21h72v54q0 37 26 63t63 26h36q37 0 63-26t26-63v-54h214v54q0 37 27 63t63 26h35q37 0 64-26t26-63v-54h71q29 0 50-21t22-50z" horiz-adv-x="928.6" />
</font>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

BIN
public/fonts/Content.woff Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 2.4 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 2.4 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 3.1 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 3.1 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.2 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.2 MiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 582 KiB

Some files were not shown because too many files have changed in this diff Show More