@@ -6,7 +6,6 @@ import node from "@astrojs/node";
|
|||||||
import mdx from "@astrojs/mdx";
|
import mdx from "@astrojs/mdx";
|
||||||
import astroTypesafeAPI from "astro-typesafe-api"
|
import astroTypesafeAPI from "astro-typesafe-api"
|
||||||
|
|
||||||
|
|
||||||
// https://astro.build/config
|
// https://astro.build/config
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
integrations: [svelte(), tailwind(), mdx(), astroTypesafeAPI()],
|
integrations: [svelte(), tailwind(), mdx(), astroTypesafeAPI()],
|
||||||
|
|||||||
15
bun.lock
15
bun.lock
@@ -32,7 +32,7 @@
|
|||||||
"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-types": "^2.1.35",
|
"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",
|
||||||
@@ -64,7 +64,6 @@
|
|||||||
"@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/mime-types": "^2.1.4",
|
|
||||||
"@types/nodemailer": "^6.4.17",
|
"@types/nodemailer": "^6.4.17",
|
||||||
"@types/papaparse": "^5.3.15",
|
"@types/papaparse": "^5.3.15",
|
||||||
"@types/siema": "^1.4.11",
|
"@types/siema": "^1.4.11",
|
||||||
@@ -772,8 +771,6 @@
|
|||||||
|
|
||||||
"@types/mime": ["@types/mime@1.3.5", "", {}, "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="],
|
"@types/mime": ["@types/mime@1.3.5", "", {}, "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="],
|
||||||
|
|
||||||
"@types/mime-types": ["@types/mime-types@2.1.4", "", {}, "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w=="],
|
|
||||||
|
|
||||||
"@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="],
|
"@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="],
|
||||||
|
|
||||||
"@types/nlcst": ["@types/nlcst@2.0.3", "", { "dependencies": { "@types/unist": "*" } }, "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA=="],
|
"@types/nlcst": ["@types/nlcst@2.0.3", "", { "dependencies": { "@types/unist": "*" } }, "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA=="],
|
||||||
@@ -1856,7 +1853,7 @@
|
|||||||
|
|
||||||
"micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
|
"micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
|
||||||
|
|
||||||
"mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="],
|
"mime": ["mime@4.0.6", "", { "bin": { "mime": "bin/cli.js" } }, "sha512-4rGt7rvQHBbaSOF9POGkk1ocRP16Md1x36Xma8sz8h8/vfCUI2OtEIeCqe4Ofes853x4xDoPiFLIT47J5fI/7A=="],
|
||||||
|
|
||||||
"mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
|
"mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
|
||||||
|
|
||||||
@@ -2868,6 +2865,8 @@
|
|||||||
|
|
||||||
"node-mocks-http/depd": ["depd@1.1.2", "", {}, "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="],
|
"node-mocks-http/depd": ["depd@1.1.2", "", {}, "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="],
|
||||||
|
|
||||||
|
"node-mocks-http/mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="],
|
||||||
|
|
||||||
"normalize-package-data/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="],
|
"normalize-package-data/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="],
|
||||||
|
|
||||||
"npm-packlist/glob": ["glob@8.1.0", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^5.0.1", "once": "^1.3.0" } }, "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ=="],
|
"npm-packlist/glob": ["glob@8.1.0", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^5.0.1", "once": "^1.3.0" } }, "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ=="],
|
||||||
@@ -2938,6 +2937,8 @@
|
|||||||
|
|
||||||
"send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
|
"send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
|
||||||
|
|
||||||
|
"send/mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="],
|
||||||
|
|
||||||
"serve-static/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=="],
|
"serve-static/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=="],
|
||||||
|
|
||||||
"soap/strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="],
|
"soap/strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="],
|
||||||
@@ -3022,6 +3023,8 @@
|
|||||||
|
|
||||||
"express/send/encodeurl": ["encodeurl@1.0.2", "", {}, "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="],
|
"express/send/encodeurl": ["encodeurl@1.0.2", "", {}, "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="],
|
||||||
|
|
||||||
|
"express/send/mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="],
|
||||||
|
|
||||||
"finalhandler/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
|
"finalhandler/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
|
||||||
|
|
||||||
"form-render/@ant-design/icons/@ant-design/colors": ["@ant-design/colors@6.0.0", "", { "dependencies": { "@ctrl/tinycolor": "^3.4.0" } }, "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ=="],
|
"form-render/@ant-design/icons/@ant-design/colors": ["@ant-design/colors@6.0.0", "", { "dependencies": { "@ctrl/tinycolor": "^3.4.0" } }, "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ=="],
|
||||||
@@ -3094,6 +3097,8 @@
|
|||||||
|
|
||||||
"serve-static/send/encodeurl": ["encodeurl@1.0.2", "", {}, "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="],
|
"serve-static/send/encodeurl": ["encodeurl@1.0.2", "", {}, "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="],
|
||||||
|
|
||||||
|
"serve-static/send/mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="],
|
||||||
|
|
||||||
"tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="],
|
"tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="],
|
||||||
|
|
||||||
"tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="],
|
"tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="],
|
||||||
|
|||||||
@@ -35,6 +35,14 @@ export default defineConfig({
|
|||||||
on("task", {
|
on("task", {
|
||||||
async verbrauchsausweisWohnen(query) {
|
async verbrauchsausweisWohnen(query) {
|
||||||
return await prisma.verbrauchsausweisWohnen.findFirst(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
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
"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-types": "^2.1.35",
|
"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",
|
||||||
@@ -78,7 +78,6 @@
|
|||||||
"@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/mime-types": "^2.1.4",
|
|
||||||
"@types/nodemailer": "^6.4.17",
|
"@types/nodemailer": "^6.4.17",
|
||||||
"@types/papaparse": "^5.3.15",
|
"@types/papaparse": "^5.3.15",
|
||||||
"@types/siema": "^1.4.11",
|
"@types/siema": "^1.4.11",
|
||||||
|
|||||||
44
prisma/migrations/20250330225209_/migration.sql
Normal file
44
prisma/migrations/20250330225209_/migration.sql
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- You are about to drop the column `ausstellungsdatum` on the `Aufnahme` table. All the data in the column will be lost.
|
||||||
|
- You are about to drop the column `ausweisart` on the `Aufnahme` table. All the data in the column will be lost.
|
||||||
|
- You are about to drop the column `boxpruefung` on the `Aufnahme` table. All the data in the column will be lost.
|
||||||
|
- You are about to drop the column `brennstoff_1` on the `Aufnahme` table. All the data in the column will be lost.
|
||||||
|
- You are about to drop the column `brennstoff_2` on the `Aufnahme` table. All the data in the column will be lost.
|
||||||
|
- You are about to drop the column `energieeffizienzklasse` on the `Aufnahme` table. All the data in the column will be lost.
|
||||||
|
- You are about to drop the column `uid` on the `Bild` table. All the data in the column will be lost.
|
||||||
|
- You are about to drop the column `keller_beheizt` on the `VerbrauchsausweisWohnen` table. All the data in the column will be lost.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- DropIndex
|
||||||
|
DROP INDEX "Bild_uid_key";
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "Aufnahme" DROP COLUMN "ausstellungsdatum",
|
||||||
|
DROP COLUMN "ausweisart",
|
||||||
|
DROP COLUMN "boxpruefung",
|
||||||
|
DROP COLUMN "brennstoff_1",
|
||||||
|
DROP COLUMN "brennstoff_2",
|
||||||
|
DROP COLUMN "energieeffizienzklasse";
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "BedarfsausweisWohnen" ADD COLUMN "ausstellungsdatum" TIMESTAMP(3),
|
||||||
|
ADD COLUMN "boxpruefung" BOOLEAN DEFAULT false,
|
||||||
|
ADD COLUMN "energieeffizienzklasse" VARCHAR(5);
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "Bild" DROP COLUMN "uid";
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "VerbrauchsausweisGewerbe" ADD COLUMN "ausstellungsdatum" TIMESTAMP(3),
|
||||||
|
ADD COLUMN "boxpruefung" BOOLEAN DEFAULT false,
|
||||||
|
ADD COLUMN "energieeffizienzklasse" VARCHAR(5);
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "VerbrauchsausweisWohnen" DROP COLUMN "keller_beheizt",
|
||||||
|
ADD COLUMN "ausstellungsdatum" TIMESTAMP(3),
|
||||||
|
ADD COLUMN "boxpruefung" BOOLEAN DEFAULT false,
|
||||||
|
ADD COLUMN "brennstoff_1" VARCHAR(50),
|
||||||
|
ADD COLUMN "brennstoff_2" VARCHAR(50),
|
||||||
|
ADD COLUMN "energieeffizienzklasse" VARCHAR(5);
|
||||||
22
prisma/migrations/20250331182241_nachweise/migration.sql
Normal file
22
prisma/migrations/20250331182241_nachweise/migration.sql
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- Added the required column `updated_at` to the `BedarfsausweisGewerbe` table without a default value. This is not possible if the table is not empty.
|
||||||
|
- Added the required column `updated_at` to the `GEGNachweisGewerbe` table without a default value. This is not possible if the table is not empty.
|
||||||
|
- Added the required column `updated_at` to the `GEGNachweisWohnen` table without a default value. This is not possible if the table is not empty.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "BedarfsausweisGewerbe" ADD COLUMN "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
ADD COLUMN "nachweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
|
||||||
|
ADD COLUMN "updated_at" TIMESTAMP(3) NOT NULL;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "GEGNachweisGewerbe" ADD COLUMN "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
ADD COLUMN "nachweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
|
||||||
|
ADD COLUMN "updated_at" TIMESTAMP(3) NOT NULL;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "GEGNachweisWohnen" ADD COLUMN "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
ADD COLUMN "nachweistyp" "AusweisTyp" NOT NULL DEFAULT 'Standard',
|
||||||
|
ADD COLUMN "updated_at" TIMESTAMP(3) NOT NULL;
|
||||||
@@ -16,8 +16,6 @@ model Aufnahme {
|
|||||||
id String @id @unique @db.VarChar(8)
|
id String @id @unique @db.VarChar(8)
|
||||||
benutzer_id String?
|
benutzer_id String?
|
||||||
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
/// @zod.describe("Art des korrespondierenden Ausweises, wie z.B. VerbrauchsausweisWohnen")
|
|
||||||
ausweisart Ausweisart?
|
|
||||||
/// @zod.describe("Art des Gebäudes und seiner primären Nutzungsart")
|
/// @zod.describe("Art des Gebäudes und seiner primären Nutzungsart")
|
||||||
gebaeudetyp String? @db.VarChar
|
gebaeudetyp String? @db.VarChar
|
||||||
/// @zod.describe("Betrachteter Teil des Gebäudes, z.B. Gesamtgebäude, Wohnteil, Gewerbeteil")
|
/// @zod.describe("Betrachteter Teil des Gebäudes, z.B. Gesamtgebäude, Wohnteil, Gewerbeteil")
|
||||||
@@ -56,20 +54,8 @@ model Aufnahme {
|
|||||||
/// @zod.describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")
|
/// @zod.describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen")
|
||||||
alternative_kuehlung Boolean?
|
alternative_kuehlung Boolean?
|
||||||
|
|
||||||
/// @zod.describe("Genutzer Brennstoff der primären Energiequelle")
|
/// @zod.describe("Datum an dem der Kunde die Aufnahme erstellt hat")
|
||||||
brennstoff_1 String? @db.VarChar(50)
|
|
||||||
/// @zod.describe("Genutzer Brennstoff der sekundären Energiequelle")
|
|
||||||
brennstoff_2 String? @db.VarChar(50)
|
|
||||||
|
|
||||||
boxpruefung Boolean? @default(false)
|
|
||||||
|
|
||||||
/// @zod.describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes")
|
|
||||||
energieeffizienzklasse String? @db.VarChar(5)
|
|
||||||
|
|
||||||
/// @zod.describe("Datum an dem der Kunde den Ausweis erstellt hat")
|
|
||||||
erstellungsdatum DateTime? @default(now())
|
erstellungsdatum DateTime? @default(now())
|
||||||
/// @zod.describe("Datum an dem der Aussteller den Ausweis ausgestellt hat")
|
|
||||||
ausstellungsdatum DateTime?
|
|
||||||
|
|
||||||
/// @zod.describe("Falls das Gebäude über eine Zentralbeheizung verfügt, sollte dieser Wert auf true stehen")
|
/// @zod.describe("Falls das Gebäude über eine Zentralbeheizung verfügt, sollte dieser Wert auf true stehen")
|
||||||
zentralheizung Boolean?
|
zentralheizung Boolean?
|
||||||
|
|||||||
@@ -25,6 +25,11 @@ model BedarfsausweisGewerbe {
|
|||||||
bauteilaktivierung Boolean? @default(false)
|
bauteilaktivierung Boolean? @default(false)
|
||||||
klimatisierung Boolean? @default(false)
|
klimatisierung Boolean? @default(false)
|
||||||
|
|
||||||
|
nachweistyp AusweisTyp @default(Standard)
|
||||||
|
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
|
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
|
||||||
benutzer_id String?
|
benutzer_id String?
|
||||||
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|||||||
@@ -11,6 +11,12 @@ model BedarfsausweisWohnen {
|
|||||||
alternative_lueftung Boolean?
|
alternative_lueftung Boolean?
|
||||||
alternative_kuehlung 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?
|
anzahl_vollgeschosse Int?
|
||||||
geschosshoehe Float?
|
geschosshoehe Float?
|
||||||
anzahl_gauben Int?
|
anzahl_gauben Int?
|
||||||
|
|||||||
@@ -16,6 +16,11 @@ model GEGNachweisGewerbe {
|
|||||||
/// @zod.describe("Beschreibung des Bauvorhabens")
|
/// @zod.describe("Beschreibung des Bauvorhabens")
|
||||||
beschreibung String? @db.Text
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
|
nachweistyp AusweisTyp @default(Standard)
|
||||||
|
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
|
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
|
||||||
benutzer_id String?
|
benutzer_id String?
|
||||||
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|||||||
@@ -16,6 +16,11 @@ model GEGNachweisWohnen {
|
|||||||
/// @zod.describe("Beschreibung des Bauvorhabens")
|
/// @zod.describe("Beschreibung des Bauvorhabens")
|
||||||
beschreibung String? @db.Text
|
beschreibung String? @db.Text
|
||||||
|
|
||||||
|
nachweistyp AusweisTyp @default(Standard)
|
||||||
|
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
|
/// @zod.describe("Die ID des Benutzers, welchem dieser Ausweis gehört")
|
||||||
benutzer_id String?
|
benutzer_id String?
|
||||||
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
benutzer Benutzer? @relation(fields: [benutzer_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||||
|
|||||||
@@ -5,9 +5,7 @@ model VerbrauchsausweisGewerbe {
|
|||||||
ausstellgrund Ausstellgrund?
|
ausstellgrund Ausstellgrund?
|
||||||
registriernummer String? @db.VarChar
|
registriernummer String? @db.VarChar
|
||||||
zusaetzliche_heizquelle Boolean?
|
zusaetzliche_heizquelle Boolean?
|
||||||
brennstoff_1 String? @db.VarChar(50)
|
|
||||||
einheit_1 String? @db.VarChar(50)
|
einheit_1 String? @db.VarChar(50)
|
||||||
brennstoff_2 String? @db.VarChar(50)
|
|
||||||
einheit_2 String? @db.VarChar(50)
|
einheit_2 String? @db.VarChar(50)
|
||||||
startdatum DateTime? @db.Timestamp(6)
|
startdatum DateTime? @db.Timestamp(6)
|
||||||
verbrauch_1 Int?
|
verbrauch_1 Int?
|
||||||
@@ -17,6 +15,17 @@ model VerbrauchsausweisGewerbe {
|
|||||||
verbrauch_5 Int?
|
verbrauch_5 Int?
|
||||||
verbrauch_6 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_1 Int?
|
||||||
strom_2 Int?
|
strom_2 Int?
|
||||||
strom_3 Int?
|
strom_3 Int?
|
||||||
|
|||||||
@@ -13,6 +13,18 @@ model VerbrauchsausweisWohnen {
|
|||||||
einheit_1 String? @db.VarChar(50)
|
einheit_1 String? @db.VarChar(50)
|
||||||
/// @zod.describe("Einheit des Energieträgers der sekundären Heizquelle")
|
/// @zod.describe("Einheit des Energieträgers der sekundären Heizquelle")
|
||||||
einheit_2 String? @db.VarChar(50)
|
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)
|
startdatum DateTime? @db.Timestamptz(6)
|
||||||
/// @zod.describe("Energieverbrauch der primären Heizquelle im ersten der drei Verbrauchsjahre")
|
/// @zod.describe("Energieverbrauch der primären Heizquelle im ersten der drei Verbrauchsjahre")
|
||||||
verbrauch_1 Int?
|
verbrauch_1 Int?
|
||||||
@@ -30,8 +42,6 @@ model VerbrauchsausweisWohnen {
|
|||||||
warmwasser_enthalten Boolean?
|
warmwasser_enthalten Boolean?
|
||||||
/// @zod.describe("Falls der Warmwasser Anteil am Verbrauch bekannt ist, sollte dieser Wert auf true stehen")
|
/// @zod.describe("Falls der Warmwasser Anteil am Verbrauch bekannt ist, sollte dieser Wert auf true stehen")
|
||||||
warmwasser_anteil_bekannt Boolean?
|
warmwasser_anteil_bekannt Boolean?
|
||||||
/// @zod.describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen")
|
|
||||||
keller_beheizt Boolean?
|
|
||||||
/// @zod.describe("Der Faktor mit dem die Wohnfläche erhöht wird wenn die beheizte Gesamtfläche (energetische Nutzfläche) unbekannt ist.")
|
/// @zod.describe("Der Faktor mit dem die Wohnfläche erhöht wird wenn die beheizte Gesamtfläche (energetische Nutzfläche) unbekannt ist.")
|
||||||
faktorKeller Float?
|
faktorKeller Float?
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,15 @@ export const createCaller = createCallerFactory({
|
|||||||
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
|
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
|
||||||
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
|
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
|
||||||
"unterlage": await import("../src/pages/api/unterlage.ts"),
|
"unterlage": await import("../src/pages/api/unterlage.ts"),
|
||||||
|
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
|
||||||
|
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
|
||||||
|
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
|
||||||
|
"auth/passwort-vergessen": await import("../src/pages/api/auth/passwort-vergessen.ts"),
|
||||||
|
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
|
||||||
|
"bedarfsausweis-gewerbe/[id]": await import("../src/pages/api/bedarfsausweis-gewerbe/[id].ts"),
|
||||||
|
"bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"),
|
||||||
|
"bedarfsausweis-wohnen/[id]": await import("../src/pages/api/bedarfsausweis-wohnen/[id].ts"),
|
||||||
|
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
||||||
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
|
"admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"),
|
||||||
"admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"),
|
"admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"),
|
||||||
"admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"),
|
"admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"),
|
||||||
@@ -12,31 +21,22 @@ export const createCaller = createCallerFactory({
|
|||||||
"admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"),
|
"admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"),
|
||||||
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
|
"admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"),
|
||||||
"admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"),
|
"admin/stornieren": await import("../src/pages/api/admin/stornieren.ts"),
|
||||||
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
|
|
||||||
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
|
|
||||||
"auth/access-token": await import("../src/pages/api/auth/access-token.ts"),
|
|
||||||
"auth/passwort-vergessen": await import("../src/pages/api/auth/passwort-vergessen.ts"),
|
|
||||||
"auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"),
|
|
||||||
"bedarfsausweis-gewerbe/[uid]": await import("../src/pages/api/bedarfsausweis-gewerbe/[uid].ts"),
|
|
||||||
"bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"),
|
|
||||||
"bedarfsausweis-wohnen/[id]": await import("../src/pages/api/bedarfsausweis-wohnen/[id].ts"),
|
|
||||||
"bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"),
|
|
||||||
"bilder/[id]": await import("../src/pages/api/bilder/[id].ts"),
|
"bilder/[id]": await import("../src/pages/api/bilder/[id].ts"),
|
||||||
"geg-nachweis-gewerbe/[uid]": await import("../src/pages/api/geg-nachweis-gewerbe/[uid].ts"),
|
"geg-nachweis-gewerbe/[id]": await import("../src/pages/api/geg-nachweis-gewerbe/[id].ts"),
|
||||||
"geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"),
|
"geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"),
|
||||||
"geg-nachweis-wohnen/[uid]": await import("../src/pages/api/geg-nachweis-wohnen/[uid].ts"),
|
"geg-nachweis-wohnen/[id]": await import("../src/pages/api/geg-nachweis-wohnen/[id].ts"),
|
||||||
"geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"),
|
"geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"),
|
||||||
"objekt": await import("../src/pages/api/objekt/index.ts"),
|
"objekt": await import("../src/pages/api/objekt/index.ts"),
|
||||||
|
"ticket": await import("../src/pages/api/ticket/index.ts"),
|
||||||
|
"verbrauchsausweis-wohnen/[id]": await import("../src/pages/api/verbrauchsausweis-wohnen/[id].ts"),
|
||||||
|
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
|
||||||
"rechnung/[id]": await import("../src/pages/api/rechnung/[id].ts"),
|
"rechnung/[id]": await import("../src/pages/api/rechnung/[id].ts"),
|
||||||
"rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"),
|
"rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.ts"),
|
||||||
"rechnung": await import("../src/pages/api/rechnung/index.ts"),
|
"rechnung": await import("../src/pages/api/rechnung/index.ts"),
|
||||||
"ticket": await import("../src/pages/api/ticket/index.ts"),
|
|
||||||
"user": await import("../src/pages/api/user/index.ts"),
|
|
||||||
"user/self": await import("../src/pages/api/user/self.ts"),
|
|
||||||
"verbrauchsausweis-gewerbe/[id]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[id].ts"),
|
"verbrauchsausweis-gewerbe/[id]": await import("../src/pages/api/verbrauchsausweis-gewerbe/[id].ts"),
|
||||||
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
|
"verbrauchsausweis-gewerbe": await import("../src/pages/api/verbrauchsausweis-gewerbe/index.ts"),
|
||||||
"verbrauchsausweis-wohnen/[id]": await import("../src/pages/api/verbrauchsausweis-wohnen/[id].ts"),
|
"user": await import("../src/pages/api/user/index.ts"),
|
||||||
"verbrauchsausweis-wohnen": await import("../src/pages/api/verbrauchsausweis-wohnen/index.ts"),
|
"user/self": await import("../src/pages/api/user/self.ts"),
|
||||||
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
|
"webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"),
|
||||||
"aufnahme/[id]/bilder": await import("../src/pages/api/aufnahme/[id]/bilder.ts"),
|
"aufnahme/[id]/bilder": await import("../src/pages/api/aufnahme/[id]/bilder.ts"),
|
||||||
"aufnahme/[id]": await import("../src/pages/api/aufnahme/[id]/index.ts"),
|
"aufnahme/[id]": await import("../src/pages/api/aufnahme/[id]/index.ts"),
|
||||||
|
|||||||
@@ -57,9 +57,6 @@ export async function ausweisSpeichern(
|
|||||||
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
||||||
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
||||||
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
||||||
ausweisart: aufnahme.ausweisart,
|
|
||||||
brennstoff_1: aufnahme.brennstoff_1,
|
|
||||||
brennstoff_2: aufnahme.brennstoff_2,
|
|
||||||
brennwert_kessel: aufnahme.brennwert_kessel,
|
brennwert_kessel: aufnahme.brennwert_kessel,
|
||||||
dachgeschoss: aufnahme.dachgeschoss,
|
dachgeschoss: aufnahme.dachgeschoss,
|
||||||
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
||||||
@@ -70,7 +67,6 @@ export async function ausweisSpeichern(
|
|||||||
einfach_verglasung: aufnahme.einfach_verglasung,
|
einfach_verglasung: aufnahme.einfach_verglasung,
|
||||||
einheiten: aufnahme.einheiten,
|
einheiten: aufnahme.einheiten,
|
||||||
einzelofen: aufnahme.einzelofen,
|
einzelofen: aufnahme.einzelofen,
|
||||||
energieeffizienzklasse: aufnahme.energieeffizienzklasse,
|
|
||||||
fenster_dicht: aufnahme.fenster_dicht,
|
fenster_dicht: aufnahme.fenster_dicht,
|
||||||
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
||||||
flaeche: aufnahme.flaeche,
|
flaeche: aufnahme.flaeche,
|
||||||
@@ -119,10 +115,7 @@ export async function ausweisSpeichern(
|
|||||||
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
||||||
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
||||||
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
||||||
ausweisart: aufnahme.ausweisart,
|
|
||||||
baujahr_klima: aufnahme.baujahr_klima,
|
baujahr_klima: aufnahme.baujahr_klima,
|
||||||
brennstoff_1: aufnahme.brennstoff_1,
|
|
||||||
brennstoff_2: aufnahme.brennstoff_2,
|
|
||||||
brennwert_kessel: aufnahme.brennwert_kessel,
|
brennwert_kessel: aufnahme.brennwert_kessel,
|
||||||
dachgeschoss: aufnahme.dachgeschoss,
|
dachgeschoss: aufnahme.dachgeschoss,
|
||||||
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
||||||
@@ -133,7 +126,6 @@ export async function ausweisSpeichern(
|
|||||||
einfach_verglasung: aufnahme.einfach_verglasung,
|
einfach_verglasung: aufnahme.einfach_verglasung,
|
||||||
einheiten: aufnahme.einheiten,
|
einheiten: aufnahme.einheiten,
|
||||||
einzelofen: aufnahme.einzelofen,
|
einzelofen: aufnahme.einzelofen,
|
||||||
energieeffizienzklasse: aufnahme.energieeffizienzklasse,
|
|
||||||
erstellungsdatum: aufnahme.erstellungsdatum,
|
erstellungsdatum: aufnahme.erstellungsdatum,
|
||||||
fenster_dicht: aufnahme.fenster_dicht,
|
fenster_dicht: aufnahme.fenster_dicht,
|
||||||
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
||||||
|
|||||||
@@ -4,10 +4,10 @@ import { exclude } from "#lib/exclude.js";
|
|||||||
import Cookies from "js-cookie";
|
import Cookies from "js-cookie";
|
||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
import { AufnahmeClient, BedarfsausweisWohnenClient, BildClient, ObjektClient, UnterlageClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js";
|
import { AufnahmeClient, BedarfsausweisWohnenClient, BildClient, ObjektClient, UnterlageClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js";
|
||||||
import { Enums } from "#lib/client/prisma.js";
|
import { BedarfsausweisGewerbe, Enums, GEGNachweisGewerbe, GEGNachweisWohnen } from "#lib/client/prisma.js";
|
||||||
|
|
||||||
export async function nachweisSpeichern(
|
export async function nachweisSpeichern(
|
||||||
nachweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient,
|
nachweis: BedarfsausweisGewerbe | GEGNachweisWohnen | GEGNachweisGewerbe,
|
||||||
objekt: ObjektClient,
|
objekt: ObjektClient,
|
||||||
aufnahme: AufnahmeClient,
|
aufnahme: AufnahmeClient,
|
||||||
bilder: BildClient[],
|
bilder: BildClient[],
|
||||||
@@ -58,9 +58,6 @@ export async function nachweisSpeichern(
|
|||||||
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
||||||
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
||||||
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
||||||
ausweisart: aufnahme.ausweisart,
|
|
||||||
brennstoff_1: aufnahme.brennstoff_1,
|
|
||||||
brennstoff_2: aufnahme.brennstoff_2,
|
|
||||||
brennwert_kessel: aufnahme.brennwert_kessel,
|
brennwert_kessel: aufnahme.brennwert_kessel,
|
||||||
dachgeschoss: aufnahme.dachgeschoss,
|
dachgeschoss: aufnahme.dachgeschoss,
|
||||||
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
||||||
@@ -71,7 +68,6 @@ export async function nachweisSpeichern(
|
|||||||
einfach_verglasung: aufnahme.einfach_verglasung,
|
einfach_verglasung: aufnahme.einfach_verglasung,
|
||||||
einheiten: aufnahme.einheiten,
|
einheiten: aufnahme.einheiten,
|
||||||
einzelofen: aufnahme.einzelofen,
|
einzelofen: aufnahme.einzelofen,
|
||||||
energieeffizienzklasse: aufnahme.energieeffizienzklasse,
|
|
||||||
fenster_dicht: aufnahme.fenster_dicht,
|
fenster_dicht: aufnahme.fenster_dicht,
|
||||||
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
||||||
flaeche: aufnahme.flaeche,
|
flaeche: aufnahme.flaeche,
|
||||||
@@ -120,10 +116,7 @@ export async function nachweisSpeichern(
|
|||||||
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
alternative_warmwasser: aufnahme.alternative_warmwasser,
|
||||||
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
aussenwand_gedaemmt: aufnahme.aussenwand_gedaemmt,
|
||||||
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
aussenwand_min_12cm_gedaemmt: aufnahme.aussenwand_min_12cm_gedaemmt,
|
||||||
ausweisart: aufnahme.ausweisart,
|
|
||||||
baujahr_klima: aufnahme.baujahr_klima,
|
baujahr_klima: aufnahme.baujahr_klima,
|
||||||
brennstoff_1: aufnahme.brennstoff_1,
|
|
||||||
brennstoff_2: aufnahme.brennstoff_2,
|
|
||||||
brennwert_kessel: aufnahme.brennwert_kessel,
|
brennwert_kessel: aufnahme.brennwert_kessel,
|
||||||
dachgeschoss: aufnahme.dachgeschoss,
|
dachgeschoss: aufnahme.dachgeschoss,
|
||||||
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
dachgeschoss_gedaemmt: aufnahme.dachgeschoss_gedaemmt,
|
||||||
@@ -134,7 +127,6 @@ export async function nachweisSpeichern(
|
|||||||
einfach_verglasung: aufnahme.einfach_verglasung,
|
einfach_verglasung: aufnahme.einfach_verglasung,
|
||||||
einheiten: aufnahme.einheiten,
|
einheiten: aufnahme.einheiten,
|
||||||
einzelofen: aufnahme.einzelofen,
|
einzelofen: aufnahme.einzelofen,
|
||||||
energieeffizienzklasse: aufnahme.energieeffizienzklasse,
|
|
||||||
erstellungsdatum: aufnahme.erstellungsdatum,
|
erstellungsdatum: aufnahme.erstellungsdatum,
|
||||||
fenster_dicht: aufnahme.fenster_dicht,
|
fenster_dicht: aufnahme.fenster_dicht,
|
||||||
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
fenster_teilweise_undicht: aufnahme.fenster_teilweise_undicht,
|
||||||
@@ -203,7 +195,7 @@ export async function nachweisSpeichern(
|
|||||||
} else {
|
} else {
|
||||||
const { id } = await putRoute.fetch({
|
const { id } = await putRoute.fetch({
|
||||||
nachweis,
|
nachweis,
|
||||||
uid_aufnahme: aufnahme.id
|
aufnahme_id: aufnahme.id
|
||||||
}, {
|
}, {
|
||||||
headers: {
|
headers: {
|
||||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
import Overlay from "#components/Overlay.svelte";
|
import Overlay from "#components/Overlay.svelte";
|
||||||
import EmbeddedAuthFlowModule from "#modules/EmbeddedAuthFlowModule.svelte";
|
import EmbeddedAuthFlowModule from "#modules/EmbeddedAuthFlowModule.svelte";
|
||||||
|
|
||||||
import { AusweisTyp, Enums } from "#lib/client/prisma.js";
|
import { AusweisTyp, BedarfsausweisGewerbe, Enums, GEGNachweisGewerbe, GEGNachweisWohnen } from "#lib/client/prisma.js";
|
||||||
import { openWindowWithPost } from "#lib/helpers/window.js";
|
import { openWindowWithPost } from "#lib/helpers/window.js";
|
||||||
import { PRICES } from "#lib/constants.js";
|
import { PRICES } from "#lib/constants.js";
|
||||||
import { nachweisSpeichern } from "#client/lib/nachweisSpeichern.js";
|
import { nachweisSpeichern } from "#client/lib/nachweisSpeichern.js";
|
||||||
|
|
||||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient | GEGNachweisWohnenClient;
|
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient | BedarfsausweisGewerbe | GEGNachweisWohnen | GEGNachweisGewerbe;
|
||||||
export let bilder: BildClient[];
|
export let bilder: BildClient[];
|
||||||
export let unterlagen: UnterlageClient[] = [];
|
export let unterlagen: UnterlageClient[] = [];
|
||||||
export let user: BenutzerClient | null;
|
export let user: BenutzerClient | null;
|
||||||
@@ -46,16 +46,27 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisGewerbe || ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) {
|
||||||
openWindowWithPost("/kundendaten", {
|
openWindowWithPost("/kundendaten", {
|
||||||
ausweis: { ...ausweis, ausweistyp },
|
ausweis: { ...ausweis, nachweistyp: ausweistyp },
|
||||||
objekt,
|
objekt,
|
||||||
aufnahme,
|
aufnahme,
|
||||||
bilder,
|
bilder,
|
||||||
unterlagen,
|
unterlagen,
|
||||||
ausweisart,
|
ausweisart,
|
||||||
ausweistyp
|
ausweistyp
|
||||||
}, "")
|
}, "")
|
||||||
|
} else {
|
||||||
|
openWindowWithPost("/kundendaten", {
|
||||||
|
ausweis: { ...ausweis, ausweistyp },
|
||||||
|
objekt,
|
||||||
|
aufnahme,
|
||||||
|
bilder,
|
||||||
|
unterlagen,
|
||||||
|
ausweisart,
|
||||||
|
ausweistyp
|
||||||
|
}, "")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let loginAction: () => any = ausweisAbschicken;
|
let loginAction: () => any = ausweisAbschicken;
|
||||||
@@ -71,7 +82,7 @@
|
|||||||
|
|
||||||
let result: Awaited<ReturnType<typeof ausweisSpeichern>> | Awaited<ReturnType<typeof nachweisSpeichern>> | null = null;
|
let result: Awaited<ReturnType<typeof ausweisSpeichern>> | Awaited<ReturnType<typeof nachweisSpeichern>> | null = null;
|
||||||
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisGewerbe || ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) {
|
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisGewerbe || ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) {
|
||||||
result = await nachweisSpeichern({ ...ausweis, ausweistyp }, objekt, aufnahme, bilder, unterlagen, ausweisart)
|
result = await nachweisSpeichern({ ...ausweis, nachweistyp: ausweistyp }, objekt, aufnahme, bilder, unterlagen, ausweisart)
|
||||||
ausweis.id = result.nachweis_id;
|
ausweis.id = result.nachweis_id;
|
||||||
} else {
|
} else {
|
||||||
result = await ausweisSpeichern({ ...ausweis, ausweistyp }, objekt, aufnahme, bilder, ausweisart)
|
result = await ausweisSpeichern({ ...ausweis, ausweistyp }, objekt, aufnahme, bilder, ausweisart)
|
||||||
|
|||||||
@@ -26,6 +26,10 @@
|
|||||||
Bedarfsausweis Wohnen
|
Bedarfsausweis Wohnen
|
||||||
{:else if ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe}
|
{:else if ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe}
|
||||||
Bedarfsausweis Gewerbe
|
Bedarfsausweis Gewerbe
|
||||||
|
{:else if ausweisart === Enums.Ausweisart.GEGNachweisWohnen}
|
||||||
|
GEG Nachweis Wohngebäude
|
||||||
|
{:else if ausweisart === Enums.Ausweisart.GEGNachweisGewerbe}
|
||||||
|
GEG Nachweis Gewerbegebäude
|
||||||
{/if}
|
{/if}
|
||||||
{#if ausweistyp === Enums.AusweisTyp.Beratung}
|
{#if ausweistyp === Enums.AusweisTyp.Beratung}
|
||||||
mit Beratung
|
mit Beratung
|
||||||
|
|||||||
@@ -79,11 +79,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$: {
|
|
||||||
console.log(aufnahme.brennstoff_1);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
$: abweichung = auditVerbrauchAbweichung(ausweis, aufnahme);
|
$: abweichung = auditVerbrauchAbweichung(ausweis, aufnahme);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -234,7 +229,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
|||||||
class="rounded-e-none"
|
class="rounded-e-none"
|
||||||
name="brennstoff_1"
|
name="brennstoff_1"
|
||||||
data-cy="brennstoff_1"
|
data-cy="brennstoff_1"
|
||||||
bind:value={aufnahme.brennstoff_1}
|
bind:value={ausweis.brennstoff_1}
|
||||||
required
|
required
|
||||||
>
|
>
|
||||||
<option disabled selected value={null}>Bitte auswählen</option>
|
<option disabled selected value={null}>Bitte auswählen</option>
|
||||||
@@ -267,11 +262,11 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
|||||||
name="einheit_1"
|
name="einheit_1"
|
||||||
data-cy="einheit_1"
|
data-cy="einheit_1"
|
||||||
bind:value={ausweis.einheit_1}
|
bind:value={ausweis.einheit_1}
|
||||||
disabled={!aufnahme.brennstoff_1}
|
disabled={!ausweis.brennstoff_1}
|
||||||
required
|
required
|
||||||
>
|
>
|
||||||
<option disabled selected >Bitte auswählen</option>
|
<option disabled selected >Bitte auswählen</option>
|
||||||
{#each fuelMap.hasOwnProperty(aufnahme.brennstoff_1) ? fuelMap[aufnahme.brennstoff_1] : [] as unit}
|
{#each fuelMap.hasOwnProperty(ausweis.brennstoff_1) ? fuelMap[ausweis.brennstoff_1] : [] as unit}
|
||||||
<option value={unit}>{unit}</option>
|
<option value={unit}>{unit}</option>
|
||||||
{/each}
|
{/each}
|
||||||
</select>
|
</select>
|
||||||
@@ -425,7 +420,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
|||||||
class="rounded-e-none"
|
class="rounded-e-none"
|
||||||
name="brennstoff_2"
|
name="brennstoff_2"
|
||||||
data-cy="brennstoff_2"
|
data-cy="brennstoff_2"
|
||||||
bind:value={aufnahme.brennstoff_2}
|
bind:value={ausweis.brennstoff_2}
|
||||||
required
|
required
|
||||||
>
|
>
|
||||||
<option disabled selected
|
<option disabled selected
|
||||||
@@ -460,13 +455,13 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
|||||||
name="einheit_2"
|
name="einheit_2"
|
||||||
data-cy="einheit_2"
|
data-cy="einheit_2"
|
||||||
bind:value={ausweis.einheit_2}
|
bind:value={ausweis.einheit_2}
|
||||||
disabled={!aufnahme.brennstoff_2}
|
disabled={!ausweis.brennstoff_2}
|
||||||
required
|
required
|
||||||
>
|
>
|
||||||
<option disabled selected
|
<option disabled selected
|
||||||
>Bitte auswählen</option
|
>Bitte auswählen</option
|
||||||
>
|
>
|
||||||
{#each fuelMap.hasOwnProperty(aufnahme.brennstoff_2) ? fuelMap[aufnahme.brennstoff_2] : [] as unit}
|
{#each fuelMap.hasOwnProperty(ausweis.brennstoff_2) ? fuelMap[ausweis.brennstoff_2] : [] as unit}
|
||||||
<option value={unit}>{unit}</option>
|
<option value={unit}>{unit}</option>
|
||||||
{/each}
|
{/each}
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
|||||||
<select
|
<select
|
||||||
class="rounded-e-none"
|
class="rounded-e-none"
|
||||||
name="brennstoff_1"
|
name="brennstoff_1"
|
||||||
bind:value={aufnahme.brennstoff_1}
|
bind:value={ausweis.brennstoff_1}
|
||||||
required
|
required
|
||||||
>
|
>
|
||||||
<option disabled selected value>Bitte auswählen</option>
|
<option disabled selected value>Bitte auswählen</option>
|
||||||
@@ -273,11 +273,11 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
|||||||
class="rounded-s-none"
|
class="rounded-s-none"
|
||||||
name="einheit_1"
|
name="einheit_1"
|
||||||
bind:value={ausweis.einheit_1}
|
bind:value={ausweis.einheit_1}
|
||||||
disabled={!aufnahme.brennstoff_1}
|
disabled={!ausweis.brennstoff_1}
|
||||||
required
|
required
|
||||||
>
|
>
|
||||||
<option disabled selected value>Bitte auswählen</option>
|
<option disabled selected value>Bitte auswählen</option>
|
||||||
{#each fuelMap.hasOwnProperty(aufnahme.brennstoff_1) ? fuelMap[aufnahme.brennstoff_1] : [] as unit}
|
{#each fuelMap.hasOwnProperty(ausweis.brennstoff_1) ? fuelMap[ausweis.brennstoff_1] : [] as unit}
|
||||||
<option value={unit}>{unit}</option>
|
<option value={unit}>{unit}</option>
|
||||||
{/each}
|
{/each}
|
||||||
</select>
|
</select>
|
||||||
@@ -436,7 +436,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
|||||||
<select
|
<select
|
||||||
class="rounded-e-none"
|
class="rounded-e-none"
|
||||||
name="brennstoff_2"
|
name="brennstoff_2"
|
||||||
bind:value={aufnahme.brennstoff_2}
|
bind:value={ausweis.brennstoff_2}
|
||||||
required
|
required
|
||||||
data-cy="brennstoff_2"
|
data-cy="brennstoff_2"
|
||||||
>
|
>
|
||||||
@@ -480,13 +480,13 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
|||||||
name="einheit_2"
|
name="einheit_2"
|
||||||
data-cy="einheit_2"
|
data-cy="einheit_2"
|
||||||
bind:value={ausweis.einheit_2}
|
bind:value={ausweis.einheit_2}
|
||||||
disabled={!aufnahme.brennstoff_2}
|
disabled={!ausweis.brennstoff_2}
|
||||||
required
|
required
|
||||||
>
|
>
|
||||||
<option disabled selected
|
<option disabled selected
|
||||||
>Bitte auswählen</option
|
>Bitte auswählen</option
|
||||||
>
|
>
|
||||||
{#each fuelMap.hasOwnProperty(aufnahme.brennstoff_2) ? fuelMap[aufnahme.brennstoff_2] : [] as unit}
|
{#each fuelMap.hasOwnProperty(ausweis.brennstoff_2) ? fuelMap[ausweis.brennstoff_2] : [] as unit}
|
||||||
<option value={unit}>{unit}</option>
|
<option value={unit}>{unit}</option>
|
||||||
{/each}
|
{/each}
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ export const UUidWithPrefix = z.string().refine((value) => {
|
|||||||
return false;
|
return false;
|
||||||
})
|
})
|
||||||
|
|
||||||
export function getAusweisartFromUUID(id: string): Enums.Ausweisart | null {
|
export function getAusweisartFromId(id: string): Enums.Ausweisart | null {
|
||||||
if (!UUidWithPrefix.safeParse(id).success) {
|
if (!UUidWithPrefix.safeParse(id).success) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import {
|
import {
|
||||||
AufnahmeClient,
|
AufnahmeClient,
|
||||||
getAusweisartFromUUID,
|
getAusweisartFromId,
|
||||||
ObjektClient,
|
ObjektClient,
|
||||||
BildClient,
|
BildClient,
|
||||||
VerbrauchsausweisWohnenClient,
|
VerbrauchsausweisWohnenClient,
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
async function ausweisAusstellen(uid: string) {
|
async function ausweisAusstellen(uid: string) {
|
||||||
try {
|
try {
|
||||||
await api.admin.ausstellen.GET.fetch({
|
await api.admin.ausstellen.GET.fetch({
|
||||||
uid_ausweis: uid
|
id_ausweis: uid
|
||||||
}, {
|
}, {
|
||||||
headers: {
|
headers: {
|
||||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
const ausweisArt = getAusweisartFromUUID(ausweis.id)
|
const ausweisArt = getAusweisartFromId(ausweis.id)
|
||||||
|
|
||||||
let verbrauchWWGesamt_1 = "";
|
let verbrauchWWGesamt_1 = "";
|
||||||
let verbrauchWWGesamt_2 = "";
|
let verbrauchWWGesamt_2 = "";
|
||||||
@@ -141,7 +141,7 @@
|
|||||||
Abgeschlossen = 2;
|
Abgeschlossen = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aufnahme.boxpruefung) {
|
if (ausweis.boxpruefung) {
|
||||||
symbolPruefung = "/images/dashboard/kreishaken.png";
|
symbolPruefung = "/images/dashboard/kreishaken.png";
|
||||||
} else {
|
} else {
|
||||||
symbolPruefung = "/images/dashboard/kreiskreuz.png";
|
symbolPruefung = "/images/dashboard/kreiskreuz.png";
|
||||||
@@ -205,7 +205,7 @@
|
|||||||
" x " +
|
" x " +
|
||||||
aufnahme.flaeche +
|
aufnahme.flaeche +
|
||||||
" m² Energetische Nutzfläche (Keller " +
|
" m² Energetische Nutzfläche (Keller " +
|
||||||
ausweis.keller_beheizt +
|
aufnahme.keller +
|
||||||
" ) in m²";
|
" ) in m²";
|
||||||
table3Z1 = aufnahme.flaeche;
|
table3Z1 = aufnahme.flaeche;
|
||||||
table3Z2 = calculations?.energetischeNutzflaeche;
|
table3Z2 = calculations?.energetischeNutzflaeche;
|
||||||
@@ -229,7 +229,7 @@
|
|||||||
" kWh/" +
|
" kWh/" +
|
||||||
ausweis.einheit_1 +
|
ausweis.einheit_1 +
|
||||||
" >> Verbrauch 1 " +
|
" >> Verbrauch 1 " +
|
||||||
aufnahme.brennstoff_1 +
|
ausweis.brennstoff_1 +
|
||||||
" in kWh";
|
" in kWh";
|
||||||
tooltip4Z2 =
|
tooltip4Z2 =
|
||||||
"(" +
|
"(" +
|
||||||
@@ -249,7 +249,7 @@
|
|||||||
" kWh/" +
|
" kWh/" +
|
||||||
ausweis.einheit_2 +
|
ausweis.einheit_2 +
|
||||||
" >> Verbrauch 2 " +
|
" >> Verbrauch 2 " +
|
||||||
aufnahme.brennstoff_2 +
|
ausweis.brennstoff_2 +
|
||||||
" in kWh";
|
" in kWh";
|
||||||
table4Z1 = calculations?.energieVerbrauchGesamt_1;
|
table4Z1 = calculations?.energieVerbrauchGesamt_1;
|
||||||
table4Z2 = calculations?.energieVerbrauchGesamt_2;
|
table4Z2 = calculations?.energieVerbrauchGesamt_2;
|
||||||
@@ -764,7 +764,7 @@
|
|||||||
<div slot="tooltip">
|
<div slot="tooltip">
|
||||||
<span>{aufnahme.prueftext}</span>
|
<span>{aufnahme.prueftext}</span>
|
||||||
</div>
|
</div>
|
||||||
{#if aufnahme.boxpruefung}
|
{#if ausweis.boxpruefung}
|
||||||
<CheckCircled size={22}></CheckCircled>
|
<CheckCircled size={22}></CheckCircled>
|
||||||
{:else}
|
{:else}
|
||||||
<CrossCircled size={22}></CrossCircled>
|
<CrossCircled size={22}></CrossCircled>
|
||||||
@@ -880,7 +880,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Informationen des Nutzers</td>
|
<td>Informationen des Nutzers</td>
|
||||||
<td>{aufnahme.boxpruefung}</td>
|
<td>{ausweis.boxpruefung}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>UID</td>
|
<td>UID</td>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { AufnahmeKomplettClient, BedarfsausweisWohnenClient, BenutzerClient, getAusweisartFromUUID, RechnungClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
import { AufnahmeKomplettClient, BedarfsausweisWohnenClient, BenutzerClient, getAusweisartFromId, RechnungClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import { dialogs } from "svelte-dialogs";
|
import { dialogs } from "svelte-dialogs";
|
||||||
import {
|
import {
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
export let benutzer: BenutzerClient;
|
export let benutzer: BenutzerClient;
|
||||||
const progress = ausweis.ausgestellt ? 100 : ausweis.bestellt ? 66 : 33;
|
const progress = ausweis.ausgestellt ? 100 : ausweis.bestellt ? 66 : 33;
|
||||||
|
|
||||||
const ausweisart = getAusweisartFromUUID(ausweis.id);
|
const ausweisart = getAusweisartFromId(ausweis.id);
|
||||||
|
|
||||||
const id = ausweis.alte_ausweis_id || ausweis.id;
|
const id = ausweis.alte_ausweis_id || ausweis.id;
|
||||||
|
|
||||||
@@ -144,7 +144,7 @@
|
|||||||
async function ausweisAusstellen() {
|
async function ausweisAusstellen() {
|
||||||
try {
|
try {
|
||||||
await api.admin.ausstellen.GET.fetch({
|
await api.admin.ausstellen.GET.fetch({
|
||||||
uid_ausweis: ausweis.id
|
id_ausweis: ausweis.id
|
||||||
}, {
|
}, {
|
||||||
headers: {
|
headers: {
|
||||||
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
"Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { AufnahmeKomplettClient, GEGNachweisWohnenClient, getAusweisartFromUUID } from "#components/Ausweis/types.js";
|
import { AufnahmeKomplettClient, GEGNachweisWohnenClient, getAusweisartFromId } from "#components/Ausweis/types.js";
|
||||||
import {
|
import {
|
||||||
CrossCircled,
|
|
||||||
DotsVertical,
|
DotsVertical,
|
||||||
Pencil2,
|
Pencil2,
|
||||||
QuestionMarkCircled,
|
QuestionMarkCircled,
|
||||||
@@ -12,7 +11,7 @@
|
|||||||
export let aufnahme: AufnahmeKomplettClient;
|
export let aufnahme: AufnahmeKomplettClient;
|
||||||
export let objekt: Objekt;
|
export let objekt: Objekt;
|
||||||
|
|
||||||
const ausweisart = getAusweisartFromUUID(nachweis.uid);
|
const ausweisart = getAusweisartFromId(nachweis.id);
|
||||||
|
|
||||||
let hilfeModal: HTMLDialogElement;
|
let hilfeModal: HTMLDialogElement;
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -4,14 +4,15 @@
|
|||||||
import HelpLabel from "#components/labels/HelpLabel.svelte";
|
import HelpLabel from "#components/labels/HelpLabel.svelte";
|
||||||
|
|
||||||
export let kategorie: string = "";
|
export let kategorie: string = "";
|
||||||
export let files: UnterlageClient[] = [];
|
export let files: Unterlage[] = [];
|
||||||
export let max: number = Infinity;
|
export let max: number = Infinity;
|
||||||
export let min: number = 1;
|
export let min: number = 1;
|
||||||
export let name: string = "";
|
export let name: string = "";
|
||||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient | GEGNachweisWohnenClient;
|
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient | BedarfsausweisGewerbe | GEGNachweisWohnen | GEGNachweisGewerbe;
|
||||||
export let objekt: ObjektClient;
|
export let objekt: ObjektClient;
|
||||||
import mime from "mime-types";
|
import mime from "mime"
|
||||||
import { api } from "astro-typesafe-api/client";
|
import { api } from "astro-typesafe-api/client";
|
||||||
|
import { BedarfsausweisGewerbe, GEGNachweisGewerbe, GEGNachweisWohnen, Unterlage } from "#lib/client/prisma.js";
|
||||||
|
|
||||||
|
|
||||||
function getAllFiles(this: HTMLInputElement) {
|
function getAllFiles(this: HTMLInputElement) {
|
||||||
@@ -40,16 +41,16 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const mimeType = mime.types[file.name.split(".").pop() as string]
|
const mimeType = mime.getType(file.name.split(".").pop() as string)
|
||||||
|
|
||||||
const { uid } = await api.unterlage.PUT.fetch({
|
const { id } = await api.unterlage.PUT.fetch({
|
||||||
data: reader.result as string,
|
data: reader.result as string,
|
||||||
kategorie,
|
kategorie,
|
||||||
mime: mimeType,
|
mime: mimeType,
|
||||||
name: file.name
|
name: file.name
|
||||||
})
|
})
|
||||||
|
|
||||||
files.push({ uid, kategorie, name: file.name, mime: mimeType });
|
files.push({ id, kategorie, name: file.name, mime: mimeType, aufnahme_id: null });
|
||||||
files = files;
|
files = files;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
import { auditHeizungGebaeudeBaujahr } from "../Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js";
|
import { auditHeizungGebaeudeBaujahr } from "../Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js";
|
||||||
import { addNotification, deleteNotification } from "#components/Notifications/shared.js";
|
import { addNotification, deleteNotification } from "#components/Notifications/shared.js";
|
||||||
import TagInput from "../TagInput.svelte";
|
import TagInput from "../TagInput.svelte";
|
||||||
import { Enums } from "#lib/client/prisma.js";
|
import { BedarfsausweisGewerbe, Enums, GEGNachweisGewerbe, GEGNachweisWohnen } from "#lib/client/prisma.js";
|
||||||
import {
|
import {
|
||||||
AufnahmeClient,
|
AufnahmeClient,
|
||||||
ObjektClient,
|
ObjektClient,
|
||||||
@@ -15,8 +15,8 @@
|
|||||||
} from "../Ausweis/types.js";
|
} from "../Ausweis/types.js";
|
||||||
|
|
||||||
export let objekt: ObjektClient;
|
export let objekt: ObjektClient;
|
||||||
export let ausweis:
|
export let nachweis:
|
||||||
GEGNachweisWohnenClient;
|
BedarfsausweisGewerbe | GEGNachweisWohnen | GEGNachweisGewerbe;
|
||||||
export let aufnahme: AufnahmeClient;
|
export let aufnahme: AufnahmeClient;
|
||||||
|
|
||||||
export let ausweisart: Enums.Ausweisart;
|
export let ausweisart: Enums.Ausweisart;
|
||||||
@@ -38,7 +38,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
|
|||||||
class="rounded-e-none"
|
class="rounded-e-none"
|
||||||
name="ausstellgrund"
|
name="ausstellgrund"
|
||||||
placeholder="Anlass"
|
placeholder="Anlass"
|
||||||
bind:value={ausweis.ausstellgrund}
|
bind:value={nachweis.ausstellgrund}
|
||||||
required
|
required
|
||||||
data-cy="ausstellgrund"
|
data-cy="ausstellgrund"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import HelpLabel from "#components/labels/HelpLabel.svelte";
|
import HelpLabel from "#components/labels/HelpLabel.svelte";
|
||||||
import type { Enums } from "#lib/client/prisma.js";
|
import type { Enums } from "#lib/client/prisma.js";
|
||||||
|
import { tryCatch } from "#lib/tryCatch.js";
|
||||||
|
|
||||||
export let max: number = 2;
|
export let max: number = 2;
|
||||||
export let min: number = 1;
|
export let min: number = 1;
|
||||||
@@ -15,6 +16,7 @@
|
|||||||
VerbrauchsausweisWohnenClient,
|
VerbrauchsausweisWohnenClient,
|
||||||
} from "./Ausweis/types.js";
|
} from "./Ausweis/types.js";
|
||||||
import { api } from "astro-typesafe-api/client";
|
import { api } from "astro-typesafe-api/client";
|
||||||
|
import { addNotification } from "./Notifications/shared.js";
|
||||||
|
|
||||||
export let images: BildClient[] = [];
|
export let images: BildClient[] = [];
|
||||||
export let ausweis:
|
export let ausweis:
|
||||||
@@ -79,17 +81,27 @@
|
|||||||
// Get the scaled-down data from the canvas in the desired output format and quality
|
// Get the scaled-down data from the canvas in the desired output format and quality
|
||||||
const dataURL = canvas.toDataURL("image/jpeg", 0.8);
|
const dataURL = canvas.toDataURL("image/jpeg", 0.8);
|
||||||
|
|
||||||
const { id } = await api.bild.PUT.fetch({
|
const [result, error] = await tryCatch(api.bild.PUT.fetch({
|
||||||
data: dataURL,
|
data: dataURL,
|
||||||
kategorie,
|
kategorie,
|
||||||
name: file.name
|
name: file.name
|
||||||
})
|
}))
|
||||||
|
|
||||||
images.push({ id, kategorie });
|
if (error) {
|
||||||
images = images;
|
addNotification({
|
||||||
|
message: "Das hat nicht geklappt.",
|
||||||
|
type: "error",
|
||||||
|
timeout: 3000,
|
||||||
|
subtext: "Bild konnte nicht hochgeladen werden, bitte versuchen sie es erneut.",
|
||||||
|
dismissable: true
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
images.push({ id: result.id, kategorie });
|
||||||
|
images = images;
|
||||||
|
|
||||||
if (i == Math.min(files.length, max) - 1) {
|
if (i == Math.min(files.length, max) - 1) {
|
||||||
this.value = "";
|
this.value = "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
<script>
|
<script>
|
||||||
import { PRICES } from "#lib/constants";
|
import { PRICES } from "#lib/constants";
|
||||||
import { Enums } from "#lib/client/prisma";
|
import { Enums } from "#lib/client/prisma";
|
||||||
export let bullets;
|
|
||||||
export let title;
|
|
||||||
export let ref = "";
|
export let ref = "";
|
||||||
|
|
||||||
bullets = [
|
const bullets = [
|
||||||
["Prüfung durch Dipl. Ing.<br>Registrierung beim DiBt<br>rechtssicher nach GEG",true, true, true],
|
["Prüfung durch Dipl. Ing.<br>Registrierung beim DiBt<br>rechtssicher nach GEG",true, true, true],
|
||||||
["Originalausweis als PDF per <span class='text-nowrap'>E-Mail</span><br>Originalausweis per Post (zubuchbar)",true, true, true],
|
["Originalausweis als PDF per <span class='text-nowrap'>E-Mail</span><br>Originalausweis per Post (zubuchbar)",true, true, true],
|
||||||
["Bearbeitung innerhalb 24 Stunden<br>Selbsteingabe",true, true, false],
|
["Bearbeitung innerhalb 24 Stunden<br>Selbsteingabe",true, true, false],
|
||||||
@@ -17,7 +15,6 @@
|
|||||||
["telefonische Beratung<br>persönlicher Energieberater",false, true, true],
|
["telefonische Beratung<br>persönlicher Energieberater",false, true, true],
|
||||||
["Dokumentenupload (Verbrauchsabrechnungen)",false, false, true],
|
["Dokumentenupload (Verbrauchsabrechnungen)",false, false, true],
|
||||||
["Eingabe durch Dipl. Ing.",false, false, true],
|
["Eingabe durch Dipl. Ing.",false, false, true],
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +1,24 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import { VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "#lib/client/prisma.js";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
|
||||||
export let addYear: number;
|
export let addYear: number;
|
||||||
export let heizquelle: number;
|
export let heizquelle: number;
|
||||||
export let aufnahme;
|
export let aufnahme;
|
||||||
export let ausweis;
|
export let ausweis: VerbrauchsausweisWohnen | VerbrauchsausweisGewerbe;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#if ausweis.startdatum}
|
{#if ausweis.startdatum}
|
||||||
Bitte geben Sie Ihren
|
Bitte geben Sie Ihren
|
||||||
{#if heizquelle == 1}
|
{#if heizquelle == 1}
|
||||||
{#if aufnahme.brennstoff_1}<b>
|
{#if ausweis.brennstoff_1}<b>
|
||||||
{aufnahme.brennstoff_1}
|
{ausweis.brennstoff_1}
|
||||||
</b>{/if}
|
</b>{/if}
|
||||||
Verbrauch {#if ausweis.einheit_1}
|
Verbrauch {#if ausweis.einheit_1}
|
||||||
in <b>{ausweis.einheit_1} </b>{/if}
|
in <b>{ausweis.einheit_1} </b>{/if}
|
||||||
{:else if heizquelle == 2}
|
{:else if heizquelle == 2}
|
||||||
{#if aufnahme.brennstoff_2}<b>
|
{#if ausweis.brennstoff_2}<b>
|
||||||
{aufnahme.brennstoff_2}
|
{ausweis.brennstoff_2}
|
||||||
</b>{/if}
|
</b>{/if}
|
||||||
Verbräuche {#if ausweis.einheit_2}
|
Verbräuche {#if ausweis.einheit_2}
|
||||||
in <b>{ausweis.einheit_2} </b>{/if}
|
in <b>{ausweis.einheit_2} </b>{/if}
|
||||||
|
|||||||
@@ -8,123 +8,116 @@ import moment from "moment";
|
|||||||
|
|
||||||
describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
||||||
it("erstellt einen neuen Verbrauchsausweis Wohngebäude.", () => {
|
it("erstellt einen neuen Verbrauchsausweis Wohngebäude.", () => {
|
||||||
cy.visit("/angebot-anfragen/geg-nachweis-gewerbe-anfragen");
|
cy.task("plz").then(plz => {
|
||||||
|
cy.visit("/angebot-anfragen/geg-nachweis-gewerbe-anfragen");
|
||||||
|
|
||||||
cy.wait(2000);
|
cy.wait(2000);
|
||||||
|
|
||||||
// Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind.
|
// Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind.
|
||||||
cy.get("select[data-cy='ausstellgrund']")
|
cy.get("select[data-cy='ausstellgrund']")
|
||||||
.select(
|
.select(
|
||||||
faker.number.int({
|
faker.number.int({
|
||||||
min: 1,
|
min: 1,
|
||||||
max: [Enums.Ausstellgrund.Modernisierung, Enums.Ausstellgrund.Neubau].length - 1,
|
max: [Enums.Ausstellgrund.Modernisierung, Enums.Ausstellgrund.Neubau].length - 1,
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
// Gebäudetyp
|
// Gebäudetyp
|
||||||
cy.get("select[name='gebaeudetyp']").then(($dropdown) => {
|
cy.get("select[name='gebaeudetyp']").then(($dropdown) => {
|
||||||
const options = $dropdown.find('option');
|
const options = $dropdown.find('option');
|
||||||
// Select the option at the random index
|
// Select the option at the random index
|
||||||
cy.get("select[name='gebaeudetyp']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
cy.get("select[name='gebaeudetyp']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Sanierungsstatus
|
// Sanierungsstatus
|
||||||
cy.get("select[name='saniert']").select(
|
cy.get("select[name='saniert']").select(
|
||||||
Math.random() > 0.5 ? "true" : "false"
|
Math.random() > 0.5 ? "true" : "false"
|
||||||
);
|
|
||||||
|
|
||||||
// Jetzt Füllen wir das Baujahr vom Gebäude aus.
|
|
||||||
cy.get("input[name='baujahr_gebaeude']")
|
|
||||||
.should("have.attr", "type", "number")
|
|
||||||
.type(
|
|
||||||
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
|
||||||
"{enter}",
|
|
||||||
{ delay: 50 }
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// Jetzt Füllen wir das Baujahr der Heizung aus.
|
// Jetzt Füllen wir das Baujahr vom Gebäude aus.
|
||||||
cy.get("input[name='baujahr_heizung']")
|
cy.get("input[name='baujahr_gebaeude']")
|
||||||
.should("have.attr", "type", "number")
|
.should("have.attr", "type", "number")
|
||||||
.type(
|
.type(
|
||||||
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
||||||
"{enter}",
|
"{enter}",
|
||||||
{ delay: 50 }
|
{ delay: 50 }
|
||||||
|
);
|
||||||
|
|
||||||
|
// Jetzt Füllen wir das Baujahr der Heizung aus.
|
||||||
|
cy.get("input[name='baujahr_heizung']")
|
||||||
|
.should("have.attr", "type", "number")
|
||||||
|
.type(
|
||||||
|
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
||||||
|
"{enter}",
|
||||||
|
{ delay: 50 }
|
||||||
|
);
|
||||||
|
|
||||||
|
// Adresse
|
||||||
|
cy.get("input[name='adresse']").type(faker.location.streetAddress());
|
||||||
|
|
||||||
|
// Postleitzahl
|
||||||
|
cy.get("input[name='plz']").type(
|
||||||
|
plz as string
|
||||||
);
|
);
|
||||||
|
|
||||||
// Adresse
|
// TODO: Ort - Dieser wird aus der Datenbank abgefragt, wir müssen also warten, bis der Dropdown da ist.
|
||||||
cy.get("input[name='adresse']").type(faker.location.streetAddress());
|
cy.get("[data-cy='plz-container']").find("button").first().click()
|
||||||
|
|
||||||
// Postleitzahl
|
// Gebäudeteil
|
||||||
cy.get("input[name='plz']").type(
|
cy.get("select[name='gebaeudeteil']").then(($dropdown) => {
|
||||||
faker.location.zipCode({
|
const options = $dropdown.find('option');
|
||||||
format: "#####",
|
// Select the option at the random index
|
||||||
})
|
cy.get("select[name='gebaeudeteil']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||||
);
|
});
|
||||||
|
|
||||||
// TODO: Ort - Dieser wird aus der Datenbank abgefragt, wir müssen also warten, bis der Dropdown da ist.
|
// Keller
|
||||||
cy.get("[data-cy='plz-container']").find("button").first().click()
|
cy.get("select[name='keller']").find("option:not([disabled])").should("have.length", (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length).parent().select(faker.number.int({
|
||||||
|
max: Object.values(Enums.Heizungsstatus).length,
|
||||||
|
min: 1
|
||||||
|
}));
|
||||||
|
|
||||||
// Nutzflaeche
|
// Dachgeschoss
|
||||||
cy.get("input[name='nutzflaeche']")
|
cy.get("select[name='dachgeschoss']").find("option:not([disabled])").should("have.length", (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length).parent().select(faker.number.int({
|
||||||
.should("have.attr", "type", "number")
|
max: Object.values(Enums.Heizungsstatus).length,
|
||||||
.type(faker.number.int({ min: 50, max: 1000 }).toString());
|
min: 1
|
||||||
|
}));
|
||||||
|
|
||||||
// Keller
|
cy.get("[data-cy='beschreibung']").type(faker.lorem.paragraphs({ min: 2, max: 10 }))
|
||||||
cy.get("select[name='keller']").find("option:not([disabled])").should("have.length", (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length).parent().select(faker.number.int({
|
|
||||||
max: Object.values(Enums.Heizungsstatus).length,
|
|
||||||
min: 1
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Dachgeschoss
|
// Wärmedämmung Bilder
|
||||||
cy.get("select[name='dachgeschoss']").find("option:not([disabled])").should("have.length", (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length).parent().select(faker.number.int({
|
cy.get("input[type='file'][name='plaene']").should("have.attr", "type", "file").attachFile("images/daemmung/1.jpeg", { subjectType: "input" }).attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
||||||
max: Object.values(Enums.Heizungsstatus).length,
|
cy.get("input[type='file'][name='unterlagen']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" }).attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
||||||
min: 1
|
|
||||||
}));
|
|
||||||
|
|
||||||
cy.get("[data-cy='beschreibung']").type(faker.lorem.paragraphs({ min: 2, max: 10 }))
|
// Jetzt können wir den Verbrauchsausweis erstellen.
|
||||||
|
cy.get("form[data-cy='nachweis'] button[data-cy='weiter']").click({ force: true });
|
||||||
|
|
||||||
// Wärmedämmung Bilder
|
cy.url().should("contain", "/kundendaten");
|
||||||
cy.get("input[type='file'][name='plaene']").should("have.attr", "type", "file").attachFile("images/daemmung/1.jpeg", { subjectType: "input" }).attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
|
||||||
cy.get("input[type='file'][name='unterlagen']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" }).attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
|
||||||
|
|
||||||
// Jetzt können wir den Verbrauchsausweis erstellen.
|
const email = faker.internet.email();
|
||||||
cy.get("form[data-cy='nachweis'] button[data-cy='weiter']").click({ force: true });
|
const passwort = "test1234";
|
||||||
|
const vorname = faker.person.firstName();
|
||||||
|
const nachname = faker.person.lastName();
|
||||||
|
const telefon = faker.phone.number()
|
||||||
|
|
||||||
cy.url().should("contain", "/kundendaten");
|
const strasse = faker.location.streetAddress({ useFullAddress: true })
|
||||||
|
|
||||||
const email = faker.internet.email();
|
cy.get("input[name='vorname']").should("have.attr", "type", "text").type(vorname);
|
||||||
const passwort = "test1234";
|
cy.get("input[name='name']").should("have.attr", "type", "text").type(nachname);
|
||||||
const vorname = faker.person.firstName();
|
cy.get("input[name='telefon']").should("have.attr", "type", "text").type(telefon);
|
||||||
const nachname = faker.person.lastName();
|
// Rechnung
|
||||||
const telefon = faker.phone.number()
|
cy.get("input[name='rechnung_empfaenger']").should("have.attr", "type", "text").type(`${vorname} ${nachname}`);
|
||||||
|
cy.get("input[name='rechnung_strasse']").should("have.attr", "type", "text").type(strasse);
|
||||||
|
cy.get("input[name='rechnung_plz']").should("have.attr", "type", "text").type(plz as string);
|
||||||
|
cy.get("[data-cy='plz-container']").children().first().click()
|
||||||
|
cy.get("input[name='rechnung_email']").should("have.attr", "type", "email").type(email);
|
||||||
|
|
||||||
const strasse = faker.location.streetAddress({ useFullAddress: true })
|
cy.get("button[data-cy='bestellen']").click();
|
||||||
const plz = faker.location.zipCode("#####")
|
|
||||||
|
|
||||||
cy.get("input[name='vorname']").should("have.attr", "type", "text").type(vorname);
|
cy.intercept({ method: "PUT", url: "**/api/rechnung/anfordern" }).as("anfordern")
|
||||||
cy.get("input[name='name']").should("have.attr", "type", "text").type(nachname);
|
cy["form:signup"](email, passwort, vorname, nachname)
|
||||||
cy.get("input[name='telefon']").should("have.attr", "type", "text").type(telefon);
|
cy.wait("@anfordern")
|
||||||
// Rechnung
|
|
||||||
cy.get("input[name='rechnung_empfaenger']").should("have.attr", "type", "text").type(`${vorname} ${nachname}`);
|
|
||||||
cy.get("input[name='rechnung_strasse']").should("have.attr", "type", "text").type(strasse);
|
|
||||||
cy.get("input[name='rechnung_plz']").should("have.attr", "type", "text").type(plz);
|
|
||||||
cy.get("[data-cy='plz-container']").children().first().click()
|
|
||||||
cy.get("input[name='rechnung_email']").should("have.attr", "type", "email").type(email);
|
|
||||||
|
|
||||||
cy.get("button[data-cy='bestellen']").click();
|
cy.url().should("contain", "/einpreisung/success")
|
||||||
|
})
|
||||||
cy.get("a[data-cy='registrieren']").should("be.visible").click();
|
|
||||||
|
|
||||||
// Wir sind jetzt registriert und können uns nun einloggen.
|
|
||||||
// Die Email sollte automatisch eingetragen sein, da wir uns gerade registriert haben.
|
|
||||||
cy.get("form[name='signup'] input[name='vorname']").should("be.visible").should("have.attr", "type", "text").type(vorname);
|
|
||||||
cy.get("form[name='signup'] input[name='nachname']").should("be.visible").should("have.attr", "type", "text").type(nachname);
|
|
||||||
cy.get("form[name='signup'] input[name='email']").should("be.visible").should("have.attr", "type", "email").should("contain.value", email);
|
|
||||||
cy.get("form[name='signup'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort);
|
|
||||||
|
|
||||||
cy.get("form[name='signup'] button[type='submit']").click();
|
|
||||||
cy.get("form[name='login'] button[type='submit']").click();
|
|
||||||
|
|
||||||
cy.url().should("contain", "/einpreisung/success")
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,118 +8,111 @@ import moment from "moment";
|
|||||||
|
|
||||||
describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
||||||
it("erstellt einen neuen Verbrauchsausweis Wohngebäude.", () => {
|
it("erstellt einen neuen Verbrauchsausweis Wohngebäude.", () => {
|
||||||
cy.visit("/angebot-anfragen/geg-nachweis-wohnen-anfragen");
|
cy.task("plz").then(plz => {
|
||||||
|
cy.visit("/angebot-anfragen/geg-nachweis-wohnen-anfragen");
|
||||||
|
|
||||||
cy.wait(2000);
|
cy.wait(2000);
|
||||||
|
|
||||||
// Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind.
|
// Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind.
|
||||||
cy.get("select[data-cy='ausstellgrund']")
|
cy.get("select[data-cy='ausstellgrund']")
|
||||||
.select(
|
.select(
|
||||||
faker.number.int({
|
faker.number.int({
|
||||||
min: 1,
|
min: 1,
|
||||||
max: [Enums.Ausstellgrund.Modernisierung, Enums.Ausstellgrund.Neubau].length - 1,
|
max: [Enums.Ausstellgrund.Modernisierung, Enums.Ausstellgrund.Neubau].length - 1,
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
// Gebäudetyp
|
// Gebäudetyp
|
||||||
cy.get("select[name='gebaeudetyp']").then(($dropdown) => {
|
cy.get("select[name='gebaeudetyp']").then(($dropdown) => {
|
||||||
const options = $dropdown.find('option');
|
const options = $dropdown.find('option');
|
||||||
// Select the option at the random index
|
// Select the option at the random index
|
||||||
cy.get("select[name='gebaeudetyp']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
cy.get("select[name='gebaeudetyp']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Jetzt Füllen wir das Baujahr vom Gebäude aus.
|
||||||
|
cy.get("input[name='baujahr_gebaeude']")
|
||||||
|
.should("have.attr", "type", "number")
|
||||||
|
.type(
|
||||||
|
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
||||||
|
"{enter}",
|
||||||
|
{ delay: 50 }
|
||||||
|
);
|
||||||
|
|
||||||
|
// Jetzt Füllen wir das Baujahr der Heizung aus.
|
||||||
|
cy.get("input[name='baujahr_heizung']")
|
||||||
|
.should("have.attr", "type", "number")
|
||||||
|
.type(
|
||||||
|
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
||||||
|
"{enter}",
|
||||||
|
{ delay: 50 }
|
||||||
|
);
|
||||||
|
|
||||||
|
// Adresse
|
||||||
|
cy.get("input[name='adresse']").type(faker.location.streetAddress());
|
||||||
|
|
||||||
|
// Postleitzahl
|
||||||
|
cy.get("input[name='plz']").type(
|
||||||
|
plz as string
|
||||||
|
);
|
||||||
|
|
||||||
|
// TODO: Ort - Dieser wird aus der Datenbank abgefragt, wir müssen also warten, bis der Dropdown da ist.
|
||||||
|
cy.get("[data-cy='plz-container']").find("button").first().click()
|
||||||
|
|
||||||
|
// Gebäudeteil
|
||||||
|
cy.get("select[name='gebaeudeteil']").then(($dropdown) => {
|
||||||
|
const options = $dropdown.find('option');
|
||||||
|
// Select the option at the random index
|
||||||
|
cy.get("select[name='gebaeudeteil']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Keller
|
||||||
|
cy.get("select[name='keller']").find("option:not([disabled])").should("have.length", (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length).parent().select(faker.number.int({
|
||||||
|
max: Object.values(Enums.Heizungsstatus).length,
|
||||||
|
min: 1
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Dachgeschoss
|
||||||
|
cy.get("select[name='dachgeschoss']").find("option:not([disabled])").should("have.length", (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length).parent().select(faker.number.int({
|
||||||
|
max: Object.values(Enums.Heizungsstatus).length,
|
||||||
|
min: 1
|
||||||
|
}));
|
||||||
|
|
||||||
|
cy.get("[data-cy='beschreibung']").type(faker.lorem.paragraphs({ min: 2, max: 10 }))
|
||||||
|
|
||||||
|
// Wärmedämmung Bilder
|
||||||
|
cy.get("input[type='file'][name='plaene']").should("have.attr", "type", "file").attachFile("images/daemmung/1.jpeg", { subjectType: "input" }).attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
||||||
|
cy.get("input[type='file'][name='unterlagen']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" }).attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
||||||
|
|
||||||
|
// Jetzt können wir den Verbrauchsausweis erstellen.
|
||||||
|
cy.get("form[data-cy='nachweis'] button[data-cy='weiter']").click({ force: true });
|
||||||
|
|
||||||
|
cy.url().should("contain", "/kundendaten");
|
||||||
|
|
||||||
|
const email = faker.internet.email();
|
||||||
|
const passwort = "test1234";
|
||||||
|
const vorname = faker.person.firstName();
|
||||||
|
const nachname = faker.person.lastName();
|
||||||
|
const telefon = faker.phone.number()
|
||||||
|
|
||||||
|
const strasse = faker.location.streetAddress({ useFullAddress: true })
|
||||||
|
|
||||||
|
cy.get("input[name='vorname']").should("have.attr", "type", "text").type(vorname);
|
||||||
|
cy.get("input[name='name']").should("have.attr", "type", "text").type(nachname);
|
||||||
|
cy.get("input[name='telefon']").should("have.attr", "type", "text").type(telefon);
|
||||||
|
// Rechnung
|
||||||
|
cy.get("input[name='rechnung_empfaenger']").should("have.attr", "type", "text").type(`${vorname} ${nachname}`);
|
||||||
|
cy.get("input[name='rechnung_strasse']").should("have.attr", "type", "text").type(strasse);
|
||||||
|
cy.get("input[name='rechnung_plz']").should("have.attr", "type", "text").type(plz as string);
|
||||||
|
cy.get("[data-cy='plz-container']").children().first().click()
|
||||||
|
cy.get("input[name='rechnung_email']").should("have.attr", "type", "email").type(email);
|
||||||
|
|
||||||
|
cy.get("button[data-cy='bestellen']").click();
|
||||||
|
|
||||||
|
cy.intercept({ method: "PUT", url: "**/api/rechnung/anfordern" }).as("anfordern")
|
||||||
|
cy["form:signup"](email, passwort, vorname, nachname)
|
||||||
|
cy.wait("@anfordern")
|
||||||
|
|
||||||
|
cy.url().should("contain", "/einpreisung/success")
|
||||||
});
|
});
|
||||||
|
|
||||||
// Jetzt Füllen wir das Baujahr vom Gebäude aus.
|
|
||||||
cy.get("input[name='baujahr_gebaeude']")
|
|
||||||
.should("have.attr", "type", "number")
|
|
||||||
.type(
|
|
||||||
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
|
||||||
"{enter}",
|
|
||||||
{ delay: 50 }
|
|
||||||
);
|
|
||||||
|
|
||||||
// Jetzt Füllen wir das Baujahr der Heizung aus.
|
|
||||||
cy.get("input[name='baujahr_heizung']")
|
|
||||||
.should("have.attr", "type", "number")
|
|
||||||
.type(
|
|
||||||
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
|
||||||
"{enter}",
|
|
||||||
{ delay: 50 }
|
|
||||||
);
|
|
||||||
|
|
||||||
// Adresse
|
|
||||||
cy.get("input[name='adresse']").type(faker.location.streetAddress());
|
|
||||||
|
|
||||||
// Postleitzahl
|
|
||||||
cy.get("input[name='plz']").type(
|
|
||||||
faker.location.zipCode({
|
|
||||||
format: "#####",
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
// TODO: Ort - Dieser wird aus der Datenbank abgefragt, wir müssen also warten, bis der Dropdown da ist.
|
|
||||||
cy.get("[data-cy='plz-container']").find("button").first().click()
|
|
||||||
|
|
||||||
// Nutzflaeche
|
|
||||||
cy.get("input[name='nutzflaeche']")
|
|
||||||
.should("have.attr", "type", "number")
|
|
||||||
.type(faker.number.int({ min: 50, max: 1000 }).toString());
|
|
||||||
|
|
||||||
// Keller
|
|
||||||
cy.get("select[name='keller']").find("option:not([disabled])").should("have.length", (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length).parent().select(faker.number.int({
|
|
||||||
max: Object.values(Enums.Heizungsstatus).length,
|
|
||||||
min: 1
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Dachgeschoss
|
|
||||||
cy.get("select[name='dachgeschoss']").find("option:not([disabled])").should("have.length", (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length).parent().select(faker.number.int({
|
|
||||||
max: Object.values(Enums.Heizungsstatus).length,
|
|
||||||
min: 1
|
|
||||||
}));
|
|
||||||
|
|
||||||
cy.get("[data-cy='beschreibung']").type(faker.lorem.paragraphs({ min: 2, max: 10 }))
|
|
||||||
|
|
||||||
// Wärmedämmung Bilder
|
|
||||||
cy.get("input[type='file'][name='plaene']").should("have.attr", "type", "file").attachFile("images/daemmung/1.jpeg", { subjectType: "input" }).attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
|
||||||
cy.get("input[type='file'][name='unterlagen']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" }).attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
|
||||||
|
|
||||||
// Jetzt können wir den Verbrauchsausweis erstellen.
|
|
||||||
cy.get("form[data-cy='nachweis'] button[data-cy='weiter']").click({ force: true });
|
|
||||||
|
|
||||||
cy.url().should("contain", "/kundendaten");
|
|
||||||
|
|
||||||
const email = faker.internet.email();
|
|
||||||
const passwort = "test1234";
|
|
||||||
const vorname = faker.person.firstName();
|
|
||||||
const nachname = faker.person.lastName();
|
|
||||||
const telefon = faker.phone.number()
|
|
||||||
|
|
||||||
const strasse = faker.location.streetAddress({ useFullAddress: true })
|
|
||||||
const plz = faker.location.zipCode("#####")
|
|
||||||
|
|
||||||
cy.get("input[name='vorname']").should("have.attr", "type", "text").type(vorname);
|
|
||||||
cy.get("input[name='name']").should("have.attr", "type", "text").type(nachname);
|
|
||||||
cy.get("input[name='telefon']").should("have.attr", "type", "text").type(telefon);
|
|
||||||
// Rechnung
|
|
||||||
cy.get("input[name='rechnung_empfaenger']").should("have.attr", "type", "text").type(`${vorname} ${nachname}`);
|
|
||||||
cy.get("input[name='rechnung_strasse']").should("have.attr", "type", "text").type(strasse);
|
|
||||||
cy.get("input[name='rechnung_plz']").should("have.attr", "type", "text").type(plz);
|
|
||||||
cy.get("[data-cy='plz-container']").children().first().click()
|
|
||||||
cy.get("input[name='rechnung_email']").should("have.attr", "type", "email").type(email);
|
|
||||||
|
|
||||||
cy.get("button[data-cy='bestellen']").click();
|
|
||||||
|
|
||||||
cy.get("a[data-cy='registrieren']").should("be.visible").click();
|
|
||||||
|
|
||||||
// Wir sind jetzt registriert und können uns nun einloggen.
|
|
||||||
// Die Email sollte automatisch eingetragen sein, da wir uns gerade registriert haben.
|
|
||||||
cy.get("form[name='signup'] input[name='vorname']").should("be.visible").should("have.attr", "type", "text").type(vorname);
|
|
||||||
cy.get("form[name='signup'] input[name='nachname']").should("be.visible").should("have.attr", "type", "text").type(nachname);
|
|
||||||
cy.get("form[name='signup'] input[name='email']").should("be.visible").should("have.attr", "type", "email").should("contain.value", email);
|
|
||||||
cy.get("form[name='signup'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort);
|
|
||||||
|
|
||||||
cy.get("form[name='signup'] button[type='submit']").click();
|
|
||||||
cy.get("form[name='login'] button[type='submit']").click();
|
|
||||||
|
|
||||||
cy.url().should("contain", "/einpreisung/success")
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,312 +1,296 @@
|
|||||||
import fuelList from "#components/Ausweis/brennstoffListe.js";
|
import fuelList from "#components/Ausweis/brennstoffListe.js";
|
||||||
import { faker } from "@faker-js/faker";
|
import { faker } from "@faker-js/faker";
|
||||||
import { type Enums } from "#lib/client/prisma.js";
|
import { Enums } from "#lib/client/prisma.js";
|
||||||
import "cypress-file-upload"
|
import "cypress-file-upload"
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
|
||||||
describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
||||||
const ausstellgrund = (["Modernisierung", "Neubau", "Sonstiges", "Verkauf", "Vermietung"] as Enums.Ausstellgrund[]);
|
|
||||||
const heizungsstatus = (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]);
|
|
||||||
|
|
||||||
it("erstellt einen neuen Verbrauchsausweis Wohngebäude.", () => {
|
it("erstellt einen neuen Verbrauchsausweis Wohngebäude.", () => {
|
||||||
cy.visit("/energieausweis-erstellen/verbrauchsausweis-gewerbe");
|
cy.task("plz").then(plz => {
|
||||||
|
cy.visit("/energieausweis-erstellen/verbrauchsausweis-gewerbe");
|
||||||
|
|
||||||
cy.wait(1000);
|
cy.wait(1000);
|
||||||
|
|
||||||
// Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind.
|
// Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind.
|
||||||
cy.get("select[data-cy='ausstellgrund']")
|
cy.get("select[data-cy='ausstellgrund']")
|
||||||
.select(
|
.select(
|
||||||
faker.number.int({
|
faker.number.int({
|
||||||
min: 1,
|
min: 1,
|
||||||
max: (["Modernisierung", "Neubau", "Sonstiges", "Verkauf", "Vermietung"] as Enums.Ausstellgrund[]).length,
|
max: (["Modernisierung", "Neubau", "Sonstiges", "Verkauf", "Vermietung"] as Enums.Ausstellgrund[]).length,
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
// Jetzt Füllen wir das Baujahr vom Gebäude aus.
|
// Jetzt Füllen wir das Baujahr vom Gebäude aus.
|
||||||
cy.get("input[name='baujahr_gebaeude']")
|
cy.get("input[name='baujahr_gebaeude']")
|
||||||
.should("have.attr", "type", "number")
|
.should("have.attr", "type", "number")
|
||||||
.type(
|
.type(
|
||||||
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
||||||
"{enter}",
|
"{enter}",
|
||||||
{ delay: 50 }
|
{ delay: 50 }
|
||||||
|
);
|
||||||
|
|
||||||
|
// Jetzt Füllen wir das Baujahr der Heizung aus.
|
||||||
|
cy.get("input[name='baujahr_heizung']")
|
||||||
|
.should("have.attr", "type", "number")
|
||||||
|
.type(
|
||||||
|
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
||||||
|
"{enter}",
|
||||||
|
{ delay: 50 }
|
||||||
|
);
|
||||||
|
|
||||||
|
// // Anzahl Einheiten
|
||||||
|
// cy.get("input[name='einheiten']")
|
||||||
|
// .should("have.attr", "type", "number")
|
||||||
|
// .type(faker.number.int({ min: 1, max: 5 }).toString());
|
||||||
|
|
||||||
|
// Sanierungsstatus
|
||||||
|
cy.get("select[name='saniert']").select(
|
||||||
|
Math.random() > 0.5 ? "true" : "false"
|
||||||
);
|
);
|
||||||
|
|
||||||
// Jetzt Füllen wir das Baujahr der Heizung aus.
|
// Adresse
|
||||||
cy.get("input[name='baujahr_heizung']")
|
cy.get("input[name='adresse']").type(faker.location.streetAddress());
|
||||||
.should("have.attr", "type", "number")
|
|
||||||
.type(
|
// Postleitzahl
|
||||||
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
cy.get("input[name='plz']").type(
|
||||||
"{enter}",
|
plz as string
|
||||||
{ delay: 50 }
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// // Anzahl Einheiten
|
// TODO: Ort - Dieser wird aus der Datenbank abgefragt, wir müssen also warten, bis der Dropdown da ist.
|
||||||
// cy.get("input[name='einheiten']")
|
cy.get("[data-cy='plz-container']").find("button").first().click()
|
||||||
// .should("have.attr", "type", "number")
|
|
||||||
// .type(faker.number.int({ min: 1, max: 5 }).toString());
|
|
||||||
|
|
||||||
// Sanierungsstatus
|
// // Flaeche
|
||||||
cy.get("select[name='saniert']").select(
|
// cy.get("input[name='flaeche']")
|
||||||
Math.random() > 0.5 ? "true" : "false"
|
// .should("have.attr", "type", "number")
|
||||||
);
|
// .type(faker.number.int({ min: 50, max: 1000 }).toString());
|
||||||
|
|
||||||
// Adresse
|
// Nutzlaeche
|
||||||
cy.get("input[name='adresse']").type(faker.location.streetAddress());
|
cy.get("input[name='nutzflaeche']")
|
||||||
|
.should("have.attr", "type", "number")
|
||||||
|
.type(faker.number.int({ min: 50, max: 1000 }).toString());
|
||||||
|
|
||||||
// Postleitzahl
|
// Keller
|
||||||
cy.get("input[name='plz']").type(
|
cy.get("select[name='keller']").find("option:not([disabled])").should("have.length", Object.keys(Enums.Heizungsstatus).length).parent().select(faker.number.int({
|
||||||
faker.location.zipCode({
|
max: Object.keys(Enums.Heizungsstatus).length,
|
||||||
format: "#####",
|
min: 1
|
||||||
})
|
}));
|
||||||
);
|
|
||||||
|
|
||||||
// TODO: Ort - Dieser wird aus der Datenbank abgefragt, wir müssen also warten, bis der Dropdown da ist.
|
// Dachgeschoss
|
||||||
cy.get("[data-cy='plz-container']").find("button").first().click()
|
cy.get("select[name='dachgeschoss']").find("option:not([disabled])").should("have.length", Object.keys(Enums.Heizungsstatus).length).parent().select(faker.number.int({
|
||||||
|
max: Object.keys(Enums.Heizungsstatus).length,
|
||||||
|
min: 1
|
||||||
|
}));
|
||||||
|
|
||||||
// // Flaeche
|
// Brennstoff und Einheit 1
|
||||||
// cy.get("input[name='flaeche']")
|
const brennstoffKombo = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
|
||||||
// .should("have.attr", "type", "number")
|
|
||||||
// .type(faker.number.int({ min: 50, max: 1000 }).toString());
|
|
||||||
|
|
||||||
// Nutzlaeche
|
cy.get("select[name='brennstoff_1']").select(brennstoffKombo[0]);
|
||||||
cy.get("input[name='nutzflaeche']")
|
cy.get("select[name='einheit_1']").select(brennstoffKombo[1]);
|
||||||
.should("have.attr", "type", "number")
|
|
||||||
.type(faker.number.int({ min: 50, max: 1000 }).toString());
|
|
||||||
|
|
||||||
// Keller
|
let availableDates = [];
|
||||||
cy.get("select[name='keller']").find("option:not([disabled])").should("have.length", heizungsstatus.length).parent().select(faker.number.int({
|
const startDate = moment()
|
||||||
max: heizungsstatus.length,
|
.subtract(4, "years")
|
||||||
min: 1
|
.subtract(6, "months");
|
||||||
}));
|
const endDate = moment().subtract(3, "years");
|
||||||
|
|
||||||
// Dachgeschoss
|
for (let m = moment(startDate); m.isBefore(endDate); m.add(1, "month")) {
|
||||||
cy.get("select[name='dachgeschoss']").find("option:not([disabled])").should("have.length", heizungsstatus.length).parent().select(faker.number.int({
|
availableDates.push({
|
||||||
max: heizungsstatus.length,
|
year: m.year(),
|
||||||
min: 1
|
month: m.month(),
|
||||||
}));
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Brennstoff und Einheit 1
|
// Verbrauchszeitraum
|
||||||
const brennstoffKombo = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
|
cy.get("select[name='energieverbrauch_zeitraum_jahr']").select(availableDates[0].year.toString());
|
||||||
|
cy.get("select[name='energieverbrauch_zeitraum_monat']").select(availableDates[0].month.toString());
|
||||||
cy.get("select[name='brennstoff_1']").select(brennstoffKombo[0]);
|
|
||||||
cy.get("select[name='einheit_1']").select(brennstoffKombo[1]);
|
|
||||||
|
|
||||||
let availableDates = [];
|
|
||||||
const startDate = moment()
|
|
||||||
.subtract(4, "years")
|
|
||||||
.subtract(6, "months");
|
|
||||||
const endDate = moment().subtract(3, "years");
|
|
||||||
|
|
||||||
for (let m = moment(startDate); m.isBefore(endDate); m.add(1, "month")) {
|
|
||||||
availableDates.push({
|
|
||||||
year: m.year(),
|
|
||||||
month: m.month(),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Verbrauchszeitraum
|
|
||||||
cy.get("select[name='energieverbrauch_zeitraum_jahr']").select(availableDates[0].year.toString());
|
|
||||||
cy.get("select[name='energieverbrauch_zeitraum_monat']").select(availableDates[0].month.toString());
|
|
||||||
|
|
||||||
// Verbrauch
|
|
||||||
cy.get("input[name='verbrauch_1']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
|
||||||
cy.get("input[name='verbrauch_2']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
|
||||||
cy.get("input[name='verbrauch_3']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
|
||||||
|
|
||||||
|
|
||||||
const zusaetzlicheHeizquelle = Math.random() > 0.5;
|
|
||||||
|
|
||||||
if (zusaetzlicheHeizquelle) {
|
|
||||||
cy.get("[data-cy='zusaetzliche_heizquelle']").check();
|
|
||||||
|
|
||||||
// Brennstoff und Einheit 2
|
|
||||||
const brennstoffKombo2 = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
|
|
||||||
|
|
||||||
cy.get("[data-cy='brennstoff_2']").select(brennstoffKombo2[0], { force: true });
|
|
||||||
cy.get("[data-cy='einheit_2']").select(brennstoffKombo2[1], { force: true });
|
|
||||||
|
|
||||||
// Verbrauch
|
// Verbrauch
|
||||||
cy.get("input[name='verbrauch_4']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
cy.get("input[name='verbrauch_1']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||||
cy.get("input[name='verbrauch_5']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
cy.get("input[name='verbrauch_2']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||||
cy.get("input[name='verbrauch_6']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
cy.get("input[name='verbrauch_3']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||||
}
|
|
||||||
|
|
||||||
// Gebäudestrom
|
|
||||||
cy.get("input[name='strom_1']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
|
||||||
cy.get("input[name='strom_2']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
|
||||||
cy.get("input[name='strom_3']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
|
||||||
|
|
||||||
// Stromverbrauch Enthält
|
const zusaetzlicheHeizquelle = Math.random() > 0.5;
|
||||||
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_heizung']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_warmwasser']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_lueftung']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_beleuchtung']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_kuehlung']").check();
|
|
||||||
|
|
||||||
// Warmwasser enthalten und bekannt
|
if (zusaetzlicheHeizquelle) {
|
||||||
const warmwasserEnthalten = Math.random() > 0.5;
|
cy.get("[data-cy='zusaetzliche_heizquelle']").check();
|
||||||
const anteilBekannt = Math.random() > 0.5;
|
|
||||||
|
|
||||||
if (warmwasserEnthalten) {
|
// Brennstoff und Einheit 2
|
||||||
cy.get("input[name='warmwasser_enthalten']").check();
|
const brennstoffKombo2 = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
|
||||||
|
|
||||||
if (anteilBekannt) {
|
cy.get("[data-cy='brennstoff_2']").select(brennstoffKombo2[0], { force: true });
|
||||||
// Der Anteil ist bekannt, wir müssen ihn also angeben.
|
cy.get("[data-cy='einheit_2']").select(brennstoffKombo2[1], { force: true });
|
||||||
cy.get("input[name='warmwasser_anteil_bekannt']").check();
|
|
||||||
|
|
||||||
cy.get("input[name='anteil_warmwasser_1']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
// Verbrauch
|
||||||
|
cy.get("input[name='verbrauch_4']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
||||||
|
cy.get("input[name='verbrauch_5']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
||||||
|
cy.get("input[name='verbrauch_6']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gebäudestrom
|
||||||
|
cy.get("input[name='strom_1']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||||
|
cy.get("input[name='strom_2']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||||
|
cy.get("input[name='strom_3']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||||
|
|
||||||
|
// Stromverbrauch Enthält
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_heizung']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_warmwasser']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_lueftung']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_beleuchtung']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_kuehlung']").check();
|
||||||
|
|
||||||
|
// Warmwasser enthalten und bekannt
|
||||||
|
const warmwasserEnthalten = Math.random() > 0.5;
|
||||||
|
const anteilBekannt = Math.random() > 0.5;
|
||||||
|
|
||||||
|
if (warmwasserEnthalten) {
|
||||||
|
cy.get("input[name='warmwasser_enthalten']").check();
|
||||||
|
|
||||||
|
if (anteilBekannt) {
|
||||||
|
// Der Anteil ist bekannt, wir müssen ihn also angeben.
|
||||||
|
cy.get("input[name='warmwasser_anteil_bekannt']").check();
|
||||||
|
|
||||||
|
cy.get("input[name='anteil_warmwasser_1']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
||||||
|
|
||||||
|
if (zusaetzlicheHeizquelle) {
|
||||||
|
// Zusätzliche Heizquelle existiert, also müssen wir auch hier den Anteil angeben.
|
||||||
|
cy.get("input[name='anteil_warmwasser_1']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Thermische Kühlung enthalten
|
||||||
|
const kuehlungEnthalten = Math.random() > 0.5;
|
||||||
|
|
||||||
|
if (kuehlungEnthalten) {
|
||||||
|
cy.get("input[name='kuehlung_enthalten']").check();
|
||||||
|
|
||||||
|
cy.get("input[name='anteil_kuehlung_1']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
||||||
|
|
||||||
if (zusaetzlicheHeizquelle) {
|
if (zusaetzlicheHeizquelle) {
|
||||||
// Zusätzliche Heizquelle existiert, also müssen wir auch hier den Anteil angeben.
|
// Zusätzliche Heizquelle existiert, also müssen wir auch hier den Anteil angeben.
|
||||||
cy.get("input[name='anteil_warmwasser_1']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
cy.get("input[name='anteil_kuehlung_2']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Thermische Kühlung enthalten
|
// Alternative Energieversorgungssysteme
|
||||||
const kuehlungEnthalten = Math.random() > 0.5;
|
if (Math.random() > 0.5) cy.get("input[name='alternative_heizung']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='alternative_warmwasser']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='alternative_lueftung']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='alternative_kuehlung']").check();
|
||||||
|
|
||||||
if (kuehlungEnthalten) {
|
// Gebäudetyp
|
||||||
cy.get("input[name='kuehlung_enthalten']").check();
|
cy.get("select[name='gebaeudetyp']").then(($dropdown) => {
|
||||||
|
const options = $dropdown.find('option:not([disabled])');
|
||||||
|
// Select the option at the random index
|
||||||
|
cy.get("select[name='gebaeudetyp']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||||
|
});
|
||||||
|
|
||||||
cy.get("input[name='anteil_kuehlung_1']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
// Gebäudeteil
|
||||||
|
cy.get("select[name='gebaeudeteil']").then(($dropdown) => {
|
||||||
|
const options = $dropdown.find('option');
|
||||||
|
// Select the option at the random index
|
||||||
|
cy.get("select[name='gebaeudeteil']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||||
|
});
|
||||||
|
|
||||||
if (zusaetzlicheHeizquelle) {
|
// Lüftung
|
||||||
// Zusätzliche Heizquelle existiert, also müssen wir auch hier den Anteil angeben.
|
cy.get("select[name='lueftung']").then(($dropdown) => {
|
||||||
cy.get("input[name='anteil_kuehlung_2']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
const options = $dropdown.find('option');
|
||||||
}
|
// Select the option at the random index
|
||||||
}
|
cy.get("select[name='lueftung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||||
|
});
|
||||||
|
|
||||||
// Alternative Energieversorgungssysteme
|
// Kühlung
|
||||||
if (Math.random() > 0.5) cy.get("input[name='alternative_heizung']").check();
|
cy.get("select[name='kuehlung']").then(($dropdown) => {
|
||||||
if (Math.random() > 0.5) cy.get("input[name='alternative_warmwasser']").check();
|
const options = $dropdown.find('option');
|
||||||
if (Math.random() > 0.5) cy.get("input[name='alternative_lueftung']").check();
|
// Select the option at the random index
|
||||||
if (Math.random() > 0.5) cy.get("input[name='alternative_kuehlung']").check();
|
cy.get("select[name='kuehlung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||||
|
});
|
||||||
|
|
||||||
// Gebäudetyp
|
// Leerstand
|
||||||
cy.get("select[name='gebaeudetyp']").then(($dropdown) => {
|
cy.get("input[name='leerstand']").should("have.attr", "type", "number").type(faker.number.int({ min: 0, max: 30 }).toString());
|
||||||
const options = $dropdown.find('option:not([disabled])');
|
|
||||||
// Select the option at the random index
|
|
||||||
cy.get("select[name='gebaeudetyp']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Gebäudeteil
|
// Heizungsanlage Daten
|
||||||
cy.get("select[name='gebaeudeteil']").then(($dropdown) => {
|
if (Math.random() > 0.5) cy.get("input[name='zentralheizung']").check();
|
||||||
const options = $dropdown.find('option');
|
if (Math.random() > 0.5) cy.get("input[name='einzelofen']").check();
|
||||||
// Select the option at the random index
|
if (Math.random() > 0.5) cy.get("input[name='durchlauf_erhitzer']").check();
|
||||||
cy.get("select[name='gebaeudeteil']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
if (Math.random() > 0.5) cy.get("input[name='standard_kessel']").check();
|
||||||
});
|
if (Math.random() > 0.5) cy.get("input[name='solarsystem_warmwasser']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='waermepumpe']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='niedertemperatur_kessel']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='brennwert_kessel']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='warmwasser_rohre_gedaemmt']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='heizungsrohre_gedaemmt']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='zirkulation']").check();
|
||||||
|
// if (Math.random() > 0.5) cy.get("input[name='raum_temperatur_regler']").check();
|
||||||
|
|
||||||
// Lüftung
|
// Heizungsanlage Bilder
|
||||||
cy.get("select[name='lueftung']").then(($dropdown) => {
|
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/1.jpeg", { subjectType: "input" });
|
||||||
const options = $dropdown.find('option');
|
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/2.jpeg", { subjectType: "input" });
|
||||||
// Select the option at the random index
|
|
||||||
cy.get("select[name='lueftung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Kühlung
|
// Fenster Daten
|
||||||
cy.get("select[name='kuehlung']").then(($dropdown) => {
|
if (Math.random() > 0.5) cy.get("input[name='einfach_verglasung']").check();
|
||||||
const options = $dropdown.find('option');
|
if (Math.random() > 0.5) cy.get("input[name='doppel_verglasung']").check();
|
||||||
// Select the option at the random index
|
if (Math.random() > 0.5) cy.get("input[name='isolier_verglasung']").check();
|
||||||
cy.get("select[name='kuehlung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
if (Math.random() > 0.5) cy.get("input[name='dreifach_verglasung']").check();
|
||||||
});
|
if (Math.random() > 0.5) cy.get("input[name='fenster_dicht']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='fenster_teilweise_undicht']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='tueren_dicht']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='tueren_undicht']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='rolllaeden_kaesten_gedaemmt']").check();
|
||||||
|
|
||||||
// Leerstand
|
// Fenster Bilder
|
||||||
cy.get("input[name='leerstand']").should("have.attr", "type", "number").type(faker.number.int({ min: 0, max: 30 }).toString());
|
cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/1.jpeg", { subjectType: "input" });
|
||||||
|
cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/2.jpeg", { subjectType: "input" });
|
||||||
|
|
||||||
// Heizungsanlage Daten
|
// Wärmedämmung Daten
|
||||||
if (Math.random() > 0.5) cy.get("input[name='zentralheizung']").check();
|
if (Math.random() > 0.5) cy.get("input[name='aussenwand_gedaemmt']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='einzelofen']").check();
|
if (Math.random() > 0.5) cy.get("input[name='keller_wand_gedaemmt']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='durchlauf_erhitzer']").check();
|
if (Math.random() > 0.5) cy.get("input[name='keller_decke_gedaemmt']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='standard_kessel']").check();
|
if (Math.random() > 0.5) cy.get("input[name='dachgeschoss_gedaemmt']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='solarsystem_warmwasser']").check();
|
if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_gedaemmt']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='waermepumpe']").check();
|
if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_min_12cm_gedaemmt']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='niedertemperatur_kessel']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='brennwert_kessel']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='warmwasser_rohre_gedaemmt']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='heizungsrohre_gedaemmt']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='zirkulation']").check();
|
|
||||||
// if (Math.random() > 0.5) cy.get("input[name='raum_temperatur_regler']").check();
|
|
||||||
|
|
||||||
// Heizungsanlage Bilder
|
// Wärmedämmung Bilder
|
||||||
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/1.jpeg", { subjectType: "input" });
|
cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/1.jpeg", { subjectType: "input" });
|
||||||
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/2.jpeg", { subjectType: "input" });
|
cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
||||||
|
|
||||||
// Fenster Daten
|
// Gebäude Bild
|
||||||
if (Math.random() > 0.5) cy.get("input[name='einfach_verglasung']").check();
|
cy.get("input[name='gebaeude_image']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" });
|
||||||
if (Math.random() > 0.5) cy.get("input[name='doppel_verglasung']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='isolier_verglasung']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='dreifach_verglasung']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='fenster_dicht']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='fenster_teilweise_undicht']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='tueren_dicht']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='tueren_undicht']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='rolllaeden_kaesten_gedaemmt']").check();
|
|
||||||
|
|
||||||
// Fenster Bilder
|
cy.get("form[data-cy='ausweis'] button[data-cy='weiter']").click({ force: true });
|
||||||
cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/1.jpeg", { subjectType: "input" });
|
|
||||||
cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/2.jpeg", { subjectType: "input" });
|
|
||||||
|
|
||||||
// Wärmedämmung Daten
|
cy.url().should("contain", "/kundendaten");
|
||||||
if (Math.random() > 0.5) cy.get("input[name='aussenwand_gedaemmt']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='keller_wand_gedaemmt']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='keller_decke_gedaemmt']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='dachgeschoss_gedaemmt']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_gedaemmt']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_min_12cm_gedaemmt']").check();
|
|
||||||
|
|
||||||
// Wärmedämmung Bilder
|
const email = faker.internet.email();
|
||||||
cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/1.jpeg", { subjectType: "input" });
|
const passwort = "test1234";
|
||||||
cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
const vorname = faker.person.firstName();
|
||||||
|
const nachname = faker.person.lastName();
|
||||||
|
const telefon = faker.phone.number()
|
||||||
|
|
||||||
// Gebäude Bild
|
const strasse = faker.location.streetAddress({ useFullAddress: true })
|
||||||
cy.get("input[name='gebaeude_image']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" });
|
|
||||||
|
|
||||||
cy.get("form[data-cy='ausweis'] button[data-cy='weiter']").click({ force: true });
|
cy.get("input[name='vorname']").should("have.attr", "type", "text").type(vorname);
|
||||||
|
cy.get("input[name='name']").should("have.attr", "type", "text").type(nachname);
|
||||||
|
cy.get("input[name='telefon']").should("have.attr", "type", "text").type(telefon);
|
||||||
|
// Rechnung
|
||||||
|
cy.get("input[name='rechnung_empfaenger']").should("have.attr", "type", "text").type(`${vorname} ${nachname}`);
|
||||||
|
cy.get("input[name='rechnung_strasse']").should("have.attr", "type", "text").type(strasse);
|
||||||
|
cy.get("input[name='rechnung_plz']").should("have.attr", "type", "text").type(plz as string);
|
||||||
|
cy.get("[data-cy='plz-container']").children().first().click()
|
||||||
|
cy.get("input[name='rechnung_email']").should("have.attr", "type", "email").type(email);
|
||||||
|
|
||||||
cy.url().should("contain", "/kundendaten");
|
cy.get("[data-cy='paypal']").click()
|
||||||
|
|
||||||
const email = faker.internet.email();
|
cy.get("button[data-cy='bestellen']").click();
|
||||||
const passwort = "test1234";
|
|
||||||
const vorname = faker.person.firstName();
|
|
||||||
const nachname = faker.person.lastName();
|
|
||||||
const telefon = faker.phone.number()
|
|
||||||
|
|
||||||
const strasse = faker.location.streetAddress({ useFullAddress: true })
|
cy["form:signup"](email, passwort, vorname, nachname)
|
||||||
const plz = faker.location.zipCode("#####")
|
|
||||||
|
|
||||||
cy.get("input[name='vorname']").should("have.attr", "type", "text").type(vorname);
|
cy.origin('https://www.mollie.com', () => {
|
||||||
cy.get("input[name='name']").should("have.attr", "type", "text").type(nachname);
|
// Jetzt sind wir auf der Mollie Seite, dort wählen wir den "paid" status aus
|
||||||
cy.get("input[name='telefon']").should("have.attr", "type", "text").type(telefon);
|
cy.get("input[type='radio'][name='final_state'][value='paid']").check();
|
||||||
// Rechnung
|
// Da wird unser Test fehlschlagen, da die localhost domain von Mollie aus nicht erreichbar ist.
|
||||||
cy.get("input[name='rechnung_empfaenger']").should("have.attr", "type", "text").type(`${vorname} ${nachname}`);
|
})
|
||||||
cy.get("input[name='rechnung_strasse']").should("have.attr", "type", "text").type(strasse);
|
|
||||||
cy.get("input[name='rechnung_plz']").should("have.attr", "type", "text").type(plz);
|
|
||||||
cy.get("[data-cy='plz-container']").children().first().click()
|
|
||||||
cy.get("input[name='rechnung_email']").should("have.attr", "type", "email").type(email);
|
|
||||||
|
|
||||||
cy.get("[data-cy='paypal']").click()
|
|
||||||
|
|
||||||
cy.get("button[data-cy='bestellen']").click();
|
|
||||||
|
|
||||||
cy.get("a[data-cy='registrieren']").should("be.visible").click();
|
|
||||||
|
|
||||||
// Wir sind jetzt registriert und können uns nun einloggen.
|
|
||||||
// Die Email sollte automatisch eingetragen sein, da wir uns gerade registriert haben.
|
|
||||||
cy.get("form[name='signup'] input[name='vorname']").should("be.visible").should("have.attr", "type", "text").type(vorname);
|
|
||||||
cy.get("form[name='signup'] input[name='nachname']").should("be.visible").should("have.attr", "type", "text").type(nachname);
|
|
||||||
cy.get("form[name='signup'] input[name='email']").should("be.visible").should("have.attr", "type", "email").should("contain.value", email);
|
|
||||||
cy.get("form[name='signup'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort);
|
|
||||||
|
|
||||||
cy.intercept({ method: "PUT", url: "**/api/user" }).as("signup")
|
|
||||||
cy.get("form[name='signup'] button[type='submit']").click();
|
|
||||||
cy.wait("@signup")
|
|
||||||
cy.get("form[name='login'] button[type='submit']").click();
|
|
||||||
|
|
||||||
cy.origin('https://www.mollie.com', () => {
|
|
||||||
// Jetzt sind wir auf der Mollie Seite, dort wählen wir den "paid" status aus
|
|
||||||
cy.get("input[type='radio'][name='final_state'][value='paid']").check();
|
|
||||||
// Da wird unser Test fehlschlagen, da die localhost domain von Mollie aus nicht erreichbar ist.
|
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -2,14 +2,17 @@ import fuelList from "#components/Ausweis/brennstoffListe.js";
|
|||||||
import { faker } from "@faker-js/faker";
|
import { faker } from "@faker-js/faker";
|
||||||
import "cypress-file-upload"
|
import "cypress-file-upload"
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import { Aufnahme, Enums, Objekt, VerbrauchsausweisWohnen } from "#lib/client/prisma.js";
|
import { Aufnahme, Benutzer, Enums, Objekt, Rechnung, VerbrauchsausweisWohnen } from "#lib/client/prisma.js";
|
||||||
|
|
||||||
describe("Verbrauchsausweis für Wohngebäude bearbeiten", async () => {
|
describe("Verbrauchsausweis für Wohngebäude bearbeiten", async () => {
|
||||||
it("bearbeitet einen bereits existierenden Verbrauchsausweis für Wohngebäude", () => {
|
it("bearbeitet einen bereits existierenden Verbrauchsausweis für Wohngebäude", () => {
|
||||||
cy.task("verbrauchsausweisWohnen", {
|
cy.task("verbrauchsausweisWohnen", {
|
||||||
where: {
|
where: {
|
||||||
ausgestellt: false,
|
ausgestellt: false,
|
||||||
bestellt: false
|
bestellt: false,
|
||||||
|
benutzer: {
|
||||||
|
email: "user@ib-cornelsen.de"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
include: {
|
include: {
|
||||||
aufnahme: {
|
aufnahme: {
|
||||||
@@ -17,261 +20,171 @@ describe("Verbrauchsausweis für Wohngebäude bearbeiten", async () => {
|
|||||||
objekt: true
|
objekt: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
benutzer: true
|
benutzer: true,
|
||||||
|
rechnung: true
|
||||||
}
|
}
|
||||||
}).then((ausweis: VerbrauchsausweisWohnen & { aufnahme: Aufnahme & { objekt: Objekt } }) => {
|
}).then((ausweis: VerbrauchsausweisWohnen & { benutzer: Benutzer, aufnahme: Aufnahme & { objekt: Objekt }, rechnung: Rechnung | null }) => {
|
||||||
|
cy.login("user@ib-cornelsen.de", "passwort");
|
||||||
|
|
||||||
cy.visit(`/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?id=${ausweis.id}`);
|
cy.visit(`/energieausweis-erstellen/verbrauchsausweis-wohngebaeude?id=${ausweis.id}`);
|
||||||
|
|
||||||
cy.wait(2000);
|
cy.wait(2000);
|
||||||
|
|
||||||
|
|
||||||
// Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind.
|
// Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind.
|
||||||
cy.get("select[data-cy='ausstellgrund']")
|
cy.get("select[data-cy='ausstellgrund']")
|
||||||
.find("option:selected").should("have.value", ausweis.ausstellgrund)
|
.find("option:selected").should("have.value", ausweis.ausstellgrund)
|
||||||
|
|
||||||
// Jetzt Füllen wir das Baujahr vom Gebäude aus.
|
// // Jetzt Füllen wir das Baujahr vom Gebäude aus.
|
||||||
cy.get("input[name='baujahr_gebaeude']")
|
// cy.get("input[name='baujahr_gebaeude']")
|
||||||
.should("have.value", ausweis.aufnahme.baujahr_gebaeude[0])
|
// .should("have.value", ausweis.aufnahme.baujahr_gebaeude[0])
|
||||||
|
|
||||||
// Jetzt Füllen wir das Baujahr der Heizung aus.
|
// // Jetzt Füllen wir das Baujahr der Heizung aus.
|
||||||
cy.get("input[name='baujahr_heizung']")
|
// cy.get("input[name='baujahr_heizung']")
|
||||||
.should("have.value", ausweis.aufnahme.baujahr_heizung[0])
|
// .should("have.value", ausweis.aufnahme.baujahr_heizung[0])
|
||||||
|
|
||||||
// Anzahl Einheiten
|
// Anzahl Einheiten
|
||||||
cy.get("input[name='einheiten']")
|
cy.get("input[name='einheiten']")
|
||||||
.should("have.value", ausweis.aufnahme.einheiten)
|
.should("have.value", ausweis.aufnahme.einheiten)
|
||||||
|
|
||||||
// Sanierungsstatus
|
// Sanierungsstatus
|
||||||
cy.get("select[name='saniert']").find("option:selected").should("have.value", ausweis.aufnahme.saniert)
|
cy.get("select[name='saniert']").find("option:selected").should("have.value", (ausweis.aufnahme.saniert || false).toString())
|
||||||
|
|
||||||
// Adresse
|
// Adresse
|
||||||
cy.get("input[name='adresse']").should("have.value", ausweis.aufnahme.objekt.adresse);
|
cy.get("input[name='adresse']").should("have.value", ausweis.aufnahme.objekt.adresse);
|
||||||
|
|
||||||
// Postleitzahl
|
// Postleitzahl
|
||||||
cy.get("input[name='plz']").type(
|
cy.get("input[name='plz']").should("have.value", ausweis.aufnahme.objekt.plz);
|
||||||
faker.location.zipCode({
|
cy.get("input[name='ort']").should("have.value", ausweis.aufnahme.objekt.ort);
|
||||||
format: "#####",
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
// TODO: Ort - Dieser wird aus der Datenbank abgefragt, wir müssen also warten, bis der Dropdown da ist.
|
|
||||||
cy.get("[data-cy='plz-container']").find("button").first().click()
|
|
||||||
|
|
||||||
// Flaeche
|
// Flaeche
|
||||||
cy.get("input[name='flaeche']")
|
cy.get("input[name='flaeche']")
|
||||||
.should("have.attr", "type", "number")
|
.should("have.value", ausweis.aufnahme.flaeche)
|
||||||
.type(faker.number.int({ min: 50, max: 1000 }).toString());
|
|
||||||
|
|
||||||
// Nutzflaeche
|
// Nutzflaeche
|
||||||
cy.get("input[name='nutzflaeche']")
|
cy.get("input[name='nutzflaeche']")
|
||||||
.should("have.attr", "type", "number")
|
.should("have.value", ausweis.aufnahme.nutzflaeche)
|
||||||
.type(faker.number.int({ min: 50, max: 1000 }).toString());
|
|
||||||
|
|
||||||
// Keller
|
// Keller
|
||||||
cy.get("select[name='keller']").find("option:not([disabled])").should("have.length", (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length).parent().select(faker.number.int({
|
cy.get("select[name='keller']").find("option:selected").should("have.value", ausweis.aufnahme.keller)
|
||||||
max: (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length,
|
|
||||||
min: 1
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Dachgeschoss
|
// Dachgeschoss
|
||||||
cy.get("select[name='dachgeschoss']").find("option:not([disabled])").should("have.length", (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length).parent().select(faker.number.int({
|
cy.get("select[name='dachgeschoss']").find("option:selected").should("have.value", ausweis.aufnahme.dachgeschoss)
|
||||||
max: (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length,
|
|
||||||
min: 1
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Brennstoff und Einheit 1
|
cy.get("select[name='brennstoff_1']").should("have.value", ausweis.brennstoff_1)
|
||||||
const brennstoffKombo = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
|
cy.get("select[name='einheit_1']").should("have.value", ausweis.einheit_1)
|
||||||
|
|
||||||
cy.get("select[name='brennstoff_1']").select(brennstoffKombo[0]);
|
|
||||||
cy.get("select[name='einheit_1']").select(brennstoffKombo[1]);
|
|
||||||
|
|
||||||
let availableDates = [];
|
|
||||||
const startDate = moment()
|
|
||||||
.subtract(4, "years")
|
|
||||||
.subtract(6, "months");
|
|
||||||
const endDate = moment().subtract(3, "years");
|
|
||||||
|
|
||||||
for (let m = moment(startDate); m.isBefore(endDate); m.add(1, "month")) {
|
|
||||||
availableDates.push({
|
|
||||||
year: m.year(),
|
|
||||||
month: m.month(),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Verbrauchszeitraum
|
// Verbrauchszeitraum
|
||||||
cy.get("select[name='energieverbrauch_zeitraum_jahr']").select(availableDates[0].year.toString());
|
cy.get("select[name='energieverbrauch_zeitraum_jahr']").find("option:selected").should("have.value", moment(ausweis.startdatum).get("year"))
|
||||||
cy.get("select[name='energieverbrauch_zeitraum_monat']").select(availableDates[0].month.toString());
|
cy.get("select[name='energieverbrauch_zeitraum_monat']").find("option:selected").should("have.value", moment(ausweis.startdatum).get("m") + 1)
|
||||||
|
|
||||||
|
|
||||||
// Verbrauch
|
// Verbrauch
|
||||||
cy.get("input[name='verbrauch_1']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
cy.get("input[name='verbrauch_1']").should("have.value", ausweis.verbrauch_1);
|
||||||
cy.get("input[name='verbrauch_2']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
cy.get("input[name='verbrauch_2']").should("have.value", ausweis.verbrauch_2);
|
||||||
cy.get("input[name='verbrauch_3']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
cy.get("input[name='verbrauch_3']").should("have.value", ausweis.verbrauch_3);
|
||||||
|
|
||||||
|
|
||||||
const zusaetzlicheHeizquelle = Math.random() > 0.5;
|
|
||||||
|
|
||||||
if (zusaetzlicheHeizquelle) {
|
if (ausweis.zusaetzliche_heizquelle) {
|
||||||
cy.get("[data-cy='zusaetzliche_heizquelle']").check();
|
cy.get("[data-cy='zusaetzliche_heizquelle']").should("be.checked");
|
||||||
|
|
||||||
// Brennstoff und Einheit 2
|
cy.get("[data-cy='brennstoff_2']").find("option:selected").should("have.value", ausweis.brennstoff_2);
|
||||||
const brennstoffKombo2 = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
|
cy.get("[data-cy='einheit_2']").find("option:selected").should("have.value", ausweis.einheit_2);
|
||||||
|
|
||||||
cy.get("[data-cy='brennstoff_2']").select(brennstoffKombo2[0], { force: true });
|
|
||||||
cy.get("[data-cy='einheit_2']").select(brennstoffKombo2[1], { force: true });
|
|
||||||
|
|
||||||
// Verbrauch
|
// Verbrauch
|
||||||
cy.get("input[name='verbrauch_4']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
cy.get("input[name='verbrauch_4']").should("have.value", ausweis.verbrauch_4);
|
||||||
cy.get("input[name='verbrauch_5']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
cy.get("input[name='verbrauch_5']").should("have.value", ausweis.verbrauch_5);
|
||||||
cy.get("input[name='verbrauch_6']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
cy.get("input[name='verbrauch_6']").should("have.value", ausweis.verbrauch_6);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Warmwasser enthalten und bekannt
|
if (ausweis.warmwasser_enthalten) {
|
||||||
const warmwasserEnthalten = Math.random() > 0.5;
|
cy.get("input[name='warmwasser_enthalten']").should("be.checked");
|
||||||
const anteilBekannt = Math.random() > 0.5;
|
|
||||||
|
|
||||||
if (warmwasserEnthalten) {
|
if (ausweis.warmwasser_anteil_bekannt) {
|
||||||
cy.get("input[name='warmwasser_enthalten']").check();
|
|
||||||
|
|
||||||
if (anteilBekannt) {
|
|
||||||
// Der Anteil ist bekannt, wir müssen ihn also angeben.
|
// Der Anteil ist bekannt, wir müssen ihn also angeben.
|
||||||
cy.get("input[name='warmwasser_anteil_bekannt']").check();
|
cy.get("input[name='warmwasser_anteil_bekannt']").should("be.checked");
|
||||||
|
|
||||||
cy.get("input[name='anteil_warmwasser_1']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
cy.get("input[name='anteil_warmwasser_1']").should("have.value", ausweis.anteil_warmwasser_1);
|
||||||
|
|
||||||
if (zusaetzlicheHeizquelle) {
|
if (ausweis.zusaetzliche_heizquelle) {
|
||||||
// Zusätzliche Heizquelle existiert, also müssen wir auch hier den Anteil angeben.
|
// Zusätzliche Heizquelle existiert, also müssen wir auch hier den Anteil angeben.
|
||||||
cy.get("input[name='anteil_warmwasser_2']").type(faker.number.int({ min: 0, max: 50 }).toString(), {force: true});
|
cy.get("input[name='anteil_warmwasser_2']").should('have.value', ausweis.anteil_warmwasser_2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Alternative Energieversorgungssysteme
|
// Alternative Energieversorgungssysteme
|
||||||
if (Math.random() > 0.5) cy.get("input[name='alternative_heizung']").check();
|
if (ausweis.alternative_heizung) cy.get("input[name='alternative_heizung']").should("be.checked");
|
||||||
if (Math.random() > 0.5) cy.get("input[name='alternative_warmwasser']").check();
|
if (ausweis.alternative_warmwasser) cy.get("input[name='alternative_warmwasser']").should("be.checked");
|
||||||
if (Math.random() > 0.5) cy.get("input[name='alternative_lueftung']").check();
|
if (ausweis.alternative_lueftung) cy.get("input[name='alternative_lueftung']").should("be.checked");
|
||||||
if (Math.random() > 0.5) cy.get("input[name='alternative_kuehlung']").check();
|
if (ausweis.alternative_kuehlung) cy.get("input[name='alternative_kuehlung']").should("be.checked");
|
||||||
|
|
||||||
// Gebäudetyp
|
// Gebäudetyp
|
||||||
cy.get("select[name='gebaeudetyp']").then(($dropdown) => {
|
cy.get("select[name='gebaeudetyp']").find("option:selected").should("have.value", ausweis.aufnahme.gebaeudetyp)
|
||||||
const options = $dropdown.find('option');
|
|
||||||
// Select the option at the random index
|
|
||||||
cy.get("select[name='gebaeudetyp']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Gebäudeteil
|
// Gebäudeteil
|
||||||
cy.get("select[name='gebaeudeteil']").then(($dropdown) => {
|
cy.get("select[name='gebaeudeteil']").find("option:selected").should("have.value", ausweis.aufnahme.gebaeudeteil)
|
||||||
const options = $dropdown.find('option');
|
|
||||||
// Select the option at the random index
|
|
||||||
cy.get("select[name='gebaeudeteil']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Lüftung
|
// Lüftung
|
||||||
cy.get("select[name='lueftung']").then(($dropdown) => {
|
cy.get("select[name='lueftung']").find("option:selected").should("have.value", ausweis.aufnahme.lueftung)
|
||||||
const options = $dropdown.find('option');
|
|
||||||
// Select the option at the random index
|
|
||||||
cy.get("select[name='lueftung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Kühlung
|
// Kühlung
|
||||||
cy.get("select[name='kuehlung']").then(($dropdown) => {
|
cy.get("select[name='kuehlung']").find("option:selected").should("have.value", ausweis.aufnahme.kuehlung)
|
||||||
const options = $dropdown.find('option');
|
|
||||||
// Select the option at the random index
|
|
||||||
cy.get("select[name='kuehlung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string, { force: true });
|
|
||||||
});
|
|
||||||
|
|
||||||
// Leerstand
|
// Leerstand
|
||||||
cy.get("input[name='leerstand']").should("have.attr", "type", "number").type(faker.number.int({ min: 0, max: 30 }).toString());
|
cy.get("input[name='leerstand']").should("have.value", ausweis.aufnahme.leerstand || "");
|
||||||
|
|
||||||
// Heizungsanlage Daten
|
// Heizungsanlage Daten
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='zentralheizung']").check();
|
if (ausweis.aufnahme.zentralheizung) cy.get("[data-cy='zentralheizung']").should("be.checked");
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='einzelofen']").check();
|
if (ausweis.aufnahme.einzelofen) cy.get("[data-cy='einzelofen']").should("be.checked");
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='durchlauf_erhitzer']").check();
|
if (ausweis.aufnahme.durchlauf_erhitzer) cy.get("[data-cy='durchlauf_erhitzer']").should("be.checked");
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='standard_kessel']").check();
|
if (ausweis.aufnahme.standard_kessel) cy.get("[data-cy='standard_kessel']").should("be.checked");
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='solarsystem_warmwasser']").check();
|
if (ausweis.aufnahme.solarsystem_warmwasser) cy.get("[data-cy='solarsystem_warmwasser']").should("be.checked");
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='waermepumpe']").check();
|
if (ausweis.aufnahme.waermepumpe) cy.get("[data-cy='waermepumpe']").should("be.checked");
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='niedertemperatur_kessel']").check();
|
if (ausweis.aufnahme.niedertemperatur_kessel) cy.get("[data-cy='niedertemperatur_kessel']").should("be.checked");
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='brennwert_kessel']").check();
|
if (ausweis.aufnahme.brennwert_kessel) cy.get("[data-cy='brennwert_kessel']").should("be.checked");
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='warmwasser_rohre_gedaemmt']").check();
|
if (ausweis.aufnahme.warmwasser_rohre_gedaemmt) cy.get("[data-cy='warmwasser_rohre_gedaemmt']").should("be.checked");
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='heizungsrohre_gedaemmt']").check();
|
if (ausweis.aufnahme.heizungsrohre_gedaemmt) cy.get("[data-cy='heizungsrohre_gedaemmt']").should("be.checked");
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='zirkulation']").check();
|
if (ausweis.aufnahme.zirkulation) cy.get("[data-cy='zirkulation']").should("be.checked");
|
||||||
// if (Math.random() > 0.5) cy.get("[data-cy='raum_temperatur_regler']").check();
|
|
||||||
|
|
||||||
// Heizungsanlage Bilder
|
|
||||||
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/1.jpeg", { subjectType: "input" });
|
|
||||||
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/2.jpeg", { subjectType: "input" });
|
|
||||||
|
|
||||||
// Fenster Daten
|
// Fenster Daten
|
||||||
if (Math.random() > 0.5) cy.get("input[name='einfach_verglasung']").check();
|
if (ausweis.aufnahme.einfach_verglasung) cy.get("input[name='einfach_verglasung']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='doppel_verglasung']").check();
|
if (ausweis.aufnahme.doppel_verglasung) cy.get("input[name='doppel_verglasung']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='isolier_verglasung']").check();
|
if (ausweis.aufnahme.isolier_verglasung) cy.get("input[name='isolier_verglasung']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='dreifach_verglasung']").check();
|
if (ausweis.aufnahme.dreifach_verglasung) cy.get("input[name='dreifach_verglasung']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='fenster_dicht']").check();
|
if (ausweis.aufnahme.fenster_dicht) cy.get("input[name='fenster_dicht']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='fenster_teilweise_undicht']").check();
|
if (ausweis.aufnahme.fenster_teilweise_undicht) cy.get("input[name='fenster_teilweise_undicht']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='tueren_dicht']").check();
|
if (ausweis.aufnahme.tueren_dicht) cy.get("input[name='tueren_dicht']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='tueren_undicht']").check();
|
if (ausweis.aufnahme.tueren_undicht) cy.get("input[name='tueren_undicht']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='rolllaeden_kaesten_gedaemmt']").check();
|
if (ausweis.aufnahme.rolllaeden_kaesten_gedaemmt) cy.get("input[name='rolllaeden_kaesten_gedaemmt']").check();
|
||||||
|
|
||||||
// Fenster Bilder
|
|
||||||
cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/1.jpeg", { subjectType: "input" });
|
|
||||||
cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/2.jpeg", { subjectType: "input" });
|
|
||||||
|
|
||||||
// Wärmedämmung Daten
|
// Wärmedämmung Daten
|
||||||
if (Math.random() > 0.5) cy.get("input[name='aussenwand_gedaemmt']").check();
|
if (ausweis.aufnahme.aussenwand_gedaemmt) cy.get("input[name='aussenwand_gedaemmt']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='keller_wand_gedaemmt']").check();
|
if (ausweis.aufnahme.keller_wand_gedaemmt) cy.get("input[name='keller_wand_gedaemmt']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='keller_decke_gedaemmt']").check();
|
if (ausweis.aufnahme.keller_decke_gedaemmt) cy.get("input[name='keller_decke_gedaemmt']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='dachgeschoss_gedaemmt']").check();
|
if (ausweis.aufnahme.dachgeschoss_gedaemmt) cy.get("input[name='dachgeschoss_gedaemmt']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_gedaemmt']").check();
|
if (ausweis.aufnahme.oberste_geschossdecke_gedaemmt) cy.get("input[name='oberste_geschossdecke_gedaemmt']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_min_12cm_gedaemmt']").check();
|
if (ausweis.aufnahme.oberste_geschossdecke_min_12cm_gedaemmt) cy.get("input[name='oberste_geschossdecke_min_12cm_gedaemmt']").check();
|
||||||
|
|
||||||
// Wärmedämmung Bilder
|
|
||||||
cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/1.jpeg", { subjectType: "input" });
|
|
||||||
cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
|
||||||
|
|
||||||
// Gebäude Bild
|
|
||||||
cy.get("input[name='gebaeude_image']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" });
|
|
||||||
|
|
||||||
// Jetzt können wir den Verbrauchsausweis erstellen.
|
// Jetzt können wir den Verbrauchsausweis erstellen.
|
||||||
cy.get("form[data-cy='ausweis'] button[data-cy='weiter']").click({ force: true });
|
cy.get("form[data-cy='ausweis'] button[data-cy='weiter']").click({ force: true });
|
||||||
|
|
||||||
cy.url().should("contain", "/kundendaten");
|
cy.url().should("contain", "/kundendaten");
|
||||||
|
|
||||||
const email = faker.internet.email();
|
cy.get("input[name='vorname']").should("have.value", ausweis.benutzer.vorname);
|
||||||
const passwort = "test1234";
|
cy.get("input[name='name']").should("have.value", ausweis.benutzer.name);
|
||||||
const vorname = faker.person.firstName();
|
cy.get("input[name='telefon']").should("have.value", ausweis.rechnung?.telefon || ausweis.benutzer.telefon || "");
|
||||||
const nachname = faker.person.lastName();
|
|
||||||
const telefon = faker.phone.number()
|
|
||||||
|
|
||||||
const strasse = faker.location.streetAddress({ useFullAddress: true })
|
|
||||||
const plz = faker.location.zipCode("#####")
|
|
||||||
|
|
||||||
cy.get("input[name='vorname']").should("have.attr", "type", "text").type(vorname);
|
|
||||||
cy.get("input[name='name']").should("have.attr", "type", "text").type(nachname);
|
|
||||||
cy.get("input[name='telefon']").should("have.attr", "type", "text").type(telefon);
|
|
||||||
// Rechnung
|
// Rechnung
|
||||||
cy.get("input[name='rechnung_empfaenger']").should("have.attr", "type", "text").type(`${vorname} ${nachname}`);
|
cy.get("input[name='rechnung_empfaenger']").should("have.value", ausweis.rechnung?.empfaenger || `${ausweis.benutzer.vorname} ${ausweis.benutzer.name}`);
|
||||||
cy.get("input[name='rechnung_strasse']").should("have.attr", "type", "text").type(strasse);
|
cy.get("input[name='rechnung_strasse']").should("have.value", ausweis.rechnung?.strasse || ausweis.benutzer.adresse);
|
||||||
cy.get("input[name='rechnung_plz']").should("have.attr", "type", "text").type(plz);
|
cy.get("input[name='rechnung_plz']").should("have.value", ausweis.rechnung?.plz || ausweis.benutzer.plz);
|
||||||
cy.get("[data-cy='plz-container']").children().first().click()
|
cy.get("input[name='rechnung_email']").should("have.value", ausweis.rechnung?.email || ausweis.benutzer.email);
|
||||||
cy.get("input[name='rechnung_email']").should("have.attr", "type", "email").type(email);
|
|
||||||
|
|
||||||
cy.get("[data-cy='paypal']").click()
|
cy.get("[data-cy='paypal']").click()
|
||||||
|
|
||||||
cy.get("button[data-cy='bestellen']").click();
|
cy.get("button[data-cy='bestellen']").click();
|
||||||
|
|
||||||
cy.get("a[data-cy='registrieren']").should("be.visible").click();
|
|
||||||
|
|
||||||
// Wir sind jetzt registriert und können uns nun einloggen.
|
|
||||||
// Die Email sollte automatisch eingetragen sein, da wir uns gerade registriert haben.
|
|
||||||
cy.get("form[name='signup'] input[name='vorname']").should("be.visible").should("have.attr", "type", "text").type(vorname);
|
|
||||||
cy.get("form[name='signup'] input[name='nachname']").should("be.visible").should("have.attr", "type", "text").type(nachname);
|
|
||||||
cy.get("form[name='signup'] input[name='email']").should("be.visible").should("have.attr", "type", "email").should("contain.value", email);
|
|
||||||
cy.get("form[name='signup'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort);
|
|
||||||
|
|
||||||
cy.intercept({ method: "PUT", url: "**/api/user" }).as("signup")
|
|
||||||
cy.get("form[name='signup'] button[type='submit']").click();
|
|
||||||
cy.wait("@signup")
|
|
||||||
cy.get("form[name='login'] button[type='submit']").click();
|
|
||||||
|
|
||||||
cy.origin('https://www.mollie.com', () => {
|
cy.origin('https://www.mollie.com', () => {
|
||||||
// Jetzt sind wir auf der Mollie Seite, dort wählen wir den "paid" status aus
|
// Jetzt sind wir auf der Mollie Seite, dort wählen wir den "paid" status aus
|
||||||
cy.get("input[type='radio'][name='final_state'][value='paid']").check();
|
cy.get("input[type='radio'][name='final_state'][value='paid']").check();
|
||||||
|
|||||||
@@ -6,296 +6,283 @@ import moment from "moment";
|
|||||||
|
|
||||||
describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
||||||
it("erstellt einen neuen Verbrauchsausweis Wohngebäude.", () => {
|
it("erstellt einen neuen Verbrauchsausweis Wohngebäude.", () => {
|
||||||
const email = faker.internet.email();
|
cy.task("plz").then(plz => {
|
||||||
const passwort = "test1234";
|
const email = faker.internet.email();
|
||||||
const vorname = faker.person.firstName();
|
const passwort = "test1234";
|
||||||
const nachname = faker.person.lastName();
|
const vorname = faker.person.firstName();
|
||||||
const telefon = faker.phone.number()
|
const nachname = faker.person.lastName();
|
||||||
|
const telefon = faker.phone.number()
|
||||||
|
|
||||||
const strasse = faker.location.streetAddress({ useFullAddress: true })
|
const strasse = faker.location.streetAddress({ useFullAddress: true })
|
||||||
const plz = faker.location.zipCode("#####")
|
|
||||||
|
|
||||||
const preLogin = Math.random() > 0.5;
|
const preLogin = Math.random() > 0.5;
|
||||||
|
|
||||||
if (preLogin) {
|
if (preLogin) {
|
||||||
cy.signup(email, passwort, vorname, nachname)
|
cy.signup(email, passwort, vorname, nachname)
|
||||||
cy.login(email, passwort)
|
cy.login(email, passwort)
|
||||||
}
|
}
|
||||||
|
|
||||||
cy.visit("/energieausweis-erstellen/verbrauchsausweis-wohngebaeude");
|
cy.visit("/energieausweis-erstellen/verbrauchsausweis-wohngebaeude");
|
||||||
|
|
||||||
cy.wait(2000);
|
cy.wait(2000);
|
||||||
|
|
||||||
// Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind.
|
// Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind.
|
||||||
cy.get("select[data-cy='ausstellgrund']")
|
cy.get("select[data-cy='ausstellgrund']")
|
||||||
.select(
|
.select(
|
||||||
faker.number.int({
|
faker.number.int({
|
||||||
min: 1,
|
min: 1,
|
||||||
max: Object.values(Enums.Ausstellgrund).length - 1,
|
max: Object.values(Enums.Ausstellgrund).length - 1,
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
// Jetzt Füllen wir das Baujahr vom Gebäude aus.
|
// Jetzt Füllen wir das Baujahr vom Gebäude aus.
|
||||||
cy.get("input[name='baujahr_gebaeude']")
|
cy.get("input[name='baujahr_gebaeude']")
|
||||||
.should("have.attr", "type", "number")
|
.should("have.attr", "type", "number")
|
||||||
.type(
|
.type(
|
||||||
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
||||||
"{enter}",
|
"{enter}",
|
||||||
{ delay: 50 }
|
{ delay: 50 }
|
||||||
|
);
|
||||||
|
|
||||||
|
// Jetzt Füllen wir das Baujahr der Heizung aus.
|
||||||
|
cy.get("input[name='baujahr_heizung']")
|
||||||
|
.should("have.attr", "type", "number")
|
||||||
|
.type(
|
||||||
|
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
||||||
|
"{enter}",
|
||||||
|
{ delay: 50 }
|
||||||
|
);
|
||||||
|
|
||||||
|
// Anzahl Einheiten
|
||||||
|
cy.get("input[name='einheiten']")
|
||||||
|
.should("have.attr", "type", "number")
|
||||||
|
.type(faker.number.int({ min: 1, max: 5 }).toString());
|
||||||
|
|
||||||
|
// Sanierungsstatus
|
||||||
|
cy.get("select[name='saniert']").select(
|
||||||
|
Math.random() > 0.5 ? "true" : "false"
|
||||||
);
|
);
|
||||||
|
|
||||||
// Jetzt Füllen wir das Baujahr der Heizung aus.
|
// Adresse
|
||||||
cy.get("input[name='baujahr_heizung']")
|
cy.get("input[name='adresse']").type(faker.location.streetAddress());
|
||||||
.should("have.attr", "type", "number")
|
|
||||||
.type(
|
// Postleitzahl
|
||||||
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
cy.get("input[name='plz']").type(
|
||||||
"{enter}",
|
plz as string
|
||||||
{ delay: 50 }
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// Anzahl Einheiten
|
// TODO: Ort - Dieser wird aus der Datenbank abgefragt, wir müssen also warten, bis der Dropdown da ist.
|
||||||
cy.get("input[name='einheiten']")
|
cy.get("[data-cy='plz-container']").find("button").first().click()
|
||||||
.should("have.attr", "type", "number")
|
|
||||||
.type(faker.number.int({ min: 1, max: 5 }).toString());
|
|
||||||
|
|
||||||
// Sanierungsstatus
|
// Flaeche
|
||||||
cy.get("select[name='saniert']").select(
|
cy.get("input[name='flaeche']")
|
||||||
Math.random() > 0.5 ? "true" : "false"
|
.should("have.attr", "type", "number")
|
||||||
);
|
.type(faker.number.int({ min: 50, max: 1000 }).toString());
|
||||||
|
|
||||||
// Adresse
|
// Nutzflaeche
|
||||||
cy.get("input[name='adresse']").type(faker.location.streetAddress());
|
cy.get("input[name='nutzflaeche']")
|
||||||
|
.should("have.attr", "type", "number")
|
||||||
|
.type(faker.number.int({ min: 50, max: 1000 }).toString());
|
||||||
|
|
||||||
// Postleitzahl
|
// Keller
|
||||||
cy.get("input[name='plz']").type(
|
cy.get("select[name='keller']").find("option:not([disabled])").should("have.length", (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length).parent().select(faker.number.int({
|
||||||
faker.location.zipCode({
|
max: (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length,
|
||||||
format: "#####",
|
min: 1
|
||||||
})
|
}));
|
||||||
);
|
|
||||||
|
|
||||||
// TODO: Ort - Dieser wird aus der Datenbank abgefragt, wir müssen also warten, bis der Dropdown da ist.
|
// Dachgeschoss
|
||||||
cy.get("[data-cy='plz-container']").find("button").first().click()
|
cy.get("select[name='dachgeschoss']").find("option:not([disabled])").should("have.length", (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length).parent().select(faker.number.int({
|
||||||
|
max: (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length,
|
||||||
|
min: 1
|
||||||
|
}));
|
||||||
|
|
||||||
// Flaeche
|
// Brennstoff und Einheit 1
|
||||||
cy.get("input[name='flaeche']")
|
const brennstoffKombo = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
|
||||||
.should("have.attr", "type", "number")
|
|
||||||
.type(faker.number.int({ min: 50, max: 1000 }).toString());
|
|
||||||
|
|
||||||
// Nutzflaeche
|
cy.get("select[name='brennstoff_1']").select(brennstoffKombo[0]);
|
||||||
cy.get("input[name='nutzflaeche']")
|
cy.get("select[name='einheit_1']").select(brennstoffKombo[1]);
|
||||||
.should("have.attr", "type", "number")
|
|
||||||
.type(faker.number.int({ min: 50, max: 1000 }).toString());
|
|
||||||
|
|
||||||
// Keller
|
let availableDates = [];
|
||||||
cy.get("select[name='keller']").find("option:not([disabled])").should("have.length", (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length).parent().select(faker.number.int({
|
const startDate = moment()
|
||||||
max: (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length,
|
.subtract(4, "years")
|
||||||
min: 1
|
.subtract(6, "months");
|
||||||
}));
|
const endDate = moment().subtract(3, "years");
|
||||||
|
|
||||||
// Dachgeschoss
|
for (let m = moment(startDate); m.isBefore(endDate); m.add(1, "month")) {
|
||||||
cy.get("select[name='dachgeschoss']").find("option:not([disabled])").should("have.length", (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length).parent().select(faker.number.int({
|
availableDates.push({
|
||||||
max: (["BEHEIZT", "NICHT_VORHANDEN", "UNBEHEIZT"] as Enums.Heizungsstatus[]).length,
|
year: m.year(),
|
||||||
min: 1
|
month: m.month(),
|
||||||
}));
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Brennstoff und Einheit 1
|
// Verbrauchszeitraum
|
||||||
const brennstoffKombo = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
|
cy.get("select[name='energieverbrauch_zeitraum_jahr']").select(availableDates[0].year.toString());
|
||||||
|
cy.get("select[name='energieverbrauch_zeitraum_monat']").select(availableDates[0].month.toString());
|
||||||
|
|
||||||
cy.get("select[name='brennstoff_1']").select(brennstoffKombo[0]);
|
|
||||||
cy.get("select[name='einheit_1']").select(brennstoffKombo[1]);
|
|
||||||
|
|
||||||
let availableDates = [];
|
|
||||||
const startDate = moment()
|
|
||||||
.subtract(4, "years")
|
|
||||||
.subtract(6, "months");
|
|
||||||
const endDate = moment().subtract(3, "years");
|
|
||||||
|
|
||||||
for (let m = moment(startDate); m.isBefore(endDate); m.add(1, "month")) {
|
|
||||||
availableDates.push({
|
|
||||||
year: m.year(),
|
|
||||||
month: m.month(),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Verbrauchszeitraum
|
|
||||||
cy.get("select[name='energieverbrauch_zeitraum_jahr']").select(availableDates[0].year.toString());
|
|
||||||
cy.get("select[name='energieverbrauch_zeitraum_monat']").select(availableDates[0].month.toString());
|
|
||||||
|
|
||||||
|
|
||||||
// Verbrauch
|
|
||||||
cy.get("input[name='verbrauch_1']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
|
||||||
cy.get("input[name='verbrauch_2']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
|
||||||
cy.get("input[name='verbrauch_3']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
|
||||||
|
|
||||||
|
|
||||||
const zusaetzlicheHeizquelle = Math.random() > 0.5;
|
|
||||||
|
|
||||||
if (zusaetzlicheHeizquelle) {
|
|
||||||
cy.get("[data-cy='zusaetzliche_heizquelle']").check();
|
|
||||||
|
|
||||||
// Brennstoff und Einheit 2
|
|
||||||
const brennstoffKombo2 = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
|
|
||||||
|
|
||||||
cy.get("[data-cy='brennstoff_2']").select(brennstoffKombo2[0], { force: true });
|
|
||||||
cy.get("[data-cy='einheit_2']").select(brennstoffKombo2[1], { force: true });
|
|
||||||
|
|
||||||
// Verbrauch
|
// Verbrauch
|
||||||
cy.get("input[name='verbrauch_4']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
cy.get("input[name='verbrauch_1']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
||||||
cy.get("input[name='verbrauch_5']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
cy.get("input[name='verbrauch_2']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
||||||
cy.get("input[name='verbrauch_6']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
cy.get("input[name='verbrauch_3']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
||||||
}
|
|
||||||
|
|
||||||
// Warmwasser enthalten und bekannt
|
|
||||||
const warmwasserEnthalten = Math.random() > 0.5;
|
|
||||||
const anteilBekannt = Math.random() > 0.5;
|
|
||||||
|
|
||||||
if (warmwasserEnthalten) {
|
const zusaetzlicheHeizquelle = Math.random() > 0.5;
|
||||||
cy.get("input[name='warmwasser_enthalten']").check();
|
|
||||||
|
|
||||||
if (anteilBekannt) {
|
if (zusaetzlicheHeizquelle) {
|
||||||
// Der Anteil ist bekannt, wir müssen ihn also angeben.
|
cy.get("[data-cy='zusaetzliche_heizquelle']").check();
|
||||||
cy.get("input[name='warmwasser_anteil_bekannt']").check();
|
|
||||||
|
|
||||||
cy.get("input[name='anteil_warmwasser_1']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
// Brennstoff und Einheit 2
|
||||||
|
const brennstoffKombo2 = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
|
||||||
|
|
||||||
if (zusaetzlicheHeizquelle) {
|
cy.get("[data-cy='brennstoff_2']").select(brennstoffKombo2[0], { force: true });
|
||||||
// Zusätzliche Heizquelle existiert, also müssen wir auch hier den Anteil angeben.
|
cy.get("[data-cy='einheit_2']").select(brennstoffKombo2[1], { force: true });
|
||||||
cy.get("input[name='anteil_warmwasser_2']").type(faker.number.int({ min: 0, max: 50 }).toString(), {force: true});
|
|
||||||
|
// Verbrauch
|
||||||
|
cy.get("input[name='verbrauch_4']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
||||||
|
cy.get("input[name='verbrauch_5']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
||||||
|
cy.get("input[name='verbrauch_6']").type(faker.number.int({ min: 4000, max: 15000 }).toString(), { force: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Warmwasser enthalten und bekannt
|
||||||
|
const warmwasserEnthalten = Math.random() > 0.5;
|
||||||
|
const anteilBekannt = Math.random() > 0.5;
|
||||||
|
|
||||||
|
if (warmwasserEnthalten) {
|
||||||
|
cy.get("input[name='warmwasser_enthalten']").check();
|
||||||
|
|
||||||
|
if (anteilBekannt) {
|
||||||
|
// Der Anteil ist bekannt, wir müssen ihn also angeben.
|
||||||
|
cy.get("input[name='warmwasser_anteil_bekannt']").check();
|
||||||
|
|
||||||
|
cy.get("input[name='anteil_warmwasser_1']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
||||||
|
|
||||||
|
if (zusaetzlicheHeizquelle) {
|
||||||
|
// Zusätzliche Heizquelle existiert, also müssen wir auch hier den Anteil angeben.
|
||||||
|
cy.get("input[name='anteil_warmwasser_2']").type(faker.number.int({ min: 0, max: 50 }).toString(), {force: true});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Alternative Energieversorgungssysteme
|
// Alternative Energieversorgungssysteme
|
||||||
if (Math.random() > 0.5) cy.get("input[name='alternative_heizung']").check();
|
if (Math.random() > 0.5) cy.get("input[name='alternative_heizung']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='alternative_warmwasser']").check();
|
if (Math.random() > 0.5) cy.get("input[name='alternative_warmwasser']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='alternative_lueftung']").check();
|
if (Math.random() > 0.5) cy.get("input[name='alternative_lueftung']").check();
|
||||||
if (Math.random() > 0.5) cy.get("input[name='alternative_kuehlung']").check();
|
if (Math.random() > 0.5) cy.get("input[name='alternative_kuehlung']").check();
|
||||||
|
|
||||||
// Gebäudetyp
|
// Gebäudetyp
|
||||||
cy.get("select[name='gebaeudetyp']").then(($dropdown) => {
|
cy.get("select[name='gebaeudetyp']").then(($dropdown) => {
|
||||||
const options = $dropdown.find('option');
|
const options = $dropdown.find('option');
|
||||||
// Select the option at the random index
|
// Select the option at the random index
|
||||||
cy.get("select[name='gebaeudetyp']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
cy.get("select[name='gebaeudetyp']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Gebäudeteil
|
||||||
|
cy.get("select[name='gebaeudeteil']").then(($dropdown) => {
|
||||||
|
const options = $dropdown.find('option');
|
||||||
|
// Select the option at the random index
|
||||||
|
cy.get("select[name='gebaeudeteil']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Lüftung
|
||||||
|
cy.get("select[name='lueftung']").then(($dropdown) => {
|
||||||
|
const options = $dropdown.find('option');
|
||||||
|
// Select the option at the random index
|
||||||
|
cy.get("select[name='lueftung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Kühlung
|
||||||
|
cy.get("select[name='kuehlung']").then(($dropdown) => {
|
||||||
|
const options = $dropdown.find('option');
|
||||||
|
// Select the option at the random index
|
||||||
|
cy.get("select[name='kuehlung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string, { force: true });
|
||||||
|
});
|
||||||
|
|
||||||
|
// Leerstand
|
||||||
|
cy.get("input[name='leerstand']").should("have.attr", "type", "number").type(faker.number.int({ min: 0, max: 30 }).toString());
|
||||||
|
|
||||||
|
// Heizungsanlage Daten
|
||||||
|
if (Math.random() > 0.5) cy.get("[data-cy='zentralheizung']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("[data-cy='einzelofen']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("[data-cy='durchlauf_erhitzer']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("[data-cy='standard_kessel']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("[data-cy='solarsystem_warmwasser']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("[data-cy='waermepumpe']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("[data-cy='niedertemperatur_kessel']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("[data-cy='brennwert_kessel']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("[data-cy='warmwasser_rohre_gedaemmt']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("[data-cy='heizungsrohre_gedaemmt']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("[data-cy='zirkulation']").check();
|
||||||
|
// if (Math.random() > 0.5) cy.get("[data-cy='raum_temperatur_regler']").check();
|
||||||
|
|
||||||
|
// Heizungsanlage Bilder
|
||||||
|
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/1.jpeg", { subjectType: "input" });
|
||||||
|
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/2.jpeg", { subjectType: "input" });
|
||||||
|
|
||||||
|
// Fenster Daten
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='einfach_verglasung']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='doppel_verglasung']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='isolier_verglasung']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='dreifach_verglasung']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='fenster_dicht']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='fenster_teilweise_undicht']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='tueren_dicht']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='tueren_undicht']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='rolllaeden_kaesten_gedaemmt']").check();
|
||||||
|
|
||||||
|
// Fenster Bilder
|
||||||
|
cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/1.jpeg", { subjectType: "input" });
|
||||||
|
cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/2.jpeg", { subjectType: "input" });
|
||||||
|
|
||||||
|
// Wärmedämmung Daten
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='aussenwand_gedaemmt']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='keller_wand_gedaemmt']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='keller_decke_gedaemmt']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='dachgeschoss_gedaemmt']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_gedaemmt']").check();
|
||||||
|
if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_min_12cm_gedaemmt']").check();
|
||||||
|
|
||||||
|
// Wärmedämmung Bilder
|
||||||
|
cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/1.jpeg", { subjectType: "input" });
|
||||||
|
cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
||||||
|
|
||||||
|
// Gebäude Bild
|
||||||
|
cy.get("input[name='gebaeude_image']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" });
|
||||||
|
|
||||||
|
// Jetzt können wir den Verbrauchsausweis erstellen.
|
||||||
|
cy.get("form[data-cy='ausweis'] button[data-cy='weiter']").click({ force: true });
|
||||||
|
|
||||||
|
cy.url().should("contain", "/kundendaten");
|
||||||
|
|
||||||
|
cy.get("input[name='telefon']").should("have.attr", "type", "text").type(telefon);
|
||||||
|
// Rechnung
|
||||||
|
if (preLogin) {
|
||||||
|
cy.get("input[name='rechnung_empfaenger']").should("have.attr", "type", "text").should("contain.value", `${vorname} ${nachname}`);
|
||||||
|
cy.get("input[name='vorname']").should("have.attr", "type", "text").should("contain.value", vorname);
|
||||||
|
cy.get("input[name='name']").should("have.attr", "type", "text").should("contain.value", nachname);
|
||||||
|
cy.get("input[name='rechnung_email']").should("have.attr", "type", "email").should("contain.value", email);
|
||||||
|
} else {
|
||||||
|
cy.get("input[name='rechnung_empfaenger']").should("have.attr", "type", "text").type(`${vorname} ${nachname}`);
|
||||||
|
cy.get("input[name='vorname']").should("have.attr", "type", "text").type(vorname);
|
||||||
|
cy.get("input[name='name']").should("have.attr", "type", "text").type(nachname);
|
||||||
|
cy.get("input[name='rechnung_email']").should("have.attr", "type", "email").type(email);
|
||||||
|
}
|
||||||
|
cy.get("input[name='rechnung_strasse']").should("have.attr", "type", "text").type(strasse);
|
||||||
|
cy.get("input[name='rechnung_plz']").should("have.attr", "type", "text").type(plz as string);
|
||||||
|
cy.get("[data-cy='plz-container']").children().first().click()
|
||||||
|
|
||||||
|
cy.get("[data-cy='paypal']").click()
|
||||||
|
|
||||||
|
cy.get("button[data-cy='bestellen']").click();
|
||||||
|
|
||||||
|
if (!preLogin) {
|
||||||
|
cy["form:signup"](email, passwort, vorname, nachname)
|
||||||
|
}
|
||||||
|
|
||||||
|
cy.origin('https://www.mollie.com', () => {
|
||||||
|
// Jetzt sind wir auf der Mollie Seite, dort wählen wir den "paid" status aus
|
||||||
|
cy.get("input[type='radio'][name='final_state'][value='paid']").check();
|
||||||
|
// Da wird unser Test fehlschlagen, da die localhost domain von Mollie aus nicht erreichbar ist.
|
||||||
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
// Gebäudeteil
|
|
||||||
cy.get("select[name='gebaeudeteil']").then(($dropdown) => {
|
|
||||||
const options = $dropdown.find('option');
|
|
||||||
// Select the option at the random index
|
|
||||||
cy.get("select[name='gebaeudeteil']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Lüftung
|
|
||||||
cy.get("select[name='lueftung']").then(($dropdown) => {
|
|
||||||
const options = $dropdown.find('option');
|
|
||||||
// Select the option at the random index
|
|
||||||
cy.get("select[name='lueftung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Kühlung
|
|
||||||
cy.get("select[name='kuehlung']").then(($dropdown) => {
|
|
||||||
const options = $dropdown.find('option');
|
|
||||||
// Select the option at the random index
|
|
||||||
cy.get("select[name='kuehlung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string, { force: true });
|
|
||||||
});
|
|
||||||
|
|
||||||
// Leerstand
|
|
||||||
cy.get("input[name='leerstand']").should("have.attr", "type", "number").type(faker.number.int({ min: 0, max: 30 }).toString());
|
|
||||||
|
|
||||||
// Heizungsanlage Daten
|
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='zentralheizung']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='einzelofen']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='durchlauf_erhitzer']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='standard_kessel']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='solarsystem_warmwasser']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='waermepumpe']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='niedertemperatur_kessel']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='brennwert_kessel']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='warmwasser_rohre_gedaemmt']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='heizungsrohre_gedaemmt']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("[data-cy='zirkulation']").check();
|
|
||||||
// if (Math.random() > 0.5) cy.get("[data-cy='raum_temperatur_regler']").check();
|
|
||||||
|
|
||||||
// Heizungsanlage Bilder
|
|
||||||
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/1.jpeg", { subjectType: "input" });
|
|
||||||
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/2.jpeg", { subjectType: "input" });
|
|
||||||
|
|
||||||
// Fenster Daten
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='einfach_verglasung']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='doppel_verglasung']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='isolier_verglasung']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='dreifach_verglasung']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='fenster_dicht']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='fenster_teilweise_undicht']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='tueren_dicht']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='tueren_undicht']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='rolllaeden_kaesten_gedaemmt']").check();
|
|
||||||
|
|
||||||
// Fenster Bilder
|
|
||||||
cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/1.jpeg", { subjectType: "input" });
|
|
||||||
cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/2.jpeg", { subjectType: "input" });
|
|
||||||
|
|
||||||
// Wärmedämmung Daten
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='aussenwand_gedaemmt']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='keller_wand_gedaemmt']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='keller_decke_gedaemmt']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='dachgeschoss_gedaemmt']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_gedaemmt']").check();
|
|
||||||
if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_min_12cm_gedaemmt']").check();
|
|
||||||
|
|
||||||
// Wärmedämmung Bilder
|
|
||||||
cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/1.jpeg", { subjectType: "input" });
|
|
||||||
cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
|
||||||
|
|
||||||
// Gebäude Bild
|
|
||||||
cy.get("input[name='gebaeude_image']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" });
|
|
||||||
|
|
||||||
// Jetzt können wir den Verbrauchsausweis erstellen.
|
|
||||||
cy.get("form[data-cy='ausweis'] button[data-cy='weiter']").click({ force: true });
|
|
||||||
|
|
||||||
cy.url().should("contain", "/kundendaten");
|
|
||||||
|
|
||||||
cy.get("input[name='telefon']").should("have.attr", "type", "text").type(telefon);
|
|
||||||
// Rechnung
|
|
||||||
if (preLogin) {
|
|
||||||
cy.get("input[name='rechnung_empfaenger']").should("have.attr", "type", "text").should("contain.value", `${vorname} ${nachname}`);
|
|
||||||
cy.get("input[name='vorname']").should("have.attr", "type", "text").should("contain.value", vorname);
|
|
||||||
cy.get("input[name='name']").should("have.attr", "type", "text").should("contain.value", nachname);
|
|
||||||
cy.get("input[name='rechnung_email']").should("have.attr", "type", "email").should("contain.value", email);
|
|
||||||
} else {
|
|
||||||
cy.get("input[name='rechnung_empfaenger']").should("have.attr", "type", "text").type(`${vorname} ${nachname}`);
|
|
||||||
cy.get("input[name='vorname']").should("have.attr", "type", "text").type(vorname);
|
|
||||||
cy.get("input[name='name']").should("have.attr", "type", "text").type(nachname);
|
|
||||||
cy.get("input[name='rechnung_email']").should("have.attr", "type", "email").type(email);
|
|
||||||
}
|
|
||||||
cy.get("input[name='rechnung_strasse']").should("have.attr", "type", "text").type(strasse);
|
|
||||||
cy.get("input[name='rechnung_plz']").should("have.attr", "type", "text").type(plz);
|
|
||||||
cy.get("[data-cy='plz-container']").children().first().click()
|
|
||||||
|
|
||||||
cy.get("[data-cy='paypal']").click()
|
|
||||||
|
|
||||||
cy.get("button[data-cy='bestellen']").click();
|
|
||||||
|
|
||||||
if (!preLogin) {
|
|
||||||
cy.get("a[data-cy='registrieren']").should("be.visible").click();
|
|
||||||
|
|
||||||
// Wir sind jetzt registriert und können uns nun einloggen.
|
|
||||||
// Die Email sollte automatisch eingetragen sein, da wir uns gerade registriert haben.
|
|
||||||
cy.get("form[name='signup'] input[name='vorname']").should("be.visible").should("have.attr", "type", "text").type(vorname);
|
|
||||||
cy.get("form[name='signup'] input[name='nachname']").should("be.visible").should("have.attr", "type", "text").type(nachname);
|
|
||||||
cy.get("form[name='signup'] input[name='email']").should("be.visible").should("have.attr", "type", "email").should("contain.value", email);
|
|
||||||
cy.get("form[name='signup'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort);
|
|
||||||
|
|
||||||
cy.intercept({ method: "PUT", url: "**/api/user" }).as("signup")
|
|
||||||
cy.get("form[name='signup'] button[type='submit']").click();
|
|
||||||
cy.wait("@signup")
|
|
||||||
cy.get("form[name='login'] button[type='submit']").click();
|
|
||||||
}
|
|
||||||
|
|
||||||
cy.origin('https://www.mollie.com', () => {
|
|
||||||
// Jetzt sind wir auf der Mollie Seite, dort wählen wir den "paid" status aus
|
|
||||||
cy.get("input[type='radio'][name='final_state'][value='paid']").check();
|
|
||||||
// Da wird unser Test fehlschlagen, da die localhost domain von Mollie aus nicht erreichbar ist.
|
|
||||||
})
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -30,11 +30,28 @@ Cypress.Commands.add("signup", (email, passwort, vorname, name) => {
|
|||||||
cy.url().should("include", "/auth/login")
|
cy.url().should("include", "/auth/login")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Cypress.Commands.add("form:signup", (email, passwort, vorname, name) => {
|
||||||
|
cy.get("a[data-cy='registrieren']").should("be.visible").click();
|
||||||
|
|
||||||
|
// Wir sind jetzt registriert und können uns nun einloggen.
|
||||||
|
// Die Email sollte automatisch eingetragen sein, da wir uns gerade registriert haben.
|
||||||
|
cy.get("form[name='signup'] input[name='vorname']").should("be.visible").should("have.attr", "type", "text").type(vorname);
|
||||||
|
cy.get("form[name='signup'] input[name='nachname']").should("be.visible").should("have.attr", "type", "text").type(name);
|
||||||
|
cy.get("form[name='signup'] input[name='email']").should("be.visible").should("have.attr", "type", "email").should("contain.value", email);
|
||||||
|
cy.get("form[name='signup'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort);
|
||||||
|
|
||||||
|
cy.intercept({ method: "PUT", url: "**/api/user" }).as("signup")
|
||||||
|
cy.get("form[name='signup'] button[type='submit']").click();
|
||||||
|
cy.wait("@signup")
|
||||||
|
cy.get("form[name='login'] button[type='submit']").click();
|
||||||
|
})
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
namespace Cypress {
|
namespace Cypress {
|
||||||
interface Chainable {
|
interface Chainable {
|
||||||
login(email: string, passwort: string): Chainable<void>
|
login(email: string, passwort: string): Chainable<void>
|
||||||
signup(email: string, passwort: string, vorname: string, name: string): Chainable<void>
|
signup(email: string, passwort: string, vorname: string, name: string): Chainable<void>
|
||||||
|
"form:signup"(email: string, passwort: string, vorname: string, name: string): Chainable<void>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausweisart, Heizungsstatus, Heizungsstatus, Lueftungskonzept } from "@prisma/client"
|
import { Heizungsstatus, Heizungsstatus, Lueftungskonzept } from "@prisma/client"
|
||||||
|
|
||||||
export const AufnahmeSchema = z.object({
|
export const AufnahmeSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
benutzer_id: z.string().nullish(),
|
benutzer_id: z.string().nullish(),
|
||||||
ausweisart: z.nativeEnum(Ausweisart).describe("Art des korrespondierenden Ausweises, wie z.B. VerbrauchsausweisWohnen").nullish(),
|
|
||||||
gebaeudetyp: z.string().describe("Art des Gebäudes und seiner primären Nutzungsart").nullish(),
|
gebaeudetyp: z.string().describe("Art des Gebäudes und seiner primären Nutzungsart").nullish(),
|
||||||
gebaeudeteil: z.string().describe("Betrachteter Teil des Gebäudes, z.B. Gesamtgebäude, Wohnteil, Gewerbeteil").nullish(),
|
gebaeudeteil: z.string().describe("Betrachteter Teil des Gebäudes, z.B. Gesamtgebäude, Wohnteil, Gewerbeteil").nullish(),
|
||||||
baujahr_gebaeude: z.number().int().array().describe("Alle Jahre in denen das Gebäude konstruiert oder grundlegend verändert wurde"),
|
baujahr_gebaeude: z.number().int().array().describe("Alle Jahre in denen das Gebäude konstruiert oder grundlegend verändert wurde"),
|
||||||
@@ -23,12 +22,7 @@ export const AufnahmeSchema = z.object({
|
|||||||
alternative_warmwasser: z.boolean().describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen").nullish(),
|
alternative_warmwasser: z.boolean().describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen").nullish(),
|
||||||
alternative_lueftung: z.boolean().describe("Falls die Lüftung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen").nullish(),
|
alternative_lueftung: z.boolean().describe("Falls die Lüftung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen").nullish(),
|
||||||
alternative_kuehlung: z.boolean().describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen").nullish(),
|
alternative_kuehlung: z.boolean().describe("Falls die Kühlung alternative Energieversorgungssysteme beinhaltet sollte dieser Wert auf true stehen").nullish(),
|
||||||
brennstoff_1: z.string().describe("Genutzer Brennstoff der primären Energiequelle").nullish(),
|
erstellungsdatum: z.date().describe("Datum an dem der Kunde die Aufnahme erstellt hat").nullish(),
|
||||||
brennstoff_2: z.string().describe("Genutzer Brennstoff der sekundären Energiequelle").nullish(),
|
|
||||||
boxpruefung: z.boolean().nullish(),
|
|
||||||
energieeffizienzklasse: z.string().describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes").nullish(),
|
|
||||||
erstellungsdatum: z.date().describe("Datum an dem der Kunde den Ausweis erstellt hat").nullish(),
|
|
||||||
ausstellungsdatum: z.date().describe("Datum an dem der Aussteller den Ausweis ausgestellt hat").nullish(),
|
|
||||||
zentralheizung: z.boolean().describe("Falls das Gebäude über eine Zentralbeheizung verfügt, sollte dieser Wert auf true stehen").nullish(),
|
zentralheizung: z.boolean().describe("Falls das Gebäude über eine Zentralbeheizung verfügt, sollte dieser Wert auf true stehen").nullish(),
|
||||||
solarsystem_warmwasser: z.boolean().describe("Falls das Gebäude über ein Solarsystem für Warmwasser verfügt, sollte dieser Wert auf true stehen").nullish(),
|
solarsystem_warmwasser: z.boolean().describe("Falls das Gebäude über ein Solarsystem für Warmwasser verfügt, sollte dieser Wert auf true stehen").nullish(),
|
||||||
warmwasser_rohre_gedaemmt: z.boolean().describe("Falls die Warmwasserrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen").nullish(),
|
warmwasser_rohre_gedaemmt: z.boolean().describe("Falls die Warmwasserrohre des Gebäudes gedämmt sind, sollte dieser Wert auf true stehen").nullish(),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
||||||
|
|
||||||
export const BedarfsausweisGewerbeSchema = z.object({
|
export const BedarfsausweisGewerbeSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
@@ -19,6 +19,9 @@ export const BedarfsausweisGewerbeSchema = z.object({
|
|||||||
fussbodenheizung: z.boolean().nullish(),
|
fussbodenheizung: z.boolean().nullish(),
|
||||||
bauteilaktivierung: z.boolean().nullish(),
|
bauteilaktivierung: z.boolean().nullish(),
|
||||||
klimatisierung: z.boolean().nullish(),
|
klimatisierung: z.boolean().nullish(),
|
||||||
|
nachweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
created_at: z.date(),
|
||||||
|
updated_at: z.date(),
|
||||||
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
||||||
aufnahme_id: z.string(),
|
aufnahme_id: z.string(),
|
||||||
rechnung_id: z.string().nullish(),
|
rechnung_id: z.string().nullish(),
|
||||||
|
|||||||
@@ -11,6 +11,9 @@ export const BedarfsausweisWohnenSchema = z.object({
|
|||||||
alternative_warmwasser: z.boolean().nullish(),
|
alternative_warmwasser: z.boolean().nullish(),
|
||||||
alternative_lueftung: z.boolean().nullish(),
|
alternative_lueftung: z.boolean().nullish(),
|
||||||
alternative_kuehlung: z.boolean().nullish(),
|
alternative_kuehlung: z.boolean().nullish(),
|
||||||
|
energieeffizienzklasse: z.string().describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes").nullish(),
|
||||||
|
ausstellungsdatum: z.date().describe("Datum an dem der Aussteller den Ausweis ausgestellt hat").nullish(),
|
||||||
|
boxpruefung: z.boolean().nullish(),
|
||||||
anzahl_vollgeschosse: z.number().int().nullish(),
|
anzahl_vollgeschosse: z.number().int().nullish(),
|
||||||
geschosshoehe: z.number().nullish(),
|
geschosshoehe: z.number().nullish(),
|
||||||
anzahl_gauben: z.number().int().nullish(),
|
anzahl_gauben: z.number().int().nullish(),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
||||||
|
|
||||||
export const GEGNachweisGewerbeSchema = z.object({
|
export const GEGNachweisGewerbeSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
@@ -9,6 +9,9 @@ export const GEGNachweisGewerbeSchema = z.object({
|
|||||||
bestellt: z.boolean().describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
bestellt: z.boolean().describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
zurueckgestellt: z.boolean().describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
zurueckgestellt: z.boolean().describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
beschreibung: z.string().describe("Beschreibung des Bauvorhabens").nullish(),
|
beschreibung: z.string().describe("Beschreibung des Bauvorhabens").nullish(),
|
||||||
|
nachweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
created_at: z.date(),
|
||||||
|
updated_at: z.date(),
|
||||||
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
||||||
aufnahme_id: z.string(),
|
aufnahme_id: z.string(),
|
||||||
rechnung_id: z.string().nullish(),
|
rechnung_id: z.string().nullish(),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import * as z from "zod"
|
import * as z from "zod"
|
||||||
import { Ausstellgrund } from "@prisma/client"
|
import { Ausstellgrund, AusweisTyp } from "@prisma/client"
|
||||||
|
|
||||||
export const GEGNachweisWohnenSchema = z.object({
|
export const GEGNachweisWohnenSchema = z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
@@ -9,6 +9,9 @@ export const GEGNachweisWohnenSchema = z.object({
|
|||||||
bestellt: z.boolean().describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
bestellt: z.boolean().describe("Falls der Nachweis bestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
zurueckgestellt: z.boolean().describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
zurueckgestellt: z.boolean().describe("Falls der Nachweis vom Aussteller zurückgestellt wurde, sollte dieser Wert auf true stehen").nullish(),
|
||||||
beschreibung: z.string().describe("Beschreibung des Bauvorhabens").nullish(),
|
beschreibung: z.string().describe("Beschreibung des Bauvorhabens").nullish(),
|
||||||
|
nachweistyp: z.nativeEnum(AusweisTyp),
|
||||||
|
created_at: z.date(),
|
||||||
|
updated_at: z.date(),
|
||||||
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
benutzer_id: z.string().describe("Die ID des Benutzers, welchem dieser Ausweis gehört").nullish(),
|
||||||
aufnahme_id: z.string(),
|
aufnahme_id: z.string(),
|
||||||
rechnung_id: z.string().nullish(),
|
rechnung_id: z.string().nullish(),
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
export * from "./anteilshaber.js"
|
export * from "./anteilshaber"
|
||||||
export * from "./apirequests.js"
|
export * from "./apirequests"
|
||||||
export * from "./aufnahme.js"
|
export * from "./aufnahme"
|
||||||
export * from "./bedarfsausweisgewerbe.js"
|
export * from "./bedarfsausweisgewerbe"
|
||||||
export * from "./bedarfsausweiswohnen.js"
|
export * from "./bedarfsausweiswohnen"
|
||||||
export * from "./benutzer.js"
|
export * from "./benutzer"
|
||||||
export * from "./bild.js"
|
export * from "./bild"
|
||||||
export * from "./event.js"
|
export * from "./event"
|
||||||
export * from "./gegeinpreisung.js"
|
export * from "./gegeinpreisung"
|
||||||
export * from "./gegnachweisgewerbe.js"
|
export * from "./gegnachweisgewerbe"
|
||||||
export * from "./gegnachweiswohnen.js"
|
export * from "./gegnachweiswohnen"
|
||||||
export * from "./klimafaktoren.js"
|
export * from "./klimafaktoren"
|
||||||
export * from "./objekt.js"
|
export * from "./objekt"
|
||||||
export * from "./postleitzahlen.js"
|
export * from "./postleitzahlen"
|
||||||
export * from "./rechnung.js"
|
export * from "./rechnung"
|
||||||
export * from "./refreshtokens.js"
|
export * from "./refreshtokens"
|
||||||
export * from "./tickets.js"
|
export * from "./tickets"
|
||||||
export * from "./unterlage.js"
|
export * from "./unterlage"
|
||||||
export * from "./verbrauchsausweisgewerbe.js"
|
export * from "./verbrauchsausweisgewerbe"
|
||||||
export * from "./verbrauchsausweiswohnen.js"
|
export * from "./verbrauchsausweiswohnen"
|
||||||
export * from "./documenttemplates.js"
|
export * from "./documenttemplates"
|
||||||
export * from "./documenttypes.js"
|
export * from "./documenttypes"
|
||||||
export * from "./tokens.js"
|
export * from "./tokens"
|
||||||
|
|||||||
@@ -7,9 +7,7 @@ export const VerbrauchsausweisGewerbeSchema = z.object({
|
|||||||
ausstellgrund: z.nativeEnum(Ausstellgrund).nullish(),
|
ausstellgrund: z.nativeEnum(Ausstellgrund).nullish(),
|
||||||
registriernummer: z.string().nullish(),
|
registriernummer: z.string().nullish(),
|
||||||
zusaetzliche_heizquelle: z.boolean().nullish(),
|
zusaetzliche_heizquelle: z.boolean().nullish(),
|
||||||
brennstoff_1: z.string().nullish(),
|
|
||||||
einheit_1: z.string().nullish(),
|
einheit_1: z.string().nullish(),
|
||||||
brennstoff_2: z.string().nullish(),
|
|
||||||
einheit_2: z.string().nullish(),
|
einheit_2: z.string().nullish(),
|
||||||
startdatum: z.date().nullish(),
|
startdatum: z.date().nullish(),
|
||||||
verbrauch_1: z.number().int().nullish(),
|
verbrauch_1: z.number().int().nullish(),
|
||||||
@@ -18,6 +16,11 @@ export const VerbrauchsausweisGewerbeSchema = z.object({
|
|||||||
verbrauch_4: z.number().int().nullish(),
|
verbrauch_4: z.number().int().nullish(),
|
||||||
verbrauch_5: z.number().int().nullish(),
|
verbrauch_5: z.number().int().nullish(),
|
||||||
verbrauch_6: z.number().int().nullish(),
|
verbrauch_6: z.number().int().nullish(),
|
||||||
|
brennstoff_1: z.string().describe("Genutzer Brennstoff der primären Energiequelle").nullish(),
|
||||||
|
brennstoff_2: z.string().describe("Genutzer Brennstoff der sekundären Energiequelle").nullish(),
|
||||||
|
energieeffizienzklasse: z.string().describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes").nullish(),
|
||||||
|
ausstellungsdatum: z.date().describe("Datum an dem der Aussteller den Ausweis ausgestellt hat").nullish(),
|
||||||
|
boxpruefung: z.boolean().nullish(),
|
||||||
strom_1: z.number().int().nullish(),
|
strom_1: z.number().int().nullish(),
|
||||||
strom_2: z.number().int().nullish(),
|
strom_2: z.number().int().nullish(),
|
||||||
strom_3: z.number().int().nullish(),
|
strom_3: z.number().int().nullish(),
|
||||||
|
|||||||
@@ -9,6 +9,11 @@ export const VerbrauchsausweisWohnenSchema = z.object({
|
|||||||
zusaetzliche_heizquelle: z.boolean().describe("Falls eine sekundäre Heizquelle existiert, sollte dieser Wert auf true stehen").nullish(),
|
zusaetzliche_heizquelle: z.boolean().describe("Falls eine sekundäre Heizquelle existiert, sollte dieser Wert auf true stehen").nullish(),
|
||||||
einheit_1: z.string().describe("Einheit des Energieträgers der primären Heizquelle").nullish(),
|
einheit_1: z.string().describe("Einheit des Energieträgers der primären Heizquelle").nullish(),
|
||||||
einheit_2: z.string().describe("Einheit des Energieträgers der sekundären Heizquelle").nullish(),
|
einheit_2: z.string().describe("Einheit des Energieträgers der sekundären Heizquelle").nullish(),
|
||||||
|
brennstoff_1: z.string().describe("Genutzer Brennstoff der primären Energiequelle").nullish(),
|
||||||
|
brennstoff_2: z.string().describe("Genutzer Brennstoff der sekundären Energiequelle").nullish(),
|
||||||
|
energieeffizienzklasse: z.string().describe("Die aus der Berechnung hervorgehende Energieeffizienzklasse des Gebäudes").nullish(),
|
||||||
|
ausstellungsdatum: z.date().describe("Datum an dem der Aussteller den Ausweis ausgestellt hat").nullish(),
|
||||||
|
boxpruefung: z.boolean().nullish(),
|
||||||
startdatum: z.date().nullish(),
|
startdatum: z.date().nullish(),
|
||||||
verbrauch_1: z.number().int().describe("Energieverbrauch der primären Heizquelle im ersten der drei Verbrauchsjahre").nullish(),
|
verbrauch_1: z.number().int().describe("Energieverbrauch der primären Heizquelle im ersten der drei Verbrauchsjahre").nullish(),
|
||||||
verbrauch_2: z.number().int().describe("Energieverbrauch der primären Heizquelle im zweiten der drei Verbrauchsjahre").nullish(),
|
verbrauch_2: z.number().int().describe("Energieverbrauch der primären Heizquelle im zweiten der drei Verbrauchsjahre").nullish(),
|
||||||
@@ -18,7 +23,6 @@ export const VerbrauchsausweisWohnenSchema = z.object({
|
|||||||
verbrauch_6: z.number().int().describe("Energieverbrauch der sekund̈́ären Heizquelle im letzten der drei Verbrauchsjahre").nullish(),
|
verbrauch_6: z.number().int().describe("Energieverbrauch der sekund̈́ären Heizquelle im letzten der drei Verbrauchsjahre").nullish(),
|
||||||
warmwasser_enthalten: z.boolean().describe("Falls Warmwasser im Verbrauchswert enthalten ist, sollte dieser Wert auf true stehen").nullish(),
|
warmwasser_enthalten: z.boolean().describe("Falls Warmwasser im Verbrauchswert enthalten ist, sollte dieser Wert auf true stehen").nullish(),
|
||||||
warmwasser_anteil_bekannt: z.boolean().describe("Falls der Warmwasser Anteil am Verbrauch bekannt ist, sollte dieser Wert auf true stehen").nullish(),
|
warmwasser_anteil_bekannt: z.boolean().describe("Falls der Warmwasser Anteil am Verbrauch bekannt ist, sollte dieser Wert auf true stehen").nullish(),
|
||||||
keller_beheizt: z.boolean().describe("Falls der Keller des Gebäudes beheizt wird, sollte dieser Wert auf true stehen").nullish(),
|
|
||||||
faktorKeller: z.number().describe("Der Faktor mit dem die Wohnfläche erhöht wird wenn die beheizte Gesamtfläche (energetische Nutzfläche) unbekannt ist.").nullish(),
|
faktorKeller: z.number().describe("Der Faktor mit dem die Wohnfläche erhöht wird wenn die beheizte Gesamtfläche (energetische Nutzfläche) unbekannt ist.").nullish(),
|
||||||
alternative_heizung: z.boolean().describe("Falls der Heizungsverbrauch alternative Energieversorgungssysteme beinhaltet, sollte dieser Wert auf true stehen.").nullish(),
|
alternative_heizung: z.boolean().describe("Falls der Heizungsverbrauch alternative Energieversorgungssysteme beinhaltet, sollte dieser Wert auf true stehen.").nullish(),
|
||||||
alternative_warmwasser: z.boolean().describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme (z.B. Solarsystem, Wärmepumpe, etc.) beinhaltet, sollte dieser Wert auf true stehen.").nullish(),
|
alternative_warmwasser: z.boolean().describe("Falls der Warmwasserverbrauch alternative Energieversorgungssysteme (z.B. Solarsystem, Wärmepumpe, etc.) beinhaltet, sollte dieser Wert auf true stehen.").nullish(),
|
||||||
|
|||||||
@@ -99,13 +99,13 @@ export async function endEnergieVerbrauchVerbrauchsausweisGewerbe_2016(ausweis:
|
|||||||
// Endenergieverbrauch
|
// Endenergieverbrauch
|
||||||
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
|
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
|
||||||
let brennstoff_1 = { coe: 0, energietraeger: "", einheit: "", umrechnungsfaktor: 0, primaerenergiefaktor: 0 }, brennstoff_2 = { coe: 0, energietraeger: "", einheit: "", umrechnungsfaktor: 0, primaerenergiefaktor: 0 };
|
let brennstoff_1 = { coe: 0, energietraeger: "", einheit: "", umrechnungsfaktor: 0, primaerenergiefaktor: 0 }, brennstoff_2 = { coe: 0, energietraeger: "", einheit: "", umrechnungsfaktor: 0, primaerenergiefaktor: 0 };
|
||||||
if (aufnahme.brennstoff_1 && ausweis.einheit_1) {
|
if (ausweis.brennstoff_1 && ausweis.einheit_1) {
|
||||||
brennstoff_1 = getHeizwertfaktor(aufnahme.brennstoff_1, ausweis.einheit_1);
|
brennstoff_1 = getHeizwertfaktor(ausweis.brennstoff_1, ausweis.einheit_1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (aufnahme.brennstoff_2 && ausweis.einheit_2) {
|
if (ausweis.brennstoff_2 && ausweis.einheit_2) {
|
||||||
brennstoff_2 = getHeizwertfaktor(aufnahme.brennstoff_2, ausweis.einheit_2);
|
brennstoff_2 = getHeizwertfaktor(ausweis.brennstoff_2, ausweis.einheit_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
let energieVerbrauchGesamt_1 = ((ausweis.verbrauch_1 || 0) + (ausweis.verbrauch_2 || 0) + (ausweis.verbrauch_3 || 0)) * brennstoff_1?.umrechnungsfaktor;
|
let energieVerbrauchGesamt_1 = ((ausweis.verbrauch_1 || 0) + (ausweis.verbrauch_2 || 0) + (ausweis.verbrauch_3 || 0)) * brennstoff_1?.umrechnungsfaktor;
|
||||||
|
|||||||
@@ -64,11 +64,11 @@ export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
|||||||
// Endenergieverbrauch
|
// Endenergieverbrauch
|
||||||
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
|
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
|
||||||
let brennstoff_1 = getHeizwertfaktor(
|
let brennstoff_1 = getHeizwertfaktor(
|
||||||
aufnahme.brennstoff_1 as string,
|
ausweis.brennstoff_1 as string,
|
||||||
ausweis.einheit_1 as string
|
ausweis.einheit_1 as string
|
||||||
);
|
);
|
||||||
let brennstoff_2 = getHeizwertfaktor(
|
let brennstoff_2 = getHeizwertfaktor(
|
||||||
aufnahme.brennstoff_2 as string,
|
ausweis.brennstoff_2 as string,
|
||||||
ausweis.einheit_2 as string
|
ausweis.einheit_2 as string
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
|
|
||||||
import { Ausweis } from "./Ausweis/Ausweis";
|
|
||||||
import { Dachgeschoss, Lueftungskonzept } from "./Ausweis/types";
|
|
||||||
import { BitChecker } from "./BitChecker";
|
|
||||||
|
|
||||||
export class Gebaeude {
|
|
||||||
public typ: string = "";
|
|
||||||
public plz: string = "";
|
|
||||||
public ort: string = "";
|
|
||||||
public strasse: string = "";
|
|
||||||
public gebaeudeteil: string = "";
|
|
||||||
public saniert: boolean = false;
|
|
||||||
public baujahr: number[] = [];
|
|
||||||
public einheiten: number = 0;
|
|
||||||
public wohnflaeche: number = 0;
|
|
||||||
public nutzflaeche: number = 0;
|
|
||||||
public keller_beheizt: boolean = false;
|
|
||||||
public dachgeschoss_beheizt: Dachgeschoss = Dachgeschoss.UNBEHEIZT;
|
|
||||||
public lueftungskonzept: Lueftungskonzept = "Fensterlüftung";
|
|
||||||
public wird_gekuehlt: boolean = false;
|
|
||||||
public leerstand: number = 0;
|
|
||||||
public versorgungssysteme: boolean[] = BitChecker(0);
|
|
||||||
public fenster_dach: boolean[] = BitChecker(0);
|
|
||||||
public energiequelle_2_nutzung: boolean[] = BitChecker(0);
|
|
||||||
public daemmung: boolean[] = BitChecker(0);
|
|
||||||
|
|
||||||
public ausweis: Ausweis;
|
|
||||||
|
|
||||||
public uid?: string;
|
|
||||||
|
|
||||||
public constructor(initializer?: Gebaeude) {
|
|
||||||
if (initializer) {
|
|
||||||
this.typ = initializer.typ;
|
|
||||||
this.plz = initializer.plz;
|
|
||||||
this.ort = initializer.ort;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import { AufnahmeClient, BedarfsausweisWohnenClient, ObjektClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
import { AufnahmeClient, ObjektClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
||||||
import { Enums } from "#lib/client/prisma";
|
import { Enums } from "#lib/client/prisma.js";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
|
||||||
export function getEmpfehlungen(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient): {
|
export function getEmpfehlungen(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient, aufnahme: AufnahmeClient, objekt: ObjektClient): {
|
||||||
title: string,
|
title: string,
|
||||||
description: string,
|
description: string,
|
||||||
anlagenteil: string,
|
anlagenteil: string,
|
||||||
@@ -19,7 +19,6 @@ export function getEmpfehlungen(ausweis: VerbrauchsausweisWohnenClient | Verbrau
|
|||||||
let baujahr_anlagesanlage = aufnahme.baujahr_heizung && aufnahme.baujahr_heizung[0];
|
let baujahr_anlagesanlage = aufnahme.baujahr_heizung && aufnahme.baujahr_heizung[0];
|
||||||
let Zentralheizung = aufnahme.zentralheizung;
|
let Zentralheizung = aufnahme.zentralheizung;
|
||||||
let photovoltaik = aufnahme.photovoltaik;
|
let photovoltaik = aufnahme.photovoltaik;
|
||||||
let Brennstoff = aufnahme.brennstoff_1;
|
|
||||||
let Aussenwand_gedaemmt = aufnahme.aussenwand_gedaemmt;
|
let Aussenwand_gedaemmt = aufnahme.aussenwand_gedaemmt;
|
||||||
let Dachgeschoss = aufnahme.dachgeschoss;
|
let Dachgeschoss = aufnahme.dachgeschoss;
|
||||||
let Dachgeschoss_gedaemmt = aufnahme.dachgeschoss_gedaemmt;
|
let Dachgeschoss_gedaemmt = aufnahme.dachgeschoss_gedaemmt;
|
||||||
@@ -70,7 +69,7 @@ export function getEmpfehlungen(ausweis: VerbrauchsausweisWohnenClient | Verbrau
|
|||||||
|
|
||||||
let Relanlagenjahr = moment().year() - 35;
|
let Relanlagenjahr = moment().year() - 35;
|
||||||
|
|
||||||
if ((!Brennwertkessel && !Waermepumpe) && baujahr_anlagesanlage <= Relanlagenjahr && Brennstoff != 'Fernwärme' && Brennstoff != 'Strommix') {
|
if ((!Brennwertkessel && !Waermepumpe) && baujahr_anlagesanlage <= Relanlagenjahr && ausweis.brennstoff_1 != 'Fernwärme' && ausweis.brennstoff_1 != 'Strommix') {
|
||||||
empfehlungen.push({
|
empfehlungen.push({
|
||||||
"title" : "Anlagentechnik",
|
"title" : "Anlagentechnik",
|
||||||
"description" : "Prüfen Sie, ob Sie bei einer Umrüstung auf einen regenerativen Anteil von 65% kommen. Bei energetisch sanierten Gebäuden z.B. Wärmepumpe. Bei unsanieten Gebäuden Fernwärmeanschluss.",
|
"description" : "Prüfen Sie, ob Sie bei einer Umrüstung auf einen regenerativen Anteil von 65% kommen. Bei energetisch sanierten Gebäuden z.B. Wärmepumpe. Bei unsanieten Gebäuden Fernwärmeanschluss.",
|
||||||
@@ -126,7 +125,7 @@ export function getEmpfehlungen(ausweis: VerbrauchsausweisWohnenClient | Verbrau
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((baujahr_anlagesanlage <= (moment().year() - 30)) && (Brennstoff == "Heizöl" || Brennstoff == "Erdgas") && !Waermepumpe) {
|
if ((baujahr_anlagesanlage <= (moment().year() - 30)) && (ausweis.brennstoff_1 == "Heizöl" || ausweis.brennstoff_1 == "Erdgas") && !Waermepumpe) {
|
||||||
// Wärmepumpe
|
// Wärmepumpe
|
||||||
empfehlungen.push({
|
empfehlungen.push({
|
||||||
"title" : "Wärmeerzeuger",
|
"title" : "Wärmeerzeuger",
|
||||||
@@ -137,7 +136,7 @@ export function getEmpfehlungen(ausweis: VerbrauchsausweisWohnenClient | Verbrau
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!photovoltaik && Brennstoff == "Strommix") {
|
if (!photovoltaik && ausweis.brennstoff_1 == "Strommix") {
|
||||||
// Wärmepumpe
|
// Wärmepumpe
|
||||||
empfehlungen.push({
|
empfehlungen.push({
|
||||||
"title" : "Wärmeerzeuger",
|
"title" : "Wärmeerzeuger",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
import { VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
||||||
import { faker } from "@faker-js/faker";
|
import { faker } from "@faker-js/faker";
|
||||||
import { Enums } from "#lib/client/prisma.js";
|
import { Aufnahme, Enums, VerbrauchsausweisWohnen } from "#lib/client/prisma.js";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
|
||||||
export async function importVerbrauchsausweisWohnenAltesSystem(count: number = 5) {
|
export async function importVerbrauchsausweisWohnenAltesSystem(count: number = 5) {
|
||||||
@@ -19,7 +19,7 @@ export async function importVerbrauchsausweisWohnenAltesSystem(count: number = 5
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function verbrauchsausweisWohnenImportTranslate(ausweis: Record<string, any>) {
|
export function verbrauchsausweisWohnenImportTranslate(ausweis: Record<string, any>) {
|
||||||
const ausweisTranslated: VerbrauchsausweisWohnenClient = {
|
const ausweisTranslated: VerbrauchsausweisWohnen & { aufnahme: Aufnahme } = {
|
||||||
aufnahme: {
|
aufnahme: {
|
||||||
rechnungen: null,
|
rechnungen: null,
|
||||||
baujahr_gebaeude: [ausweis.baujahr_gebaeude],
|
baujahr_gebaeude: [ausweis.baujahr_gebaeude],
|
||||||
@@ -58,7 +58,6 @@ export function verbrauchsausweisWohnenImportTranslate(ausweis: Record<string, a
|
|||||||
aussenwand_gedaemmt: ausweis.aussenwand_gedaemmt,
|
aussenwand_gedaemmt: ausweis.aussenwand_gedaemmt,
|
||||||
aussenwand_min_12cm_gedaemmt: ausweis.aussenwand_min_12cm_gedaemmt,
|
aussenwand_min_12cm_gedaemmt: ausweis.aussenwand_min_12cm_gedaemmt,
|
||||||
bestellt: ausweis.bestellt,
|
bestellt: ausweis.bestellt,
|
||||||
boxpruefung: ausweis.boxpruefung,
|
|
||||||
brennwert_kessel: ausweis.brennwert_kessel,
|
brennwert_kessel: ausweis.brennwert_kessel,
|
||||||
dachgeschoss_gedaemmt: ausweis.dachgeschoss_gedaemmt,
|
dachgeschoss_gedaemmt: ausweis.dachgeschoss_gedaemmt,
|
||||||
dachgeschoss_min_12cm_gedaemmt: ausweis.dachgeschoss_min_12cm_gedaemmt,
|
dachgeschoss_min_12cm_gedaemmt: ausweis.dachgeschoss_min_12cm_gedaemmt,
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export async function loginClient(email: string, passwort: string): Promise<infe
|
|||||||
}
|
}
|
||||||
Cookies.set(API_ACCESS_TOKEN_COOKIE_NAME, response.accessToken, options);
|
Cookies.set(API_ACCESS_TOKEN_COOKIE_NAME, response.accessToken, options);
|
||||||
Cookies.set(API_REFRESH_TOKEN_COOKIE_NAME, response.refreshToken, options);
|
Cookies.set(API_REFRESH_TOKEN_COOKIE_NAME, response.refreshToken, options);
|
||||||
Cookies.set("uid", response.uid, options);
|
Cookies.set("uid", response.id, options);
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export class Checkbox extends PDFElement {
|
|||||||
throw new Error('Method not supported.');
|
throw new Error('Method not supported.');
|
||||||
}
|
}
|
||||||
|
|
||||||
draw(page: PDFPage, x: number, y: number): void {
|
async draw(page: PDFPage, x: number, y: number) {
|
||||||
page.drawRectangle({
|
page.drawRectangle({
|
||||||
x: x + this.borderWidth,
|
x: x + this.borderWidth,
|
||||||
// NOTE: Keine Ahnung warum * 1.5 aber dann passt es...
|
// NOTE: Keine Ahnung warum * 1.5 aber dann passt es...
|
||||||
|
|||||||
@@ -103,15 +103,15 @@ export class Flex extends PDFElement {
|
|||||||
return currentWidth;
|
return currentWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
draw(page: PDFPage, x: number = this.x, y: number = this.y): void {
|
async draw(page: PDFPage, x: number = this.x, y: number = this.y) {
|
||||||
const childPositions = this.calculateChildPositions(x + this.margin.left + this.padding.left, y - this.margin.top - this.padding.top);
|
const childPositions = this.calculateChildPositions(x + this.margin.left + this.padding.left, y - this.margin.top - this.padding.top);
|
||||||
|
|
||||||
// Draw each child
|
for (let i = 0; i < this.children.length; i++) {
|
||||||
this.children.forEach((child, i) => {
|
const child = this.children[i];
|
||||||
const pos = childPositions[i];
|
const pos = childPositions[i];
|
||||||
|
|
||||||
child.draw(page, pos.x, pos.y);
|
await child.draw(page, pos.x, pos.y);
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private calculateChildPositions(x: number, y: number): { x: number; y: number }[] {
|
private calculateChildPositions(x: number, y: number): { x: number; y: number }[] {
|
||||||
|
|||||||
@@ -50,9 +50,9 @@ export class Image extends PDFElement {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.options.src.split(".").pop() === "png") {
|
try {
|
||||||
embed = await page.doc.embedPng(img)
|
embed = await page.doc.embedPng(img)
|
||||||
} else {
|
} catch(e) {
|
||||||
embed = await page.doc.embedJpg(img)
|
embed = await page.doc.embedJpg(img)
|
||||||
}
|
}
|
||||||
} else if (this.options.data) {
|
} else if (this.options.data) {
|
||||||
@@ -73,8 +73,6 @@ export class Image extends PDFElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
page.drawImage(embed, {
|
page.drawImage(embed, {
|
||||||
x: x + this.margin.left + this.padding.left,
|
x: x + this.margin.left + this.padding.left,
|
||||||
y: y - this.height - this.margin.top - this.padding.top,
|
y: y - this.height - this.margin.top - this.padding.top,
|
||||||
|
|||||||
@@ -59,11 +59,11 @@ export class Layout extends PDFElement {
|
|||||||
this._height = value;
|
this._height = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
draw(page: PDFPage, x: number, y: number): void {
|
async draw(page: PDFPage, x: number, y: number) {
|
||||||
let currentY = y - this.margin.top - this.padding.top;
|
let currentY = y - this.margin.top - this.padding.top;
|
||||||
|
|
||||||
for (const child of this.children) {
|
for (const child of this.children) {
|
||||||
child.draw(page, x + this.margin.left + this.padding.left, currentY);
|
await child.draw(page, x + this.margin.left + this.padding.left, currentY);
|
||||||
|
|
||||||
currentY -= child.height + child.margin.top + child.margin.bottom;
|
currentY -= child.height + child.margin.top + child.margin.bottom;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,9 @@ export abstract class PDFElement {
|
|||||||
return this._height === "auto" ? 0 : this._height;
|
return this._height === "auto" ? 0 : this._height;
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract draw(page: PDFPage, x: number, y: number): void;
|
async draw(page: PDFPage, x: number, y: number): Promise<void> {
|
||||||
|
throw new Error("Method is not implemented.")
|
||||||
|
}
|
||||||
|
|
||||||
abstract addChild(...children: PDFElement[]): void;
|
abstract addChild(...children: PDFElement[]): void;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ export class Text extends PDFElement {
|
|||||||
return this._width + this.padding.left + this.padding.right;
|
return this._width + this.padding.left + this.padding.right;
|
||||||
}
|
}
|
||||||
|
|
||||||
draw(page: PDFPage, x: number, y: number): void {
|
async draw(page: PDFPage, x: number, y: number): Promise<void> {
|
||||||
page.drawText(this.content, {
|
page.drawText(this.content, {
|
||||||
x: x + this.margin.left + this.padding.left,
|
x: x + this.margin.left + this.padding.left,
|
||||||
y: y - this.height - this.margin.top - this.padding.top,
|
y: y - this.height - this.margin.top - this.padding.top,
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ export function xml2pdf(xml: string, fonts: Record<string, PDFFont> & { "default
|
|||||||
color = rgb(...colorValue.map((x) => parseInt(x) / 255) as [number, number, number]);
|
color = rgb(...colorValue.map((x) => parseInt(x) / 255) as [number, number, number]);
|
||||||
}
|
}
|
||||||
|
|
||||||
const text = new Text(child.children[0] || "", { font: child.attributes.hasOwnProperty("font") ? fonts[child.attributes["font"]] : fonts["default"], lineHeight: parseFloat(child.attributes.lineHeight), fontSize: parseFloat(child.attributes.size) || 10, color, margin: {
|
const text = new Text(child.children[0] as string || "", { font: child.attributes.hasOwnProperty("font") ? fonts[child.attributes["font"]] : fonts["default"], lineHeight: parseFloat(child.attributes.lineHeight), fontSize: parseFloat(child.attributes.size) || 10, color, margin: {
|
||||||
bottom: parseFloat(child.attributes.marginBottom) || 0,
|
bottom: parseFloat(child.attributes.marginBottom) || 0,
|
||||||
left: parseFloat(child.attributes.marginLeft) || 0,
|
left: parseFloat(child.attributes.marginLeft) || 0,
|
||||||
right: parseFloat(child.attributes.marginRight) || 0,
|
right: parseFloat(child.attributes.marginRight) || 0,
|
||||||
@@ -115,42 +115,3 @@ export function xml2pdf(xml: string, fonts: Record<string, PDFFont> & { "default
|
|||||||
|
|
||||||
return layout
|
return layout
|
||||||
}
|
}
|
||||||
|
|
||||||
// const pdf = await PDFDocument.create()
|
|
||||||
|
|
||||||
// const page = pdf.addPage()
|
|
||||||
|
|
||||||
// const font = await pdf.embedFont(StandardFonts.Helvetica)
|
|
||||||
// const bold = await pdf.embedFont(StandardFonts.HelveticaBold)
|
|
||||||
|
|
||||||
// console.log(page.getWidth(), "WIDTH");
|
|
||||||
|
|
||||||
|
|
||||||
// const layout = xml2pdf(`
|
|
||||||
// <flex direction="column" justify="end" width="${page.getWidth()}" height="${page.getHeight()}">
|
|
||||||
// <flex direction="row" gap="5" align="center">
|
|
||||||
// <checkbox width="8" height="8"></checkbox>
|
|
||||||
// <text size="12">awd1</text>
|
|
||||||
// </flex>
|
|
||||||
// <flex direction="row" gap="5" align="center">
|
|
||||||
// <checkbox width="8" height="8"></checkbox>
|
|
||||||
// <text size="12">awd2</text>
|
|
||||||
// </flex>
|
|
||||||
// <flex direction="row" gap="5" align="center">
|
|
||||||
// <checkbox width="8" height="8"></checkbox>
|
|
||||||
// <text size="12">awd3</text>
|
|
||||||
// </flex>
|
|
||||||
// <flex direction="row" gap="5" align="center">
|
|
||||||
// <checkbox width="8" height="8"></checkbox>
|
|
||||||
// <text size="12">awd4</text>
|
|
||||||
// </flex>
|
|
||||||
// </flex>`, {
|
|
||||||
// "default": font
|
|
||||||
// })
|
|
||||||
|
|
||||||
// layout.draw(page, 0, page.getHeight())
|
|
||||||
|
|
||||||
// import { writeFileSync } from "fs"
|
|
||||||
// import { FixedLengthArray } from "#lib/Berechnungen/BedarfsausweisWohnen/types.js"
|
|
||||||
|
|
||||||
// writeFileSync("./test-pdf.pdf", await pdf.save())
|
|
||||||
@@ -165,14 +165,14 @@ export async function pdfDatenblattVerbrauchsausweisGewerbe(ausweis: Verbrauchsa
|
|||||||
</flex>
|
</flex>
|
||||||
<flex direction="column" gap="4">
|
<flex direction="column" gap="4">
|
||||||
<text></text>
|
<text></text>
|
||||||
<text size="12" font="bold">${aufnahme.brennstoff_1}</text>
|
<text size="12" font="bold">${ausweis.brennstoff_1}</text>
|
||||||
<text size="12">${ausweis.verbrauch_1} ${ausweis.einheit_1}</text>
|
<text size="12">${ausweis.verbrauch_1} ${ausweis.einheit_1}</text>
|
||||||
<text size="12">${ausweis.verbrauch_2} ${ausweis.einheit_1}</text>
|
<text size="12">${ausweis.verbrauch_2} ${ausweis.einheit_1}</text>
|
||||||
<text size="12">${ausweis.verbrauch_3} ${ausweis.einheit_1}</text>
|
<text size="12">${ausweis.verbrauch_3} ${ausweis.einheit_1}</text>
|
||||||
</flex>
|
</flex>
|
||||||
<flex direction="column" gap="4">
|
<flex direction="column" gap="4">
|
||||||
<text size="12">zusätzliche Heizquelle</text>
|
<text size="12">zusätzliche Heizquelle</text>
|
||||||
<text size="12" font="bold">${aufnahme.brennstoff_2 || ""}</text>
|
<text size="12" font="bold">${ausweis.brennstoff_2 || ""}</text>
|
||||||
<text size="12">${ausweis.verbrauch_4 || ""} ${ausweis.einheit_2 || ""}</text>
|
<text size="12">${ausweis.verbrauch_4 || ""} ${ausweis.einheit_2 || ""}</text>
|
||||||
<text size="12">${ausweis.verbrauch_5 || ""} ${ausweis.einheit_2 || ""}</text>
|
<text size="12">${ausweis.verbrauch_5 || ""} ${ausweis.einheit_2 || ""}</text>
|
||||||
<text size="12">${ausweis.verbrauch_6 || ""} ${ausweis.einheit_2 || ""}</text>
|
<text size="12">${ausweis.verbrauch_6 || ""} ${ausweis.einheit_2 || ""}</text>
|
||||||
@@ -382,78 +382,9 @@ export async function pdfDatenblattVerbrauchsausweisGewerbe(ausweis: Verbrauchsa
|
|||||||
${images.map(badge => `<flex direction="row" justify="space-between" width="${pages[2].getWidth() - 120}" height="${(pages[2].getHeight() - marginY * 2) / 4}" marginTop="15">${badge.join("")}</flex>`).join("")}
|
${images.map(badge => `<flex direction="row" justify="space-between" width="${pages[2].getWidth() - 120}" height="${(pages[2].getHeight() - marginY * 2) / 4}" marginTop="15">${badge.join("")}</flex>`).join("")}
|
||||||
</layout>`, { "default": font })
|
</layout>`, { "default": font })
|
||||||
|
|
||||||
layout.draw(pages[0], 0, pages[0].getHeight())
|
await layout.draw(pages[0], 0, pages[0].getHeight())
|
||||||
layoutPage2.draw(pages[1], 0, pages[1].getHeight())
|
await layoutPage2.draw(pages[1], 0, pages[1].getHeight())
|
||||||
layoutPage3.draw(pages[2], 0, pages[2].getHeight())
|
await layoutPage3.draw(pages[2], 0, pages[2].getHeight())
|
||||||
|
|
||||||
// const containerWidth = width - marginX;
|
|
||||||
|
|
||||||
// const layout = flex([
|
|
||||||
// flex([
|
|
||||||
// checkbox(8, 8), text("Neubau", {
|
|
||||||
// color: rgb(0,0,0),
|
|
||||||
// font,
|
|
||||||
// fontSize: 12
|
|
||||||
// })
|
|
||||||
// ], {
|
|
||||||
// align: "center",
|
|
||||||
// justify: "center",
|
|
||||||
// gap: 5,
|
|
||||||
// height: 12,
|
|
||||||
// page: pages[0]
|
|
||||||
// }),
|
|
||||||
// flex([
|
|
||||||
// checkbox(8, 8), text("Vermietung/Verkauf", {
|
|
||||||
// color: rgb(0,0,0),
|
|
||||||
// font,
|
|
||||||
// fontSize: 12
|
|
||||||
// })
|
|
||||||
// ], {
|
|
||||||
// align: "center",
|
|
||||||
// justify: "center",
|
|
||||||
// gap: 5,
|
|
||||||
// height: 12,
|
|
||||||
// page: pages[0]
|
|
||||||
// }),
|
|
||||||
// flex([
|
|
||||||
// checkbox(8, 8), text("Modernisierung", {
|
|
||||||
// color: rgb(0,0,0),
|
|
||||||
// font,
|
|
||||||
// fontSize: 12
|
|
||||||
// })
|
|
||||||
// ], {
|
|
||||||
// align: "center",
|
|
||||||
// justify: "center",
|
|
||||||
// gap: 5,
|
|
||||||
// height: 12,
|
|
||||||
// page: pages[0]
|
|
||||||
// }),
|
|
||||||
// flex([
|
|
||||||
// checkbox(8, 8), text("Sonstiges", {
|
|
||||||
// color: rgb(0,0,0),
|
|
||||||
// font,
|
|
||||||
// fontSize: 12
|
|
||||||
// })
|
|
||||||
// ], {
|
|
||||||
// align: "center",
|
|
||||||
// justify: "center",
|
|
||||||
// gap: 5,
|
|
||||||
// height: 12,
|
|
||||||
// page: pages[0]
|
|
||||||
// })
|
|
||||||
// ], {
|
|
||||||
// align: "center",
|
|
||||||
// justify: "space-between",
|
|
||||||
// gap: 15,
|
|
||||||
// x: marginX,
|
|
||||||
// y: height - marginY - 165,
|
|
||||||
// height: 12,
|
|
||||||
// width: containerWidth
|
|
||||||
// })
|
|
||||||
|
|
||||||
// layout.draw(pages[0])
|
|
||||||
|
|
||||||
// pdf.getForm().flatten()
|
|
||||||
|
|
||||||
return pdf.save();
|
return pdf.save();
|
||||||
}
|
}
|
||||||
@@ -131,14 +131,14 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau
|
|||||||
</flex>
|
</flex>
|
||||||
<flex direction="column" gap="4">
|
<flex direction="column" gap="4">
|
||||||
<text></text>
|
<text></text>
|
||||||
<text size="12" font="bold">${aufnahme.brennstoff_1}</text>
|
<text size="12" font="bold">${ausweis.brennstoff_1}</text>
|
||||||
<text size="12">${ausweis.verbrauch_1} ${ausweis.einheit_1}</text>
|
<text size="12">${ausweis.verbrauch_1} ${ausweis.einheit_1}</text>
|
||||||
<text size="12">${ausweis.verbrauch_2} ${ausweis.einheit_1}</text>
|
<text size="12">${ausweis.verbrauch_2} ${ausweis.einheit_1}</text>
|
||||||
<text size="12">${ausweis.verbrauch_3} ${ausweis.einheit_1}</text>
|
<text size="12">${ausweis.verbrauch_3} ${ausweis.einheit_1}</text>
|
||||||
</flex>
|
</flex>
|
||||||
<flex direction="column" gap="4">
|
<flex direction="column" gap="4">
|
||||||
<text size="12">zusätzliche Heizquelle</text>
|
<text size="12">zusätzliche Heizquelle</text>
|
||||||
<text size="12" font="bold">${aufnahme.brennstoff_2 || ""}</text>
|
<text size="12" font="bold">${ausweis.brennstoff_2 || ""}</text>
|
||||||
<text size="12">${ausweis.verbrauch_4 || ""} ${ausweis.einheit_2 || ""}</text>
|
<text size="12">${ausweis.verbrauch_4 || ""} ${ausweis.einheit_2 || ""}</text>
|
||||||
<text size="12">${ausweis.verbrauch_5 || ""} ${ausweis.einheit_2 || ""}</text>
|
<text size="12">${ausweis.verbrauch_5 || ""} ${ausweis.einheit_2 || ""}</text>
|
||||||
<text size="12">${ausweis.verbrauch_6 || ""} ${ausweis.einheit_2 || ""}</text>
|
<text size="12">${ausweis.verbrauch_6 || ""} ${ausweis.einheit_2 || ""}</text>
|
||||||
@@ -298,7 +298,7 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau
|
|||||||
const images: string[][] = []
|
const images: string[][] = []
|
||||||
|
|
||||||
for (const bild of bilder) {
|
for (const bild of bilder) {
|
||||||
let badge: string[];
|
let batch: string[];
|
||||||
let image: string = "";
|
let image: string = "";
|
||||||
|
|
||||||
if (bild.kategorie === Enums.BilderKategorie.Gebaeude) {
|
if (bild.kategorie === Enums.BilderKategorie.Gebaeude) {
|
||||||
@@ -310,26 +310,30 @@ export async function pdfDatenblattVerbrauchsausweisWohnen(ausweis: Verbrauchsau
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (images.length > 0) {
|
if (images.length > 0) {
|
||||||
let badge = images[images.length - 1]
|
let batch = images[images.length - 1]
|
||||||
if (badge.length == 3) {
|
if (batch.length == 3) {
|
||||||
badge = [image]
|
batch = [image]
|
||||||
images.push(badge)
|
images.push(batch)
|
||||||
} else {
|
} else {
|
||||||
badge.push(image)
|
batch.push(image)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
badge = [image]
|
batch = [image]
|
||||||
images.push(badge)
|
images.push(batch)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const layoutPage3 = xml2pdf(`<layout height="${pages[2].getHeight()}" width="${pages[2].getWidth()}" marginTop="150" marginLeft="60" marginRight="60">
|
const layoutPage3 = xml2pdf(`<layout height="${pages[2].getHeight()}" width="${pages[2].getWidth()}" marginTop="150" marginLeft="60" marginRight="60">
|
||||||
${images.map(badge => `<flex direction="row" justify="space-between" width="${pages[2].getWidth() - 120}" height="${(pages[2].getHeight() - marginY * 2) / 4}" marginTop="15">${badge.join("")}</flex>`).join("")}
|
${images.map(batch => `<flex direction="row" justify="space-between" width="${pages[2].getWidth() - 120}" height="${(pages[2].getHeight() - marginY * 2) / 4}" marginTop="15">${batch.join("")}</flex>`).join("")}
|
||||||
</layout>`, { "default": font })
|
</layout>`, { "default": font })
|
||||||
|
|
||||||
layout.draw(pages[0], 0, pages[0].getHeight())
|
|
||||||
layoutPage2.draw(pages[1], 0, pages[1].getHeight())
|
await layout.draw(pages[0], 0, pages[0].getHeight())
|
||||||
layoutPage3.draw(pages[2], 0, pages[2].getHeight())
|
await layoutPage2.draw(pages[1], 0, pages[1].getHeight())
|
||||||
|
await layoutPage3.draw(pages[2], 0, pages[2].getHeight())
|
||||||
|
|
||||||
|
console.log("DONE");
|
||||||
|
|
||||||
|
|
||||||
return pdf.save();
|
return pdf.save();
|
||||||
}
|
}
|
||||||
@@ -66,7 +66,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
size: 10
|
size: 10
|
||||||
})
|
})
|
||||||
|
|
||||||
pages[0].drawText(`${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`, {
|
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
|
||||||
x: 211,
|
x: 211,
|
||||||
y: height - 285,
|
y: height - 285,
|
||||||
size: 10
|
size: 10
|
||||||
@@ -97,7 +97,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (ausweis.warmwasser_enthalten) {
|
if (ausweis.warmwasser_enthalten) {
|
||||||
pages[0].drawText(`${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`, {
|
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
|
||||||
x: 211,
|
x: 211,
|
||||||
y: height - 299,
|
y: height - 299,
|
||||||
size: 10
|
size: 10
|
||||||
@@ -422,7 +422,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
addVerbrauch(
|
addVerbrauch(
|
||||||
moment(ausweis.startdatum).format("MM.YYYY"),
|
moment(ausweis.startdatum).format("MM.YYYY"),
|
||||||
moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
|
moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
|
||||||
aufnahme.brennstoff_1 || "",
|
ausweis.brennstoff_1 || "",
|
||||||
berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
|
berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
|
||||||
Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(),
|
Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(),
|
||||||
"0",
|
"0",
|
||||||
@@ -436,7 +436,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
addVerbrauch(
|
addVerbrauch(
|
||||||
moment(ausweis.startdatum).format("MM.YYYY"),
|
moment(ausweis.startdatum).format("MM.YYYY"),
|
||||||
moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
|
moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
|
||||||
aufnahme.brennstoff_1 || "",
|
ausweis.brennstoff_1 || "",
|
||||||
berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
|
berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
|
||||||
Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(),
|
Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(),
|
||||||
Math.round(berechnungen?.energieVerbrauchWarmwasser_1 || 0).toString(),
|
Math.round(berechnungen?.energieVerbrauchWarmwasser_1 || 0).toString(),
|
||||||
@@ -451,7 +451,7 @@ export async function pdfVerbrauchsausweisGewerbe(ausweis: VerbrauchsausweisGewe
|
|||||||
addVerbrauch(
|
addVerbrauch(
|
||||||
moment(ausweis.startdatum).format("MM.YYYY"),
|
moment(ausweis.startdatum).format("MM.YYYY"),
|
||||||
moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
|
moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
|
||||||
aufnahme.brennstoff_2 || "",
|
ausweis.brennstoff_2 || "",
|
||||||
berechnungen?.brennstoff_2.primaerenergiefaktor.toString(),
|
berechnungen?.brennstoff_2.primaerenergiefaktor.toString(),
|
||||||
Math.round(berechnungen?.energieVerbrauchGesamt_2 || 0).toString(),
|
Math.round(berechnungen?.energieVerbrauchGesamt_2 || 0).toString(),
|
||||||
Math.round(berechnungen?.energieVerbrauchWarmwasser_2 || 0).toString(),
|
Math.round(berechnungen?.energieVerbrauchWarmwasser_2 || 0).toString(),
|
||||||
|
|||||||
@@ -71,14 +71,14 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
size: 10
|
size: 10
|
||||||
})
|
})
|
||||||
|
|
||||||
pages[0].drawText(`${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`, {
|
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
|
||||||
x: 211,
|
x: 211,
|
||||||
y: height - 298.5,
|
y: height - 298.5,
|
||||||
size: 10
|
size: 10
|
||||||
})
|
})
|
||||||
|
|
||||||
if (ausweis.warmwasser_enthalten) {
|
if (ausweis.warmwasser_enthalten) {
|
||||||
pages[0].drawText(`${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`, {
|
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
|
||||||
x: 211,
|
x: 211,
|
||||||
y: height - 312,
|
y: height - 312,
|
||||||
size: 10
|
size: 10
|
||||||
@@ -111,7 +111,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
})
|
})
|
||||||
|
|
||||||
if (ausweis.warmwasser_enthalten) {
|
if (ausweis.warmwasser_enthalten) {
|
||||||
pages[0].drawText(`${aufnahme.brennstoff_1}, ${aufnahme.brennstoff_2 || ""}`, {
|
pages[0].drawText(`${ausweis.brennstoff_1}, ${ausweis.brennstoff_2 || ""}`, {
|
||||||
x: 211,
|
x: 211,
|
||||||
y: height - 299,
|
y: height - 299,
|
||||||
size: 10
|
size: 10
|
||||||
@@ -414,7 +414,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
addVerbrauch(
|
addVerbrauch(
|
||||||
moment(ausweis.startdatum).format("MM.YYYY"),
|
moment(ausweis.startdatum).format("MM.YYYY"),
|
||||||
moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
|
moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
|
||||||
aufnahme.brennstoff_1 || "",
|
ausweis.brennstoff_1 || "",
|
||||||
berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
|
berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
|
||||||
Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(),
|
Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(),
|
||||||
"0",
|
"0",
|
||||||
@@ -426,7 +426,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
addVerbrauch(
|
addVerbrauch(
|
||||||
moment(ausweis.startdatum).format("MM.YYYY"),
|
moment(ausweis.startdatum).format("MM.YYYY"),
|
||||||
moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
|
moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
|
||||||
aufnahme.brennstoff_1 || "",
|
ausweis.brennstoff_1 || "",
|
||||||
berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
|
berechnungen?.brennstoff_1.primaerenergiefaktor.toString(),
|
||||||
Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(),
|
Math.round(berechnungen?.energieVerbrauchGesamt_1 || 0).toString(),
|
||||||
Math.round(berechnungen?.energieVerbrauchWarmwasser_1 || 0).toString(),
|
Math.round(berechnungen?.energieVerbrauchWarmwasser_1 || 0).toString(),
|
||||||
@@ -439,7 +439,7 @@ export async function pdfVerbrauchsausweisWohnen(ausweis: VerbrauchsausweisWohne
|
|||||||
addVerbrauch(
|
addVerbrauch(
|
||||||
moment(ausweis.startdatum).format("MM.YYYY"),
|
moment(ausweis.startdatum).format("MM.YYYY"),
|
||||||
moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
|
moment(ausweis.startdatum).add(3, "years").format("MM.YYYY"),
|
||||||
aufnahme.brennstoff_2 || "",
|
ausweis.brennstoff_2 || "",
|
||||||
berechnungen?.brennstoff_2.primaerenergiefaktor.toString(),
|
berechnungen?.brennstoff_2.primaerenergiefaktor.toString(),
|
||||||
Math.round(berechnungen?.energieVerbrauchGesamt_2 || 0).toString(),
|
Math.round(berechnungen?.energieVerbrauchGesamt_2 || 0).toString(),
|
||||||
Math.round(berechnungen?.energieVerbrauchWarmwasser_2 || 0).toString(),
|
Math.round(berechnungen?.energieVerbrauchWarmwasser_2 || 0).toString(),
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { GetObjectCommand, S3Client } from "@aws-sdk/client-s3";
|
import { GetObjectCommand, S3Client } from "@aws-sdk/client-s3";
|
||||||
import * as fs from "fs";
|
import * as fs from "fs";
|
||||||
|
import { tryCatch } from "./tryCatch.js";
|
||||||
|
|
||||||
export const s3Client = new S3Client({
|
export const s3Client = new S3Client({
|
||||||
region: "eu-central-1",
|
region: "eu-central-1",
|
||||||
@@ -17,21 +18,18 @@ export async function getS3File(
|
|||||||
bucket: string,
|
bucket: string,
|
||||||
key: string
|
key: string
|
||||||
): Promise<Buffer | null> {
|
): Promise<Buffer | null> {
|
||||||
try {
|
let command = new GetObjectCommand({ Bucket: bucket, Key: key });
|
||||||
let command = new GetObjectCommand({ Bucket: bucket, Key: key });
|
|
||||||
let response = await s3Client.send(command);
|
|
||||||
|
|
||||||
const body = response.Body;
|
let [response, error] = await tryCatch(s3Client.send(command));
|
||||||
|
|
||||||
if (!body) {
|
if (error || response === null) {
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
let buffer = await streamToBuffer(body as unknown as fs.ReadStream);
|
|
||||||
return buffer;
|
|
||||||
} catch (e) {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const body = response.Body;
|
||||||
|
|
||||||
|
let buffer = await streamToBuffer(body as unknown as fs.ReadStream);
|
||||||
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function streamToBuffer(stream: fs.ReadStream): Promise<Buffer> {
|
async function streamToBuffer(stream: fs.ReadStream): Promise<Buffer> {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { AufnahmeClient, BedarfsausweisWohnenClient, BenutzerClient, BildClient, getAusweisartFromUUID, ObjektClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
import { AufnahmeClient, BedarfsausweisWohnenClient, BenutzerClient, BildClient, getAusweisartFromId, ObjektClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
||||||
import { pdfDatenblattVerbrauchsausweisGewerbe } from "#lib/pdf/pdfDatenblattVerbrauchsausweisGewerbe.js";
|
import { pdfDatenblattVerbrauchsausweisGewerbe } from "#lib/pdf/pdfDatenblattVerbrauchsausweisGewerbe.js";
|
||||||
import { pdfDatenblattVerbrauchsausweisWohnen } from "#lib/pdf/pdfDatenblattVerbrauchsausweisWohnen.js";
|
import { pdfDatenblattVerbrauchsausweisWohnen } from "#lib/pdf/pdfDatenblattVerbrauchsausweisWohnen.js";
|
||||||
import { pdfVerbrauchsausweisGewerbe } from "#lib/pdf/pdfVerbrauchsausweisGewerbe.js";
|
import { pdfVerbrauchsausweisGewerbe } from "#lib/pdf/pdfVerbrauchsausweisGewerbe.js";
|
||||||
@@ -10,7 +10,7 @@ import { Enums, prisma } from "#lib/server/prisma.js";
|
|||||||
* @param id Die Ausweis UID
|
* @param id Die Ausweis UID
|
||||||
*/
|
*/
|
||||||
export function getPrismaAusweisAdapter(id: string) {
|
export function getPrismaAusweisAdapter(id: string) {
|
||||||
const ausweisart = getAusweisartFromUUID(id);
|
const ausweisart = getAusweisartFromId(id);
|
||||||
|
|
||||||
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||||
return prisma.verbrauchsausweisWohnen
|
return prisma.verbrauchsausweisWohnen
|
||||||
@@ -25,7 +25,7 @@ export function getPrismaAusweisAdapter(id: string) {
|
|||||||
* Gibt den richtigen Ansichtsausweis basierend auf der Ausweisart zurück.
|
* Gibt den richtigen Ansichtsausweis basierend auf der Ausweisart zurück.
|
||||||
* @param ausweis
|
* @param ausweis
|
||||||
*/
|
*/
|
||||||
export async function getAnsichtsausweis(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, ausweisart = getAusweisartFromUUID(ausweis.uid)) {
|
export async function getAnsichtsausweis(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, ausweisart = getAusweisartFromId(ausweis.uid)) {
|
||||||
if (!ausweisart) {
|
if (!ausweisart) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
@@ -43,7 +43,7 @@ export async function getAnsichtsausweis(ausweis: VerbrauchsausweisWohnenClient
|
|||||||
* Gibt das richtige Datenblatt basierend auf der Ausweisart zurück.
|
* Gibt das richtige Datenblatt basierend auf der Ausweisart zurück.
|
||||||
* @param ausweis
|
* @param ausweis
|
||||||
*/
|
*/
|
||||||
export async function getDatenblatt(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, ausweisart = getAusweisartFromUUID(ausweis.uid)) {
|
export async function getDatenblatt(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, ausweisart = getAusweisartFromId(ausweis.uid)) {
|
||||||
if (!ausweisart) {
|
if (!ausweisart) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Aufnahme, Bild, Objekt, prisma, VerbrauchsausweisWohnen } from "./prisma.js";
|
import { Aufnahme, BedarfsausweisGewerbe, BedarfsausweisWohnen, Bild, GEGNachweisGewerbe, GEGNachweisWohnen, Objekt, prisma, Unterlage, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "./prisma.js";
|
||||||
|
|
||||||
export async function getVerbrauchsausweisWohnen(id: string): Promise<VerbrauchsausweisWohnen | null> {
|
export async function getVerbrauchsausweisWohnen(id: string): Promise<VerbrauchsausweisWohnen | null> {
|
||||||
return await prisma.verbrauchsausweisWohnen.findUnique({
|
return await prisma.verbrauchsausweisWohnen.findUnique({
|
||||||
@@ -8,6 +8,46 @@ export async function getVerbrauchsausweisWohnen(id: string): Promise<Verbrauchs
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getVerbrauchsausweisGewerbe(id: string): Promise<VerbrauchsausweisGewerbe | null> {
|
||||||
|
return await prisma.verbrauchsausweisGewerbe.findUnique({
|
||||||
|
where: {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getBedarfsausweisWohnen(id: string): Promise<BedarfsausweisWohnen | null> {
|
||||||
|
return await prisma.bedarfsausweisWohnen.findUnique({
|
||||||
|
where: {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getBedarfsausweisGewerbe(id: string): Promise<BedarfsausweisGewerbe | null> {
|
||||||
|
return await prisma.bedarfsausweisGewerbe.findUnique({
|
||||||
|
where: {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getGEGNachweisWohnen(id: string): Promise<GEGNachweisWohnen | null> {
|
||||||
|
return await prisma.gEGNachweisWohnen.findUnique({
|
||||||
|
where: {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getGEGNachweisGewerbe(id: string): Promise<GEGNachweisGewerbe | null> {
|
||||||
|
return await prisma.gEGNachweisGewerbe.findUnique({
|
||||||
|
where: {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export async function getAufnahme(id: string): Promise<Aufnahme | null> {
|
export async function getAufnahme(id: string): Promise<Aufnahme | null> {
|
||||||
return await prisma.aufnahme.findUnique({
|
return await prisma.aufnahme.findUnique({
|
||||||
where: {
|
where: {
|
||||||
@@ -31,3 +71,11 @@ export async function getBilder(aufnahme_id: string): Promise<Bild[]> {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getUnterlagen(aufnahme_id: string): Promise<Unterlage[]> {
|
||||||
|
return await prisma.unterlage.findMany({
|
||||||
|
where: {
|
||||||
|
aufnahme_id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { getAusweisartFromUUID } from "#components/Ausweis/types.js";
|
import { getAusweisartFromId } from "#components/Ausweis/types.js";
|
||||||
import { BASE_URI } from "#lib/constants.js";
|
import { BASE_URI } from "#lib/constants.js";
|
||||||
import { transport } from "#lib/mail.js";
|
import { transport } from "#lib/mail.js";
|
||||||
import {
|
import {
|
||||||
@@ -32,7 +32,7 @@ export async function sendInvoiceMail(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ausweisart = getAusweisartFromUUID(ausweis.id);
|
const ausweisart = getAusweisartFromId(ausweis.id);
|
||||||
|
|
||||||
if (!ausweisart) {
|
if (!ausweisart) {
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { getAusweisartFromUUID } from "#components/Ausweis/types.js";
|
import { getAusweisartFromId } from "#components/Ausweis/types.js";
|
||||||
import { transport } from "#lib/mail.js";
|
import { transport } from "#lib/mail.js";
|
||||||
import {
|
import {
|
||||||
Benutzer,
|
Benutzer,
|
||||||
@@ -32,7 +32,7 @@ export async function sendPaymentSuccessMail(
|
|||||||
}
|
}
|
||||||
|
|
||||||
let info: string = "";
|
let info: string = "";
|
||||||
const ausweisart = getAusweisartFromUUID(ausweis.id);
|
const ausweisart = getAusweisartFromId(ausweis.id);
|
||||||
|
|
||||||
if (!ausweisart) {
|
if (!ausweisart) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -41,15 +41,21 @@
|
|||||||
export let ausweisart: Enums.Ausweisart;
|
export let ausweisart: Enums.Ausweisart;
|
||||||
export let aktiveBezahlmethode: Bezahlmethoden = Enums.Bezahlmethoden.paypal;
|
export let aktiveBezahlmethode: Bezahlmethoden = Enums.Bezahlmethoden.paypal;
|
||||||
|
|
||||||
let email = localStorage.getItem("kundendaten.email") || user.email || "";
|
|
||||||
let vorname = localStorage.getItem("kundendaten.vorname") || user.vorname || "";
|
let email: string, vorname: string, name: string, empfaenger: string, strasse: string, plz: string, ort: string, zusatzzeile: string, telefon: string;
|
||||||
let name = localStorage.getItem("kundendaten.name") || user.name || "";
|
|
||||||
let empfaenger = localStorage.getItem("kundendaten.empfaenger") || (user.vorname && user.name ? `${user.vorname} ${user.name}` : "")
|
if (user.rolle !== Enums.BenutzerRolle.ADMIN) {
|
||||||
let strasse = localStorage.getItem("kundendaten.strasse") || user.adresse || "";
|
// Falls der aktuelle Benutzer kein Admin ist können wir die Kundendaten aus den Stammdaten vorausfüllen.
|
||||||
let plz = localStorage.getItem("kundendaten.plz") || user.plz || "";
|
email = localStorage.getItem("kundendaten.email") || user.email || "";
|
||||||
let ort = localStorage.getItem("kundendaten.ort") || user.ort || "";
|
vorname = localStorage.getItem("kundendaten.vorname") || user.vorname || "";
|
||||||
let zusatzzeile = localStorage.getItem("kundendaten.zusatzzeile") || ""
|
name = localStorage.getItem("kundendaten.name") || user.name || "";
|
||||||
let telefon = localStorage.getItem("kundendaten.telefon") || user.telefon || "";
|
empfaenger = localStorage.getItem("kundendaten.empfaenger") || (user.vorname && user.name ? `${user.vorname} ${user.name}` : "")
|
||||||
|
strasse = localStorage.getItem("kundendaten.strasse") || user.adresse || "";
|
||||||
|
plz = localStorage.getItem("kundendaten.plz") || user.plz || "";
|
||||||
|
ort = localStorage.getItem("kundendaten.ort") || user.ort || "";
|
||||||
|
zusatzzeile = localStorage.getItem("kundendaten.zusatzzeile") || ""
|
||||||
|
telefon = localStorage.getItem("kundendaten.telefon") || user.telefon || "";
|
||||||
|
}
|
||||||
|
|
||||||
let abweichende_versand_adresse = JSON.parse(localStorage.getItem("kundendaten.abweichende_versand_adresse") || "false")
|
let abweichende_versand_adresse = JSON.parse(localStorage.getItem("kundendaten.abweichende_versand_adresse") || "false")
|
||||||
|
|
||||||
@@ -71,6 +77,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
$: {
|
$: {
|
||||||
|
// Wir speichern jede Änderung an den Kundendaten im localStorage ab.
|
||||||
localStorage.setItem("kundendaten.email", email)
|
localStorage.setItem("kundendaten.email", email)
|
||||||
localStorage.setItem("kundendaten.vorname", vorname)
|
localStorage.setItem("kundendaten.vorname", vorname)
|
||||||
localStorage.setItem("kundendaten.name", name)
|
localStorage.setItem("kundendaten.name", name)
|
||||||
@@ -187,7 +194,7 @@
|
|||||||
versand_plz: versand_plz,
|
versand_plz: versand_plz,
|
||||||
versand_ort: versand_ort,
|
versand_ort: versand_ort,
|
||||||
telefon: telefon,
|
telefon: telefon,
|
||||||
nachweis_uid: result.uid_nachweis,
|
nachweis_id: result.nachweis_id,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
@@ -199,7 +206,7 @@
|
|||||||
// Alle alten Ausweisdateien im localStorage löschen.
|
// Alle alten Ausweisdateien im localStorage löschen.
|
||||||
localStorage.clear();
|
localStorage.clear();
|
||||||
|
|
||||||
window.location.href = `/einpreisung/success?e=${uid}&a=${result.uid_nachweis}`;
|
window.location.href = `/einpreisung/success?e=${uid}&a=${result.nachweis_id}`;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
addNotification({
|
addNotification({
|
||||||
dismissable: true,
|
dismissable: true,
|
||||||
|
|||||||
@@ -58,7 +58,8 @@
|
|||||||
export let id: string | null;
|
export let id: string | null;
|
||||||
|
|
||||||
// Falls die Daten im localStorage neuer sind als der Ausweis den wir von der Datenbank bekommen haben, benutzen wir lieber diese.
|
// Falls die Daten im localStorage neuer sind als der Ausweis den wir von der Datenbank bekommen haben, benutzen wir lieber diese.
|
||||||
if (!id && (!ausweis.updated_at || moment(localStorage.getItem("verbrauchsausweis-wohnen.updated_at") || new Date()).isAfter(ausweis.updated_at))) {
|
// Wir schauen auch ob der Benutzer nicht vielleicht ein Admin ist, dann sollten wir nichts aus dem localStorage holen.
|
||||||
|
if ((user && user.rolle !== Enums.BenutzerRolle.ADMIN) && !id && (!ausweis.updated_at || moment(localStorage.getItem("verbrauchsausweis-wohnen.updated_at") || new Date()).isAfter(ausweis.updated_at))) {
|
||||||
const localStorageAusweis = localStorage.getItem("verbrauchsausweis-wohnen.ausweis");
|
const localStorageAusweis = localStorage.getItem("verbrauchsausweis-wohnen.ausweis");
|
||||||
if (localStorageAusweis) {
|
if (localStorageAusweis) {
|
||||||
ausweis = JSON.parse(localStorageAusweis)
|
ausweis = JSON.parse(localStorageAusweis)
|
||||||
|
|||||||
@@ -5,11 +5,10 @@
|
|||||||
AufnahmeClient,
|
AufnahmeClient,
|
||||||
BenutzerClient,
|
BenutzerClient,
|
||||||
UnterlageClient,
|
UnterlageClient,
|
||||||
GEGNachweisWohnenClient,
|
|
||||||
BildClient,
|
BildClient,
|
||||||
} from "#components/Ausweis/types.js";
|
} from "#components/Ausweis/types.js";
|
||||||
import Bereich from "#components/labels/Bereich.svelte";
|
import Bereich from "#components/labels/Bereich.svelte";
|
||||||
import { Enums } from "#lib/client/prisma.js";
|
import { BedarfsausweisGewerbe, Enums } from "#lib/client/prisma.js";
|
||||||
import Progressbar from "#components/Ausweis/Progressbar.svelte";
|
import Progressbar from "#components/Ausweis/Progressbar.svelte";
|
||||||
import FileGrid from "#components/FileGrid.svelte";
|
import FileGrid from "#components/FileGrid.svelte";
|
||||||
import ButtonWeiterHilfe from "#components/Ausweis/ButtonWeiterHilfe.svelte";
|
import ButtonWeiterHilfe from "#components/Ausweis/ButtonWeiterHilfe.svelte";
|
||||||
@@ -18,57 +17,45 @@
|
|||||||
import SanierungszustandFensterTueren from "#components/Ausweis/SanierungszustandFensterTueren.svelte";
|
import SanierungszustandFensterTueren from "#components/Ausweis/SanierungszustandFensterTueren.svelte";
|
||||||
import SanierungszustandWaermedammung from "#components/Ausweis/SanierungszustandWaermedammung.svelte";
|
import SanierungszustandWaermedammung from "#components/Ausweis/SanierungszustandWaermedammung.svelte";
|
||||||
import AnlagenTechnik from "#components/Ausweis/AnlagenTechnik.svelte";
|
import AnlagenTechnik from "#components/Ausweis/AnlagenTechnik.svelte";
|
||||||
|
import moment from "moment";
|
||||||
|
|
||||||
export let nachweis: GEGNachweisWohnenClient;
|
export let nachweis: BedarfsausweisGewerbe;
|
||||||
export let objekt: ObjektClient;
|
export let objekt: ObjektClient;
|
||||||
export let aufnahme: AufnahmeClient;
|
export let aufnahme: AufnahmeClient;
|
||||||
export let user: BenutzerClient = {} as BenutzerClient;
|
export let user: BenutzerClient = {} as BenutzerClient;
|
||||||
export let bilder: BildClient[] = [];
|
export let bilder: BildClient[] = [];
|
||||||
export let plaene: UnterlageClient[] = [];
|
export let plaene: UnterlageClient[] = [];
|
||||||
export let unterlagen: UnterlageClient[] = [];
|
export let unterlagen: UnterlageClient[] = [];
|
||||||
|
export let ausweistyp: Enums.AusweisTyp;
|
||||||
|
export let id: string | null;
|
||||||
|
|
||||||
if (Object.keys(nachweis).length === 0) {
|
// Falls die Daten im localStorage neuer sind als der Ausweis den wir von der Datenbank bekommen haben, benutzen wir lieber diese.
|
||||||
const localStorageAusweis = localStorage.getItem(
|
// Wir schauen auch ob der Benutzer nicht vielleicht ein Admin ist, dann sollten wir nichts aus dem localStorage holen.
|
||||||
"geg-nachweis-wohnen.ausweis"
|
if ((user && user.rolle !== Enums.BenutzerRolle.ADMIN) && !id && (!nachweis.updated_at || moment(localStorage.getItem("geg-nachweis-wohnen.updated_at") || new Date()).isAfter(nachweis.updated_at))) {
|
||||||
);
|
const localStorageAusweis = localStorage.getItem("geg-nachweis-wohnen.ausweis");
|
||||||
if (localStorageAusweis) {
|
if (localStorageAusweis) {
|
||||||
nachweis = JSON.parse(localStorageAusweis);
|
nachweis = JSON.parse(localStorageAusweis)
|
||||||
|
nachweis.nachweistyp = ausweistyp;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (Object.keys(aufnahme).length === 0) {
|
const localStorageAufnahme = localStorage.getItem("geg-nachweis-wohnen.aufnahme");
|
||||||
const localStorageAufnahme = localStorage.getItem(
|
|
||||||
"geg-nachweis-wohnen.aufnahme"
|
|
||||||
);
|
|
||||||
if (localStorageAufnahme) {
|
if (localStorageAufnahme) {
|
||||||
aufnahme = JSON.parse(localStorageAufnahme);
|
aufnahme = JSON.parse(localStorageAufnahme)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (Object.keys(objekt).length === 0) {
|
const localStorageObjekt = localStorage.getItem("geg-nachweis-wohnen.objekt");
|
||||||
const localStorageObjekt = localStorage.getItem(
|
|
||||||
"geg-nachweis-wohnen.objekt"
|
|
||||||
);
|
|
||||||
if (localStorageObjekt) {
|
if (localStorageObjekt) {
|
||||||
objekt = JSON.parse(localStorageObjekt);
|
objekt = JSON.parse(localStorageObjekt)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (Object.keys(bilder).length === 0) {
|
const localStorageBilder = localStorage.getItem("geg-nachweis-wohnen.bilder");
|
||||||
const localStorageBilder = localStorage.getItem(
|
|
||||||
"geg-nachweis-wohnen.bilder"
|
|
||||||
);
|
|
||||||
if (localStorageBilder) {
|
if (localStorageBilder) {
|
||||||
bilder = JSON.parse(localStorageBilder);
|
bilder = JSON.parse(localStorageBilder)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (Object.keys(unterlagen).length === 0) {
|
const localStorageUnterlagen = localStorage.getItem("geg-nachweis-wohnen.unterlagen");
|
||||||
const localStorageUnterlagen = localStorage.getItem(
|
|
||||||
"geg-nachweis-wohnen.unterlagen"
|
|
||||||
);
|
|
||||||
if (localStorageUnterlagen) {
|
if (localStorageUnterlagen) {
|
||||||
unterlagen = JSON.parse(localStorageUnterlagen);
|
bilder = JSON.parse(localStorageUnterlagen)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,6 +99,7 @@
|
|||||||
{ausweisart}
|
{ausweisart}
|
||||||
{anliegen}
|
{anliegen}
|
||||||
steps={["Gebäudedaten", "Kundendaten", "Anfragebestätigung"]}
|
steps={["Gebäudedaten", "Kundendaten", "Anfragebestätigung"]}
|
||||||
|
{ausweistyp}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -123,7 +111,7 @@
|
|||||||
<GEGAusweisart
|
<GEGAusweisart
|
||||||
bind:objekt
|
bind:objekt
|
||||||
bind:aufnahme
|
bind:aufnahme
|
||||||
bind:ausweis={nachweis}
|
bind:nachweis={nachweis}
|
||||||
{ausweisart}
|
{ausweisart}
|
||||||
/>
|
/>
|
||||||
</Bereich>
|
</Bereich>
|
||||||
|
|||||||
@@ -9,64 +9,50 @@
|
|||||||
BildClient,
|
BildClient,
|
||||||
} from "#components/Ausweis/types.js";
|
} from "#components/Ausweis/types.js";
|
||||||
import Bereich from "#components/labels/Bereich.svelte";
|
import Bereich from "#components/labels/Bereich.svelte";
|
||||||
import { Enums } from "#lib/client/prisma.js";
|
import { Enums, Unterlage } from "#lib/client/prisma.js";
|
||||||
import InputLabel from "#components/labels/InputLabel.svelte";
|
import InputLabel from "#components/labels/InputLabel.svelte";
|
||||||
import HelpLabel from "#components/labels/HelpLabel.svelte";
|
import HelpLabel from "#components/labels/HelpLabel.svelte";
|
||||||
import Progressbar from "#components/Ausweis/Progressbar.svelte";
|
import Progressbar from "#components/Ausweis/Progressbar.svelte";
|
||||||
import FileGrid from "#components/FileGrid.svelte";
|
import FileGrid from "#components/FileGrid.svelte";
|
||||||
import ButtonWeiterHilfe from "#components/Ausweis/ButtonWeiterHilfe.svelte";
|
import ButtonWeiterHilfe from "#components/Ausweis/ButtonWeiterHilfe.svelte";
|
||||||
import GEGAusweisart from "#components/GEGNachweis/GEGAusweisart.svelte";
|
import GEGAusweisart from "#components/GEGNachweis/GEGAusweisart.svelte";
|
||||||
|
import moment from "moment";
|
||||||
|
|
||||||
export let nachweis: GEGNachweisWohnenClient;
|
export let nachweis: GEGNachweisWohnenClient;
|
||||||
export let objekt: ObjektClient;
|
export let objekt: ObjektClient;
|
||||||
export let aufnahme: AufnahmeClient;
|
export let aufnahme: AufnahmeClient;
|
||||||
export let user: BenutzerClient = {} as BenutzerClient;
|
export let user: BenutzerClient = {} as BenutzerClient;
|
||||||
export let bilder: BildClient[] = [];
|
export let bilder: BildClient[] = [];
|
||||||
export let plaene: UnterlageClient[] = [];
|
export let plaene: Unterlage[] = [];
|
||||||
export let unterlagen: UnterlageClient[] = [];
|
export let unterlagen: Unterlage[] = [];
|
||||||
|
export let nachweistyp: Enums.AusweisTyp = Enums.AusweisTyp.Standard;
|
||||||
|
export let id: string | null;
|
||||||
|
|
||||||
if (Object.keys(nachweis).length === 0) {
|
if ((user && user.rolle !== Enums.BenutzerRolle.ADMIN) && !id && (!nachweis.updated_at || moment(localStorage.getItem("geg-nachweis-wohnen.updated_at") || new Date()).isAfter(nachweis.updated_at))) {
|
||||||
const localStorageAusweis = localStorage.getItem(
|
const localStorageNachweis = localStorage.getItem("geg-nachweis-wohnen.ausweis");
|
||||||
"geg-nachweis-wohnen.ausweis"
|
if (localStorageNachweis) {
|
||||||
);
|
nachweis = JSON.parse(localStorageNachweis)
|
||||||
if (localStorageAusweis) {
|
nachweis.nachweistyp = nachweistyp;
|
||||||
nachweis = JSON.parse(localStorageAusweis);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (Object.keys(aufnahme).length === 0) {
|
const localStorageAufnahme = localStorage.getItem("geg-nachweis-wohnen.aufnahme");
|
||||||
const localStorageAufnahme = localStorage.getItem(
|
|
||||||
"geg-nachweis-wohnen.aufnahme"
|
|
||||||
);
|
|
||||||
if (localStorageAufnahme) {
|
if (localStorageAufnahme) {
|
||||||
aufnahme = JSON.parse(localStorageAufnahme);
|
aufnahme = JSON.parse(localStorageAufnahme)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (Object.keys(objekt).length === 0) {
|
const localStorageObjekt = localStorage.getItem("geg-nachweis-wohnen.objekt");
|
||||||
const localStorageObjekt = localStorage.getItem(
|
|
||||||
"geg-nachweis-wohnen.objekt"
|
|
||||||
);
|
|
||||||
if (localStorageObjekt) {
|
if (localStorageObjekt) {
|
||||||
objekt = JSON.parse(localStorageObjekt);
|
objekt = JSON.parse(localStorageObjekt)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (Object.keys(bilder).length === 0) {
|
const localStorageBilder = localStorage.getItem("geg-nachweis-wohnen.bilder");
|
||||||
const localStorageBilder = localStorage.getItem(
|
|
||||||
"geg-nachweis-wohnen.bilder"
|
|
||||||
);
|
|
||||||
if (localStorageBilder) {
|
if (localStorageBilder) {
|
||||||
bilder = JSON.parse(localStorageBilder);
|
bilder = JSON.parse(localStorageBilder)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (Object.keys(unterlagen).length === 0) {
|
const localStorageUnterlagen = localStorage.getItem("geg-nachweis-wohnen.unterlagen");
|
||||||
const localStorageUnterlagen = localStorage.getItem(
|
|
||||||
"geg-nachweis-wohnen.unterlagen"
|
|
||||||
);
|
|
||||||
if (localStorageUnterlagen) {
|
if (localStorageUnterlagen) {
|
||||||
unterlagen = JSON.parse(localStorageUnterlagen);
|
unterlagen = JSON.parse(localStorageUnterlagen)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,6 +96,7 @@
|
|||||||
{ausweisart}
|
{ausweisart}
|
||||||
{anliegen}
|
{anliegen}
|
||||||
steps={["Gebäudedaten", "Kundendaten", "Anfragebestätigung"]}
|
steps={["Gebäudedaten", "Kundendaten", "Anfragebestätigung"]}
|
||||||
|
ausweistyp={nachweistyp}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -121,7 +108,7 @@
|
|||||||
<GEGAusweisart
|
<GEGAusweisart
|
||||||
bind:objekt
|
bind:objekt
|
||||||
bind:aufnahme
|
bind:aufnahme
|
||||||
bind:ausweis={nachweis}
|
bind:nachweis
|
||||||
{ausweisart}
|
{ausweisart}
|
||||||
/>
|
/>
|
||||||
</Bereich>
|
</Bereich>
|
||||||
|
|||||||
@@ -1,90 +1,88 @@
|
|||||||
---
|
---
|
||||||
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
|
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
|
||||||
import { AufnahmeClient, BildClient, GEGNachweisWohnenClient, ObjektClient, UnterlageClient } from "#components/Ausweis/types";
|
import VerbrauchsausweisWohnenModule from "#modules/VerbrauchsausweisWohnen/VerbrauchsausweisWohnenModule.svelte";
|
||||||
import { createCaller } from "src/astro-typesafe-api-caller";
|
import { AufnahmeClient, BildClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
import { Aufnahme, BedarfsausweisGewerbe, Bild, Enums, Objekt, Unterlage, VerbrauchsausweisWohnen } from "#lib/server/prisma";
|
||||||
import { validateAccessTokenServer } from "#server/lib/validateAccessToken.js";
|
import { getAufnahme, getBedarfsausweisGewerbe, getBilder, getObjekt, getUnterlagen, getVerbrauchsausweisWohnen } from "#lib/server/db";
|
||||||
|
import { getCurrentUser } from "#lib/server/user";
|
||||||
import BedarfsausweisGewerbeModule from "#modules/angebot-anfragen/BedarfsausweisGewerbeModule.svelte";
|
import BedarfsausweisGewerbeModule from "#modules/angebot-anfragen/BedarfsausweisGewerbeModule.svelte";
|
||||||
|
|
||||||
const uid = Astro.url.searchParams.get("uid");
|
const id = Astro.url.searchParams.get("id");
|
||||||
let nachweis: GEGNachweisWohnenClient = {} as GEGNachweisWohnenClient;
|
const aufnahme_id = Astro.url.searchParams.get("aufnahme")
|
||||||
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
|
let ausweistyp = Astro.url.searchParams.get("ausweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
|
||||||
let objekt: ObjektClient = {} as ObjektClient;
|
|
||||||
let bilder: BildClient[] = []
|
|
||||||
let unterlagen: UnterlageClient[] = []
|
|
||||||
|
|
||||||
const valid = validateAccessTokenServer(Astro);
|
let nachweis: BedarfsausweisGewerbe = {} as BedarfsausweisGewerbe;
|
||||||
|
let aufnahme: Aufnahme = {} as Aufnahme;
|
||||||
|
let objekt: Objekt = {} as Objekt;
|
||||||
|
let bilder: Bild[] = []
|
||||||
|
let unterlagen: Unterlage[] = []
|
||||||
|
|
||||||
const caller = createCaller(Astro);
|
const user = await getCurrentUser(Astro)
|
||||||
|
|
||||||
if (uid) {
|
if (id) {
|
||||||
if (!valid) {
|
if (!user) {
|
||||||
return Astro.redirect(
|
return Astro.redirect(
|
||||||
`/auth/login?redirect=${Astro.url.toString()}`
|
`/auth/login?redirect=${Astro.url.toString()}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
nachweis = await getBedarfsausweisGewerbe(id) as BedarfsausweisGewerbe
|
||||||
nachweis = await caller["bedarfsausweis-gewerbe"]._uid.GET.fetch(null, {
|
|
||||||
headers: {
|
|
||||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
},
|
|
||||||
params: {
|
|
||||||
uid
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
aufnahme = await caller.aufnahme._uid.GET.fetch(null, {
|
if (!nachweis || nachweis.benutzer_id !== user.id) {
|
||||||
headers: {
|
// Der Ausweis scheint nicht zu existieren.
|
||||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
// Wir leiten auf die generische Ausweisseite ohne ID weiter.
|
||||||
},
|
|
||||||
params: {
|
|
||||||
uid: nachweis.uid_aufnahme
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
objekt = await caller.objekt._uid.GET.fetch(null, {
|
|
||||||
headers: {
|
|
||||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
},
|
|
||||||
params: {
|
|
||||||
uid: nachweis.uid_objekt
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
bilder = await caller.aufnahme._uid.bilder.GET.fetch(null, {
|
|
||||||
headers: {
|
|
||||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
},
|
|
||||||
params: {
|
|
||||||
uid: nachweis.uid_aufnahme
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
unterlagen = await caller.aufnahme._uid.unterlagen.GET.fetch(null, {
|
|
||||||
headers: {
|
|
||||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
},
|
|
||||||
params: {
|
|
||||||
uid: nachweis.uid_aufnahme
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
if (!nachweis) {
|
|
||||||
// Der Ausweis scheint nicht zu existieren.
|
|
||||||
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
|
|
||||||
return Astro.redirect(
|
|
||||||
"/angebot-anfragen/bedarfsausweis-gewerbe-anfragen"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} catch(e) {
|
|
||||||
return Astro.redirect(
|
return Astro.redirect(
|
||||||
"/angebot-anfragen/bedarfsausweis-gewerbe-anfragen"
|
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
aufnahme = await getAufnahme(nachweis.aufnahme_id) as Aufnahme
|
||||||
|
|
||||||
|
if (!aufnahme) {
|
||||||
|
// Die Aufnahme existiert nicht, das sollte eigentlich nicht passieren aber so können wir nicht fortfahren.
|
||||||
|
return Astro.redirect(
|
||||||
|
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
objekt = await getObjekt(aufnahme.objekt_id) as Objekt
|
||||||
|
|
||||||
|
if (!objekt) {
|
||||||
|
// Das Objekt existiert nicht, das sollte eigentlich nicht passieren aber so können wir nicht fortfahren.
|
||||||
|
return Astro.redirect(
|
||||||
|
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
bilder = await getBilder(aufnahme.id);
|
||||||
|
unterlagen = await getUnterlagen(aufnahme.id);
|
||||||
|
} else if (aufnahme_id) {
|
||||||
|
if (!user) {
|
||||||
|
return Astro.redirect(
|
||||||
|
`/auth/login?redirect=${Astro.url.toString()}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
aufnahme = await getAufnahme(nachweis.aufnahme_id) as Aufnahme
|
||||||
|
|
||||||
|
if (!aufnahme) {
|
||||||
|
// Die Aufnahme existiert wohl nicht.
|
||||||
|
return Astro.redirect(
|
||||||
|
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
objekt = await getObjekt(aufnahme.objekt_id) as Objekt
|
||||||
|
|
||||||
|
if (!objekt) {
|
||||||
|
// Das Objekt existiert nicht.
|
||||||
|
return Astro.redirect(
|
||||||
|
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
---
|
---
|
||||||
|
|
||||||
<AusweisLayout title="Bedarfsausweis Gewerbe anfragen">
|
<AusweisLayout title="Bedarfsausweis Gewerbe anfragen">
|
||||||
<BedarfsausweisGewerbeModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} />
|
<BedarfsausweisGewerbeModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} {id} {ausweistyp} />
|
||||||
</AusweisLayout>
|
</AusweisLayout>
|
||||||
|
|||||||
@@ -1,90 +1,87 @@
|
|||||||
---
|
---
|
||||||
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
|
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
|
||||||
import { AufnahmeClient, BildClient, GEGNachweisWohnenClient, ObjektClient, UnterlageClient } from "#components/Ausweis/types";
|
|
||||||
import { createCaller } from "src/astro-typesafe-api-caller";
|
|
||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
|
||||||
import { validateAccessTokenServer } from "#server/lib/validateAccessToken.js";
|
|
||||||
import GEGNachweisWohnenModule from "#modules/angebot-anfragen/GEGNachweisWohnenModule.svelte";
|
import GEGNachweisWohnenModule from "#modules/angebot-anfragen/GEGNachweisWohnenModule.svelte";
|
||||||
|
import { getGEGNachweisWohnen, getAufnahme, getObjekt, getBilder } from "#lib/server/db";
|
||||||
|
import { Enums, Aufnahme, Objekt, Bild, GEGNachweisWohnen, Unterlage } from "#lib/server/prisma";
|
||||||
|
import { getCurrentUser } from "#lib/server/user";
|
||||||
|
import { getUnterlagen } from "#lib/server/db";
|
||||||
|
|
||||||
const uid = Astro.url.searchParams.get("uid");
|
const id = Astro.url.searchParams.get("id");
|
||||||
let nachweis: GEGNachweisWohnenClient = {} as GEGNachweisWohnenClient;
|
const aufnahme_id = Astro.url.searchParams.get("aufnahme")
|
||||||
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
|
let ausweistyp = Astro.url.searchParams.get("ausweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
|
||||||
let objekt: ObjektClient = {} as ObjektClient;
|
|
||||||
let bilder: BildClient[] = []
|
|
||||||
let unterlagen: UnterlageClient[] = []
|
|
||||||
|
|
||||||
const valid = validateAccessTokenServer(Astro);
|
let nachweis: GEGNachweisWohnen = {} as GEGNachweisWohnen;
|
||||||
|
let aufnahme: Aufnahme = {} as Aufnahme;
|
||||||
|
let objekt: Objekt = {} as Objekt;
|
||||||
|
let bilder: Bild[] = []
|
||||||
|
let unterlagen: Unterlage[] = []
|
||||||
|
|
||||||
const caller = createCaller(Astro);
|
const user = await getCurrentUser(Astro)
|
||||||
|
|
||||||
if (uid) {
|
if (id) {
|
||||||
if (!valid) {
|
if (!user) {
|
||||||
return Astro.redirect(
|
return Astro.redirect(
|
||||||
`/auth/login?redirect=${Astro.url.toString()}`
|
`/auth/login?redirect=${Astro.url.toString()}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
nachweis = await getGEGNachweisWohnen(id) as GEGNachweisWohnen
|
||||||
nachweis = await caller["geg-nachweis-wohnen"]._uid.GET.fetch(null, {
|
|
||||||
headers: {
|
|
||||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
},
|
|
||||||
params: {
|
|
||||||
uid
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
aufnahme = await caller.aufnahme._uid.GET.fetch(null, {
|
if (!nachweis || nachweis.benutzer_id !== user.id) {
|
||||||
headers: {
|
// Der Ausweis scheint nicht zu existieren.
|
||||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
// Wir leiten auf die generische Ausweisseite ohne ID weiter.
|
||||||
},
|
|
||||||
params: {
|
|
||||||
uid: nachweis.uid_aufnahme
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
objekt = await caller.objekt._uid.GET.fetch(null, {
|
|
||||||
headers: {
|
|
||||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
},
|
|
||||||
params: {
|
|
||||||
uid: nachweis.uid_objekt
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
bilder = await caller.aufnahme._uid.bilder.GET.fetch(null, {
|
|
||||||
headers: {
|
|
||||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
},
|
|
||||||
params: {
|
|
||||||
uid: nachweis.uid_aufnahme
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
unterlagen = await caller.aufnahme._uid.unterlagen.GET.fetch(null, {
|
|
||||||
headers: {
|
|
||||||
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
},
|
|
||||||
params: {
|
|
||||||
uid: nachweis.uid_aufnahme
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
if (!nachweis) {
|
|
||||||
// Der Ausweis scheint nicht zu existieren.
|
|
||||||
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
|
|
||||||
return Astro.redirect(
|
|
||||||
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} catch(e) {
|
|
||||||
return Astro.redirect(
|
return Astro.redirect(
|
||||||
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
|
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
aufnahme = await getAufnahme(nachweis.aufnahme_id) as Aufnahme
|
||||||
|
|
||||||
|
if (!aufnahme) {
|
||||||
|
// Die Aufnahme existiert nicht, das sollte eigentlich nicht passieren aber so können wir nicht fortfahren.
|
||||||
|
return Astro.redirect(
|
||||||
|
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
objekt = await getObjekt(aufnahme.objekt_id) as Objekt
|
||||||
|
|
||||||
|
if (!objekt) {
|
||||||
|
// Das Objekt existiert nicht, das sollte eigentlich nicht passieren aber so können wir nicht fortfahren.
|
||||||
|
return Astro.redirect(
|
||||||
|
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
bilder = await getBilder(aufnahme.id);
|
||||||
|
unterlagen = await getUnterlagen(aufnahme.id);
|
||||||
|
} else if (aufnahme_id) {
|
||||||
|
if (!user) {
|
||||||
|
return Astro.redirect(
|
||||||
|
`/auth/login?redirect=${Astro.url.toString()}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
aufnahme = await getAufnahme(nachweis.aufnahme_id) as Aufnahme
|
||||||
|
|
||||||
|
if (!aufnahme) {
|
||||||
|
// Die Aufnahme existiert wohl nicht.
|
||||||
|
return Astro.redirect(
|
||||||
|
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
objekt = await getObjekt(aufnahme.objekt_id) as Objekt
|
||||||
|
|
||||||
|
if (!objekt) {
|
||||||
|
// Das Objekt existiert nicht.
|
||||||
|
return Astro.redirect(
|
||||||
|
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
---
|
---
|
||||||
|
|
||||||
<AusweisLayout title="GEG Nachweis Wohnen anfragen">
|
<AusweisLayout title="GEG Nachweis Wohnen anfragen">
|
||||||
<GEGNachweisWohnenModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} />
|
<GEGNachweisWohnenModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} {id} />
|
||||||
</AusweisLayout>
|
</AusweisLayout>
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import { getAusweisartFromUUID } from "#components/Ausweis/types.js";
|
import { getAusweisartFromId } from "#components/Ausweis/types.js";
|
||||||
import { adminMiddleware } from "#lib/middleware/authorization.js";
|
import { adminMiddleware } from "#lib/middleware/authorization.js";
|
||||||
import { pdfDatenblattVerbrauchsausweisWohnen } from "#lib/pdf/pdfDatenblattVerbrauchsausweisWohnen.js";
|
import { Enums, prisma } from "#lib/server/prisma.js";
|
||||||
import { pdfVerbrauchsausweisWohnen } from "#lib/pdf/pdfVerbrauchsausweisWohnen.js";
|
|
||||||
import { Enums, prisma } from "#lib/server/prisma";
|
|
||||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||||
import { z } from "astro:content";
|
import { z } from "astro:content";
|
||||||
import { fileURLToPath } from "url";
|
import { fileURLToPath } from "url";
|
||||||
@@ -14,17 +12,17 @@ import { PERSISTENT_DIR } from "#lib/server/constants.js";
|
|||||||
|
|
||||||
export const GET = defineApiRoute({
|
export const GET = defineApiRoute({
|
||||||
input: z.object({
|
input: z.object({
|
||||||
uid_ausweis: z.string(),
|
id_ausweis: z.string(),
|
||||||
}),
|
}),
|
||||||
output: z.void(),
|
output: z.void(),
|
||||||
middleware: adminMiddleware,
|
middleware: adminMiddleware,
|
||||||
async fetch({ uid_ausweis }, context, user) {
|
async fetch({ id_ausweis }, context, user) {
|
||||||
const ausweisart = getAusweisartFromUUID(uid);
|
const ausweisart = getAusweisartFromId(id_ausweis);
|
||||||
|
|
||||||
if (ausweisart === "VerbrauchsausweisWohnen") {
|
if (ausweisart === "VerbrauchsausweisWohnen") {
|
||||||
const ausweis = await prisma.verbrauchsausweisWohnen.findUnique({
|
const ausweis = await prisma.verbrauchsausweisWohnen.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid: uid_ausweis,
|
id: id_ausweis
|
||||||
},
|
},
|
||||||
include: {
|
include: {
|
||||||
aufnahme: {
|
aufnahme: {
|
||||||
@@ -50,7 +48,7 @@ export const GET = defineApiRoute({
|
|||||||
const rechnung = await prisma.rechnung.findFirst({
|
const rechnung = await prisma.rechnung.findFirst({
|
||||||
where: {
|
where: {
|
||||||
verbrauchsausweis_wohnen: {
|
verbrauchsausweis_wohnen: {
|
||||||
uid: uid_ausweis
|
id: id_ausweis
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
orderBy: {
|
orderBy: {
|
||||||
@@ -100,7 +98,7 @@ export const GET = defineApiRoute({
|
|||||||
if (pdfAusweis) {
|
if (pdfAusweis) {
|
||||||
const pdfAusweisPath = fileURLToPath(
|
const pdfAusweisPath = fileURLToPath(
|
||||||
new URL(
|
new URL(
|
||||||
`${PERSISTENT_DIR}/generated/Ausweis-${ausweis.uid}.pdf`,
|
`${PERSISTENT_DIR}/generated/Ausweis-${ausweis.id}.pdf`,
|
||||||
import.meta.url
|
import.meta.url
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@@ -110,7 +108,7 @@ export const GET = defineApiRoute({
|
|||||||
if (pdfDatenblatt) {
|
if (pdfDatenblatt) {
|
||||||
const pdfDatenblattPath = fileURLToPath(
|
const pdfDatenblattPath = fileURLToPath(
|
||||||
new URL(
|
new URL(
|
||||||
`${PERSISTENT_DIR}/generated/Datenblatt-${ausweis.uid}.pdf`,
|
`${PERSISTENT_DIR}/generated/Datenblatt-${ausweis.id}.pdf`,
|
||||||
import.meta.url
|
import.meta.url
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@@ -160,7 +158,7 @@ fax 040 · 209339859
|
|||||||
<tr><td>IBAN</td><td>:<td>\t DE81 2004 0000 0348 6008 00</td>
|
<tr><td>IBAN</td><td>:<td>\t DE81 2004 0000 0348 6008 00</td>
|
||||||
<tr><td>BIC</td><td>:</td><td>\t COBADEFFXXX</td>
|
<tr><td>BIC</td><td>:</td><td>\t COBADEFFXXX</td>
|
||||||
<tr><td>Betrag</td><td>:</td><td>\t <b>${rechnung.betrag}€</b></td>
|
<tr><td>Betrag</td><td>:</td><td>\t <b>${rechnung.betrag}€</b></td>
|
||||||
<tr><td>Verwendungszweck</td><td>:</td><td>\t <b>${rechnung.uid}</b></td>
|
<tr><td>Verwendungszweck</td><td>:</td><td>\t <b>${rechnung.id}</b></td>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
@@ -170,11 +168,11 @@ Alternativ können Sie auch direkt online zahlen indem Sie auf den entsprechende
|
|||||||
<br>
|
<br>
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr><td>Per Einzuglastschrift zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.uid}&p=SEPA'>jetzt per ELV bezahlen</a></td></tr>
|
<tr><td>Per Einzuglastschrift zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.id}&p=SEPA'>jetzt per ELV bezahlen</a></td></tr>
|
||||||
<tr><td>Per Sofortüberweisung zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.uid}&p=Sofort'>jetzt per Sofortüberweisung bezahlen</a></td></tr>
|
<tr><td>Per Sofortüberweisung zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.id}&p=Sofort'>jetzt per Sofortüberweisung bezahlen</a></td></tr>
|
||||||
<tr><td>Über PayPal zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.uid}&p=PayPal'>jetzt per Paypal bezahlen</a></td></tr>
|
<tr><td>Über PayPal zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.id}&p=PayPal'>jetzt per Paypal bezahlen</a></td></tr>
|
||||||
<tr><td>Per Giropay zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.uid}&p=Giropay'>jetzt per Giropay bezahlen</a></td></tr>
|
<tr><td>Per Giropay zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.id}&p=Giropay'>jetzt per Giropay bezahlen</a></td></tr>
|
||||||
<tr><td>Per Visa oder MasterCard zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.uid}&p=Kreditkarte'>jetzt per Kreditkarte bezahlen</a></td></tr>
|
<tr><td>Per Visa oder MasterCard zahlen</td> <td>:</td> <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.id}&p=Kreditkarte'>jetzt per Kreditkarte bezahlen</a></td></tr>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
@@ -204,7 +202,7 @@ fax 040 · 209339859
|
|||||||
await transport.sendMail({
|
await transport.sendMail({
|
||||||
from: `"IBCornelsen" <info@online-energieausweis.org>`,
|
from: `"IBCornelsen" <info@online-energieausweis.org>`,
|
||||||
to: user.email,
|
to: user.email,
|
||||||
subject: `Ihr Originalausweis vom Ingenieurbüro Cornelsen (ID: ${ausweis.uid})`,
|
subject: `Ihr Originalausweis vom Ingenieurbüro Cornelsen (ID: ${ausweis.id})`,
|
||||||
text,
|
text,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import {
|
import {
|
||||||
getAusweisartFromUUID,
|
getAusweisartFromId,
|
||||||
UUidWithPrefix,
|
UUidWithPrefix,
|
||||||
} from "#components/Ausweis/types.js";
|
} from "#components/Ausweis/types.js";
|
||||||
import {
|
import {
|
||||||
@@ -26,7 +26,7 @@ export const GET = defineApiRoute({
|
|||||||
headers: authorizationHeaders,
|
headers: authorizationHeaders,
|
||||||
middleware: adminMiddleware,
|
middleware: adminMiddleware,
|
||||||
async fetch({ uid }, context, user) {
|
async fetch({ uid }, context, user) {
|
||||||
const ausweisart = getAusweisartFromUUID(uid);
|
const ausweisart = getAusweisartFromId(uid);
|
||||||
const adapter = getPrismaAusweisAdapter(
|
const adapter = getPrismaAusweisAdapter(
|
||||||
uid
|
uid
|
||||||
) as typeof prisma.verbrauchsausweisWohnen;
|
) as typeof prisma.verbrauchsausweisWohnen;
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
import { UUidWithPrefix } from "#components/Ausweis/types.js";
|
import { UUidWithPrefix } from "#components/Ausweis/types.js";
|
||||||
|
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||||
|
import { generatePrefixedId } from "#lib/db.js";
|
||||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||||
import { prisma } from "#lib/server/prisma.js";
|
import { prisma } from "#lib/server/prisma.js";
|
||||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||||
@@ -16,24 +18,25 @@ export const PUT = defineApiRoute({
|
|||||||
nachweis: GEGNachweisGewerbeSchema.omit({
|
nachweis: GEGNachweisGewerbeSchema.omit({
|
||||||
id: true,
|
id: true,
|
||||||
benutzer_id: true,
|
benutzer_id: true,
|
||||||
uid: true,
|
|
||||||
aufnahme_id: true,
|
aufnahme_id: true,
|
||||||
|
created_at: true,
|
||||||
|
updated_at: true,
|
||||||
geg_einpreisung_id: true,
|
geg_einpreisung_id: true,
|
||||||
rechnung_id: true
|
rechnung_id: true
|
||||||
}),
|
}),
|
||||||
uid_aufnahme: UUidWithPrefix
|
aufnahme_id: UUidWithPrefix
|
||||||
}),
|
}),
|
||||||
output: z.object({
|
output: z.object({
|
||||||
uid: UUidWithPrefix,
|
id: UUidWithPrefix,
|
||||||
objekt_uid: UUidWithPrefix,
|
objekt_id: UUidWithPrefix,
|
||||||
aufnahme_uid: UUidWithPrefix,
|
aufnahme_id: UUidWithPrefix,
|
||||||
}),
|
}),
|
||||||
headers: authorizationHeaders,
|
headers: authorizationHeaders,
|
||||||
middleware: authorizationMiddleware,
|
middleware: authorizationMiddleware,
|
||||||
async fetch(input, ctx, user) {
|
async fetch(input, ctx, user) {
|
||||||
const aufnahme = await prisma.aufnahme.findUnique({
|
const aufnahme = await prisma.aufnahme.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid: input.uid_aufnahme
|
id: input.aufnahme_id
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -44,8 +47,11 @@ export const PUT = defineApiRoute({
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.GEGNachweisGewerbe)
|
||||||
|
|
||||||
const nachweis = await prisma.gEGNachweisGewerbe.create({
|
const nachweis = await prisma.gEGNachweisGewerbe.create({
|
||||||
data: {
|
data: {
|
||||||
|
id,
|
||||||
...input.nachweis,
|
...input.nachweis,
|
||||||
benutzer: {
|
benutzer: {
|
||||||
connect: {
|
connect: {
|
||||||
@@ -59,13 +65,13 @@ export const PUT = defineApiRoute({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
select: {
|
select: {
|
||||||
uid: true,
|
id: true,
|
||||||
aufnahme: {
|
aufnahme: {
|
||||||
select: {
|
select: {
|
||||||
uid: true,
|
id: true,
|
||||||
objekt: {
|
objekt: {
|
||||||
select: {
|
select: {
|
||||||
uid: true,
|
id: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -74,9 +80,9 @@ export const PUT = defineApiRoute({
|
|||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
uid: nachweis.uid,
|
id: nachweis.id,
|
||||||
objekt_uid: nachweis.aufnahme.objekt.uid,
|
objekt_id: nachweis.aufnahme.objekt.id,
|
||||||
aufnahme_uid: nachweis.aufnahme.uid,
|
aufnahme_id: nachweis.aufnahme.id,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -101,11 +107,11 @@ export const GET = defineApiRoute({
|
|||||||
headers: authorizationHeaders,
|
headers: authorizationHeaders,
|
||||||
middleware: authorizationMiddleware,
|
middleware: authorizationMiddleware,
|
||||||
async fetch(input, context, user) {
|
async fetch(input, context, user) {
|
||||||
const { uid } = context.params;
|
const { id } = context.params;
|
||||||
|
|
||||||
const nachweis = await prisma.gEGNachweisGewerbe.findUnique({
|
const nachweis = await prisma.gEGNachweisGewerbe.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid,
|
id,
|
||||||
},
|
},
|
||||||
include: {
|
include: {
|
||||||
benutzer: true,
|
benutzer: true,
|
||||||
@@ -115,7 +121,7 @@ export const GET = defineApiRoute({
|
|||||||
include: {
|
include: {
|
||||||
benutzer: {
|
benutzer: {
|
||||||
select: {
|
select: {
|
||||||
uid: true,
|
id: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
import { GEGNachweisWohnenClient, OptionalNullable, UUidWithPrefix, ZodOverlap } from "#components/Ausweis/types.js";
|
import { UUidWithPrefix } from "#components/Ausweis/types.js";
|
||||||
|
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||||
|
import { generatePrefixedId } from "#lib/db.js";
|
||||||
import { exclude } from "#lib/exclude.js";
|
import { exclude } from "#lib/exclude.js";
|
||||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||||
import { GEGNachweisWohnenSchema, prisma } from "#lib/server/prisma";
|
import { prisma } from "#lib/server/prisma.js";
|
||||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||||
|
import { GEGNachweisWohnenSchema } from "src/generated/zod/gegnachweiswohnen.js";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
|
|
||||||
export const PATCH = defineApiRoute({
|
export const PATCH = defineApiRoute({
|
||||||
input: GEGNachweisWohnenSchema.omit({
|
input: GEGNachweisWohnenSchema.omit({
|
||||||
uid: true,
|
|
||||||
id: true,
|
id: true,
|
||||||
benutzer_id: true,
|
benutzer_id: true,
|
||||||
geg_einpreisung_id: true,
|
geg_einpreisung_id: true,
|
||||||
@@ -21,7 +23,7 @@ export const PATCH = defineApiRoute({
|
|||||||
async fetch(input, ctx, user) {
|
async fetch(input, ctx, user) {
|
||||||
const objekt = await prisma.gEGNachweisWohnen.findUnique({
|
const objekt = await prisma.gEGNachweisWohnen.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid: ctx.params.uid,
|
id: ctx.params.id,
|
||||||
benutzer: {
|
benutzer: {
|
||||||
id: user.id
|
id: user.id
|
||||||
}
|
}
|
||||||
@@ -37,7 +39,7 @@ export const PATCH = defineApiRoute({
|
|||||||
|
|
||||||
await prisma.gEGNachweisWohnen.update({
|
await prisma.gEGNachweisWohnen.update({
|
||||||
where: {
|
where: {
|
||||||
uid: ctx.params.uid
|
id: ctx.params.id
|
||||||
},
|
},
|
||||||
data: input
|
data: input
|
||||||
})
|
})
|
||||||
@@ -51,9 +53,9 @@ export const DELETE = defineApiRoute({
|
|||||||
headers: authorizationHeaders,
|
headers: authorizationHeaders,
|
||||||
middleware: authorizationMiddleware,
|
middleware: authorizationMiddleware,
|
||||||
async fetch(input, ctx, user) {
|
async fetch(input, ctx, user) {
|
||||||
const { uid } = ctx.params;
|
const { id } = ctx.params;
|
||||||
|
|
||||||
if (!UUidWithPrefix.safeParse(uid).success) {
|
if (!UUidWithPrefix.safeParse(id).success) {
|
||||||
throw new APIError({
|
throw new APIError({
|
||||||
code: "BAD_REQUEST",
|
code: "BAD_REQUEST",
|
||||||
message: "UID konnte nicht verifiziert werden."
|
message: "UID konnte nicht verifiziert werden."
|
||||||
@@ -64,7 +66,7 @@ export const DELETE = defineApiRoute({
|
|||||||
// Dieser MUSS mit dem Nutzer verknüpft sein.
|
// Dieser MUSS mit dem Nutzer verknüpft sein.
|
||||||
const nachweis = await prisma.gEGNachweisWohnen.findUnique({
|
const nachweis = await prisma.gEGNachweisWohnen.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid,
|
id,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -111,10 +113,13 @@ export const DELETE = defineApiRoute({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const event_id =
|
||||||
|
|
||||||
// Wir erstellen ein Event, dass der Nachweis storniert wurde
|
// Wir erstellen ein Event, dass der Nachweis storniert wurde
|
||||||
// Dann können wir das in der Historie anzeigen
|
// Dann können wir das in der Historie anzeigen
|
||||||
await prisma.event.create({
|
await prisma.event.create({
|
||||||
data: {
|
data: {
|
||||||
|
id: generatePrefixedId(6, VALID_UUID_PREFIXES.Event),
|
||||||
title: "Nachweis storniert",
|
title: "Nachweis storniert",
|
||||||
description: ((user.rolle === "ADMIN") && (nachweis.benutzer_id !== user.id)) ? "Nachweis wurde von einem Administrator storniert." : "Nachweis wurde vom Besitzer storniert.",
|
description: ((user.rolle === "ADMIN") && (nachweis.benutzer_id !== user.id)) ? "Nachweis wurde von einem Administrator storniert." : "Nachweis wurde vom Besitzer storniert.",
|
||||||
benutzer: {
|
benutzer: {
|
||||||
@@ -150,9 +155,9 @@ export const GET = defineApiRoute({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
output: GEGNachweisWohnenSchema.merge(z.object({
|
output: GEGNachweisWohnenSchema.merge(z.object({
|
||||||
uid_aufnahme: UUidWithPrefix,
|
aufnahme_id: UUidWithPrefix,
|
||||||
uid_objekt: UUidWithPrefix,
|
objekt_id: UUidWithPrefix,
|
||||||
uid_benutzer: UUidWithPrefix.optional()
|
benutzer_id: UUidWithPrefix.optional()
|
||||||
})).omit({
|
})).omit({
|
||||||
id: true,
|
id: true,
|
||||||
aufnahme_id: true,
|
aufnahme_id: true,
|
||||||
@@ -160,32 +165,32 @@ export const GET = defineApiRoute({
|
|||||||
}),
|
}),
|
||||||
middleware: authorizationMiddleware,
|
middleware: authorizationMiddleware,
|
||||||
async fetch(input, context, user) {
|
async fetch(input, context, user) {
|
||||||
const { uid } = context.params;
|
const { id } = context.params;
|
||||||
|
|
||||||
if (!uid) {
|
if (!id) {
|
||||||
throw new APIError({
|
throw new APIError({
|
||||||
code: "BAD_REQUEST",
|
code: "BAD_REQUEST",
|
||||||
message: "Missing uid in request params"
|
message: "Missing uid in request params"
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const Nachweis = await prisma.gEGNachweisWohnen.findUnique({
|
const nachweis = await prisma.gEGNachweisWohnen.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid,
|
id,
|
||||||
benutzer_id: user.id
|
benutzer_id: user.id
|
||||||
},
|
},
|
||||||
include: {
|
include: {
|
||||||
benutzer: {
|
benutzer: {
|
||||||
select: {
|
select: {
|
||||||
uid: true
|
id: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
aufnahme: {
|
aufnahme: {
|
||||||
select: {
|
select: {
|
||||||
uid: true,
|
id: true,
|
||||||
objekt: {
|
objekt: {
|
||||||
select: {
|
select: {
|
||||||
uid: true
|
id: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -193,7 +198,7 @@ export const GET = defineApiRoute({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!Nachweis) {
|
if (!nachweis) {
|
||||||
// Falls wir den Nachweis nicht finden können, werfen wir einen Fehler
|
// Falls wir den Nachweis nicht finden können, werfen wir einen Fehler
|
||||||
throw new APIError({
|
throw new APIError({
|
||||||
code: "NOT_FOUND",
|
code: "NOT_FOUND",
|
||||||
@@ -202,10 +207,10 @@ export const GET = defineApiRoute({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
uid_aufnahme: Nachweis.aufnahme.uid,
|
aufnahme_id: nachweis.aufnahme.id,
|
||||||
uid_objekt: Nachweis.aufnahme.objekt.uid,
|
objekt_id: nachweis.aufnahme.objekt.id,
|
||||||
uid_benutzer: Nachweis.benutzer?.uid,
|
benutzer_id: nachweis.benutzer?.id,
|
||||||
...exclude(Nachweis, ["id", "aufnahme_id", "benutzer_id", "aufnahme"])
|
...exclude(nachweis, ["id", "aufnahme_id", "benutzer_id", "aufnahme"])
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
import { UUidWithPrefix } from "#components/Ausweis/types.js";
|
import { UUidWithPrefix } from "#components/Ausweis/types.js";
|
||||||
|
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||||
|
import { generatePrefixedId } from "#lib/db.js";
|
||||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||||
import { prisma } from "#lib/server/prisma.js";
|
import { prisma } from "#lib/server/prisma.js";
|
||||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||||
@@ -16,24 +18,25 @@ export const PUT = defineApiRoute({
|
|||||||
nachweis: GEGNachweisWohnenSchema.omit({
|
nachweis: GEGNachweisWohnenSchema.omit({
|
||||||
id: true,
|
id: true,
|
||||||
benutzer_id: true,
|
benutzer_id: true,
|
||||||
uid: true,
|
|
||||||
aufnahme_id: true,
|
aufnahme_id: true,
|
||||||
|
updated_at: true,
|
||||||
|
created_at: true,
|
||||||
geg_einpreisung_id: true,
|
geg_einpreisung_id: true,
|
||||||
rechnung_id: true
|
rechnung_id: true
|
||||||
}),
|
}),
|
||||||
uid_aufnahme: UUidWithPrefix
|
aufnahme_id: UUidWithPrefix
|
||||||
}),
|
}),
|
||||||
output: z.object({
|
output: z.object({
|
||||||
uid: UUidWithPrefix,
|
id: UUidWithPrefix,
|
||||||
objekt_uid: UUidWithPrefix,
|
objekt_id: UUidWithPrefix,
|
||||||
aufnahme_uid: UUidWithPrefix,
|
aufnahme_id: UUidWithPrefix,
|
||||||
}),
|
}),
|
||||||
headers: authorizationHeaders,
|
headers: authorizationHeaders,
|
||||||
middleware: authorizationMiddleware,
|
middleware: authorizationMiddleware,
|
||||||
async fetch(input, ctx, user) {
|
async fetch(input, ctx, user) {
|
||||||
const aufnahme = await prisma.aufnahme.findUnique({
|
const aufnahme = await prisma.aufnahme.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid: input.uid_aufnahme
|
id: input.aufnahme_id
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -44,8 +47,11 @@ export const PUT = defineApiRoute({
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.GEGNachweisWohnen)
|
||||||
|
|
||||||
const nachweis = await prisma.gEGNachweisWohnen.create({
|
const nachweis = await prisma.gEGNachweisWohnen.create({
|
||||||
data: {
|
data: {
|
||||||
|
id,
|
||||||
...input.nachweis,
|
...input.nachweis,
|
||||||
benutzer: {
|
benutzer: {
|
||||||
connect: {
|
connect: {
|
||||||
@@ -59,13 +65,13 @@ export const PUT = defineApiRoute({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
select: {
|
select: {
|
||||||
uid: true,
|
id: true,
|
||||||
aufnahme: {
|
aufnahme: {
|
||||||
select: {
|
select: {
|
||||||
uid: true,
|
id: true,
|
||||||
objekt: {
|
objekt: {
|
||||||
select: {
|
select: {
|
||||||
uid: true,
|
id: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -74,9 +80,9 @@ export const PUT = defineApiRoute({
|
|||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
uid: nachweis.uid,
|
id: nachweis.id,
|
||||||
objekt_uid: nachweis.aufnahme.objekt.uid,
|
objekt_id: nachweis.aufnahme.objekt.id,
|
||||||
aufnahme_uid: nachweis.aufnahme.uid,
|
aufnahme_id: nachweis.aufnahme.id,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -101,11 +107,11 @@ export const GET = defineApiRoute({
|
|||||||
headers: authorizationHeaders,
|
headers: authorizationHeaders,
|
||||||
middleware: authorizationMiddleware,
|
middleware: authorizationMiddleware,
|
||||||
async fetch(input, context, user) {
|
async fetch(input, context, user) {
|
||||||
const { uid } = context.params;
|
const { id } = context.params;
|
||||||
|
|
||||||
const nachweis = await prisma.gEGNachweisGewerbe.findUnique({
|
const nachweis = await prisma.gEGNachweisGewerbe.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid,
|
id,
|
||||||
},
|
},
|
||||||
include: {
|
include: {
|
||||||
benutzer: true,
|
benutzer: true,
|
||||||
@@ -115,7 +121,7 @@ export const GET = defineApiRoute({
|
|||||||
include: {
|
include: {
|
||||||
benutzer: {
|
benutzer: {
|
||||||
select: {
|
select: {
|
||||||
uid: true,
|
id: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { UUidWithPrefix, getAusweisartFromUUID } from "#components/Ausweis/types.js"
|
import { UUidWithPrefix, getAusweisartFromId } from "#components/Ausweis/types.js"
|
||||||
import { Enums } from "#lib/client/prisma.js"
|
import { Enums } from "#lib/client/prisma.js"
|
||||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js"
|
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js"
|
||||||
import { mollieClient } from "#lib/mollie.js"
|
import { mollieClient } from "#lib/mollie.js"
|
||||||
@@ -88,7 +88,7 @@ export const PATCH = defineApiRoute({
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const ausweisart = getAusweisartFromUUID(ausweis.id)
|
const ausweisart = getAusweisartFromId(ausweis.id)
|
||||||
|
|
||||||
if (!ausweisart) {
|
if (!ausweisart) {
|
||||||
throw new APIError({
|
throw new APIError({
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
import { getAusweisartFromUUID, UUidWithPrefix } from "#components/Ausweis/types.js";
|
import { getAusweisartFromId, UUidWithPrefix } from "#components/Ausweis/types.js";
|
||||||
|
import { VALID_UUID_PREFIXES } from "#lib/constants.js";
|
||||||
|
import { generatePrefixedId } from "#lib/db.js";
|
||||||
import { omit } from "#lib/helpers.js";
|
import { omit } from "#lib/helpers.js";
|
||||||
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
|
||||||
import { sendGEGAnforderungsMail } from "#lib/server/mail/geg-anfordern.js";
|
import { sendGEGAnforderungsMail } from "#lib/server/mail/geg-anfordern.js";
|
||||||
import { Enums, GEGNachweisGewerbe, GEGNachweisWohnen, prisma } from "#lib/server/prisma.js";
|
import { BedarfsausweisGewerbe, Enums, GEGNachweisGewerbe, GEGNachweisWohnen, prisma } from "#lib/server/prisma.js";
|
||||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||||
import { GEGEinpreisungSchema } from "src/generated/zod/gegeinpreisung.js";
|
import { GEGEinpreisungSchema } from "src/generated/zod/gegeinpreisung.js";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
@@ -11,34 +13,33 @@ export const PUT = defineApiRoute({
|
|||||||
input: GEGEinpreisungSchema.omit({
|
input: GEGEinpreisungSchema.omit({
|
||||||
benutzer_id: true,
|
benutzer_id: true,
|
||||||
id: true,
|
id: true,
|
||||||
uid: true,
|
|
||||||
status: true,
|
status: true,
|
||||||
}).merge(z.object({
|
}).merge(z.object({
|
||||||
nachweis_uid: UUidWithPrefix
|
nachweis_id: UUidWithPrefix
|
||||||
})),
|
})),
|
||||||
headers: authorizationHeaders,
|
headers: authorizationHeaders,
|
||||||
middleware: authorizationMiddleware,
|
middleware: authorizationMiddleware,
|
||||||
async fetch(input, context, user) {
|
async fetch(input, context, user) {
|
||||||
const ausweisart = getAusweisartFromUUID(input.nachweis_uid);
|
const ausweisart = getAusweisartFromId(input.nachweis_id);
|
||||||
|
|
||||||
let einpreisung;
|
let einpreisung;
|
||||||
let nachweis: GEGNachweisWohnen | GEGNachweisGewerbe;
|
let nachweis: GEGNachweisWohnen | GEGNachweisGewerbe | BedarfsausweisGewerbe;
|
||||||
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) {
|
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) {
|
||||||
nachweis = await prisma.gEGNachweisWohnen.findUnique({
|
nachweis = await prisma.gEGNachweisWohnen.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid: input.nachweis_uid
|
id: input.nachweis_id
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) {
|
} else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) {
|
||||||
nachweis = await prisma.gEGNachweisGewerbe.findUnique({
|
nachweis = await prisma.gEGNachweisGewerbe.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid: input.nachweis_uid
|
id: input.nachweis_id
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) {
|
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) {
|
||||||
nachweis = await prisma.bedarfsausweisGewerbe.findUnique({
|
nachweis = await prisma.bedarfsausweisGewerbe.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid: input.nachweis_uid
|
id: input.nachweis_id
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
@@ -56,10 +57,13 @@ export const PUT = defineApiRoute({
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.GEGEinpreisung)
|
||||||
|
|
||||||
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) {
|
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) {
|
||||||
einpreisung = await prisma.gEGEinpreisung.create({
|
einpreisung = await prisma.gEGEinpreisung.create({
|
||||||
data: {
|
data: {
|
||||||
...omit(input, ["nachweis_uid"]),
|
id,
|
||||||
|
...omit(input, ["nachweis_id"]),
|
||||||
status: Enums.Einpreisungsstatus.open,
|
status: Enums.Einpreisungsstatus.open,
|
||||||
benutzer: {
|
benutzer: {
|
||||||
connect: {
|
connect: {
|
||||||
@@ -68,7 +72,7 @@ export const PUT = defineApiRoute({
|
|||||||
},
|
},
|
||||||
geg_nachweis_wohnen: {
|
geg_nachweis_wohnen: {
|
||||||
connect: {
|
connect: {
|
||||||
uid: input.nachweis_uid
|
id: input.nachweis_id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -76,7 +80,8 @@ export const PUT = defineApiRoute({
|
|||||||
} else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) {
|
} else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) {
|
||||||
einpreisung = await prisma.gEGEinpreisung.create({
|
einpreisung = await prisma.gEGEinpreisung.create({
|
||||||
data: {
|
data: {
|
||||||
...omit(input, ["nachweis_uid"]),
|
id,
|
||||||
|
...omit(input, ["nachweis_id"]),
|
||||||
status: Enums.Einpreisungsstatus.open,
|
status: Enums.Einpreisungsstatus.open,
|
||||||
benutzer: {
|
benutzer: {
|
||||||
connect: {
|
connect: {
|
||||||
@@ -85,7 +90,7 @@ export const PUT = defineApiRoute({
|
|||||||
},
|
},
|
||||||
geg_nachweis_gewerbe: {
|
geg_nachweis_gewerbe: {
|
||||||
connect: {
|
connect: {
|
||||||
uid: input.nachweis_uid
|
id: input.nachweis_id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -93,7 +98,8 @@ export const PUT = defineApiRoute({
|
|||||||
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) {
|
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) {
|
||||||
einpreisung = await prisma.gEGEinpreisung.create({
|
einpreisung = await prisma.gEGEinpreisung.create({
|
||||||
data: {
|
data: {
|
||||||
...omit(input, ["nachweis_uid"]),
|
id,
|
||||||
|
...omit(input, ["nachweis_id"]),
|
||||||
status: Enums.Einpreisungsstatus.open,
|
status: Enums.Einpreisungsstatus.open,
|
||||||
benutzer: {
|
benutzer: {
|
||||||
connect: {
|
connect: {
|
||||||
@@ -102,7 +108,7 @@ export const PUT = defineApiRoute({
|
|||||||
},
|
},
|
||||||
bedarfsausweis_gewerbe: {
|
bedarfsausweis_gewerbe: {
|
||||||
connect: {
|
connect: {
|
||||||
uid: input.nachweis_uid
|
id: input.nachweis_id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -112,7 +118,7 @@ export const PUT = defineApiRoute({
|
|||||||
await sendGEGAnforderungsMail(nachweis, user)
|
await sendGEGAnforderungsMail(nachweis, user)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
uid: einpreisung.uid
|
id
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
---
|
---
|
||||||
return Astro.redirect("/dashboard/objekte/1", 301);
|
return Astro.redirect("/dashboard/objekte/1", 301);
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<script></script>
|
||||||
@@ -3,19 +3,19 @@ import Layout from "#layouts/Layout.astro";
|
|||||||
import { getCurrentUser } from "#lib/server/user";
|
import { getCurrentUser } from "#lib/server/user";
|
||||||
import { prisma } from "#lib/server/prisma";
|
import { prisma } from "#lib/server/prisma";
|
||||||
|
|
||||||
const uidEinpreisung = Astro.url.searchParams.get("e");
|
const einpreisung_id = Astro.url.searchParams.get("e");
|
||||||
const uidAusweis = Astro.url.searchParams.get("a");
|
const ausweis_id = Astro.url.searchParams.get("a");
|
||||||
const user = await getCurrentUser(Astro)
|
const user = await getCurrentUser(Astro)
|
||||||
|
|
||||||
if (!uidEinpreisung || !uidAusweis || !user) {
|
if (!einpreisung_id || !ausweis_id || !user) {
|
||||||
return Astro.redirect("/")
|
return Astro.redirect("/")
|
||||||
}
|
}
|
||||||
|
|
||||||
const einpreisung = await prisma.gEGEinpreisung.findUnique({
|
const einpreisung = await prisma.gEGEinpreisung.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid: uidEinpreisung,
|
id: einpreisung_id,
|
||||||
benutzer: {
|
benutzer: {
|
||||||
uid: user.uid
|
id: user.id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
import { getAusweisartFromUUID } from "#components/Ausweis/types";
|
import { getAusweisartFromId } from "#components/Ausweis/types";
|
||||||
import AusweisLayoutPruefung from "#layouts/AusweisLayoutPruefung.astro";
|
import AusweisLayoutPruefung from "#layouts/AusweisLayoutPruefung.astro";
|
||||||
import { getPrismaAusweisAdapter } from "#lib/server/ausweis";
|
import { getPrismaAusweisAdapter } from "#lib/server/ausweis";
|
||||||
import { Enums } from "#lib/server/prisma";
|
import { Enums } from "#lib/server/prisma";
|
||||||
@@ -16,7 +16,7 @@ if (!uid) {
|
|||||||
|
|
||||||
const user = await getCurrentUser(Astro)
|
const user = await getCurrentUser(Astro)
|
||||||
const adapter = getPrismaAusweisAdapter(uid)
|
const adapter = getPrismaAusweisAdapter(uid)
|
||||||
const ausweisart = getAusweisartFromUUID(uid)
|
const ausweisart = getAusweisartFromId(uid)
|
||||||
|
|
||||||
if (!user || !adapter || !ausweisart) {
|
if (!user || !adapter || !ausweisart) {
|
||||||
return Astro.redirect("/404")
|
return Astro.redirect("/404")
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { AufnahmeClient, BenutzerClient, getAusweisartFromUUID, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
import { AufnahmeClient, BenutzerClient, getAusweisartFromId, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
import { pdfVerbrauchsausweisGewerbe } from "#lib/pdf/pdfVerbrauchsausweisGewerbe.js";
|
import { pdfVerbrauchsausweisGewerbe } from "#lib/pdf/pdfVerbrauchsausweisGewerbe.js";
|
||||||
import { pdfVerbrauchsausweisWohnen } from "#lib/pdf/pdfVerbrauchsausweisWohnen.js";
|
import { pdfVerbrauchsausweisWohnen } from "#lib/pdf/pdfVerbrauchsausweisWohnen.js";
|
||||||
@@ -6,17 +6,17 @@ import { Enums } from "#lib/client/prisma.js";
|
|||||||
import { APIRoute } from "astro";
|
import { APIRoute } from "astro";
|
||||||
import { createCaller } from "src/astro-typesafe-api-caller.js";
|
import { createCaller } from "src/astro-typesafe-api-caller.js";
|
||||||
import { getS3File } from "#lib/s3.js";
|
import { getS3File } from "#lib/s3.js";
|
||||||
|
import { getVerbrauchsausweisWohnen, getVerbrauchsausweisGewerbe, getAufnahme, getObjekt, getBilder } from "#lib/server/db.js";
|
||||||
|
import { getCurrentUser } from "#lib/server/user.js";
|
||||||
|
|
||||||
export const GET: APIRoute = async (Astro) => {
|
export const GET: APIRoute = async (Astro) => {
|
||||||
const ausweis_id = Astro.url.searchParams.get("uid");
|
const ausweis_id = Astro.url.searchParams.get("id");
|
||||||
|
|
||||||
if (!ausweis_id) {
|
if (!ausweis_id) {
|
||||||
return new Response(null, { status: 404 });
|
return new Response(null, { status: 404 });
|
||||||
}
|
}
|
||||||
|
|
||||||
const ausweisart = getAusweisartFromUUID(ausweis_id)
|
const ausweisart = getAusweisartFromId(ausweis_id)
|
||||||
|
|
||||||
const caller = createCaller(Astro);
|
|
||||||
|
|
||||||
let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | null = null;
|
let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | null = null;
|
||||||
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
|
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
|
||||||
@@ -25,23 +25,9 @@ export const GET: APIRoute = async (Astro) => {
|
|||||||
let bilder: UploadedGebaeudeBild[] = []
|
let bilder: UploadedGebaeudeBild[] = []
|
||||||
|
|
||||||
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||||
ausweis = await caller["verbrauchsausweis-wohnen"]._id.GET.fetch(undefined, {
|
ausweis = await getVerbrauchsausweisWohnen(ausweis_id)
|
||||||
params: {
|
|
||||||
id: ausweis_id
|
|
||||||
},
|
|
||||||
headers: {
|
|
||||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
||||||
ausweis = await caller["verbrauchsausweis-gewerbe"]._id.GET.fetch(undefined, {
|
ausweis = await getVerbrauchsausweisGewerbe(ausweis_id)
|
||||||
params: {
|
|
||||||
id: ausweis_id
|
|
||||||
},
|
|
||||||
headers: {
|
|
||||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -49,29 +35,13 @@ export const GET: APIRoute = async (Astro) => {
|
|||||||
return new Response(null, { status: 404 });
|
return new Response(null, { status: 404 });
|
||||||
}
|
}
|
||||||
|
|
||||||
aufnahme = await caller.aufnahme._id.GET.fetch(undefined, {
|
aufnahme = await getAufnahme(ausweis.aufnahme_id)
|
||||||
params: {
|
|
||||||
id: ausweis.aufnahme_id
|
|
||||||
},
|
|
||||||
headers: {
|
|
||||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
objekt = await caller.objekt._id.GET.fetch(undefined, {
|
objekt = await getObjekt(aufnahme.objekt_id)
|
||||||
params: {
|
|
||||||
id: ausweis.objekt_id
|
|
||||||
},
|
|
||||||
headers: {
|
|
||||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
user = await caller.user.self.GET.fetch(undefined, {
|
bilder = await getBilder(ausweis.aufnahme_id)
|
||||||
headers: {
|
|
||||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
user = await getCurrentUser(Astro)
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let pdf: Uint8Array<ArrayBufferLike> | null = null;
|
let pdf: Uint8Array<ArrayBufferLike> | null = null;
|
||||||
if (ausweis.alte_ausweis_id) {
|
if (ausweis.alte_ausweis_id) {
|
||||||
|
|||||||
@@ -1,49 +1,33 @@
|
|||||||
import { AufnahmeClient, BenutzerClient, getAusweisartFromUUID, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
import { BenutzerClient, getAusweisartFromId, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types.js";
|
||||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||||
import { pdfDatenblattVerbrauchsausweisGewerbe } from "#lib/pdf/pdfDatenblattVerbrauchsausweisGewerbe.js";
|
import { pdfDatenblattVerbrauchsausweisGewerbe } from "#lib/pdf/pdfDatenblattVerbrauchsausweisGewerbe.js";
|
||||||
import { pdfDatenblattVerbrauchsausweisWohnen } from "#lib/pdf/pdfDatenblattVerbrauchsausweisWohnen.js";
|
import { pdfDatenblattVerbrauchsausweisWohnen } from "#lib/pdf/pdfDatenblattVerbrauchsausweisWohnen.js";
|
||||||
import { pdfVerbrauchsausweisGewerbe } from "#lib/pdf/pdfVerbrauchsausweisGewerbe.js";
|
import { Aufnahme, Benutzer, Bild, Enums, Objekt, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "#lib/client/prisma.js";
|
||||||
import { pdfVerbrauchsausweisWohnen } from "#lib/pdf/pdfVerbrauchsausweisWohnen.js";
|
|
||||||
import { Enums } from "#lib/client/prisma.js";
|
|
||||||
import { APIRoute } from "astro";
|
import { APIRoute } from "astro";
|
||||||
import { createCaller } from "src/astro-typesafe-api-caller.js";
|
import { createCaller } from "src/astro-typesafe-api-caller.js";
|
||||||
import { getS3File } from "#lib/s3.js";
|
import { getS3File } from "#lib/s3.js";
|
||||||
|
import { getAufnahme, getBilder, getObjekt, getVerbrauchsausweisGewerbe, getVerbrauchsausweisWohnen } from "#lib/server/db.js";
|
||||||
|
import { getCurrentUser } from "#lib/server/user.js";
|
||||||
|
|
||||||
export const GET: APIRoute = async (Astro) => {
|
export const GET: APIRoute = async (Astro) => {
|
||||||
const uidAusweis = Astro.url.searchParams.get("uid");
|
const ausweis_id = Astro.url.searchParams.get("id");
|
||||||
|
|
||||||
if (!uidAusweis) {
|
if (!ausweis_id) {
|
||||||
return new Response(null, { status: 404 });
|
return new Response(null, { status: 404 });
|
||||||
}
|
}
|
||||||
|
|
||||||
const ausweisart = getAusweisartFromUUID(uidAusweis)
|
const ausweisart = getAusweisartFromId(ausweis_id)
|
||||||
|
|
||||||
const caller = createCaller(Astro);
|
let ausweis: VerbrauchsausweisWohnen | VerbrauchsausweisGewerbe | null = null;
|
||||||
|
let aufnahme: Aufnahme = {} as Aufnahme;
|
||||||
let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | null = null;
|
let objekt: Objekt = {} as Objekt;
|
||||||
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
|
let user: Benutzer = {} as Benutzer;
|
||||||
let objekt: ObjektClient = {} as ObjektClient;
|
let bilder: Bild[] = []
|
||||||
let user: BenutzerClient = {} as BenutzerClient;
|
|
||||||
let bilder: UploadedGebaeudeBild[] = []
|
|
||||||
|
|
||||||
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
|
||||||
ausweis = await caller["verbrauchsausweis-wohnen"]._id.GET.fetch(undefined, {
|
ausweis = await getVerbrauchsausweisWohnen(ausweis_id)
|
||||||
params: {
|
|
||||||
id: uidAusweis
|
|
||||||
},
|
|
||||||
headers: {
|
|
||||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
|
||||||
ausweis = await caller["verbrauchsausweis-gewerbe"]._id.GET.fetch(undefined, {
|
ausweis = await getVerbrauchsausweisGewerbe(ausweis_id)
|
||||||
params: {
|
|
||||||
id: uidAusweis
|
|
||||||
},
|
|
||||||
headers: {
|
|
||||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -51,29 +35,13 @@ export const GET: APIRoute = async (Astro) => {
|
|||||||
return new Response(null, { status: 404 });
|
return new Response(null, { status: 404 });
|
||||||
}
|
}
|
||||||
|
|
||||||
aufnahme = await caller.aufnahme._id.GET.fetch(undefined, {
|
aufnahme = await getAufnahme(ausweis.aufnahme_id)
|
||||||
params: {
|
|
||||||
id: ausweis.aufnahme_id
|
|
||||||
},
|
|
||||||
headers: {
|
|
||||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
objekt = await caller.objekt._id.GET.fetch(undefined, {
|
objekt = await getObjekt(aufnahme.objekt_id)
|
||||||
params: {
|
|
||||||
id: ausweis.objekt_id
|
|
||||||
},
|
|
||||||
headers: {
|
|
||||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
user = await caller.user.self.GET.fetch(undefined, {
|
bilder = await getBilder(ausweis.aufnahme_id)
|
||||||
headers: {
|
|
||||||
Authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
|
user = await getCurrentUser(Astro)
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let pdf: Uint8Array<ArrayBufferLike> | null = null;
|
let pdf: Uint8Array<ArrayBufferLike> | null = null;
|
||||||
if (ausweis.alte_ausweis_id) {
|
if (ausweis.alte_ausweis_id) {
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
Verbrauchsausweis Wohnen
|
Verbrauchsausweis Wohnen
|
||||||
|
|
||||||
|
[Wenn der Kunde über das Dashboard über "Ausweis erstellen" kommt gibt es Daten aus der
|
||||||
|
letzten aktuellen Vorlage. Die sollten nach klick auf den Button in LocalStorage inkl.
|
||||||
|
Objekt ID geschrieben werden. Die Verknüpfung zum Gebäude/Objekt sollte dann gewährleistet
|
||||||
|
sein.]
|
||||||
if Domain hat bereits eine vorhandene ID?
|
if Domain hat bereits eine vorhandene ID?
|
||||||
if LocalStorage hat Daten?
|
if LocalStorage hat Daten?
|
||||||
Wir vergleichen ob der LocalStorage neuer ist als die Datenbank
|
Wir vergleichen ob der LocalStorage neuer ist als die Datenbank
|
||||||
@@ -26,7 +30,11 @@ else
|
|||||||
|
|
||||||
if *Klick auf Weiter || Klick auf Hilfe*
|
if *Klick auf Weiter || Klick auf Hilfe*
|
||||||
Wir leiten weiter auf Kundendaten mit dem entsprechenden Produkt
|
Wir leiten weiter auf Kundendaten mit dem entsprechenden Produkt
|
||||||
|
[Hier sollte auch geprüft werden ob Daten im LocalStorage vorliegen
|
||||||
|
(so wie oben). Wenn Kundendaten leer sind sollen die Stammdaten geladen
|
||||||
|
werden. Aber bitte nicht wenn der Aussteller/Admin eingeloggt ist]
|
||||||
*User gibt Kundendaten ein*
|
*User gibt Kundendaten ein*
|
||||||
|
[Wir speichern alles im LocalStorage mit dem aktuallen Timestamp]
|
||||||
if *Klick auf Speichern*
|
if *Klick auf Speichern*
|
||||||
if Ausweis hat bereits eine id?
|
if Ausweis hat bereits eine id?
|
||||||
Wir updaten den bereits gespeicherten Ausweis mit den neuen Daten
|
Wir updaten den bereits gespeicherten Ausweis mit den neuen Daten
|
||||||
@@ -43,7 +51,9 @@ if *Klick auf Weiter || Klick auf Hilfe*
|
|||||||
|
|
||||||
Wir erstellen einen neuen Ausweis
|
Wir erstellen einen neuen Ausweis
|
||||||
else
|
else
|
||||||
*User klickt auf Bestellen*
|
[Bei schon bestellten Produkten (Beratung und Offline) kann man nicht nochmal bestellen
|
||||||
|
sondern nur Freigeben. Statt Bestellbestätigung Freigabebestätigung]
|
||||||
|
*User klickt auf Bestellen* [bzw. *User klickt auf Freigabe*]
|
||||||
if Ausweis hat bereits eine id?
|
if Ausweis hat bereits eine id?
|
||||||
Wir updaten den bereits gespeicherten Ausweis mit den neuen Daten
|
Wir updaten den bereits gespeicherten Ausweis mit den neuen Daten
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user