GEG Nachweis
This commit is contained in:
47
bun.lock
47
bun.lock
@@ -39,6 +39,7 @@
|
||||
"radix-svelte-icons": "^1.0.0",
|
||||
"sass": "^1.83.4",
|
||||
"siema": "^1.5.1",
|
||||
"soap": "^1.1.8",
|
||||
"svelte": "^3.59.2",
|
||||
"svelte-dialogs": "^1.2.2",
|
||||
"svelte-preprocess": "^5.1.4",
|
||||
@@ -599,6 +600,10 @@
|
||||
|
||||
"@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="],
|
||||
|
||||
"@xmldom/is-dom-node": ["@xmldom/is-dom-node@1.0.1", "", {}, "sha512-CJDxIgE5I0FH+ttq/Fxy6nRpxP70+e2O048EPe85J2use3XKdatVM7dDVvFNjQudd9B49NPoZ+8PG49zj4Er8Q=="],
|
||||
|
||||
"@xmldom/xmldom": ["@xmldom/xmldom@0.8.10", "", {}, "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw=="],
|
||||
|
||||
"abbrev": ["abbrev@1.1.1", "", {}, "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="],
|
||||
|
||||
"accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="],
|
||||
@@ -653,6 +658,8 @@
|
||||
|
||||
"array-union": ["array-union@2.1.0", "", {}, "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="],
|
||||
|
||||
"asap": ["asap@2.0.6", "", {}, "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="],
|
||||
|
||||
"asn1": ["asn1@0.2.6", "", { "dependencies": { "safer-buffer": "~2.1.0" } }, "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ=="],
|
||||
|
||||
"assert-plus": ["assert-plus@1.0.0", "", {}, "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="],
|
||||
@@ -681,6 +688,10 @@
|
||||
|
||||
"aws4": ["aws4@1.13.2", "", {}, "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw=="],
|
||||
|
||||
"axios": ["axios@1.7.9", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } }, "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw=="],
|
||||
|
||||
"axios-ntlm": ["axios-ntlm@1.4.3", "", { "dependencies": { "axios": "^1.7.9", "des.js": "^1.1.0", "dev-null": "^0.1.1", "js-md4": "^0.3.2" } }, "sha512-CS6WE8chZpEDKxv4IFwr5zcG7InMC6Ek0aj2n2tHauBh+8KiYVC4qMn3N2arjR5tnyILQuTGlI0mc83hgWxS4Q=="],
|
||||
|
||||
"axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="],
|
||||
|
||||
"babel-runtime": ["babel-runtime@6.26.0", "", { "dependencies": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" } }, "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g=="],
|
||||
@@ -897,6 +908,8 @@
|
||||
|
||||
"dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="],
|
||||
|
||||
"des.js": ["des.js@1.1.0", "", { "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" } }, "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg=="],
|
||||
|
||||
"destr": ["destr@2.0.3", "", {}, "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ=="],
|
||||
|
||||
"destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="],
|
||||
@@ -907,10 +920,14 @@
|
||||
|
||||
"deterministic-object-hash": ["deterministic-object-hash@2.0.2", "", { "dependencies": { "base-64": "^1.0.0" } }, "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ=="],
|
||||
|
||||
"dev-null": ["dev-null@0.1.1", "", {}, "sha512-nMNZG0zfMgmdv8S5O0TM5cpwNbGKRGPCxVsr0SmA3NZZy9CYBbuNLL0PD3Acx9e5LIUgwONXtM9kM6RlawPxEQ=="],
|
||||
|
||||
"devalue": ["devalue@5.1.1", "", {}, "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw=="],
|
||||
|
||||
"devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="],
|
||||
|
||||
"dezalgo": ["dezalgo@1.0.4", "", { "dependencies": { "asap": "^2.0.0", "wrappy": "1" } }, "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig=="],
|
||||
|
||||
"dfa": ["dfa@1.2.0", "", {}, "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q=="],
|
||||
|
||||
"didyoumean": ["didyoumean@1.2.2", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="],
|
||||
@@ -1069,6 +1086,8 @@
|
||||
|
||||
"flattie": ["flattie@1.1.1", "", {}, "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ=="],
|
||||
|
||||
"follow-redirects": ["follow-redirects@1.15.9", "", {}, "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="],
|
||||
|
||||
"fontkit": ["fontkit@2.0.4", "", { "dependencies": { "@swc/helpers": "^0.5.12", "brotli": "^1.3.2", "clone": "^2.1.2", "dfa": "^1.2.0", "fast-deep-equal": "^3.1.3", "restructure": "^3.0.0", "tiny-inflate": "^1.0.3", "unicode-properties": "^1.4.0", "unicode-trie": "^2.0.0" } }, "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g=="],
|
||||
|
||||
"foreground-child": ["foreground-child@3.3.0", "", { "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" } }, "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg=="],
|
||||
@@ -1079,6 +1098,8 @@
|
||||
|
||||
"form-render": ["form-render@2.5.2", "", { "dependencies": { "@ant-design/icons": "^4.0.2", "ahooks": "^3.7.5", "async-validator": "^3.5.1", "classnames": "^2.3.1", "color": "^3.1.2", "dayjs": "^1.11.7", "lodash-es": "^4.17.21", "rc-color-picker": "^1.2.6", "virtualizedtableforantd4": "^1.1.2", "zustand": "^4.1.5" }, "peerDependencies": { "antd": "4.x || 5.x", "react": ">=16.9.0", "react-dom": ">=16.9.0" } }, "sha512-pkDNK+n2CZt4Mz05Poq5+N9XpS9vmctTCPVHeadhypCbn7g+uTBYLWy7DWR02PyRVwP2YtKxSMj1wMn0SbnjNQ=="],
|
||||
|
||||
"formidable": ["formidable@3.5.2", "", { "dependencies": { "dezalgo": "^1.0.4", "hexoid": "^2.0.0", "once": "^1.4.0" } }, "sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg=="],
|
||||
|
||||
"forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="],
|
||||
|
||||
"fraction.js": ["fraction.js@4.3.7", "", {}, "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="],
|
||||
@@ -1113,7 +1134,7 @@
|
||||
|
||||
"get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
|
||||
|
||||
"get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="],
|
||||
"get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="],
|
||||
|
||||
"getopts": ["getopts@2.3.0", "", {}, "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA=="],
|
||||
|
||||
@@ -1175,6 +1196,8 @@
|
||||
|
||||
"hastscript": ["hastscript@9.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0" } }, "sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw=="],
|
||||
|
||||
"hexoid": ["hexoid@2.0.0", "", {}, "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw=="],
|
||||
|
||||
"hotkeys-js": ["hotkeys-js@3.13.9", "", {}, "sha512-3TRCj9u9KUH6cKo25w4KIdBfdBfNRjfUwrljCLDC2XhmPDG0SjAZFcFZekpUZFmXzfYoGhFDcdx2gX/vUVtztQ=="],
|
||||
|
||||
"html-entities": ["html-entities@2.5.2", "", {}, "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA=="],
|
||||
@@ -1287,6 +1310,8 @@
|
||||
|
||||
"js-interpolate": ["js-interpolate@1.3.2", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-fIwAAEPJ1co7gUTZOozfONT130xVK3prHdghR57lbZvD+pLIEJ7vPlySSEMuhdu0iHqp45GcymWQ48vWAZ7haA=="],
|
||||
|
||||
"js-md4": ["js-md4@0.3.2", "", {}, "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA=="],
|
||||
|
||||
"js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],
|
||||
|
||||
"js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="],
|
||||
@@ -1529,6 +1554,8 @@
|
||||
|
||||
"min-indent": ["min-indent@1.0.1", "", {}, "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg=="],
|
||||
|
||||
"minimalistic-assert": ["minimalistic-assert@1.0.1", "", {}, "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="],
|
||||
|
||||
"minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="],
|
||||
|
||||
"minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="],
|
||||
@@ -1923,6 +1950,8 @@
|
||||
|
||||
"sass": ["sass@1.83.4", "", { "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", "source-map-js": ">=0.6.2 <2.0.0" }, "optionalDependencies": { "@parcel/watcher": "^2.4.1" }, "bin": { "sass": "sass.js" } }, "sha512-B1bozCeNQiOgDcLd33e2Cs2U60wZwjUUXzh900ZyQF5qUasvMdDZYbQ566LJu7cqR+sAHlAfO6RMkaID5s6qpA=="],
|
||||
|
||||
"sax": ["sax@1.4.1", "", {}, "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg=="],
|
||||
|
||||
"scheduler": ["scheduler@0.19.1", "", { "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" } }, "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA=="],
|
||||
|
||||
"screenfull": ["screenfull@5.2.0", "", {}, "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA=="],
|
||||
@@ -1979,6 +2008,8 @@
|
||||
|
||||
"slice-ansi": ["slice-ansi@3.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" } }, "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ=="],
|
||||
|
||||
"soap": ["soap@1.1.8", "", { "dependencies": { "axios": "^1.7.9", "axios-ntlm": "^1.4.2", "debug": "^4.4.0", "formidable": "^3.5.2", "get-stream": "^6.0.1", "lodash": "^4.17.21", "sax": "^1.4.1", "strip-bom": "^3.0.0", "whatwg-mimetype": "4.0.0", "xml-crypto": "^6.0.0" } }, "sha512-fDNGyGsPkQP3bZX/366Ud5Kpjo9mCMh7ZKYIc3uipBEPPM2ZqCNkv1Z2/w0qpzpYFLL7do8WWwVUAjAwuUe1AQ=="],
|
||||
|
||||
"sorcery": ["sorcery@0.11.1", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.14", "buffer-crc32": "^1.0.0", "minimist": "^1.2.0", "sander": "^0.5.0" }, "bin": { "sorcery": "bin/sorcery" } }, "sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ=="],
|
||||
|
||||
"source-map": ["source-map@0.7.4", "", {}, "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="],
|
||||
@@ -2191,6 +2222,8 @@
|
||||
|
||||
"webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="],
|
||||
|
||||
"whatwg-mimetype": ["whatwg-mimetype@4.0.0", "", {}, "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="],
|
||||
|
||||
"whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="],
|
||||
|
||||
"which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
|
||||
@@ -2211,6 +2244,10 @@
|
||||
|
||||
"wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
|
||||
|
||||
"xml-crypto": ["xml-crypto@6.0.0", "", { "dependencies": { "@xmldom/is-dom-node": "^1.0.1", "@xmldom/xmldom": "^0.8.10", "xpath": "^0.0.33" } }, "sha512-L3RgnkaDrHaYcCnoENv4Idzt1ZRj5U1z1BDH98QdDTQfssScx8adgxhd9qwyYo+E3fXbQZjEQH7aiXHLVgxGvw=="],
|
||||
|
||||
"xpath": ["xpath@0.0.33", "", {}, "sha512-NNXnzrkDrAzalLhIUc01jO2mOzXGXh1JwPgkihcLLzw98c0WgYDmmjSh1Kl3wzaxSVWMuA+fe0WTWOBDWCBmNA=="],
|
||||
|
||||
"xxhash-wasm": ["xxhash-wasm@1.1.0", "", {}, "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA=="],
|
||||
|
||||
"yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="],
|
||||
@@ -2285,6 +2322,8 @@
|
||||
|
||||
"anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
|
||||
|
||||
"axios/proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="],
|
||||
|
||||
"babel-runtime/regenerator-runtime": ["regenerator-runtime@0.11.1", "", {}, "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="],
|
||||
|
||||
"body-parser/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
|
||||
@@ -2315,12 +2354,16 @@
|
||||
|
||||
"eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@2.1.0", "", {}, "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw=="],
|
||||
|
||||
"execa/get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="],
|
||||
|
||||
"express/cookie": ["cookie@0.7.1", "", {}, "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w=="],
|
||||
|
||||
"express/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
|
||||
|
||||
"express/send": ["send@0.19.0", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "2.4.1", "range-parser": "~1.2.1", "statuses": "2.0.1" } }, "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw=="],
|
||||
|
||||
"extract-zip/get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="],
|
||||
|
||||
"fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
|
||||
|
||||
"figures/escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="],
|
||||
@@ -2421,6 +2464,8 @@
|
||||
|
||||
"sharp/color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="],
|
||||
|
||||
"soap/strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="],
|
||||
|
||||
"sorcery/buffer-crc32": ["buffer-crc32@1.0.0", "", {}, "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w=="],
|
||||
|
||||
"sucrase/commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="],
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
"radix-svelte-icons": "^1.0.0",
|
||||
"sass": "^1.83.4",
|
||||
"siema": "^1.5.1",
|
||||
"soap": "^1.1.8",
|
||||
"svelte": "^3.59.2",
|
||||
"svelte-dialogs": "^1.2.2",
|
||||
"svelte-preprocess": "^5.1.4",
|
||||
|
||||
@@ -4,16 +4,20 @@ export const createCaller = createCallerFactory({
|
||||
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
|
||||
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
|
||||
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
|
||||
"bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"),
|
||||
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
||||
"admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"),
|
||||
"admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"),
|
||||
"admin/nicht-ausstellen": await import("../src/pages/api/admin/nicht-ausstellen.ts"),
|
||||
"admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"),
|
||||
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
|
||||
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
|
||||
"auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"),
|
||||
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
|
||||
"aufnahme/[uid]": await import("../src/pages/api/aufnahme/[uid].ts"),
|
||||
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
|
||||
"bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"),
|
||||
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
||||
"bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"),
|
||||
"geg-nachweis-verbrauchsausweis-wohnen/[uid]": await import("../src/pages/api/geg-nachweis-verbrauchsausweis-wohnen/[uid].ts"),
|
||||
"geg-nachweis-verbrauchsausweis-wohnen": await import("../src/pages/api/geg-nachweis-verbrauchsausweis-wohnen/index.ts"),
|
||||
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
|
||||
"geg-nachweis-wohnen/[uid]": await import("../src/pages/api/geg-nachweis-wohnen/[uid].ts"),
|
||||
"geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"),
|
||||
"objekt": await import("../src/pages/api/objekt/index.ts"),
|
||||
"rechnung": await import("../src/pages/api/rechnung/index.ts"),
|
||||
"ticket": await import("../src/pages/api/ticket/index.ts"),
|
||||
@@ -24,7 +28,8 @@ export const createCaller = createCallerFactory({
|
||||
"verbrauchsausweis-wohnen/[uid]": await import("../src/pages/api/verbrauchsausweis-wohnen/[uid].ts"),
|
||||
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
|
||||
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
|
||||
"objekt/[uid]/bilder": await import("../src/pages/api/objekt/[uid]/bilder.ts"),
|
||||
"aufnahme/[uid]/bilder": await import("../src/pages/api/aufnahme/[uid]/bilder.ts"),
|
||||
"aufnahme/[uid]": await import("../src/pages/api/aufnahme/[uid]/index.ts"),
|
||||
"objekt/[uid]": await import("../src/pages/api/objekt/[uid]/index.ts"),
|
||||
"objekt/[uid]/unterlagen": await import("../src/pages/api/objekt/[uid]/unterlagen.ts"),
|
||||
})
|
||||
@@ -104,12 +104,12 @@ export async function ausweisSpeichern(
|
||||
continue;
|
||||
}
|
||||
|
||||
const response = await api.objekt._uid.bilder.PUT.fetch({
|
||||
const response = await api.aufnahme._uid.bilder.PUT.fetch({
|
||||
base64: bild.base64,
|
||||
kategorie: bild.kategorie
|
||||
}, {
|
||||
params: {
|
||||
uid: objekt.uid
|
||||
uid: aufnahme.uid
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
|
||||
@@ -11,7 +11,7 @@ import Cookies from "js-cookie";
|
||||
|
||||
export async function bilderHochladen(
|
||||
images: (UploadedGebaeudeBild & { base64?: string, update?: boolean })[],
|
||||
gebaeude_uid: string
|
||||
aufnahme_uid: string
|
||||
) {
|
||||
if (images.length == 0) {
|
||||
return images;
|
||||
@@ -57,12 +57,12 @@ export async function bilderHochladen(
|
||||
}
|
||||
});
|
||||
} else {
|
||||
const response = await api.objekt._uid.bilder.PUT.fetch({
|
||||
const response = await api.aufnahme._uid.bilder.PUT.fetch({
|
||||
base64: image.base64,
|
||||
kategorie: image.kategorie as Enums.BilderKategorie
|
||||
}, {
|
||||
params: {
|
||||
uid: gebaeude_uid
|
||||
uid: aufnahme_uid
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
export let ausweisart: Enums.Ausweisart
|
||||
|
||||
async function ausweisAbschicken() {
|
||||
loginAction = ausweisAbschicken
|
||||
if (!await validateAccessTokenClient()) {
|
||||
loginOverlayHidden = false;
|
||||
return
|
||||
@@ -35,7 +36,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
let loginAction: () => any = ausweisAbschicken;
|
||||
|
||||
async function spaeterWeitermachen() {
|
||||
loginAction = spaeterWeitermachen;
|
||||
if (!await validateAccessTokenClient()) {
|
||||
loginOverlayHidden = false;
|
||||
return
|
||||
@@ -51,6 +55,8 @@
|
||||
"",
|
||||
`${location.pathname}?uid=${ausweis.uid}`
|
||||
);
|
||||
|
||||
window.location.href = `/speichern-erfolgreich?uid=${ausweis.uid}`
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,7 +77,7 @@
|
||||
<div>
|
||||
<Overlay bind:hidden={loginOverlayHidden}>
|
||||
<div class="bg-white w-full max-w-screen-sm py-8">
|
||||
<EmbeddedAuthFlowModule onLogin={ausweisAbschicken}></EmbeddedAuthFlowModule>
|
||||
<EmbeddedAuthFlowModule onLogin={loginAction}></EmbeddedAuthFlowModule>
|
||||
</div>
|
||||
</Overlay>
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ import {
|
||||
Unterlage,
|
||||
VerbrauchsausweisGewerbe,
|
||||
VerbrauchsausweisWohnen,
|
||||
GEGNachweisWohnen,
|
||||
} from "@ibcornelsen/database/client";
|
||||
import { z, ZodSchema } from "zod";
|
||||
|
||||
@@ -145,6 +146,8 @@ export function getAusweisartFromUUID(uid: string): Enums.Ausweisart | null {
|
||||
return Enums.Ausweisart.BedarfsausweisWohnen
|
||||
} else if (uid.startsWith("bag")) {
|
||||
return Enums.Ausweisart.BedarfsausweisGewerbe
|
||||
} else if (uid.startsWith("gnw")) {
|
||||
return Enums.Ausweisart.GEGNachweisWohnen
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -167,4 +170,6 @@ export type AufnahmeKomplettClient = AufnahmeClient & {
|
||||
bedarfsausweis_wohnen: BedarfsausweisWohnenClient[],
|
||||
verbrauchsausweis_wohnen: VerbrauchsausweisWohnenClient[],
|
||||
verbrauchsausweis_gewerbe: VerbrauchsausweisGewerbeClient[]
|
||||
}
|
||||
}
|
||||
|
||||
export type GEGNachweisWohnenClient = Omit<GEGNachweisWohnen, "id" | "aufnahme_id" | "benutzer_id">
|
||||
@@ -470,6 +470,17 @@
|
||||
|
||||
let bilderModal: HTMLDialogElement;
|
||||
let infoVisible = false;
|
||||
|
||||
|
||||
async function registriernummerAnfordern(uid: string) {
|
||||
const result = await api.admin.registriernummer.GET.fetch({
|
||||
uid
|
||||
}, {
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="border rounded-lg bg-base-200">
|
||||
@@ -817,9 +828,9 @@
|
||||
xmlAbschicken(aufnahme.uid)
|
||||
}}>X</button></td>
|
||||
{/if}
|
||||
{#if !aufnahme.registriernummer}
|
||||
{#if !ausweis.registriernummer}
|
||||
<td title="Registriernummer vom DiBT anfordern." class="w-4 p-1"><button class="btn btn-xs btn-ghost" on:click={() => {
|
||||
registriernummerAnfordern(aufnahme.uid)
|
||||
registriernummerAnfordern(ausweis.uid)
|
||||
}}>R</button></td>
|
||||
{/if}
|
||||
</tr>
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
export let objekt: ObjektKomplettClient;
|
||||
|
||||
// TODO
|
||||
const objektBild = objekt.bilder.find(bild => bild.kategorie === Enums.BilderKategorie.Gebaeude);
|
||||
</script>
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ export enum VALID_UUID_PREFIXES {
|
||||
"inv" = "Rechnung",
|
||||
"tkt" = "Ticket",
|
||||
"pln" = "Gebäude Plan",
|
||||
"gnw" = "GEG Nachweis Wohnen"
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -29,6 +30,7 @@ export const PRICES: Record<Enums.Ausweisart, [number, number, number]> = {
|
||||
VerbrauchsausweisWohnen: [65, 95, 180],
|
||||
VerbrauchsausweisGewerbe: [95, 125, 360],
|
||||
BedarfsausweisGewerbe: [500, 700, 1000],
|
||||
GEGNachweisWohnen: [500, 500, 500]
|
||||
};
|
||||
|
||||
export const SERVICES: Record<
|
||||
|
||||
@@ -4,10 +4,16 @@ import { prisma } from "@ibcornelsen/database/server";
|
||||
import { APIError, TypesafeAPIContextWithRequest } from "astro-typesafe-api/server";
|
||||
import { z } from "zod";
|
||||
|
||||
export async function authorizationMiddleware(input: any, context: TypesafeAPIContextWithRequest<any>) {
|
||||
const authorization: string | undefined = context.request.headers.get("Authorization");
|
||||
export async function checkAuthorizationHeaderNoThrow(authorization: string): Promise<ReturnType<typeof checkAuthorizationHeader> | null> {
|
||||
try {
|
||||
return await checkAuthorizationHeader(authorization)
|
||||
} catch(e) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
if (!context.request.headers.has("Authorization") || !authorization) {
|
||||
export async function checkAuthorizationHeader(authorization: string) {
|
||||
if (!authorization) {
|
||||
throw new APIError({
|
||||
code: "BAD_REQUEST",
|
||||
message: "Request is missing an 'Authorization' header."
|
||||
@@ -81,6 +87,10 @@ export async function authorizationMiddleware(input: any, context: TypesafeAPICo
|
||||
})
|
||||
}
|
||||
|
||||
export async function authorizationMiddleware(input: any, ctx: TypesafeAPIContextWithRequest<any>) {
|
||||
return await checkAuthorizationHeader(ctx.request.headers.get("Authorization"));
|
||||
}
|
||||
|
||||
export async function maybeAuthorizationMiddleware(input: any, ctx: TypesafeAPIContextWithRequest<any>) {
|
||||
try {
|
||||
return authorizationMiddleware(input, ctx)
|
||||
@@ -93,7 +103,7 @@ export const authorizationHeaders = {
|
||||
Authorization: z.string()
|
||||
}
|
||||
|
||||
export async function adminMiddleware(input: any, ctx: TypesafeAPIContextWithRequest<any>) {
|
||||
export async function adminMiddleware(input: any, ctx: TypesafeAPIContextWithRequest<any>) {
|
||||
try {
|
||||
const user = await authorizationMiddleware(input, ctx)
|
||||
|
||||
|
||||
@@ -67,6 +67,10 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
||||
fillFormField("energietraeger_warmwasser", `${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`)
|
||||
}
|
||||
|
||||
if (aufnahme.durchlauf_erhitzer && !ausweis.warmwasser_enthalten) {
|
||||
fillFormField("energietraeger_warmwasser", "Strommix");
|
||||
}
|
||||
|
||||
toggleCheck("fensterlueftung", aufnahme.lueftung == Enums.Lueftungskonzept.Fensterlueftung)
|
||||
toggleCheck("schachtlueftung", aufnahme.lueftung == Enums.Lueftungskonzept.Schachtlueftung)
|
||||
toggleCheck("lueftungsanlage_ohne_waermerueckgewinnung", aufnahme.lueftung == Enums.Lueftungskonzept.LueftungsanlageOhneWaermerueckgewinnung)
|
||||
@@ -426,7 +430,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
||||
}
|
||||
}
|
||||
|
||||
if (ausweis.wird_gekuehlt) {
|
||||
if (aufnahme.kuehlung) {
|
||||
/**
|
||||
* Kühlungszuschlag - Pauschale Erhöhung um 6kWh/m²
|
||||
* Primärenergiefaktor Strom
|
||||
|
||||
18
src/lib/server/ausweis.ts
Normal file
18
src/lib/server/ausweis.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import { getAusweisartFromUUID } from "#components/Ausweis/types.js";
|
||||
import { Enums, prisma } from "@ibcornelsen/database/server";
|
||||
|
||||
/**
|
||||
* Gibt den richtigen Prisma Adapter für die Ausweisart basierend auf der UID zurück, oder null bei einer falschen UID.
|
||||
* @param uid Die Ausweis UID
|
||||
*/
|
||||
export function getPrismaAusweisAdapter(uid: string) {
|
||||
const ausweisart = getAusweisartFromUUID(uid);
|
||||
|
||||
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||
return prisma.verbrauchsausweisWohnen
|
||||
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
||||
return prisma.verbrauchsausweisGewerbe
|
||||
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
|
||||
return prisma.bedarfsausweisWohnen
|
||||
}
|
||||
}
|
||||
9
src/lib/server/user.ts
Normal file
9
src/lib/server/user.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||
import { checkAuthorizationHeader, checkAuthorizationHeaderNoThrow } from "#lib/middleware/authorization.js";
|
||||
import { AstroGlobal } from "astro";
|
||||
|
||||
export function getCurrentUser(Astro: AstroGlobal) {
|
||||
const accessToken = Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value;
|
||||
|
||||
return checkAuthorizationHeaderNoThrow(`Bearer ${accessToken}`)
|
||||
}
|
||||
@@ -10,14 +10,16 @@
|
||||
|
||||
<h1 class="text-4xl font-medium mb-8">{objekt.adresse}</h1>
|
||||
|
||||
<Carousel perPage={1}>
|
||||
{#each objekt.bilder as bild, i (i)}
|
||||
<img src="/bilder/{bild.uid}.webp" alt={bild.kategorie} class="max-h-[60vh] h-full w-full object-contain">
|
||||
{/each}
|
||||
|
||||
<span slot="left-control" class="p-2.5 bg-opacity-50 bg-white block rounded-full"><ChevronLeft size={24}></ChevronLeft></span>
|
||||
<span slot="right-control" class="p-2.5 bg-opacity-50 bg-white block rounded-full"><ChevronRight size={24}></ChevronRight></span>
|
||||
</Carousel>
|
||||
<div class="bg-white rounded-lg">
|
||||
<Carousel perPage={1}>
|
||||
{#each objekt.bilder as bild, i (i)}
|
||||
<img src="/bilder/{bild.uid}.webp" alt={bild.kategorie} class="max-h-[60vh] h-full w-full object-contain">
|
||||
{/each}
|
||||
|
||||
<span slot="left-control" class="p-2.5 bg-opacity-50 bg-white block rounded-full"><ChevronLeft size={24}></ChevronLeft></span>
|
||||
<span slot="right-control" class="p-2.5 bg-opacity-50 bg-white block rounded-full"><ChevronRight size={24}></ChevronRight></span>
|
||||
</Carousel>
|
||||
</div>
|
||||
|
||||
<div class="my-8 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3">
|
||||
{#each objekt.aufnahmen as aufnahme}
|
||||
|
||||
@@ -71,11 +71,7 @@
|
||||
export let bezahlmethode: Bezahlmethoden =
|
||||
Enums.Bezahlmethoden.paypal;
|
||||
|
||||
let prices: number[] = [];
|
||||
|
||||
if (aufnahme.ausweisart) {
|
||||
prices = PRICES[aufnahme.ausweisart];
|
||||
}
|
||||
let prices = PRICES[ausweisart];
|
||||
|
||||
let basePrice: number = prices[0];
|
||||
|
||||
@@ -91,6 +87,7 @@
|
||||
[Enums.Ausweisart.VerbrauchsausweisGewerbe]: `/energieausweis-erstellen/verbrauchsausweis-gewerbe?uid=${ausweis.uid}`,
|
||||
[Enums.Ausweisart.BedarfsausweisWohnen]: `/energieausweis-erstellen/bedarfsausweis-wohnen?uid=${ausweis.uid}`,
|
||||
[Enums.Ausweisart.BedarfsausweisGewerbe]: `/energieausweis-erstellen/bedarfsausweis-gewerbe?uid=${ausweis.uid}`,
|
||||
[Enums.Ausweisart.GEGNachweisWohnen]: `/angebot-anfragen/geg-nachweis-wohnen-anfragen?uid=${ausweis.uid}`,
|
||||
}[ausweisart]
|
||||
|
||||
async function speichern(e: SubmitEvent) {
|
||||
@@ -169,6 +166,7 @@
|
||||
bestellenNichtMoeglich = true
|
||||
}
|
||||
|
||||
const gegAnfrage = (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) || (ausweisart === Enums.Ausweisart.GEGNachweisBedarfsausweis) || (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe)
|
||||
</script>
|
||||
|
||||
<div
|
||||
@@ -178,7 +176,7 @@
|
||||
2xl:grid-cols-2 2xl:gap-x-8
|
||||
"
|
||||
>
|
||||
{#if !ausweis.geg_anfrage}
|
||||
{#if !gegAnfrage}
|
||||
<div id="performance-box" class="w-full box relative px-4 order-1 self-stretch grid grid-cols-1">
|
||||
<PerformanceScore
|
||||
bind:ausweis
|
||||
@@ -195,9 +193,9 @@
|
||||
>
|
||||
<h1 class="text-secondary text-3xl m-0">Energiesausweis erstellen</h1>
|
||||
<h2 class="text-primary text-xl">
|
||||
Verbrauchsausweis Wohnen {PRICES.VerbrauchsausweisWohnen[0]} €
|
||||
{ausweisart} {prices[0]} €
|
||||
</h2>
|
||||
{#if ausweis.geg_anfrage}
|
||||
{#if gegAnfrage}
|
||||
<Progressbar active={1} steps={["Gebäudedaten", "Kundendaten", "Bestätigung"]}/>
|
||||
{:else}
|
||||
<Progressbar active={1}/>
|
||||
@@ -218,7 +216,7 @@
|
||||
<Rechnungsadresse bind:user bind:rechnung /></Bereich
|
||||
>
|
||||
|
||||
{#if !ausweis.geg_anfrage}
|
||||
{#if !gegAnfrage}
|
||||
<Bereich bereich="3" title="Bezahlmethode">
|
||||
<Bezahlung bind:selectedPaymentType={bezahlmethode} /></Bereich
|
||||
>
|
||||
@@ -296,7 +294,7 @@
|
||||
|
||||
<button class="button">Speichern</button>
|
||||
|
||||
{#if ausweis.geg_anfrage}
|
||||
{#if gegAnfrage}
|
||||
<button class="button cursor-pointer" data-cy="bestellen" on:click={anfordern} >Angebot anfordern</button>
|
||||
{:else}
|
||||
<button class="button cursor-pointer" data-cy="bestellen" on:click={bestellen} >Kostenpflichtig bestellen</button>
|
||||
|
||||
@@ -8,8 +8,7 @@
|
||||
BenutzerClient,
|
||||
UploadedGebaeudeBild,
|
||||
UnterlageClient,
|
||||
BedarfsausweisWohnenClient,
|
||||
VerbrauchsausweisGewerbeClient,
|
||||
GEGNachweisWohnenClient,
|
||||
} from "#components/Ausweis/types.js";
|
||||
import Bereich from "#components/labels/Bereich.svelte";
|
||||
import { Enums } from "@ibcornelsen/database/client";
|
||||
@@ -26,12 +25,11 @@
|
||||
import { exclude } from "#lib/exclude.js";
|
||||
import Cookies from "js-cookie";
|
||||
|
||||
export async function ausweisSpeichern(
|
||||
ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient,
|
||||
export async function nachweisSpeichern(
|
||||
nachweis: GEGNachweisWohnenClient,
|
||||
objekt: ObjektClient,
|
||||
aufnahme: AufnahmeClient,
|
||||
unterlagen: (UnterlageClient & { data?: string })[],
|
||||
ausweisart: Enums.Ausweisart
|
||||
unterlagen: (UnterlageClient & { data?: string })[]
|
||||
) {
|
||||
if (objekt.uid) {
|
||||
await api.objekt._uid.PATCH.fetch({
|
||||
@@ -82,36 +80,21 @@
|
||||
aufnahme.uid = uid
|
||||
}
|
||||
|
||||
let patchRoute: any;
|
||||
let putRoute: any;
|
||||
if (ausweisart == Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||
patchRoute = api["verbrauchsausweis-wohnen"]._uid.PATCH
|
||||
putRoute = api["verbrauchsausweis-wohnen"].PUT
|
||||
} else if (ausweisart == Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
||||
patchRoute = api["verbrauchsausweis-gewerbe"]._uid.PATCH
|
||||
putRoute = api["verbrauchsausweis-gewerbe"].PUT
|
||||
} else if (ausweisart == Enums.Ausweisart.BedarfsausweisWohnen) {
|
||||
patchRoute = api["bedarfsausweis-wohnen"]._uid.PATCH
|
||||
putRoute = api["bedarfsausweis-wohnen"].PUT
|
||||
} else if (ausweisart == Enums.Ausweisart.GEGNachweisVerbrauchsausweisWohnen) {
|
||||
patchRoute = api["geg-nachweis-verbrauchsausweis-wohnen"]._uid.PATCH
|
||||
putRoute = api["geg-nachweis-verbrauchsausweis-wohnen"].PUT
|
||||
}
|
||||
if (nachweis.uid) {
|
||||
await api["geg-nachweis-wohnen"]._uid.PATCH.fetch({
|
||||
|
||||
if (ausweis.uid) {
|
||||
await patchRoute.fetch({
|
||||
...exclude(ausweis, ["uid"])
|
||||
...exclude(nachweis, ["uid"])
|
||||
}, {
|
||||
params: {
|
||||
uid: ausweis.uid
|
||||
uid: nachweis.uid
|
||||
},
|
||||
headers: {
|
||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const { uid } = await putRoute.fetch({
|
||||
ausweis,
|
||||
const { uid } = await api["geg-nachweis-wohnen"].PUT.fetch({
|
||||
nachweis: nachweis,
|
||||
uid_aufnahme: aufnahme.uid
|
||||
}, {
|
||||
headers: {
|
||||
@@ -119,7 +102,7 @@
|
||||
}
|
||||
})
|
||||
|
||||
ausweis.uid = uid;
|
||||
nachweis.uid = uid;
|
||||
}
|
||||
|
||||
for (const unterlage of unterlagen) {
|
||||
@@ -145,20 +128,20 @@
|
||||
}
|
||||
|
||||
return {
|
||||
uid_ausweis: ausweis.uid,
|
||||
uid_ausweis: nachweis.uid,
|
||||
uid_aufnahme: aufnahme.uid,
|
||||
uid_objekt: objekt.uid
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async function ausweisAbschicken() {
|
||||
async function nachweisAbschicken() {
|
||||
if (!(await validateAccessTokenClient())) {
|
||||
loginOverlayHidden = false;
|
||||
return;
|
||||
}
|
||||
|
||||
const result = await ausweisSpeichern(ausweis, objekt, aufnahme, unterlagen, Enums.Ausweisart.GEGNachweisVerbrauchsausweisWohnen)
|
||||
const result = await nachweisSpeichern(nachweis, objekt, aufnahme, unterlagen)
|
||||
|
||||
if (result !== null) {
|
||||
window.history.pushState(
|
||||
@@ -183,7 +166,7 @@
|
||||
|
||||
let loginOverlayHidden = true;
|
||||
|
||||
export let ausweis: VerbrauchsausweisWohnenClient;
|
||||
export let nachweis: GEGNachweisWohnenClient;
|
||||
export let objekt: ObjektClient;
|
||||
export let aufnahme: AufnahmeClient;
|
||||
export let user: BenutzerClient = {} as BenutzerClient;
|
||||
@@ -195,10 +178,10 @@
|
||||
})[] = [];
|
||||
|
||||
|
||||
if (Object.keys(ausweis).length === 0) {
|
||||
if (Object.keys(nachweis).length === 0) {
|
||||
const localStorageAusweis = localStorage.getItem("ausweis");
|
||||
if (localStorageAusweis) {
|
||||
ausweis = JSON.parse(localStorageAusweis)
|
||||
nachweis = JSON.parse(localStorageAusweis)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,20 +201,18 @@
|
||||
|
||||
|
||||
$: {
|
||||
if (ausweis.uid && objekt.uid && aufnahme.uid) {
|
||||
localStorage.setItem(ausweis.uid, JSON.stringify(ausweis))
|
||||
if (nachweis.uid && objekt.uid && aufnahme.uid) {
|
||||
localStorage.setItem(nachweis.uid, JSON.stringify(nachweis))
|
||||
localStorage.setItem(objekt.uid, JSON.stringify(objekt))
|
||||
localStorage.setItem(aufnahme.uid, JSON.stringify(aufnahme))
|
||||
} else {
|
||||
localStorage.setItem("ausweis", JSON.stringify(ausweis))
|
||||
localStorage.setItem("ausweis", JSON.stringify(nachweis))
|
||||
localStorage.setItem("aufnahme", JSON.stringify(aufnahme))
|
||||
localStorage.setItem("objekt", JSON.stringify(objekt))
|
||||
}
|
||||
}
|
||||
|
||||
const ausweisart = Enums.Ausweisart.GEGNachweisVerbrauchsausweisWohnen;
|
||||
|
||||
function automatischAusfüllen() {}
|
||||
</script>
|
||||
|
||||
<div
|
||||
@@ -253,7 +234,7 @@
|
||||
|
||||
<form
|
||||
id="formInput-1"
|
||||
on:submit={ausweisAbschicken}
|
||||
on:submit={nachweisAbschicken}
|
||||
name="ausweis"
|
||||
data-test="ausweis"
|
||||
>
|
||||
@@ -261,7 +242,7 @@
|
||||
<!-- A Prüfung der Ausweisart -->
|
||||
|
||||
<Bereich bereich="A" title="Prüfung der Ausweisart">
|
||||
<Ausweisart bind:objekt bind:aufnahme bind:ausweis {ausweisart} />
|
||||
<Ausweisart bind:objekt bind:aufnahme bind:ausweis={nachweis} {ausweisart} />
|
||||
</Bereich>
|
||||
|
||||
<!-- B Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgeschoss -->
|
||||
@@ -279,7 +260,7 @@
|
||||
title="Angaben zur Heizung, Lüftung, Energieerezugung, Qualität und Aufbau der Gebäudehülle usw."
|
||||
></InputLabel>
|
||||
|
||||
<textarea class="rounded-e-none" rows="10" bind:value={ausweis.beschreibung}></textarea>
|
||||
<textarea class="rounded-e-none" rows="10" bind:value={nachweis.beschreibung}></textarea>
|
||||
|
||||
<div class="help-label">
|
||||
<HelpLabel>
|
||||
@@ -317,7 +298,7 @@
|
||||
min={1}
|
||||
name={"plaene"}
|
||||
bind:files={plaene}
|
||||
bind:ausweis
|
||||
bind:ausweis={nachweis}
|
||||
bind:objekt
|
||||
></FileGrid>
|
||||
</div>
|
||||
@@ -343,7 +324,7 @@
|
||||
min={0}
|
||||
name={"unterlagen"}
|
||||
bind:files={unterlagen}
|
||||
bind:ausweis
|
||||
bind:ausweis={nachweis}
|
||||
bind:objekt
|
||||
></FileGrid>
|
||||
</div>
|
||||
@@ -365,13 +346,13 @@
|
||||
<div>
|
||||
<Overlay bind:hidden={loginOverlayHidden}>
|
||||
<div class="bg-white w-full max-w-screen-sm py-8">
|
||||
<EmbeddedAuthFlowModule onLogin={ausweisAbschicken}
|
||||
<EmbeddedAuthFlowModule onLogin={nachweisAbschicken}
|
||||
></EmbeddedAuthFlowModule>
|
||||
</div>
|
||||
</Overlay>
|
||||
|
||||
<button
|
||||
on:click={ausweisAbschicken}
|
||||
on:click={nachweisAbschicken}
|
||||
type="button"
|
||||
class="button"
|
||||
data-cy="weiter">Weiter</button
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
|
||||
import { AufnahmeClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
import { AufnahmeClient, GEGNachweisWohnenClient, ObjektClient, UploadedGebaeudeBild } from "#components/Ausweis/types";
|
||||
import { createCaller } from "../../astro-typesafe-api-caller.js";
|
||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||
import { validateAccessTokenServer } from "#server/lib/validateAccessToken.js";
|
||||
import GEGNachweisVerbrauchsausweisWohnenModule from "#modules/angebot-anfragen/GEGNachweisVerbrauchsausweisWohnenModule.svelte";
|
||||
import GEGNachweisWohnenModule from "#modules/angebot-anfragen/GEGNachweisWohnenModule.svelte";
|
||||
|
||||
const uid = Astro.url.searchParams.get("uid");
|
||||
let ausweis: VerbrauchsausweisWohnenClient = {} as VerbrauchsausweisWohnenClient;
|
||||
let nachweis: GEGNachweisWohnenClient = {} as GEGNachweisWohnenClient;
|
||||
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
|
||||
let objekt: ObjektClient = {} as ObjektClient;
|
||||
let bilder: UploadedGebaeudeBild[] = []
|
||||
@@ -24,7 +24,7 @@ if (uid) {
|
||||
}
|
||||
|
||||
try {
|
||||
ausweis = await caller["verbrauchsausweis-wohnen"]._uid.GET.fetch(null, {
|
||||
nachweis = await caller["geg-nachweis-wohnen"]._uid.GET.fetch(null, {
|
||||
headers: {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
@@ -38,7 +38,7 @@ if (uid) {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
uid: ausweis.uid_aufnahme
|
||||
uid: nachweis.uid_aufnahme
|
||||
}
|
||||
})
|
||||
|
||||
@@ -47,34 +47,34 @@ if (uid) {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
uid: ausweis.uid_objekt
|
||||
uid: nachweis.uid_objekt
|
||||
}
|
||||
})
|
||||
|
||||
bilder = await caller.objekt._uid.bilder.GET.fetch(null, {
|
||||
bilder = await caller.aufnahme._uid.bilder.GET.fetch(null, {
|
||||
headers: {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
uid: ausweis.uid_objekt
|
||||
uid: nachweis.uid_aufnahme
|
||||
}
|
||||
})
|
||||
|
||||
if (!ausweis) {
|
||||
if (!nachweis) {
|
||||
// Der Ausweis scheint nicht zu existieren.
|
||||
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
|
||||
return Astro.redirect(
|
||||
"/energieausweis-erstellen/verbrauchsausweis-wohnen"
|
||||
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
|
||||
);
|
||||
}
|
||||
} catch(e) {
|
||||
return Astro.redirect(
|
||||
"/energieausweis-erstellen/verbrauchsausweis-wohnen"
|
||||
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
|
||||
);
|
||||
}
|
||||
}
|
||||
---
|
||||
|
||||
<AusweisLayout title="Verbrauchsausweis erstellen">
|
||||
<GEGNachweisVerbrauchsausweisWohnenModule client:only {ausweis} {objekt} {aufnahme} {bilder} />
|
||||
<AusweisLayout title="GEG Nachweis Wohnen anfragen">
|
||||
<GEGNachweisWohnenModule client:only {nachweis} {objekt} {aufnahme} {bilder} />
|
||||
</AusweisLayout>
|
||||
|
||||
@@ -88,7 +88,7 @@ export const GET = defineApiRoute({
|
||||
ausweis,
|
||||
ausweis.aufnahme,
|
||||
ausweis.aufnahme.objekt,
|
||||
ausweis.aufnahme.objekt.bilder,
|
||||
ausweis.aufnahme.bilder,
|
||||
ausweis.aufnahme.objekt.benutzer
|
||||
);
|
||||
const pdfDatenblatt = await pdfDatenblattVerbrauchsausweisWohnen(
|
||||
|
||||
0
src/pages/api/admin/bestellbestaetigung.ts
Normal file
0
src/pages/api/admin/bestellbestaetigung.ts
Normal file
0
src/pages/api/admin/erinnern.ts
Normal file
0
src/pages/api/admin/erinnern.ts
Normal file
0
src/pages/api/admin/nicht-ausstellen.ts
Normal file
0
src/pages/api/admin/nicht-ausstellen.ts
Normal file
0
src/pages/api/admin/post-ausstellen.ts
Normal file
0
src/pages/api/admin/post-ausstellen.ts
Normal file
229
src/pages/api/admin/registriernummer.ts
Normal file
229
src/pages/api/admin/registriernummer.ts
Normal file
@@ -0,0 +1,229 @@
|
||||
import {
|
||||
getAusweisartFromUUID,
|
||||
UUidWithPrefix,
|
||||
} from "#components/Ausweis/types.js";
|
||||
import {
|
||||
adminMiddleware,
|
||||
authorizationHeaders,
|
||||
} from "#lib/middleware/authorization.js";
|
||||
import {
|
||||
BedarfsausweisWohnen,
|
||||
Enums,
|
||||
VerbrauchsausweisGewerbe,
|
||||
VerbrauchsausweisWohnen,
|
||||
} from "@ibcornelsen/database/client";
|
||||
import { prisma } from "@ibcornelsen/database/server";
|
||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||
import moment from "moment";
|
||||
import { z } from "zod";
|
||||
import soap from "soap";
|
||||
import { getPrismaAusweisAdapter } from "#lib/server/ausweis.js";
|
||||
|
||||
export const GET = defineApiRoute({
|
||||
input: z.object({
|
||||
uid: UUidWithPrefix,
|
||||
}),
|
||||
headers: authorizationHeaders,
|
||||
middleware: adminMiddleware,
|
||||
async fetch({ uid }, context, user) {
|
||||
const ausweisart = getAusweisartFromUUID(uid);
|
||||
const adapter = getPrismaAusweisAdapter(
|
||||
uid
|
||||
) as typeof prisma.verbrauchsausweisWohnen;
|
||||
|
||||
if (!adapter) {
|
||||
throw new APIError({
|
||||
code: "BAD_REQUEST",
|
||||
message: "UID ist ungültig.",
|
||||
});
|
||||
}
|
||||
|
||||
const ausweis = await adapter.findUnique({
|
||||
where: {
|
||||
uid,
|
||||
},
|
||||
include: {
|
||||
aufnahme: {
|
||||
include: {
|
||||
objekt: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
if (!ausweis) {
|
||||
throw new APIError({
|
||||
code: "NOT_FOUND",
|
||||
message: "Ausweis existiert nicht.",
|
||||
});
|
||||
}
|
||||
|
||||
if (ausweis.registriernummer) {
|
||||
throw new APIError({
|
||||
code: "PRECONDITION_FAILED",
|
||||
message: `Ausweis hat bereits eine Registriernummer: (${ausweis.registriernummer})`,
|
||||
});
|
||||
}
|
||||
|
||||
if (!ausweis.aufnahme.objekt.plz) {
|
||||
throw new APIError({
|
||||
code: "PRECONDITION_FAILED",
|
||||
message: "Ausweis Gebäude hat keine Postleitzahl",
|
||||
});
|
||||
}
|
||||
|
||||
const postleitzahl = await prisma.postleitzahlen.findFirst({
|
||||
where: {
|
||||
plz: ausweis.aufnahme.objekt.plz,
|
||||
},
|
||||
});
|
||||
|
||||
if (!postleitzahl) {
|
||||
throw new APIError({
|
||||
code: "PRECONDITION_FAILED",
|
||||
message: `Bundesland konnte nicht gefunden werden für PLZ ${ausweis.aufnahme.objekt.plz}`,
|
||||
});
|
||||
}
|
||||
|
||||
/* Authentifizierung */
|
||||
const Aussteller_ID_DIBT = "jens.cornelsen@ib-cornelsen.de";
|
||||
const Aussteller_PWD_DIBT = "62465E79F6A61F31C4DCA9E2AF788DD3";
|
||||
/* EnEV-Nachweis */
|
||||
const Ausstellungsdatum = moment(
|
||||
ausweis.aufnahme.erstellungsdatum
|
||||
).format("DD.MM.YYYY");
|
||||
const Gesetzesgrundlage = "GEG-2024";
|
||||
|
||||
/* EnergieausweisDaten */
|
||||
let gebaeudeart: string = "";
|
||||
if (
|
||||
ausweisart == Enums.Ausweisart.VerbrauchsausweisGewerbe &&
|
||||
ausweis.aufnahme.gebaeudeteil == "Gewerbe"
|
||||
) {
|
||||
gebaeudeart = "Nichtwohnteil gemischt genutztes Gebäude";
|
||||
} else if (
|
||||
(ausweisart == Enums.Ausweisart.VerbrauchsausweisWohnen ||
|
||||
ausweisart == Enums.Ausweisart.BedarfsausweisWohnen) &&
|
||||
ausweis.aufnahme.gebaeudeteil == "Wohnen"
|
||||
) {
|
||||
gebaeudeart = "Wohnteil gemischt genutztes Gebäude";
|
||||
} else if (
|
||||
(ausweisart == Enums.Ausweisart.VerbrauchsausweisWohnen ||
|
||||
ausweisart == Enums.Ausweisart.BedarfsausweisWohnen) &&
|
||||
ausweis.aufnahme.gebaeudeteil == "Gesamtgebäude"
|
||||
) {
|
||||
gebaeudeart = "Wohngebäude";
|
||||
} else if (
|
||||
ausweisart == Enums.Ausweisart.VerbrauchsausweisGewerbe &&
|
||||
ausweis.aufnahme.gebaeudeteil == "Gesamtgebäude"
|
||||
) {
|
||||
gebaeudeart = "Nichtwohngebäude";
|
||||
}
|
||||
|
||||
const art: string =
|
||||
ausweisart == Enums.Ausweisart.BedarfsausweisWohnen
|
||||
? "Energiebedarfsausweis"
|
||||
: "Energieverbrauchsausweis";
|
||||
|
||||
const body = `<Datenregistratur xmlns="http://energieausweis.dibt.de/WebServiceEnergie/DibtEnergieAusweisService">
|
||||
<doc>
|
||||
<root>
|
||||
<Authentifizierung>
|
||||
<Aussteller_ID_DIBT>${Aussteller_ID_DIBT}</Aussteller_ID_DIBT>
|
||||
<Aussteller_PWD_DIBT>${Aussteller_PWD_DIBT}</Aussteller_PWD_DIBT>
|
||||
</Authentifizierung>
|
||||
<EnEV-Nachweis>
|
||||
<Ausstellungsdatum>${Ausstellungsdatum}</Ausstellungsdatum>
|
||||
<Bundesland>${postleitzahl.bundesland}</Bundesland>
|
||||
<Postleitzahl>${postleitzahl.plz}</Postleitzahl>
|
||||
<Gesetzesgrundlage>${Gesetzesgrundlage}</Gesetzesgrundlage>
|
||||
</EnEV-Nachweis>
|
||||
<Energieausweis-Daten>
|
||||
<Gebaeudeart>${gebaeudeart}</Gebaeudeart>
|
||||
<Art>${art}</Art>
|
||||
<Neubau>${
|
||||
ausweis.ausstellgrund ===
|
||||
Enums.Ausstellgrund.Neubau
|
||||
? "1"
|
||||
: "0"
|
||||
}</Neubau>
|
||||
</Energieausweis-Daten>
|
||||
</root>
|
||||
</doc>
|
||||
</Datenregistratur>`;
|
||||
|
||||
return await new Promise(async (resolve, reject) => {
|
||||
soap.createClient(
|
||||
"https://energieausweis.dibt.de/published/WebServiceEnergieausweis/DibtEnergieAusweisServiceEx01.wsdl",
|
||||
{},
|
||||
function (err, client) {
|
||||
if (err !== null) {
|
||||
throw new APIError({
|
||||
code: "INTERNAL_SERVER_ERROR",
|
||||
message: err,
|
||||
});
|
||||
}
|
||||
|
||||
client.Datenregistratur(
|
||||
body,
|
||||
async function (
|
||||
err: any,
|
||||
result: {
|
||||
DatenregistraturResult: {
|
||||
WEB_Service_Antwort: {
|
||||
Rueckgabewert?: null;
|
||||
Registriernummer: string;
|
||||
Datendatei: any;
|
||||
};
|
||||
};
|
||||
}
|
||||
) {
|
||||
if (err !== null) {
|
||||
reject({
|
||||
code: "INTERNAL_SERVER_ERROR",
|
||||
message: err,
|
||||
});
|
||||
}
|
||||
|
||||
if (
|
||||
result.DatenregistraturResult
|
||||
.WEB_Service_Antwort.Registriernummer
|
||||
) {
|
||||
await (
|
||||
adapter as typeof prisma.verbrauchsausweisWohnen
|
||||
).update({
|
||||
where: {
|
||||
uid,
|
||||
},
|
||||
data: {
|
||||
registriernummer:
|
||||
result.DatenregistraturResult
|
||||
.WEB_Service_Antwort
|
||||
.Registriernummer,
|
||||
kontrolldatei_angefragt: result
|
||||
.DatenregistraturResult
|
||||
.WEB_Service_Antwort.Datendatei
|
||||
? true
|
||||
: false,
|
||||
},
|
||||
});
|
||||
|
||||
resolve(
|
||||
result.DatenregistraturResult
|
||||
.WEB_Service_Antwort.Registriernummer
|
||||
);
|
||||
} else {
|
||||
reject({
|
||||
code: "INTERNAL_SERVER_ERROR",
|
||||
message: "Unerwarteter Rückgabewert.",
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
}).catch((reason) => {
|
||||
throw new APIError(reason);
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -26,14 +26,14 @@ export const PUT = defineApiRoute({
|
||||
});
|
||||
}
|
||||
|
||||
let objekt = await prisma.objekt.findUnique({
|
||||
let aufnahme = await prisma.aufnahme.findUnique({
|
||||
where: {
|
||||
uid: ctx.params.uid,
|
||||
benutzer_id: user.id
|
||||
},
|
||||
});
|
||||
|
||||
if (!objekt) {
|
||||
if (!aufnahme) {
|
||||
throw new APIError({
|
||||
code: "NOT_FOUND",
|
||||
message: "Objekt nicht gefunden oder gehört einem anderen Benutzer.",
|
||||
@@ -46,12 +46,12 @@ export const PUT = defineApiRoute({
|
||||
);
|
||||
const buffer = Buffer.from(dataWithoutPrefix, "base64");
|
||||
|
||||
const bild = await prisma.Bild.create({
|
||||
const bild = await prisma.bild.create({
|
||||
data: {
|
||||
kategorie: input.kategorie,
|
||||
objekt: {
|
||||
aufnahme: {
|
||||
connect: {
|
||||
id: objekt.id,
|
||||
id: aufnahme.id,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -69,10 +69,8 @@ export const PUT = defineApiRoute({
|
||||
|
||||
writeFileSync(filePath, buffer)
|
||||
} catch(e) {
|
||||
console.log(e);
|
||||
|
||||
// Bild wurde nicht gespeichert, wir löschen den Eintrag wieder
|
||||
await prisma.Bild.delete({
|
||||
await prisma.bild.delete({
|
||||
where: {
|
||||
uid: bild.uid
|
||||
}
|
||||
@@ -99,7 +97,7 @@ export const GET = defineApiRoute({
|
||||
async fetch(input, ctx, user) {
|
||||
const { uid } = ctx.params;
|
||||
|
||||
const objekt = await prisma.objekt.findUnique({
|
||||
const aufnahme = await prisma.aufnahme.findUnique({
|
||||
where: {
|
||||
uid,
|
||||
benutzer_id: user.id
|
||||
@@ -115,13 +113,13 @@ export const GET = defineApiRoute({
|
||||
}
|
||||
})
|
||||
|
||||
if (!objekt) {
|
||||
if (!aufnahme) {
|
||||
throw new APIError({
|
||||
code: "FORBIDDEN",
|
||||
message: "Objekt existiert nicht oder gehört einem anderen Benutzer."
|
||||
})
|
||||
}
|
||||
|
||||
return objekt.bilder
|
||||
return aufnahme.bilder
|
||||
},
|
||||
})
|
||||
@@ -1,12 +1,12 @@
|
||||
import { BedarfsausweisWohnenClient, OptionalNullable, UUidWithPrefix, ZodOverlap } from "#components/Ausweis/types.js";
|
||||
import { GEGNachweisWohnenClient, OptionalNullable, UUidWithPrefix, ZodOverlap } from "#components/Ausweis/types.js";
|
||||
import { exclude } from "#lib/exclude.js";
|
||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||
import { BedarfsausweisWohnenSchema, prisma } from "@ibcornelsen/database/server";
|
||||
import { GEGNachweisWohnenSchema, prisma } from "@ibcornelsen/database/server";
|
||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||
import { z } from "zod";
|
||||
|
||||
export const PATCH = defineApiRoute({
|
||||
input: BedarfsausweisWohnenSchema.omit({
|
||||
input: GEGNachweisWohnenSchema.omit({
|
||||
uid: true,
|
||||
id: true,
|
||||
benutzer_id: true,
|
||||
@@ -18,7 +18,7 @@ export const PATCH = defineApiRoute({
|
||||
},
|
||||
middleware: authorizationMiddleware,
|
||||
async fetch(input, ctx, user) {
|
||||
const objekt = await prisma.bedarfsausweisWohnen.findUnique({
|
||||
const objekt = await prisma.gEGNachweisWohnen.findUnique({
|
||||
where: {
|
||||
uid: ctx.params.uid,
|
||||
benutzer: {
|
||||
@@ -30,11 +30,11 @@ export const PATCH = defineApiRoute({
|
||||
if (!objekt) {
|
||||
throw new APIError({
|
||||
code: "NOT_FOUND",
|
||||
message: "Ausweis konnte nicht gefunden werden oder gehört einem anderen Benutzer."
|
||||
message: "Nachweis konnte nicht gefunden werden oder gehört einem anderen Benutzer."
|
||||
})
|
||||
}
|
||||
|
||||
await prisma.bedarfsausweisWohnen.update({
|
||||
await prisma.gEGNachweisWohnen.update({
|
||||
where: {
|
||||
uid: ctx.params.uid
|
||||
},
|
||||
@@ -45,7 +45,7 @@ export const PATCH = defineApiRoute({
|
||||
|
||||
export const DELETE = defineApiRoute({
|
||||
meta: {
|
||||
description: "Storniert einen Ausweis"
|
||||
description: "Storniert einen Nachweis"
|
||||
},
|
||||
headers: authorizationHeaders,
|
||||
middleware: authorizationMiddleware,
|
||||
@@ -59,70 +59,63 @@ export const DELETE = defineApiRoute({
|
||||
})
|
||||
}
|
||||
|
||||
// Wir holen uns den Bedarfsausweis
|
||||
// Wir holen uns den BedarfsNachweis
|
||||
// Dieser MUSS mit dem Nutzer verknüpft sein.
|
||||
const ausweis = await prisma.bedarfsausweisWohnen.findUnique({
|
||||
const nachweis = await prisma.gEGNachweisWohnen.findUnique({
|
||||
where: {
|
||||
uid,
|
||||
},
|
||||
include: {
|
||||
aufnahme: {
|
||||
select: {
|
||||
storniert: true
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (!ausweis) {
|
||||
// Falls wir den Ausweis nicht finden können, werfen wir einen Fehler
|
||||
if (!nachweis) {
|
||||
// Falls wir den Nachweis nicht finden können, werfen wir einen Fehler
|
||||
throw new APIError({
|
||||
code: "NOT_FOUND",
|
||||
message: "Ausweis konnte nicht gefunden werden.",
|
||||
message: "Nachweis konnte nicht gefunden werden.",
|
||||
});
|
||||
}
|
||||
|
||||
// Wir dürfen den Ausweis nur stornieren, wenn er noch nicht ausgestellt wurde
|
||||
// Außerdem müssen wir schauen, ob wir Admin oder der Besitzer des Ausweises sind.
|
||||
if ((ausweis.benutzer_id !== user.id) && user.rolle !== "ADMIN") {
|
||||
// Falls der Ausweis nicht dem Nutzer gehört, werfen wir einen Fehler
|
||||
// Wir dürfen den Nachweis nur stornieren, wenn er noch nicht ausgestellt wurde
|
||||
// Außerdem müssen wir schauen, ob wir Admin oder der Besitzer des Nachweises sind.
|
||||
if ((nachweis.benutzer_id !== user.id) && user.rolle !== "ADMIN") {
|
||||
// Falls der Nachweis nicht dem Nutzer gehört, werfen wir einen Fehler
|
||||
throw new APIError({
|
||||
code: "FORBIDDEN",
|
||||
message: "Ausweis gehört nicht dem Nutzer.",
|
||||
message: "Nachweis gehört nicht dem Nutzer.",
|
||||
});
|
||||
}
|
||||
|
||||
// if (ausweis.erledigt) {
|
||||
// // Falls der Ausweis bereits ausgestellt wurde, werfen wir einen Fehler
|
||||
// if (Nachweis.erledigt) {
|
||||
// // Falls der Nachweis bereits ausgestellt wurde, werfen wir einen Fehler
|
||||
// throw new TRPCError({
|
||||
// code: "BAD_REQUEST",
|
||||
// message: "Ausweis wurde bereits ausgestellt.",
|
||||
// message: "Nachweis wurde bereits ausgestellt.",
|
||||
// });
|
||||
// }
|
||||
|
||||
if (ausweis.aufnahme.storniert) {
|
||||
// Falls der Ausweis bereits storniert ist, werfen wir einen Fehler
|
||||
if (nachweis.storniert) {
|
||||
// Falls der Nachweis bereits storniert ist, werfen wir einen Fehler
|
||||
throw new APIError({
|
||||
code: "BAD_REQUEST",
|
||||
message: "Ausweis wurde bereits storniert.",
|
||||
message: "Nachweis wurde bereits storniert.",
|
||||
});
|
||||
}
|
||||
|
||||
await prisma.aufnahme.update({
|
||||
await prisma.gEGNachweisWohnen.update({
|
||||
where: {
|
||||
id: ausweis.aufnahme_id
|
||||
id: nachweis.id
|
||||
},
|
||||
data: {
|
||||
storniert: true
|
||||
}
|
||||
})
|
||||
|
||||
// Wir erstellen ein Event, dass der Ausweis storniert wurde
|
||||
// Wir erstellen ein Event, dass der Nachweis storniert wurde
|
||||
// Dann können wir das in der Historie anzeigen
|
||||
await prisma.event.create({
|
||||
data: {
|
||||
title: "Ausweis storniert",
|
||||
description: ((user.rolle === "ADMIN") && (ausweis.benutzer_id !== user.id)) ? "Ausweis wurde von einem Administrator storniert." : "Ausweis wurde vom Besitzer storniert.",
|
||||
title: "Nachweis storniert",
|
||||
description: ((user.rolle === "ADMIN") && (nachweis.benutzer_id !== user.id)) ? "Nachweis wurde von einem Administrator storniert." : "Nachweis wurde vom Besitzer storniert.",
|
||||
benutzer: {
|
||||
connect: {
|
||||
id: user.id
|
||||
@@ -130,7 +123,7 @@ export const DELETE = defineApiRoute({
|
||||
},
|
||||
aufnahme: {
|
||||
connect: {
|
||||
id: ausweis.aufnahme_id
|
||||
id: nachweis.aufnahme_id
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -155,7 +148,7 @@ export const GET = defineApiRoute({
|
||||
}
|
||||
}
|
||||
},
|
||||
output: ZodOverlap<OptionalNullable<BedarfsausweisWohnenClient>>(BedarfsausweisWohnenSchema.merge(z.object({
|
||||
output: ZodOverlap<OptionalNullable<GEGNachweisWohnenClient>>(GEGNachweisWohnenSchema.merge(z.object({
|
||||
uid_aufnahme: UUidWithPrefix,
|
||||
uid_objekt: UUidWithPrefix,
|
||||
uid_benutzer: UUidWithPrefix.optional()
|
||||
@@ -175,7 +168,7 @@ export const GET = defineApiRoute({
|
||||
})
|
||||
}
|
||||
|
||||
const ausweis = await prisma.bedarfsausweisWohnen.findUnique({
|
||||
const Nachweis = await prisma.gEGNachweisWohnen.findUnique({
|
||||
where: {
|
||||
uid,
|
||||
benutzer_id: user.id
|
||||
@@ -199,19 +192,19 @@ export const GET = defineApiRoute({
|
||||
}
|
||||
});
|
||||
|
||||
if (!ausweis) {
|
||||
// Falls wir den Ausweis nicht finden können, werfen wir einen Fehler
|
||||
if (!Nachweis) {
|
||||
// Falls wir den Nachweis nicht finden können, werfen wir einen Fehler
|
||||
throw new APIError({
|
||||
code: "NOT_FOUND",
|
||||
message: "Ausweis konnte nicht gefunden werden.",
|
||||
message: "Nachweis konnte nicht gefunden werden.",
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
uid_aufnahme: ausweis.aufnahme.uid,
|
||||
uid_objekt: ausweis.aufnahme.objekt.uid,
|
||||
uid_benutzer: ausweis.benutzer?.uid,
|
||||
...exclude(ausweis, ["id", "aufnahme_id", "benutzer_id", "aufnahme"])
|
||||
uid_aufnahme: Nachweis.aufnahme.uid,
|
||||
uid_objekt: Nachweis.aufnahme.objekt.uid,
|
||||
uid_benutzer: Nachweis.benutzer?.uid,
|
||||
...exclude(Nachweis, ["id", "aufnahme_id", "benutzer_id", "aufnahme"])
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -1,6 +1,6 @@
|
||||
import { UUidWithPrefix } from "#components/Ausweis/types.js";
|
||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||
import { BedarfsausweisWohnenSchema, prisma, VerbrauchsausweisWohnenSchema } from "@ibcornelsen/database/server";
|
||||
import { GEGNachweisWohnenSchema, prisma } from "@ibcornelsen/database/server";
|
||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||
import { z } from "zod";
|
||||
|
||||
@@ -12,7 +12,7 @@ export const PUT = defineApiRoute({
|
||||
tags: ["GEG Nachweis", "Verbrauchsausweis Wohnen"],
|
||||
},
|
||||
input: z.object({
|
||||
ausweis: VerbrauchsausweisWohnenSchema.omit({
|
||||
nachweis: GEGNachweisWohnenSchema.omit({
|
||||
id: true,
|
||||
benutzer_id: true,
|
||||
uid: true,
|
||||
@@ -41,40 +41,39 @@ export const PUT = defineApiRoute({
|
||||
})
|
||||
}
|
||||
|
||||
const createdAusweis = await prisma.verbrauchsausweisWohnen.create({
|
||||
data: {
|
||||
...input.ausweis,
|
||||
benutzer: {
|
||||
connect: {
|
||||
id: user.id,
|
||||
},
|
||||
const nachweis = await prisma.gEGNachweisWohnen.create({
|
||||
data: {
|
||||
...input.nachweis,
|
||||
benutzer: {
|
||||
connect: {
|
||||
id: user.id,
|
||||
},
|
||||
aufnahme: {
|
||||
connect: {
|
||||
uid: aufnahme.uid,
|
||||
},
|
||||
},
|
||||
geg_anfrage: true
|
||||
},
|
||||
select: {
|
||||
uid: true,
|
||||
aufnahme: {
|
||||
select: {
|
||||
uid: true,
|
||||
objekt: {
|
||||
select: {
|
||||
uid: true,
|
||||
},
|
||||
aufnahme: {
|
||||
connect: {
|
||||
id: aufnahme.id,
|
||||
},
|
||||
}
|
||||
},
|
||||
select: {
|
||||
uid: true,
|
||||
aufnahme: {
|
||||
select: {
|
||||
uid: true,
|
||||
objekt: {
|
||||
select: {
|
||||
uid: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
uid: createdAusweis.uid,
|
||||
objekt_uid: createdAusweis.aufnahme.objekt.uid,
|
||||
aufnahme_uid: createdAusweis.aufnahme.uid,
|
||||
uid: nachweis.uid,
|
||||
objekt_uid: nachweis.aufnahme.objekt.uid,
|
||||
aufnahme_uid: nachweis.aufnahme.uid,
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -108,11 +107,6 @@ export const GET = defineApiRoute({
|
||||
benutzer: true,
|
||||
aufnahme: {
|
||||
include: {
|
||||
objekt: {
|
||||
include: {
|
||||
bilder: true,
|
||||
},
|
||||
},
|
||||
rechnungen: true,
|
||||
events: {
|
||||
include: {
|
||||
@@ -7,7 +7,7 @@ import { writeFileSync } from "fs";
|
||||
|
||||
export const PUT = defineApiRoute({
|
||||
input: UnterlageSchema.omit({
|
||||
objekt_id: true,
|
||||
aufnahme_id: true,
|
||||
id: true,
|
||||
uid: true
|
||||
}).merge(z.object({
|
||||
@@ -25,14 +25,14 @@ export const PUT = defineApiRoute({
|
||||
})
|
||||
}
|
||||
|
||||
let objekt = await prisma.objekt.findUnique({
|
||||
let aufnahme = await prisma.aufnahme.findUnique({
|
||||
where: {
|
||||
uid: ctx.params.uid,
|
||||
benutzer_id: user.id
|
||||
},
|
||||
});
|
||||
|
||||
if (!objekt) {
|
||||
if (!aufnahme) {
|
||||
throw new APIError({
|
||||
code: "NOT_FOUND",
|
||||
message: "Objekt nicht gefunden oder gehört einem anderen Benutzer.",
|
||||
@@ -44,9 +44,9 @@ export const PUT = defineApiRoute({
|
||||
const unterlage = await prisma.unterlage.create({
|
||||
data: {
|
||||
kategorie: kategorie,
|
||||
objekt: {
|
||||
aufnahme: {
|
||||
connect: {
|
||||
id: objekt.id,
|
||||
id: aufnahme.id,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -88,7 +88,7 @@ export const GET = defineApiRoute({
|
||||
async fetch(input, ctx, user) {
|
||||
const { uid } = ctx.params;
|
||||
|
||||
const objekt = await prisma.objekt.findUnique({
|
||||
const objekt = await prisma.aufnahme.findUnique({
|
||||
where: {
|
||||
uid,
|
||||
benutzer_id: user.id
|
||||
|
||||
@@ -49,7 +49,7 @@ const reformedAusweise = ausweise.map(ausweis => ({
|
||||
ausweis: omit(ausweis, ["aufnahme"]) as VerbrauchsausweisWohnenClient,
|
||||
aufnahme: omit(omit(ausweis.aufnahme, ["events"]), ["objekt"]) as AufnahmeClient,
|
||||
objekt: omit(ausweis.aufnahme.objekt, ["bilder"]) as ObjektClient,
|
||||
bilder: ausweis.aufnahme.objekt.bilder as unknown as UploadedGebaeudeBild[],
|
||||
bilder: ausweis.aufnahme.bilder as unknown as UploadedGebaeudeBild[],
|
||||
events: ausweis.aufnahme.events
|
||||
}))
|
||||
---
|
||||
|
||||
@@ -52,12 +52,12 @@ if (uid) {
|
||||
}
|
||||
})
|
||||
|
||||
bilder = await caller.objekt._uid.bilder.GET.fetch(null, {
|
||||
bilder = await caller.aufnahme._uid.bilder.GET.fetch(null, {
|
||||
headers: {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
uid: ausweis.uid_objekt
|
||||
uid: ausweis.uid_aufnahme
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -54,12 +54,12 @@ if (uid) {
|
||||
}
|
||||
})
|
||||
|
||||
bilder = await caller.objekt._uid.bilder.GET.fetch(null, {
|
||||
bilder = await caller.aufnahme._uid.bilder.GET.fetch(null, {
|
||||
headers: {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
uid: uid_objekt
|
||||
uid: uid_aufnahme
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -51,12 +51,12 @@ if (uid) {
|
||||
}
|
||||
})
|
||||
|
||||
bilder = await caller.objekt._uid.bilder.GET.fetch(null, {
|
||||
bilder = await caller.aufnahme._uid.bilder.GET.fetch(null, {
|
||||
headers: {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
uid: ausweis.uid_objekt
|
||||
uid: ausweis.uid_aufnahme
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -51,12 +51,12 @@ if (uid) {
|
||||
}
|
||||
})
|
||||
|
||||
bilder = await caller.objekt._uid.bilder.GET.fetch(null, {
|
||||
bilder = await caller.aufnahme._uid.bilder.GET.fetch(null, {
|
||||
headers: {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
uid: ausweis.uid_objekt
|
||||
uid: ausweis.uid_aufnahme
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -51,12 +51,12 @@ if (uid) {
|
||||
}
|
||||
})
|
||||
|
||||
bilder = await caller.objekt._uid.bilder.GET.fetch(null, {
|
||||
bilder = await caller.aufnahme._uid.bilder.GET.fetch(null, {
|
||||
headers: {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
uid: ausweis.uid_objekt
|
||||
uid: ausweis.uid_aufnahme
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -51,12 +51,12 @@ if (uid) {
|
||||
}
|
||||
})
|
||||
|
||||
bilder = await caller.objekt._uid.bilder.GET.fetch(null, {
|
||||
bilder = await caller.aufnahme._uid.bilder.GET.fetch(null, {
|
||||
headers: {
|
||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
uid: ausweis.uid_objekt
|
||||
uid: ausweis.uid_aufnahme
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -49,6 +49,15 @@ if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||
uid
|
||||
}
|
||||
})
|
||||
} else if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) {
|
||||
ausweis = await caller["geg-nachweis-wohnen"]._uid.GET.fetch(undefined, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
||||
},
|
||||
params: {
|
||||
uid
|
||||
}
|
||||
})
|
||||
} else {
|
||||
return Astro.redirect("/404")
|
||||
}
|
||||
@@ -80,8 +89,6 @@ const user = await caller.user.self.GET.fetch(undefined, {
|
||||
aufnahme.ausweisart = "VerbrauchsausweisWohnen"
|
||||
|
||||
|
||||
|
||||
|
||||
if (!ausweis || !user) {
|
||||
return Astro.redirect("/404");
|
||||
}
|
||||
|
||||
52
src/pages/speichern-erfolgreich.astro
Normal file
52
src/pages/speichern-erfolgreich.astro
Normal file
@@ -0,0 +1,52 @@
|
||||
---
|
||||
import Layout from "#layouts/Layout.astro";
|
||||
import { BASE_URI } from "#lib/constants";
|
||||
import { transport } from "#lib/mail";
|
||||
import { getPrismaAusweisAdapter } from "#lib/server/ausweis";
|
||||
import { getCurrentUser } from "#lib/server/user";
|
||||
|
||||
const user = await getCurrentUser(Astro)
|
||||
const uid = Astro.url.searchParams.get("uid");
|
||||
const adapter = getPrismaAusweisAdapter(uid || "")
|
||||
|
||||
console.log(user, uid);
|
||||
|
||||
|
||||
if (!user || !uid || !adapter) {
|
||||
return Astro.redirect("/")
|
||||
}
|
||||
|
||||
const ausweis = await adapter.findUnique({
|
||||
where: {
|
||||
uid
|
||||
}
|
||||
})
|
||||
|
||||
if (!ausweis) {
|
||||
return Astro.redirect("/")
|
||||
}
|
||||
|
||||
transport.sendMail({
|
||||
from: `"IBCornelsen" <info@online-energieausweis.org>`,
|
||||
to: user.email,
|
||||
subject: `Ihr Ausweis wurde gespeichert - IBCornelsen.`,
|
||||
text: `Sehr geehrte/r ${user.name},
|
||||
|
||||
Ihr Energieausweis wurde erfolgreich in Ihrem Konto gespeichert. Sie können ihn jederzeit in Ihrem Kundenbereich abrufen.
|
||||
|
||||
Zum Download oder zur Verwaltung Ihrer Ausweise besuchen Sie bitte:
|
||||
${BASE_URI}/dashboard
|
||||
|
||||
Falls Sie Fragen haben, stehen wir Ihnen gerne zur Verfügung.
|
||||
|
||||
Mit freundlichen Grüßen
|
||||
Ihr IBCornelsen`
|
||||
})
|
||||
---
|
||||
|
||||
<Layout title="Speichern Erfolgreich">
|
||||
<h1>Ihr Energieausweis wurde gespeichert</h1>
|
||||
<p>Ihr Energieausweis wurde erfolgreich in Ihrem Konto gespeichert. Sie können ihn jederzeit in Ihrem Kundenbereich abrufen.</p>
|
||||
<a href="/dashboard">👉 Jetzt ansehen</a>
|
||||
<p>Falls Sie Fragen haben, steht unser Support-Team Ihnen gerne zur Verfügung.</p>
|
||||
</Layout>
|
||||
Reference in New Issue
Block a user