diff --git a/bun.lock b/bun.lock index 1812b32f..17608d79 100644 --- a/bun.lock +++ b/bun.lock @@ -61,6 +61,7 @@ "@types/jsonwebtoken": "^9.0.7", "@types/mime-types": "^2.1.4", "@types/nodemailer": "^6.4.17", + "@types/papaparse": "^5.3.15", "@types/siema": "^1.4.11", "@types/uuid": "^9.0.8", "@typescript-eslint/eslint-plugin": "^5.62.0", @@ -72,6 +73,7 @@ "cypress-vite": "^1.6.0", "eslint": "~8.15.0", "eslint-config-prettier": "8.1.0", + "papaparse": "^5.5.2", "postcss": "^8.5.1", "postcss-import": "^16.1.0", "postcss-nesting": "^13.0.1", @@ -556,6 +558,8 @@ "@types/nodemailer": ["@types/nodemailer@6.4.17", "", { "dependencies": { "@types/node": "*" } }, "sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww=="], + "@types/papaparse": ["@types/papaparse@5.3.15", "", { "dependencies": { "@types/node": "*" } }, "sha512-JHe6vF6x/8Z85nCX4yFdDslN11d+1pr12E526X8WAfhadOeaOTx5AuIkvDKIBopfvlzpzkdMx4YyvSKCM9oqtw=="], + "@types/pug": ["@types/pug@2.0.10", "", {}, "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA=="], "@types/qs": ["@types/qs@6.9.18", "", {}, "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA=="], @@ -1658,6 +1662,8 @@ "pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="], + "papaparse": ["papaparse@5.5.2", "", {}, "sha512-PZXg8UuAc4PcVwLosEEDYjPyfWnTEhOrUfdv+3Bx+NuAb+5NhDmXzg5fHWmdCh1mP5p7JAZfFr3IMQfcntNAdA=="], + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], "parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], diff --git a/package.json b/package.json index 8b10c1fb..2541b7f0 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,7 @@ "@types/jsonwebtoken": "^9.0.7", "@types/mime-types": "^2.1.4", "@types/nodemailer": "^6.4.17", + "@types/papaparse": "^5.3.15", "@types/siema": "^1.4.11", "@types/uuid": "^9.0.8", "@typescript-eslint/eslint-plugin": "^5.62.0", @@ -86,6 +87,7 @@ "cypress-vite": "^1.6.0", "eslint": "~8.15.0", "eslint-config-prettier": "8.1.0", + "papaparse": "^5.5.2", "postcss": "^8.5.1", "postcss-import": "^16.1.0", "postcss-nesting": "^13.0.1", diff --git a/persistent/images/img-53cc77f5-940f-4fcb-b21c-fb46e1d6aaaf.webp b/persistent/images/img-53cc77f5-940f-4fcb-b21c-fb46e1d6aaaf.webp new file mode 100644 index 00000000..641c1e02 Binary files /dev/null and b/persistent/images/img-53cc77f5-940f-4fcb-b21c-fb46e1d6aaaf.webp differ diff --git a/persistent/images/img-694ca166-c339-44df-9240-0bb642291459.webp b/persistent/images/img-694ca166-c339-44df-9240-0bb642291459.webp new file mode 100644 index 00000000..641c1e02 Binary files /dev/null and b/persistent/images/img-694ca166-c339-44df-9240-0bb642291459.webp differ diff --git a/persistent/images/img-85f8a7cd-7351-408f-8576-6d7b9d0ac82b.webp b/persistent/images/img-85f8a7cd-7351-408f-8576-6d7b9d0ac82b.webp new file mode 100644 index 00000000..fffe32ba Binary files /dev/null and b/persistent/images/img-85f8a7cd-7351-408f-8576-6d7b9d0ac82b.webp differ diff --git a/persistent/images/img-a4e04cf7-9443-4462-9582-3c18b33ef711.webp b/persistent/images/img-a4e04cf7-9443-4462-9582-3c18b33ef711.webp new file mode 100644 index 00000000..099f2286 Binary files /dev/null and b/persistent/images/img-a4e04cf7-9443-4462-9582-3c18b33ef711.webp differ diff --git a/persistent/images/img-a50b7f82-0add-4e3a-bb42-3f9b2e49936a.webp b/persistent/images/img-a50b7f82-0add-4e3a-bb42-3f9b2e49936a.webp new file mode 100644 index 00000000..641c1e02 Binary files /dev/null and b/persistent/images/img-a50b7f82-0add-4e3a-bb42-3f9b2e49936a.webp differ diff --git a/persistent/images/img-af39ffd3-389b-43a4-9afb-5e82020dc5b0.webp b/persistent/images/img-af39ffd3-389b-43a4-9afb-5e82020dc5b0.webp new file mode 100644 index 00000000..641c1e02 Binary files /dev/null and b/persistent/images/img-af39ffd3-389b-43a4-9afb-5e82020dc5b0.webp differ diff --git a/persistent/images/img-e7269e2e-de35-491a-b24e-76bde9d88ac0.webp b/persistent/images/img-e7269e2e-de35-491a-b24e-76bde9d88ac0.webp new file mode 100644 index 00000000..641c1e02 Binary files /dev/null and b/persistent/images/img-e7269e2e-de35-491a-b24e-76bde9d88ac0.webp differ diff --git a/persistent/unterlagen/pln-7628272a-1a70-44fb-8c00-a6b5125153c4 b/persistent/unterlagen/pln-7628272a-1a70-44fb-8c00-a6b5125153c4 new file mode 100644 index 00000000..b7529163 Binary files /dev/null and b/persistent/unterlagen/pln-7628272a-1a70-44fb-8c00-a6b5125153c4 differ diff --git a/persistent/unterlagen/pln-9412f6f9-16b2-4c96-a612-d0b788b73df7 b/persistent/unterlagen/pln-9412f6f9-16b2-4c96-a612-d0b788b73df7 new file mode 100644 index 00000000..b7529163 Binary files /dev/null and b/persistent/unterlagen/pln-9412f6f9-16b2-4c96-a612-d0b788b73df7 differ diff --git a/persistent/unterlagen/pln-bc44e0e7-14e5-4112-b113-59f172c387a6 b/persistent/unterlagen/pln-bc44e0e7-14e5-4112-b113-59f172c387a6 new file mode 100644 index 00000000..aba7cc1d Binary files /dev/null and b/persistent/unterlagen/pln-bc44e0e7-14e5-4112-b113-59f172c387a6 differ diff --git a/persistent/unterlagen/pln-be301689-303e-4f78-b0f2-08cda642e8cf b/persistent/unterlagen/pln-be301689-303e-4f78-b0f2-08cda642e8cf new file mode 100644 index 00000000..b7529163 Binary files /dev/null and b/persistent/unterlagen/pln-be301689-303e-4f78-b0f2-08cda642e8cf differ diff --git a/persistent/unterlagen/pln-c86f7c42-55cd-4448-9830-4c41ce7b3815 b/persistent/unterlagen/pln-c86f7c42-55cd-4448-9830-4c41ce7b3815 new file mode 100644 index 00000000..b7529163 Binary files /dev/null and b/persistent/unterlagen/pln-c86f7c42-55cd-4448-9830-4c41ce7b3815 differ diff --git a/server.ts b/server.ts index 72120f8c..2c56f4f3 100644 --- a/server.ts +++ b/server.ts @@ -6,9 +6,9 @@ const app = express(); const base = '/'; app.use(base, express.static('dist/client/')); app.use(ssrHandler); +app.use(express.json({ limit: "50mb" })) +app.use(express.urlencoded({ limit: "50mb" })) app.listen(80, function() { console.log('Server started on http://localhost:80'); -}); - - +}); \ No newline at end of file diff --git a/src/astro-typesafe-api-caller.ts b/src/astro-typesafe-api-caller.ts index d8a142b6..32f79f5b 100644 --- a/src/astro-typesafe-api-caller.ts +++ b/src/astro-typesafe-api-caller.ts @@ -1,24 +1,31 @@ import { createCallerFactory } from "astro-typesafe-api/server"; export const createCaller = createCallerFactory({ + "bild": await import("../src/pages/api/bild.ts"), "klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"), "postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"), + "unterlage": await import("../src/pages/api/unterlage.ts"), "admin/ausstellen": await import("../src/pages/api/admin/ausstellen.ts"), "admin/bestellbestaetigung": await import("../src/pages/api/admin/bestellbestaetigung.ts"), "admin/erinnern": await import("../src/pages/api/admin/erinnern.ts"), "admin/nicht-ausstellen": await import("../src/pages/api/admin/nicht-ausstellen.ts"), "admin/post-ausstellen": await import("../src/pages/api/admin/post-ausstellen.ts"), "admin/registriernummer": await import("../src/pages/api/admin/registriernummer.ts"), + "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"), + "bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"), + "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"), "auth/access-token": await import("../src/pages/api/auth/access-token.ts"), "auth/forgot-password": await import("../src/pages/api/auth/forgot-password.ts"), "auth/refresh-token": await import("../src/pages/api/auth/refresh-token.ts"), - "bedarfsausweis-wohnen/[uid]": await import("../src/pages/api/bedarfsausweis-wohnen/[uid].ts"), - "bedarfsausweis-wohnen": await import("../src/pages/api/bedarfsausweis-wohnen/index.ts"), "bilder/[uid]": await import("../src/pages/api/bilder/[uid].ts"), "geg-nachweis-wohnen/[uid]": await import("../src/pages/api/geg-nachweis-wohnen/[uid].ts"), "geg-nachweis-wohnen": await import("../src/pages/api/geg-nachweis-wohnen/index.ts"), + "geg-nachweis-gewerbe/[uid]": await import("../src/pages/api/geg-nachweis-gewerbe/[uid].ts"), + "geg-nachweis-gewerbe": await import("../src/pages/api/geg-nachweis-gewerbe/index.ts"), "objekt": await import("../src/pages/api/objekt/index.ts"), + "rechnung/anfordern": await import("../src/pages/api/rechnung/anfordern.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"), @@ -30,6 +37,6 @@ export const createCaller = createCallerFactory({ "webhooks/mollie": await import("../src/pages/api/webhooks/mollie.ts"), "aufnahme/[uid]/bilder": await import("../src/pages/api/aufnahme/[uid]/bilder.ts"), "aufnahme/[uid]": await import("../src/pages/api/aufnahme/[uid]/index.ts"), + "aufnahme/[uid]/unterlagen": await import("../src/pages/api/aufnahme/[uid]/unterlagen.ts"), "objekt/[uid]": await import("../src/pages/api/objekt/[uid]/index.ts"), - "objekt/[uid]/unterlagen": await import("../src/pages/api/objekt/[uid]/unterlagen.ts"), }) \ No newline at end of file diff --git a/src/client/lib/ausweisSpeichern.ts b/src/client/lib/ausweisSpeichern.ts index 06b192d5..5084df48 100644 --- a/src/client/lib/ausweisSpeichern.ts +++ b/src/client/lib/ausweisSpeichern.ts @@ -3,14 +3,14 @@ import { api } from "astro-typesafe-api/client" import { exclude } from "#lib/exclude.js"; import Cookies from "js-cookie"; import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js"; -import { AufnahmeClient, BedarfsausweisWohnenClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js"; +import { AufnahmeClient, BedarfsausweisWohnenClient, BildClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js"; import { Enums } from "@ibcornelsen/database/client"; export async function ausweisSpeichern( ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, objekt: ObjektClient, aufnahme: AufnahmeClient, - bilder: (UploadedGebaeudeBild & { base64?: string })[], + bilder: BildClient[], ausweisart: Enums.Ausweisart ) { if (objekt.uid) { @@ -99,26 +99,15 @@ export async function ausweisSpeichern( ausweis.uid = uid; } - for (const bild of bilder) { - if (bild.uid) { - continue; + await api.aufnahme._uid.bilder.PUT.fetch(bilder.map(bild => bild.uid), { + params: { + uid: aufnahme.uid + }, + headers: { + "Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}` } - - const response = await api.aufnahme._uid.bilder.PUT.fetch({ - base64: bild.base64, - kategorie: bild.kategorie - }, { - params: { - uid: aufnahme.uid - }, - headers: { - "Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}` - } - }) - - bild.uid = response.uid - } - + }) + return { uid_ausweis: ausweis.uid, uid_aufnahme: aufnahme.uid, diff --git a/src/client/lib/bilderHochladen.ts b/src/client/lib/bilderHochladen.ts index 0595e167..b804b160 100644 --- a/src/client/lib/bilderHochladen.ts +++ b/src/client/lib/bilderHochladen.ts @@ -22,7 +22,7 @@ export async function bilderHochladen( const imagesToUpload = images.filter( (image) => !image.uid || image.update ) as unknown as { - base64: string; + data: string; kategorie: string; uid?: string; update: boolean; @@ -46,7 +46,7 @@ export async function bilderHochladen( try { if (image.update) { await api.bilder._uid.PATCH.fetch({ - base64: image.base64, + data: image.data, kategorie: image.kategorie as Enums.BilderKategorie, }, { params: { @@ -58,7 +58,7 @@ export async function bilderHochladen( }); } else { const response = await api.aufnahme._uid.bilder.PUT.fetch({ - base64: image.base64, + data: image.data, kategorie: image.kategorie as Enums.BilderKategorie }, { params: { diff --git a/src/client/lib/helpers.ts b/src/client/lib/helpers.ts new file mode 100644 index 00000000..aef33eaf --- /dev/null +++ b/src/client/lib/helpers.ts @@ -0,0 +1,45 @@ +import { writable, Writable } from "svelte/store"; +import { ZodEffects, ZodNullable, ZodOptional, ZodType } from "zod"; + +export function localStorageSync(initial: T, name: string, modifier: (stored: any) => T = (stored) => JSON.parse(stored), reverseModifier: (value: T) => string = (value) => JSON.stringify(value)): Writable { + const stored = localStorage.getItem(name) as T + let value = initial; + if (stored) { + value = modifier(stored) + } + + const writableStore = writable(value) + + writableStore.subscribe((value) => { + const reversed = reverseModifier(value); + localStorage.setItem(name, reversed) + }) + + return writableStore +} + +export function isZodInstanceOf>( + schema: ZodType, + targetType: new (...args: any) => T +): schema is T { + if (schema instanceof targetType) { + return true; + } + + if (schema instanceof ZodOptional || schema instanceof ZodNullable) { + return isZodInstanceOf(schema._def.innerType, targetType); + }else if (schema instanceof ZodEffects) { + return getZodBaseType(schema._def.schema) + } + + return false; +} + +export function getZodBaseType(schema: ZodType): ZodType { + if (schema instanceof ZodOptional || schema instanceof ZodNullable) { + return getZodBaseType(schema._def.innerType); + } else if (schema instanceof ZodEffects) { + return getZodBaseType(schema._def.schema) + } + return schema; +} \ No newline at end of file diff --git a/src/client/lib/nachweisSpeichern.ts b/src/client/lib/nachweisSpeichern.ts new file mode 100644 index 00000000..ab3f5564 --- /dev/null +++ b/src/client/lib/nachweisSpeichern.ts @@ -0,0 +1,138 @@ + +import { api } from "astro-typesafe-api/client" +import { exclude } from "#lib/exclude.js"; +import Cookies from "js-cookie"; +import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js"; +import { AufnahmeClient, BedarfsausweisWohnenClient, BildClient, ObjektClient, UnterlageClient, UploadedGebaeudeBild, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient, } from "#components/Ausweis/types.js"; +import { Enums } from "@ibcornelsen/database/client"; + +export async function nachweisSpeichern( + nachweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, + objekt: ObjektClient, + aufnahme: AufnahmeClient, + bilder: BildClient[], + unterlagen: UnterlageClient[], + ausweisart: Enums.Ausweisart +) { + if (objekt.uid) { + await api.objekt._uid.PATCH.fetch({ + ...exclude(objekt, ["uid"]) + }, { + params: { + uid: objekt.uid + }, + headers: { + "Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}` + } + }) +} else { + const { uid } = await api.objekt.PUT.fetch({ + ...exclude(objekt, ["uid"]) + }, { + headers: { + "Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}` + } + }) + + objekt.uid = uid; + } + + + + if (aufnahme.uid) { + await api.aufnahme._uid.PATCH.fetch({ + ...exclude(aufnahme, ["uid"]), + baujahr_gebaeude: aufnahme.baujahr_gebaeude || [], + baujahr_klima: aufnahme.baujahr_klima || [], + baujahr_heizung: aufnahme.baujahr_heizung || [], + }, { + params: { + uid: aufnahme.uid + }, + headers: { + "Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}` + } + }) + } else { + const { uid } = await api.aufnahme.PUT.fetch({ + aufnahme, + uid_objekt: objekt.uid + }, { + headers: { + "Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}` + } + }) + + aufnahme.uid = uid + } + + let patchRoute: any; + let putRoute: any; + if (ausweisart == Enums.Ausweisart.GEGNachweisWohnen) { + patchRoute = api["geg-nachweis-wohnen"]._uid.PATCH + putRoute = api["geg-nachweis-wohnen"].PUT + } else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) { + patchRoute = api["geg-nachweis-gewerbe"]._uid.PATCH + putRoute = api["geg-nachweis-gewerbe"].PUT + } + + if (nachweis.uid) { + await patchRoute.fetch({ + ...exclude(nachweis, ["uid"]) + }, { + params: { + uid: nachweis.uid + }, + headers: { + "Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}` + } + }) + } else { + const { uid } = await putRoute.fetch({ + nachweis, + uid_aufnahme: aufnahme.uid + }, { + headers: { + "Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}` + } + }) + + nachweis.uid = uid; + } + + await api.aufnahme._uid.bilder.PUT.fetch(bilder.map(bild => bild.uid), { + params: { + uid: aufnahme.uid + }, + headers: { + "Authorization": `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}` + } + }) + + return { + uid_nachweis: nachweis.uid, + uid_aufnahme: aufnahme.uid, + uid_objekt: objekt.uid + } + + + // await client.v1.tickets.erstellen.mutate({ + // titel: "Ausweis konnte nicht gespeichert werden", + // beschreibung: e.stack, + // email: user.email ?? "", + // metadata: JSON.stringify({ + // ausweis, + // }), + // }); + + // addNotification({ + // dismissable: false, + // message: + // "Ausweis konnte nicht gespeichert werden, bitte versuchen sie es erneut.", + // subtext: + // "Sollte das Problem weiterhin bestehen, kontaktieren sie bitte den Support.", + // timeout: 6000, + // type: "error", + // }); + return null; +} diff --git a/src/client/lib/validateAccessToken.ts b/src/client/lib/validateAccessToken.ts index 1fa7c42e..8c43bdf7 100644 --- a/src/client/lib/validateAccessToken.ts +++ b/src/client/lib/validateAccessToken.ts @@ -38,6 +38,7 @@ export async function validateAccessTokenClient() { const { accessToken: newAccessToken, accessTokenExpiry, refreshToken: newRefreshToken, refreshTokenExpiry } = await api.auth["access-token"].GET.fetch({ refreshToken }) + Cookies.set(API_ACCESS_TOKEN_COOKIE_NAME, newAccessToken, { domain: `.${window.location.hostname}`, diff --git a/src/components/AnsichtsausweisButton.svelte b/src/components/AnsichtsausweisButton.svelte index df327808..6ab5c369 100644 --- a/src/components/AnsichtsausweisButton.svelte +++ b/src/components/AnsichtsausweisButton.svelte @@ -11,12 +11,12 @@ export let ausweisart: Enums.Ausweisart - - - - - - diff --git a/src/components/Ausweis/ButtonWeiterHilfe.svelte b/src/components/Ausweis/ButtonWeiterHilfe.svelte index 183e4149..b268526a 100644 --- a/src/components/Ausweis/ButtonWeiterHilfe.svelte +++ b/src/components/Ausweis/ButtonWeiterHilfe.svelte @@ -1,39 +1,37 @@ @@ -68,19 +84,100 @@ sm:grid-cols-[1fr_min-content_min-content_min-content] sm:justify-self-end sm:mt
- +
+ +
+ + {#if showHelp} +
+
+
+ Gerne helfen wir Ihnen wenn Sie nicht weiterkommen oder Fragen + haben. Kurze Fragen zum Formular oder der Ausweisart werden + kostenfrei telefonisch unter 040/209339850 beantwortet (bis 5min). Sollten Sie Unterstützung bei der Erstellung + benötgen oder lieber die Arbeit von unserem Ingenieurbüro erledigen + lassen, bieten wir Ihnen folgende Hilfen an. Bitte treffen Sie Ihre + Auswahl und klicken auf weiter: +
+ +
+ +
+ + +
+ Verbrauchsausweis online inkl. ausführlicher telefonischer + Beratung +
+ +
+ {PRICES[ausweisart][Enums.AusweisTyp.Beratung]} € inkl. MwSt. +
+
+ +
+ + +
+ Verbrauchsausweis offline (Sie schicken uns 3 + Verbrauchsabrechnungen zu) +
+ +
+ {PRICES[ausweisart][Enums.AusweisTyp.Offline]} € inkl. MwSt. +
+
+ +
+ + + + +
+
+ {/if} + + {#if showWeiter}
- +
+ {/if} diff --git a/src/components/Ausweis/GebaeudeDaten.svelte b/src/components/Ausweis/GebaeudeDaten.svelte index db458d83..f0c1db2a 100644 --- a/src/components/Ausweis/GebaeudeDaten.svelte +++ b/src/components/Ausweis/GebaeudeDaten.svelte @@ -121,7 +121,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8 bind:value={aufnahme.dachgeschoss} required > - + diff --git a/src/components/Ausweis/Hilfe.svelte b/src/components/Ausweis/Hilfe.svelte deleted file mode 100644 index cce9fb9d..00000000 --- a/src/components/Ausweis/Hilfe.svelte +++ /dev/null @@ -1,89 +0,0 @@ - - -
- -
- -{#if showHelp} -
- -
-
- Gerne helfen wir Ihnen wenn Sie nicht weiterkommen oder Fragen - haben. Kurze Fragen zum Formular oder der Ausweisart werden - kostenfrei telefonisch unter 040/209339850 beantwortet (bis 5min). Sollten Sie Unterstützung bei der Erstellung - benötgen oder lieber die Arbeit von unserem Ingenieurbüro erledigen - lassen, bieten wir Ihnen folgende Hilfen an. Bitte treffen Sie Ihre - Auswahl und klicken auf weiter: -
- -
- -
- - - -
- Verbrauchsausweis online inkl. ausführlicher telefonischer Beratung -
- -
- {PRICES.VerbrauchsausweisWohnen[1]} € inkl. MwSt. -
- -
- -
- - - -
- Verbrauchsausweis offline (Sie schicken uns 3 Verbrauchsabrechnungen zu) -
- -
- {PRICES.VerbrauchsausweisWohnen[2]} € inkl. MwSt. -
- -
- -
- - - - -
- - -
- - - - - - {/if} - diff --git a/src/components/Ausweis/LueftungundLeerstand.svelte b/src/components/Ausweis/LueftungundLeerstand.svelte index 1264f679..13259756 100644 --- a/src/components/Ausweis/LueftungundLeerstand.svelte +++ b/src/components/Ausweis/LueftungundLeerstand.svelte @@ -29,7 +29,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8 bind:value={aufnahme.gebaeudeteil} required > - + @@ -79,7 +79,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8 required bind:value={aufnahme.lueftung} > - + + diff --git a/src/components/Ausweis/Progressbar.svelte b/src/components/Ausweis/Progressbar.svelte index 711cae7a..f7754c0d 100644 --- a/src/components/Ausweis/Progressbar.svelte +++ b/src/components/Ausweis/Progressbar.svelte @@ -30,8 +30,8 @@ - \ No newline at end of file diff --git a/src/components/Dashboard/DashboardAusweis.svelte b/src/components/Dashboard/DashboardAusweis.svelte index f172364e..dc2b81cc 100644 --- a/src/components/Dashboard/DashboardAusweis.svelte +++ b/src/components/Dashboard/DashboardAusweis.svelte @@ -13,11 +13,11 @@ import { api } from "astro-typesafe-api/client"; import Cookies from "js-cookie"; import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js"; - import { Enums } from "@ibcornelsen/database/client"; + import { Enums, Objekt } from "@ibcornelsen/database/client"; export let ausweis: VerbrauchsausweisWohnenClient; export let aufnahme: AufnahmeKomplettClient; - export let objekt: ObjektKomplettClient; + export let objekt: Objekt; export let progress: number; const ausweisart = getAusweisartFromUUID(ausweis.uid); @@ -188,14 +188,14 @@ {/await} -
+
Bearbeiten

Falls sie dort nicht finden wonach sie suchen, rufen sie uns doch - unter 040 220 31 87 an oder - schreiben sie uns eine email040 209 339 850 an oder + schreiben sie uns eine email.

diff --git a/src/components/Dashboard/DashboardAusweisSkeleton.svelte b/src/components/Dashboard/DashboardAusweisSkeleton.svelte index a46d9167..f0de51f6 100644 --- a/src/components/Dashboard/DashboardAusweisSkeleton.svelte +++ b/src/components/Dashboard/DashboardAusweisSkeleton.svelte @@ -1,3 +1,5 @@ + +

diff --git a/src/components/Dashboard/DashboardObjekt.svelte b/src/components/Dashboard/DashboardObjekt.svelte index 83815174..a60ea685 100644 --- a/src/components/Dashboard/DashboardObjekt.svelte +++ b/src/components/Dashboard/DashboardObjekt.svelte @@ -5,24 +5,40 @@ import { File, OpenInNewWindow } from "radix-svelte-icons"; export let objekt: ObjektKomplettClient; - - // TODO - const objektBild = objekt.bilder.find(bild => bild.kategorie === Enums.BilderKategorie.Gebaeude); -
- {#if objektBild} - Gebäude +
+ {#if objekt.aufnahmen.length > 0} + {@const bild = objekt.aufnahmen[0].bilder.find(bild => bild.kategorie === Enums.BilderKategorie.Gebaeude)} + + {#if bild} + Gebäude + {/if} {/if}
-
-

{objekt.adresse}

+
+

{objekt.adresse}, {objekt.plz} {objekt.ort}

{moment(objekt.erstellungsdatum).format("DD.MM.YYYY")}
-
- +
+ {#each objekt.aufnahmen as aufnahme} +
+
+ Sanierungsstand vom {moment(aufnahme.erstellungsdatum).format("DD.MM.YYYY")} + +
+
+ {#if aufnahme.verbrauchsausweise_wohnen} + + {/if} + {#if aufnahme.verbrauchsausweis_gewerbe} + + {/if} +
+
+ {/each}
\ No newline at end of file diff --git a/src/components/Dashboard/DashboardSidebar.svelte b/src/components/Dashboard/DashboardSidebar.svelte index 88a84742..9dc3b2dc 100644 --- a/src/components/Dashboard/DashboardSidebar.svelte +++ b/src/components/Dashboard/DashboardSidebar.svelte @@ -46,16 +46,12 @@ /> -