PDF Icons und Bestätigungsbox Kunden #493

Merged
IB-Cornelsen merged 5 commits from Jens into main 2025-04-06 19:24:41 +00:00
43 changed files with 552 additions and 505 deletions
Showing only changes of commit d72a93fbff - Show all commits

View File

@@ -86,7 +86,7 @@
"prisma-dbml-generator": "^0.12.0",
"prisma-generator-fake-data": "^0.14.3",
"tsx": "^4.19.3",
"typescript": "^4.9.5",
"typescript": "^5",
"zod-prisma": "^0.5.4",
},
},
@@ -2539,7 +2539,7 @@
"type-is": ["type-is@1.6.18", "", { "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" } }, "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="],
"typescript": ["typescript@4.9.5", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g=="],
"typescript": ["typescript@5.8.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ=="],
"ufo": ["ufo@1.5.4", "", {}, "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ=="],

View File

@@ -100,7 +100,7 @@
"prisma-dbml-generator": "^0.12.0",
"prisma-generator-fake-data": "^0.14.3",
"tsx": "^4.19.3",
"typescript": "^4.9.5",
"typescript": "^5.8.3",
"zod-prisma": "^0.5.4"
},
"overrides": {

View File

@@ -5,10 +5,6 @@ export const createCaller = createCallerFactory({
"klimafaktoren": await import("../src/pages/api/klimafaktoren.ts"),
"postleitzahlen": await import("../src/pages/api/postleitzahlen.ts"),
"unterlage": await import("../src/pages/api/unterlage.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"),
"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"),
@@ -16,11 +12,15 @@ export const createCaller = createCallerFactory({
"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"),
"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"),
"aufnahme": await import("../src/pages/api/aufnahme/index.ts"),
"bedarfsausweis-gewerbe/[id]": await import("../src/pages/api/bedarfsausweis-gewerbe/[id].ts"),
"bedarfsausweis-gewerbe": await import("../src/pages/api/bedarfsausweis-gewerbe/index.ts"),
"aufnahme": await import("../src/pages/api/aufnahme/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"),
"ausweise": await import("../src/pages/api/ausweise/index.ts"),
"bilder/[id]": await import("../src/pages/api/bilder/[id].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"),

View File

@@ -174,11 +174,14 @@ export async function nachweisSpeichern(
aufnahme.id = aufnahme_id
if (ausweisart == Enums.Ausweisart.GEGNachweisWohnen) {
gegNachweisWohnenSpeichern(nachweis as GEGNachweisWohnen, aufnahme_id)
const id = await gegNachweisWohnenSpeichern(nachweis as GEGNachweisWohnen, aufnahme_id)
nachweis.id = id;
} else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) {
gegNachweisGewerbeSpeichern(nachweis as GEGNachweisGewerbe, aufnahme_id)
const id = await gegNachweisGewerbeSpeichern(nachweis as GEGNachweisGewerbe, aufnahme_id)
nachweis.id = id;
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) {
bedarfsausweisGewerbeSpeichern(nachweis as BedarfsausweisGewerbe, aufnahme_id)
const id = await bedarfsausweisGewerbeSpeichern(nachweis as BedarfsausweisGewerbe, aufnahme_id)
nachweis.id = id;
}
await api.aufnahme._id.bilder.PUT.fetch(bilder.map(bild => bild.id), {

View File

@@ -1,5 +1,5 @@
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
import { Aufnahme, Objekt } from "#lib/server/prisma.js";
import { Aufnahme, Objekt } from "#lib/client/prisma.js";
import { api } from "astro-typesafe-api/client";
import Cookies from "js-cookie";

View File

@@ -118,7 +118,7 @@ xl:grid-cols-4 xl:gap-x-8 xl:gap-y-8
>
<option>Bitte auswählen</option>
{#each hotWaterProductionTypes as type, i}
<option value={i}>{type}</option>
<option value={type}>{type}</option>
{/each}
</select>

View File

@@ -6,14 +6,13 @@
import { auditHeizungGebaeudeBaujahr } from "../Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js";
import { addNotification, deleteNotification } from "#components/Notifications/shared.js";
import TagInput from "../TagInput.svelte";
import { Enums } from "#lib/client/prisma.js";
import { BedarfsausweisGewerbe, Enums, GEGNachweisWohnen } from "#lib/client/prisma.js";
import {
BedarfsausweisWohnenClient,
AufnahmeClient,
ObjektClient,
VerbrauchsausweisGewerbeClient,
VerbrauchsausweisWohnenClient,
GEGNachweisWohnenClient,
} from "./types.js";
export let objekt: ObjektClient;
@@ -21,7 +20,8 @@
| VerbrauchsausweisWohnenClient
| VerbrauchsausweisGewerbeClient
| BedarfsausweisWohnenClient
| GEGNachweisWohnenClient;
| GEGNachweisWohnen
| BedarfsausweisGewerbe;
export let aufnahme: AufnahmeClient;
export let ausweisart: Enums.Ausweisart;
@@ -75,7 +75,7 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
>
<option disabled selected value={null}>Bitte auswählen</option>
{#if ausweisart==Enums.Ausweisart.VerbrauchsausweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.BedarfsausweisWohnen}
{#if ausweisart==Enums.Ausweisart.VerbrauchsausweisWohnen || ausweisart === Enums.Ausweisart.GEGNachweisWohnen || ausweisart === Enums.Ausweisart.BedarfsausweisWohnen || ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe}
<option value="Einfamilienhaus">Einfamilienhaus</option>
<option value="Freistehendes Einfamilienhaus">Freistehendes Einfamilienhaus</option>
<option value="Freistehendes Zweifamilienhaus">Freistehendes Zweifamilienhaus</option>

View File

@@ -27,6 +27,7 @@
export let ausweistyp: AusweisTyp = Enums.AusweisTyp.Standard;
async function ausweisAbschicken() {
// Wir müssen überprüfen, dass mindestens ein Baujahr eingegeben wurde.
if (aufnahme.baujahr_gebaeude.length === 0) {
(form.querySelector("input[name='baujahr_gebaeude']") as HTMLInputElement).setCustomValidity("Die Eingabe von mindestens einem Baujahr ist verpflichtend.")
} else {
@@ -39,12 +40,12 @@
(form.querySelector("input[name='baujahr_heizung']") as HTMLInputElement).setCustomValidity("")
}
new FormData(form).forEach((value, key) => {
if (key === "baujahr_heizung" || key === "baujahr_gebaeude" || key === "baujahr_klima") {
return
}
// Wir holen uns die Daten aus dem Formular
const data = new FormData(form);
// Und gleichen diese mit allen Feldern ab die "required" sind, damit stellen wir sicher, dass alles richtig ausgefüllt wurde.
(form.querySelectorAll("select[name][required],input[name][required]") as NodeListOf<HTMLInputElement | HTMLSelectElement>).forEach((element) => {
const value = data.get(element.getAttribute("name") as string)
const element = (form.querySelector(`[name='${key}']`) as HTMLSelectElement);
if (!value && element.required) {
element.setCustomValidity("Eine Auswahl ist verpflichtend.")
} else {
@@ -52,6 +53,7 @@
}
})
// Falls das Formular nicht valid ist markieren wir die fehlenden Felder.
if (!form.checkValidity()) {
// Entferne die Klasse "2xl:mt-[370px]" falls vorhanden
form.classList.remove("2xl:mt-[370px]");
@@ -98,8 +100,8 @@
let loginAction: () => any = ausweisAbschicken;
async function spaeterWeitermachen() {
loginAction = spaeterWeitermachen;
async function speichern() {
loginAction = speichern;
if (!(await validateAccessTokenClient())) {
loginOverlayHidden = false;
return
@@ -161,7 +163,7 @@ sm:grid-cols-[1fr_min-content_min-content_min-content] sm:justify-self-end">
</div>
{/if}
<button class="button" type="button" on:click={spaeterWeitermachen}
<button class="button" type="button" on:click={speichern}
>Später Weitermachen
</button>

View File

@@ -154,21 +154,21 @@ xl:grid-cols-4 xl:gap-x-8 xl:gap-y-8
required
>
<option>bitte auswählen</option>
<option value="1.8">Standard (U-Wert 1,8)</option>
<option value="5">Ganz alte Tür (U-Wert 5,0)</option>
<option value="2.7">U-Wert 2,7</option>
<option value="3">U-Wert 3,0</option>
<option value="4.3">U-Wert 4,3</option>
<option value="1.1">U-Wert 1,1</option>
<option value="0.9">U-Wert 0,9</option>
<option value="0.85">U-Wert 0,85</option>
<option value="0.7">Passivhaustür (U-Wert 0,7)</option>
<option value="0.6">Passivhaustür (U-Wert 0,6)</option>
<option value="2.3">U-Wert 2,3</option>
<option value="1.6">U-Wert 1,6</option>
<option value="1.7">U-Wert 1,7</option>
<option value="1.3">U-Wert 1,3</option>
<option value="1">U-Wert 1,0</option>
<option value={1.8}>Standard (U-Wert 1,8)</option>
<option value={5}>Ganz alte Tür (U-Wert 5,0)</option>
<option value={2.7}>U-Wert 2,7</option>
<option value={3}>U-Wert 3,0</option>
<option value={4.3}>U-Wert 4,3</option>
<option value={1.1}>U-Wert 1,1</option>
<option value={0.9}>U-Wert 0,9</option>
<option value={0.85}>U-Wert 0,85</option>
<option value={0.7}>Passivhaustür (U-Wert 0,7)</option>
<option value={0.6}>Passivhaustür (U-Wert 0,6)</option>
<option value={2.3}>U-Wert 2,3</option>
<option value={1.6}>U-Wert 1,6</option>
<option value={1.7}>U-Wert 1,7</option>
<option value={1.3}>U-Wert 1,3</option>
<option value={1}>U-Wert 1,0</option>
</select>
<div class="help-label">

View File

@@ -1,5 +1,5 @@
<script lang="ts">
import { BedarfsausweisWohnen, Enums } from "#lib/client/prisma.js";
import { BedarfsausweisGewerbe, BedarfsausweisWohnen, Enums, GEGNachweisGewerbe, GEGNachweisWohnen } from "#lib/client/prisma.js";
import HeizungImage from "./HeizungImage.svelte";
import {
@@ -14,7 +14,7 @@
export let objekt: ObjektClient;
export let aufnahme: AufnahmeClient;
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnen;
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnen | BedarfsausweisGewerbe | GEGNachweisWohnen | GEGNachweisGewerbe;
export let images: BildClient[];
export let ausweisart: Enums.Ausweisart;

View File

@@ -12,6 +12,8 @@ import {
VerbrauchsausweisGewerbe,
VerbrauchsausweisWohnen,
GEGNachweisWohnen,
BedarfsausweisGewerbe,
GEGNachweisGewerbe,
} from "#lib/client/prisma.js";
import { z, ZodSchema } from "zod";
@@ -143,7 +145,7 @@ export type AufnahmeKomplettClient = AufnahmeClient & {
bedarfsausweise_wohnen: (BedarfsausweisWohnenClient & { rechnung: RechnungClient })[],
verbrauchsausweise_wohnen: (VerbrauchsausweisWohnenClient & { rechnung: RechnungClient })[],
verbrauchsausweise_gewerbe: (VerbrauchsausweisGewerbeClient & { rechnung: RechnungClient })[],
geg_nachweise_wohnen: (GEGNachweisWohnenClient & { rechnung: RechnungClient })[]
}
export type GEGNachweisWohnenClient = GEGNachweisWohnen
geg_nachweise_wohnen: (GEGNachweisWohnen & { rechnung: RechnungClient })[],
geg_nachweise_gewerbe: (GEGNachweisGewerbe & { rechnung: RechnungClient })[],
bedarfsausweise_gewerbe: (BedarfsausweisGewerbe & { rechnung: RechnungClient })[],
}

View File

@@ -159,7 +159,6 @@
})
}
}
</script>
<div class="relative bg-base-200 border border-base-300 rounded-lg p-4 mr-4">
@@ -208,6 +207,12 @@
Bedarfsausweis Wohnen
{:else if ausweisart == Enums.Ausweisart.VerbrauchsausweisGewerbe}
Verbrauchsausweis Gewerbe
{:else if ausweisart == Enums.Ausweisart.GEGNachweisWohnen}
GEG Nachweis Wohnen
{:else if ausweisart == Enums.Ausweisart.GEGNachweisGewerbe}
GEG Nachweis Gewerbe
{:else if ausweisart == Enums.Ausweisart.BedarfsausweisGewerbe}
Bedarfsausweis Gewerbe
{/if}
{#if ausweis.ausweistyp === Enums.AusweisTyp.Beratung}
@@ -307,7 +312,6 @@
{#if !ausweis.ausgestellt && (!ausweis.bestellt || (ausweis.ausweistyp === Enums.AusweisTyp.Beratung || ausweis.ausweistyp === Enums.AusweisTyp.Offline))}
<!-- TODO -->
{#if ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen}
<a
class="button text-sm"
@@ -318,6 +322,26 @@
class="button text-sm"
href="/energieausweis-erstellen/verbrauchsausweis-gewerbe?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.BedarfsausweisWohnen}
<a
class="button text-sm"
href="/energieausweis-erstellen/bedarfsausweis-wohngebaeude?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.GEGNachweisWohnen}
<a
class="button text-sm"
href="/angebot-anfragen/geg-nachweis-wohnen-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.GEGNachweisGewerbe}
<a
class="button text-sm"
href="/angebot-anfragen/geg-nachweis-gewerbe-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{:else if ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe}
<a
class="button text-sm"
href="/angebot-anfragen/bedarfsausweis-gewerbe-anfragen?id={ausweis.id}"
>Bearbeiten</a>
{/if}
{/if}

View File

@@ -22,9 +22,40 @@
<div class="flex gap-4">
{#if objekt.aufnahmen.at(-1)?.verbrauchsausweise_wohnen.length}
<a href="/pdf/ansichtsausweis?id={objekt.aufnahmen.at(-1)?.verbrauchsausweise_wohnen.at(-1).id}" target="_blank">
{@const ausweis = objekt.aufnahmen.at(-1)?.verbrauchsausweise_wohnen.at(-1)}
<a href="/pdf/ansichtsausweis?id={ausweis.id}" target="_blank">
<div class="inline-block border rounded-lg bg-white">
<img src="/images/dashboard/ausweishaken.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{#if ausweis?.ausgestellt}
<img src="/images/dashboard/ausweishaken.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{:else}
<img src="/images/dashboard/ausweiskreuz.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{/if}
</div>
<div class="text-sm text-center">Energieausweis</div>
</a>
{/if}
{#if objekt.aufnahmen.at(-1)?.verbrauchsausweise_gewerbe.length}
{@const ausweis = objekt.aufnahmen.at(-1)?.verbrauchsausweise_gewerbe.at(-1)}
<a href="/pdf/ansichtsausweis?id={ausweis.id}" target="_blank">
<div class="inline-block border rounded-lg bg-white">
{#if ausweis?.ausgestellt}
<img src="/images/dashboard/ausweishaken.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{:else}
<img src="/images/dashboard/ausweiskreuz.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{/if}
</div>
<div class="text-sm text-center">Energieausweis</div>
</a>
{/if}
{#if objekt.aufnahmen.at(-1)?.bedarfsausweise_wohnen.length}
{@const ausweis = objekt.aufnahmen.at(-1)?.bedarfsausweise_wohnen.at(-1)}
<a href="/pdf/ansichtsausweis?id={ausweis.id}" target="_blank">
<div class="inline-block border rounded-lg bg-white">
{#if ausweis?.ausgestellt}
<img src="/images/dashboard/ausweishaken.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{:else}
<img src="/images/dashboard/ausweiskreuz.jpg" class="h-auto w-auto max-h-[150px] max-w-full object-contain p-1" alt="Energieausweis ausgestellt">
{/if}
</div>
<div class="text-sm text-center">Energieausweis</div>
</a>

View File

@@ -11,7 +11,6 @@
import {
AufnahmeClient,
ObjektClient,
GEGNachweisWohnenClient,
} from "../Ausweis/types.js";
export let objekt: ObjektClient;
@@ -45,6 +44,11 @@ xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
<option disabled selected value={null}>Bitte auswählen</option>
<option value={Enums.Ausstellgrund.Neubau}>Neubau</option>
<option value={Enums.Ausstellgrund.Modernisierung}>Modernisierung</option>
{#if ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe}
<option value={Enums.Ausstellgrund.Verkauf}>Verkauf</option>
<option value={Enums.Ausstellgrund.Vermietung}>Vermietung</option>
<option value={Enums.Ausstellgrund.Sonstiges}>Sonstiges</option>
{/if}
</select>
<div class="help-label">

View File

@@ -18,6 +18,12 @@ export function getPrismaAusweisAdapter(id: string) {
return prisma.verbrauchsausweisGewerbe
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
return prisma.bedarfsausweisWohnen
} else if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) {
return prisma.gEGNachweisWohnen
} else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) {
return prisma.gEGNachweisGewerbe
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisGewerbe) {
return prisma.bedarfsausweisGewerbe
}
}
@@ -25,7 +31,7 @@ export function getPrismaAusweisAdapter(id: string) {
* Gibt den richtigen Ansichtsausweis basierend auf der Ausweisart zurück.
* @param ausweis
*/
export async function getAnsichtsausweis(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, ausweisart = getAusweisartFromId(ausweis.uid)) {
export async function getAnsichtsausweis(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, ausweisart = getAusweisartFromId(ausweis.id)) {
if (!ausweisart) {
return null
}
@@ -43,7 +49,7 @@ export async function getAnsichtsausweis(ausweis: VerbrauchsausweisWohnenClient
* Gibt das richtige Datenblatt basierend auf der Ausweisart zurück.
* @param ausweis
*/
export async function getDatenblatt(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, ausweisart = getAusweisartFromId(ausweis.uid)) {
export async function getDatenblatt(ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient, aufnahme: AufnahmeClient, objekt: ObjektClient, bilder: BildClient[], user: BenutzerClient, ausweisart = getAusweisartFromId(ausweis.id)) {
if (!ausweisart) {
return null
}

View File

@@ -1,7 +1,6 @@
<script lang="ts">
import PerformanceScore from "#components/Ausweis/PerformanceScore.svelte";
import Progressbar from "#components/Ausweis/Progressbar.svelte";
//import Hilfe from "#components/Ausweis/Hilfe.svelte";
import Bereich from "#components/labels/Bereich.svelte";
@@ -19,25 +18,30 @@
import moment from "moment";
import { Enums } from "#lib/client/prisma.js";
import { Benutzer, Enums } from "#lib/client/prisma.js";
import {
BedarfsausweisWohnenClient,
BenutzerClient,
ObjektClient,
BildClient,
AufnahmeClient
} from "#components/Ausweis/types.js";
export let ausweis: BedarfsausweisWohnenClient;
export let objekt: ObjektClient
export let aufnahme: AufnahmeClient
export let user: BenutzerClient = {} as BenutzerClient;
export let user: Benutzer | null;
export let ausweistyp: Enums.AusweisTyp
export let bilder: BildClient[] = []
export let id: string;
export let id: string | null;
if (((user && user.rolle !== Enums.BenutzerRolle.ADMIN) || !user) && !id && (!ausweis.updated_at || moment(localStorage.getItem("bedarfsausweis-wohnen.updated_at") || new Date()).isAfter(ausweis.updated_at))) {
export let loadFromDatabase: boolean = false
// Wir holen die daten aus dem LocalStorage falls
// Der Nutzer kein Admin ist
// Der Ausweis noch nicht gespeichert wurde
// oder der Ausweis bereits gespeichert wurde aber die Daten im localStorage neuer sind als die Daten aus der Datenbank.
if (((user && user.rolle !== Enums.BenutzerRolle.ADMIN) || !user) && !loadFromDatabase && (!ausweis.updated_at || moment(localStorage.getItem("bedarfsausweis-wohnen.updated_at") || new Date()).isAfter(ausweis.updated_at))) {
const localStorageAusweis = localStorage.getItem("bedarfsausweis-wohnen.ausweis");
if (localStorageAusweis) {
ausweis = JSON.parse(localStorageAusweis)

View File

@@ -86,7 +86,13 @@
<DashboardAusweis {benutzer} {ausweis} {aufnahme} {objekt} rechnung={ausweis.rechnung}></DashboardAusweis>
{/each}
{#each aufnahme.geg_nachweise_wohnen as nachweis}
<DashboardNachweis {nachweis} {aufnahme} {objekt}></DashboardNachweis>
<DashboardAusweis {benutzer} ausweis={nachweis} {aufnahme} {objekt} rechnung={nachweis.rechnung}></DashboardAusweis>
{/each}
{#each aufnahme.geg_nachweise_gewerbe as nachweis}
<DashboardAusweis {benutzer} ausweis={nachweis} {aufnahme} {objekt} rechnung={nachweis.rechnung}></DashboardAusweis>
{/each}
{#each aufnahme.bedarfsausweise_gewerbe as nachweis}
<DashboardAusweis {benutzer} ausweis={nachweis} {aufnahme} {objekt} rechnung={nachweis.rechnung}></DashboardAusweis>
{/each}
</div>

View File

@@ -46,15 +46,15 @@
if (user.rolle !== Enums.BenutzerRolle.ADMIN) {
// Falls der aktuelle Benutzer kein Admin ist können wir die Kundendaten aus den Stammdaten vorausfüllen.
email = localStorage.getItem("kundendaten.email") || user.email || "";
email = rechnung?.email || localStorage.getItem("kundendaten.email") || user.email || "";
vorname = localStorage.getItem("kundendaten.vorname") || user.vorname || "";
name = localStorage.getItem("kundendaten.name") || user.name || "";
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 || "";
empfaenger = rechnung?.empfaenger || localStorage.getItem("kundendaten.empfaenger") || (user.vorname && user.name ? `${user.vorname} ${user.name}` : "")
strasse = rechnung?.strasse || localStorage.getItem("kundendaten.strasse") || user.adresse || "";
plz = rechnung?.plz || localStorage.getItem("kundendaten.plz") || user.plz || "";
ort = rechnung?.ort || localStorage.getItem("kundendaten.ort") || user.ort || "";
zusatzzeile = rechnung?.zusatzzeile || localStorage.getItem("kundendaten.zusatzzeile") || ""
telefon = rechnung?.telefon || localStorage.getItem("kundendaten.telefon") || user.telefon || "";
}
let abweichende_versand_adresse = JSON.parse(localStorage.getItem("kundendaten.abweichende_versand_adresse") || "false")
@@ -139,7 +139,7 @@
[Enums.Ausweisart.VerbrauchsausweisGewerbe]:
new URL("/energieausweis-erstellen/verbrauchsausweis-gewerbe", window.location.origin),
[Enums.Ausweisart.BedarfsausweisWohnen]:
new URL("/energieausweis-erstellen/bedarfsausweis-wohnen", window.location.origin),
new URL("/energieausweis-erstellen/bedarfsausweis-wohngebaeude", window.location.origin),
[Enums.Ausweisart.GEGNachweisWohnen]:
new URL("/angebot-anfragen/geg-nachweis-wohnen-anfragen", window.location.origin),
[Enums.Ausweisart.GEGNachweisGewerbe]:
@@ -174,16 +174,16 @@
let result: Awaited<ReturnType<typeof nachweisSpeichern>> | null = null;
try {
result = await nachweisSpeichern(ausweis, objekt, aufnahme, bilder, unterlagen, ausweisart)
} catch(e) {
addNotification({
dismissable: true,
message: "Ups... Das hat nicht geklappt.",
subtext: "Speichern ist fehlgeschlagen, bitte versuchen sie es erneut oder kontaktieren sie unseren Support."
})
return;
}
try {
result = await nachweisSpeichern(ausweis as unknown as GEGNachweisWohnen | GEGNachweisGewerbe | BedarfsausweisGewerbe, objekt, aufnahme, bilder, unterlagen, ausweisart)
} catch(e) {
addNotification({
dismissable: true,
message: "Ups... Das hat nicht geklappt.",
subtext: "Speichern ist fehlgeschlagen, bitte versuchen sie es erneut oder kontaktieren sie unseren Support."
})
return;
}
try {
const { id } = await api.rechnung.anfordern.PUT.fetch(

View File

@@ -49,10 +49,16 @@
export let bilder: BildClient[];
export let id: string | null;
export let loadFromDatabase: boolean = false;
const ausweisart = Enums.Ausweisart.VerbrauchsausweisGewerbe
const anliegen = "Energieausweis erstellen";
if (((user && user.rolle !== Enums.BenutzerRolle.ADMIN) || !user) && !id && (!ausweis.updated_at || moment(localStorage.getItem("verbrauchsausweis-gewerbe.updated_at") || new Date()).isAfter(ausweis.updated_at))) {
// Wir holen die daten aus dem LocalStorage falls
// Der Nutzer kein Admin ist
// Der Ausweis noch nicht gespeichert wurde
// oder der Ausweis bereits gespeichert wurde aber die Daten im localStorage neuer sind als die Daten aus der Datenbank.
if (((user && user.rolle !== Enums.BenutzerRolle.ADMIN) || !user) && !loadFromDatabase && (!ausweis.updated_at || moment(localStorage.getItem("verbrauchsausweis-gewerbe.updated_at") || new Date()).isAfter(ausweis.updated_at))) {
const localStorageAusweis = localStorage.getItem("verbrauchsausweis-gewerbe.ausweis");
if (localStorageAusweis) {
ausweis = JSON.parse(localStorageAusweis)

View File

@@ -57,9 +57,13 @@
export let ausweistyp: Enums.AusweisTyp;
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.
// 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) || !user) && !id && (!ausweis.updated_at || moment(localStorage.getItem("verbrauchsausweis-wohnen.updated_at") || new Date()).isAfter(ausweis.updated_at))) {
export let loadFromDatabase: boolean = false;
// Wir holen die daten aus dem LocalStorage falls
// Der Nutzer kein Admin ist
// Der Ausweis noch nicht gespeichert wurde
// oder der Ausweis bereits gespeichert wurde aber die Daten im localStorage neuer sind als die Daten aus der Datenbank.
if (((user && user.rolle !== Enums.BenutzerRolle.ADMIN) || !user) && !loadFromDatabase && (!ausweis.updated_at || moment(localStorage.getItem("verbrauchsausweis-wohnen.updated_at") || new Date()).isAfter(ausweis.updated_at))) {
const localStorageAusweis = localStorage.getItem("verbrauchsausweis-wohnen.ausweis");
if (localStorageAusweis) {
ausweis = JSON.parse(localStorageAusweis)

View File

@@ -8,7 +8,7 @@
BildClient,
} from "#components/Ausweis/types.js";
import Bereich from "#components/labels/Bereich.svelte";
import { BedarfsausweisGewerbe, Enums } from "#lib/client/prisma.js";
import { BedarfsausweisGewerbe, Enums, Unterlage } from "#lib/client/prisma.js";
import Progressbar from "#components/Ausweis/Progressbar.svelte";
import FileGrid from "#components/FileGrid.svelte";
import ButtonWeiterHilfe from "#components/Ausweis/ButtonWeiterHilfe.svelte";
@@ -18,24 +18,28 @@
import SanierungszustandWaermedammung from "#components/Ausweis/SanierungszustandWaermedammung.svelte";
import AnlagenTechnik from "#components/Ausweis/AnlagenTechnik.svelte";
import moment from "moment";
import Ausweisart from "#components/Ausweis/Ausweisart.svelte";
export let nachweis: BedarfsausweisGewerbe;
export let objekt: ObjektClient;
export let aufnahme: AufnahmeClient;
export let user: BenutzerClient = {} as BenutzerClient;
export let bilder: BildClient[] = [];
export let plaene: UnterlageClient[] = [];
export let unterlagen: UnterlageClient[] = [];
export let ausweistyp: Enums.AusweisTyp;
export let unterlagen: Unterlage[] = [];
export let nachweistyp: Enums.AusweisTyp;
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.
// 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 && (!nachweis.updated_at || moment(localStorage.getItem("geg-nachweis-wohnen.updated_at") || new Date()).isAfter(nachweis.updated_at))) {
export let loadFromDatabase: boolean = false
// Wir holen die daten aus dem LocalStorage falls
// Der Nutzer kein Admin ist
// Der Ausweis noch nicht gespeichert wurde
// oder der Ausweis bereits gespeichert wurde aber die Daten im localStorage neuer sind als die Daten aus der Datenbank.
if ((user && user.rolle !== Enums.BenutzerRolle.ADMIN) && !loadFromDatabase && (!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) {
nachweis = JSON.parse(localStorageAusweis)
nachweis.nachweistyp = ausweistyp;
nachweis.nachweistyp = nachweistyp;
}
const localStorageAufnahme = localStorage.getItem("geg-nachweis-wohnen.aufnahme");
@@ -99,7 +103,7 @@
{ausweisart}
{anliegen}
steps={["Gebäudedaten", "Kundendaten", "Anfragebestätigung"]}
{ausweistyp}
ausweistyp={nachweistyp}
/>
</div>
@@ -108,11 +112,18 @@
<!-- A Prüfung der Ausweisart -->
<Bereich bereich="A" title="Prüfung der Ausweisart">
<GEGAusweisart
<Ausweisart
bind:objekt
bind:aufnahme
bind:nachweis={nachweis}
bind:ausweis={nachweis}
{ausweisart}
ausstellgrund={[
Enums.Ausstellgrund.Neubau,
Enums.Ausstellgrund.Modernisierung,
Enums.Ausstellgrund.Verkauf,
Enums.Ausstellgrund.Vermietung,
Enums.Ausstellgrund.Sonstiges
]}
/>
</Bereich>
@@ -144,40 +155,11 @@
<Bereich
bereich="F"
title="Angaben zur Wärmedämmung"
title="Angaben zur Anlagentechnik"
><AnlagenTechnik bind:ausweis={nachweis} bind:images={bilder} bind:aufnahme bind:objekt {ausweisart} /></Bereich
>
<Bereich bereich="G" title="Gebäudepläne & Unterlagen">
<div
class="bereich-box grid grid-cols-1 lg:grid-cols-2 gap-x-6 mt-6"
>
<div class="md:box md:card mb-0">
<div class="font-bold mb-2">Pläne</div>
<div>
Hier können sie Grundrisspläne, Ansichtspläne und
Schnitte hochladen. Die Dateien können entweder im PDF
Format oder als Bild hochgeladen werden.
</div>
</div>
<div class="md:box md:card mb-0 mt-6 md:mt-0">
<div>
<strong
>Bitte laden Sie hier mind. 1 Dokument hoch:</strong
>
</div>
<FileGrid
max={Infinity}
min={1}
name={"plaene"}
bind:files={plaene}
bind:ausweis={nachweis}
bind:objekt
></FileGrid>
</div>
</div>
<div
class="bereich-box grid grid-cols-1 lg:grid-cols-2 gap-x-6 mt-6"
>
@@ -191,6 +173,14 @@
können entweder im PDF Format oder als Bild hochgeladen
werden.
</div>
<div class="font-bold mb-2">Pläne</div>
<div>
Hier können sie Grundrisspläne, Ansichtspläne und
Schnitte hochladen. Die Dateien können entweder im PDF
Format oder als Bild hochgeladen werden.
</div>
</div>
<div class="md:box md:card mb-0 mt-6 md:mt-0">

View File

@@ -1,73 +1,54 @@
<script lang="ts">
import Ausweisart from "#components/Ausweis/Ausweisart.svelte";
import GebaeudeDaten from "#components/Ausweis/GebaeudeDaten.svelte";
import {
ObjektClient,
AufnahmeClient,
BenutzerClient,
BildClient,
UnterlageClient,
GEGNachweisWohnenClient,
} from "#components/Ausweis/types.js";
import Bereich from "#components/labels/Bereich.svelte";
import { Enums } from "#lib/client/prisma.js";
import { Aufnahme, Benutzer, Bild, Enums, GEGNachweisWohnen, Objekt, Unterlage } from "#lib/client/prisma.js";
import InputLabel from "#components/labels/InputLabel.svelte";
import HelpLabel from "#components/labels/HelpLabel.svelte";
import Progressbar from "#components/Ausweis/Progressbar.svelte";
import FileGrid from "#components/FileGrid.svelte";
import ButtonWeiterHilfe from "#components/Ausweis/ButtonWeiterHilfe.svelte";
import moment from "moment";
export let nachweis: GEGNachweisWohnenClient;
export let objekt: ObjektClient;
export let aufnahme: AufnahmeClient;
export let user: BenutzerClient = {} as BenutzerClient;
export let bilder: BildClient[] = [];
export let plaene: UnterlageClient[] = [];
export let nachweis: GEGNachweisWohnen;
export let objekt: Objekt;
export let aufnahme: Aufnahme;
export let user: Benutzer | null;
export let bilder: Bild[] = [];
export let nachweistyp: Enums.AusweisTyp = Enums.AusweisTyp.Standard;
export let unterlagen: UnterlageClient[] = [];
export let unterlagen: Unterlage[] = [];
if (Object.keys(nachweis).length === 0) {
const localStorageAusweis = localStorage.getItem(
"geg-nachweis-gewerbe.ausweis"
);
export let loadFromDatabase: boolean = false;
// Wir holen die daten aus dem LocalStorage falls
// Der Nutzer kein Admin ist
// Der Ausweis noch nicht gespeichert wurde
// oder der Ausweis bereits gespeichert wurde aber die Daten im localStorage neuer sind als die Daten aus der Datenbank.
if (((user && user.rolle !== Enums.BenutzerRolle.ADMIN) || !user) && !loadFromDatabase && (!nachweis.updated_at || moment(localStorage.getItem("geg-nachweis-gewerbe.updated_at") || new Date()).isAfter(nachweis.updated_at))) {
const localStorageAusweis = localStorage.getItem("geg-nachweis-gewerbe.ausweis");
if (localStorageAusweis) {
nachweis = JSON.parse(localStorageAusweis);
nachweis = JSON.parse(localStorageAusweis)
nachweis.nachweistyp = nachweistyp;
}
}
if (Object.keys(aufnahme).length === 0) {
const localStorageAufnahme = localStorage.getItem(
"geg-nachweis-gewerbe.aufnahme"
);
const localStorageAufnahme = localStorage.getItem("geg-nachweis-gewerbe.aufnahme");
if (localStorageAufnahme) {
aufnahme = JSON.parse(localStorageAufnahme);
aufnahme = JSON.parse(localStorageAufnahme)
}
}
if (Object.keys(objekt).length === 0) {
const localStorageObjekt = localStorage.getItem(
"geg-nachweis-gewerbe.objekt"
);
const localStorageObjekt = localStorage.getItem("geg-nachweis-gewerbe.objekt");
if (localStorageObjekt) {
objekt = JSON.parse(localStorageObjekt);
objekt = JSON.parse(localStorageObjekt)
}
}
if (Object.keys(bilder).length === 0) {
const localStorageBilder = localStorage.getItem(
"geg-nachweis-gewerbe.bilder"
);
const localStorageBilder = localStorage.getItem("geg-nachweis-gewerbe.bilder");
if (localStorageBilder) {
bilder = JSON.parse(localStorageBilder);
bilder = JSON.parse(localStorageBilder)
}
}
if (Object.keys(unterlagen).length === 0) {
const localStorageUnterlagen = localStorage.getItem(
"geg-nachweis-gewerbe.unterlagen"
);
const localStorageUnterlagen = localStorage.getItem("geg-nachweis-gewerbe.unterlagen");
if (localStorageUnterlagen) {
unterlagen = JSON.parse(localStorageUnterlagen);
unterlagen = JSON.parse(localStorageUnterlagen)
}
}
@@ -166,35 +147,6 @@
</Bereich>
<Bereich bereich="D" title="Gebäudepläne & Unterlagen">
<div
class="bereich-box grid grid-cols-1 lg:grid-cols-2 gap-x-6 mt-6"
>
<div class="md:box md:card mb-0">
<div class="font-bold mb-2">Pläne</div>
<div>
Hier können sie Grundrisspläne, Ansichtspläne und
Schnitte hochladen. Die Dateien können entweder im PDF
Format oder als Bild hochgeladen werden.
</div>
</div>
<div class="md:box md:card mb-0 mt-6 md:mt-0">
<div>
<strong
>Bitte laden Sie hier mind. 1 Dokument hoch:</strong
>
</div>
<FileGrid
max={Infinity}
min={1}
name={"plaene"}
bind:files={plaene}
bind:ausweis={nachweis}
bind:objekt
></FileGrid>
</div>
</div>
<div
class="bereich-box grid grid-cols-1 lg:grid-cols-2 gap-x-6 mt-6"
>
@@ -208,6 +160,14 @@
können entweder im PDF Format oder als Bild hochgeladen
werden.
</div>
<div class="font-bold mb-2">Pläne</div>
<div>
Hier können sie Grundrisspläne, Ansichtspläne und
Schnitte hochladen. Die Dateien können entweder im PDF
Format oder als Bild hochgeladen werden.
</div>
</div>
<div class="md:box md:card mb-0 mt-6 md:mt-0">

View File

@@ -28,7 +28,13 @@
export let nachweistyp: Enums.AusweisTyp = Enums.AusweisTyp.Standard;
export let id: string | null;
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))) {
export let loadFromDatabase: boolean = false;
// Wir holen die daten aus dem LocalStorage falls
// Der Nutzer kein Admin ist
// Der Ausweis noch nicht gespeichert wurde
// oder der Ausweis bereits gespeichert wurde aber die Daten im localStorage neuer sind als die Daten aus der Datenbank.
if ((user && user.rolle !== Enums.BenutzerRolle.ADMIN) && !loadFromDatabase && (!nachweis.updated_at || moment(localStorage.getItem("geg-nachweis-wohnen.updated_at") || new Date()).isAfter(nachweis.updated_at))) {
const localStorageNachweis = localStorage.getItem("geg-nachweis-wohnen.ausweis");
if (localStorageNachweis) {
nachweis = JSON.parse(localStorageNachweis)

View File

@@ -9,7 +9,7 @@ import BedarfsausweisGewerbeModule from "#modules/angebot-anfragen/Bedarfsauswei
const id = Astro.url.searchParams.get("id");
const aufnahme_id = Astro.url.searchParams.get("aufnahme")
let ausweistyp = Astro.url.searchParams.get("ausweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
let nachweistyp = Astro.url.searchParams.get("nachweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
let nachweis: BedarfsausweisGewerbe = {} as BedarfsausweisGewerbe;
let aufnahme: Aufnahme = {} as Aufnahme;
@@ -32,7 +32,7 @@ if (id) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne ID weiter.
return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
"/angebot-anfragen/geg-nachweis-gewerbe-anfragen"
);
}
@@ -41,7 +41,7 @@ if (id) {
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"
"/angebot-anfragen/geg-nachweis-gewerbe-anfragen"
);
}
@@ -50,7 +50,7 @@ if (id) {
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"
"/angebot-anfragen/geg-nachweis-gewerbe-anfragen"
);
}
@@ -68,7 +68,7 @@ if (id) {
if (!aufnahme) {
// Die Aufnahme existiert wohl nicht.
return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
"/angebot-anfragen/geg-nachweis-gewerbe-anfragen"
);
}
@@ -77,12 +77,12 @@ if (id) {
if (!objekt) {
// Das Objekt existiert nicht.
return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
"/angebot-anfragen/geg-nachweis-gewerbe-anfragen"
);
}
}
---
<AusweisLayout title="Bedarfsausweis Gewerbe anfragen" tabHover4="glow">
<BedarfsausweisGewerbeModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} {id} {ausweistyp} />
<BedarfsausweisGewerbeModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} {id} {nachweistyp} />
</AusweisLayout>

View File

@@ -1,90 +1,86 @@
---
import AusweisLayout from "#layouts/AusweisLayoutDaten_partner.astro";
import { AufnahmeClient, GEGNachweisWohnenClient, ObjektClient, UnterlageClient, UploadedGebaeudeBild } 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 { Aufnahme, Bild, Enums, GEGNachweisGewerbe, GEGNachweisWohnen, Objekt, Unterlage } from "#lib/server/prisma";
import { getAufnahme, getObjekt, getBilder, getGEGNachweisWohnen, getUnterlagen, getGEGNachweisGewerbe } from "#lib/server/db";
import { getCurrentUser } from "#lib/server/user";
import GEGNachweisGewerbeModule from "#modules/angebot-anfragen/GEGNachweisGewerbeModule.svelte";
const uid = Astro.url.searchParams.get("uid");
let nachweis: GEGNachweisWohnenClient = {} as GEGNachweisWohnenClient;
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
let objekt: ObjektClient = {} as ObjektClient;
let bilder: UploadedGebaeudeBild[] = []
let unterlagen: UnterlageClient[] = []
const id = Astro.url.searchParams.get("id");
const aufnahme_id = Astro.url.searchParams.get("aufnahme")
let nachweistyp = Astro.url.searchParams.get("nachweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
const valid = validateAccessTokenServer(Astro);
let nachweis: GEGNachweisGewerbe = {} as GEGNachweisGewerbe;
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 (!valid) {
if (id) {
if (!user) {
return Astro.redirect(
`/auth/login?redirect=${Astro.url.toString()}`
);
}
try {
nachweis = await caller["geg-nachweis-wohnen"]._uid.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid
}
});
nachweis = await getGEGNachweisGewerbe(id) as GEGNachweisGewerbe
aufnahme = await caller.aufnahme._uid.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
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) {
if (!nachweis || nachweis.benutzer_id !== user.id) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne ID weiter.
return Astro.redirect(
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
"/angebot-anfragen/geg-nachweis-gewerbe-anfragen"
);
}
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(
"/angebot-anfragen/geg-nachweis-gewerbe-anfragen"
);
}
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(
"/angebot-anfragen/geg-nachweis-gewerbe-anfragen"
);
}
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(
"/angebot-anfragen/geg-nachweis-gewerbe-anfragen"
);
}
objekt = await getObjekt(aufnahme.objekt_id) as Objekt
if (!objekt) {
// Das Objekt existiert nicht.
return Astro.redirect(
"/angebot-anfragen/geg-nachweis-gewerbe-anfragen"
);
}
}
---
<AusweisLayout title="GEG Nachweis Wohnen anfragen" tabHover6="glow">
<GEGNachweisGewerbeModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} />
<GEGNachweisGewerbeModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} {id} {nachweistyp} />
</AusweisLayout>

View File

@@ -1,86 +1,79 @@
---
import AusweisLayout from "#layouts/AusweisLayoutDaten_partner.astro";
import { AufnahmeClient, GEGNachweisWohnenClient, ObjektClient, UnterlageClient, UploadedGebaeudeBild } 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 { Enums } from "#lib/server/prisma";
import { Aufnahme, Bild, Enums, GEGNachweisWohnen, Objekt, Unterlage, VerbrauchsausweisWohnen } from "#lib/server/prisma";
import { getVerbrauchsausweisWohnen, getAufnahme, getObjekt, getBilder, getGEGNachweisWohnen, getUnterlagen } from "#lib/server/db";
import { getCurrentUser } from "#lib/server/user";
const uid = Astro.url.searchParams.get("uid");
const ausweistyp = Astro.url.searchParams.get("ausweistyp") || Enums.AusweisTyp.Standard;
const id = Astro.url.searchParams.get("id");
const aufnahme_id = Astro.url.searchParams.get("aufnahme")
let nachweistyp = Astro.url.searchParams.get("nachweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
let nachweis: GEGNachweisWohnenClient = {} as GEGNachweisWohnenClient;
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
let objekt: ObjektClient = {} as ObjektClient;
let bilder: UploadedGebaeudeBild[] = []
let unterlagen: UnterlageClient[] = []
let nachweis: GEGNachweisWohnen = {} as GEGNachweisWohnen;
let aufnahme: Aufnahme = {} as Aufnahme;
let objekt: Objekt = {} as Objekt;
let bilder: Bild[] = []
let unterlagen: Unterlage[] = []
const valid = validateAccessTokenServer(Astro);
const user = await getCurrentUser(Astro)
const caller = createCaller(Astro);
if (uid) {
if (!valid) {
if (id) {
if (!user) {
return Astro.redirect(
`/auth/login?redirect=${Astro.url.toString()}`
);
}
try {
nachweis = await caller["geg-nachweis-wohnen"]._uid.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid
}
});
nachweis = await getGEGNachweisWohnen(id) as GEGNachweisWohnen
aufnahme = await caller.aufnahme._uid.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid: nachweis.uid_aufnahme
}
})
if (!nachweis || nachweis.benutzer_id !== user.id) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne ID weiter.
return Astro.redirect(
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
}
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
}
})
aufnahme = await getAufnahme(nachweis.aufnahme_id) as Aufnahme
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
}
})
if (!aufnahme) {
// Die Aufnahme existiert nicht, das sollte eigentlich nicht passieren aber so können wir nicht fortfahren.
return Astro.redirect(
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
}
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
}
})
objekt = await getObjekt(aufnahme.objekt_id) as Objekt
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) {
if (!objekt) {
// Das Objekt existiert nicht, das sollte eigentlich nicht passieren aber so können wir nicht fortfahren.
return Astro.redirect(
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
}
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(
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
}
objekt = await getObjekt(aufnahme.objekt_id) as Objekt
if (!objekt) {
// Das Objekt existiert nicht.
return Astro.redirect(
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
@@ -89,5 +82,5 @@ if (uid) {
---
<AusweisLayout title="GEG Nachweis Wohnen anfragen" tabHover5="glow">
<GEGNachweisWohnenModule client:only {nachweis} {objekt} {aufnahme} {bilder} {ausweistyp} {unterlagen} />
<GEGNachweisWohnenModule client:only {nachweis} {objekt} {aufnahme} {bilder} {nachweistyp} {unterlagen} {id} />
</AusweisLayout>

View File

@@ -67,12 +67,12 @@ if (id) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
return Astro.redirect(
"/energieausweis-erstellen/bedarfsausweis-wohnen"
"/energieausweis-erstellen/bedarfsausweis-wohngebaeude"
);
}
} catch(e) {
return Astro.redirect(
"/energieausweis-erstellen/bedarfsausweis-wohnen"
"/energieausweis-erstellen/bedarfsausweis-wohngebaeude"
);
}
}

View File

@@ -1,15 +1,13 @@
---
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
import VerbrauchsausweisWohnenModule from "#modules/VerbrauchsausweisWohnen/VerbrauchsausweisWohnenModule.svelte";
import { AufnahmeClient, BildClient, ObjektClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
import { Aufnahme, BedarfsausweisGewerbe, Bild, Enums, Objekt, Unterlage, VerbrauchsausweisWohnen } from "#lib/server/prisma";
import { getAufnahme, getBedarfsausweisGewerbe, getBilder, getObjekt, getUnterlagen, getVerbrauchsausweisWohnen } from "#lib/server/db";
import { Aufnahme, BedarfsausweisGewerbe, Bild, Enums, Objekt, Unterlage } from "#lib/server/prisma";
import { getAufnahme, getBedarfsausweisGewerbe, getBilder, getObjekt, getUnterlagen } from "#lib/server/db";
import { getCurrentUser } from "#lib/server/user";
import BedarfsausweisGewerbeModule from "#modules/angebot-anfragen/BedarfsausweisGewerbeModule.svelte";
const id = Astro.url.searchParams.get("id");
const aufnahme_id = Astro.url.searchParams.get("aufnahme")
let ausweistyp = Astro.url.searchParams.get("ausweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
let nachweistyp = Astro.url.searchParams.get("ausweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
let nachweis: BedarfsausweisGewerbe = {} as BedarfsausweisGewerbe;
let aufnahme: Aufnahme = {} as Aufnahme;
@@ -27,7 +25,8 @@ if (id) {
}
nachweis = await getBedarfsausweisGewerbe(id) as BedarfsausweisGewerbe
nachweistyp = nachweis.nachweistyp
if (!nachweis || nachweis.benutzer_id !== user.id) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne ID weiter.
@@ -84,5 +83,5 @@ if (id) {
---
<AusweisLayout title="Bedarfsausweis Gewerbe anfragen">
<BedarfsausweisGewerbeModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} {id} {ausweistyp} />
<BedarfsausweisGewerbeModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} {id} {nachweistyp} loadFromDatabase={id !== null} />
</AusweisLayout>

View File

@@ -1,90 +1,87 @@
---
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
import { AufnahmeClient, GEGNachweisWohnenClient, ObjektClient, UnterlageClient, BildClient } 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 GEGNachweisGewerbeModule from "#modules/angebot-anfragen/GEGNachweisGewerbeModule.svelte";
import { getAufnahme, getObjekt, getBilder, getUnterlagen, getGEGNachweisGewerbe } from "#lib/server/db";
import { Enums, Aufnahme, Objekt, Bild, Unterlage, GEGNachweisGewerbe } from "#lib/server/prisma";
import { getCurrentUser } from "#lib/server/user";
const uid = Astro.url.searchParams.get("uid");
let nachweis: GEGNachweisWohnenClient = {} as GEGNachweisWohnenClient;
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
let objekt: ObjektClient = {} as ObjektClient;
let bilder: BildClient[] = []
let unterlagen: UnterlageClient[] = []
const id = Astro.url.searchParams.get("id");
const aufnahme_id = Astro.url.searchParams.get("aufnahme")
let nachweistyp = Astro.url.searchParams.get("nachweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
const valid = validateAccessTokenServer(Astro);
let nachweis: GEGNachweisGewerbe = {} as GEGNachweisGewerbe;
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 (!valid) {
if (id) {
if (!user) {
return Astro.redirect(
`/auth/login?redirect=${Astro.url.toString()}`
);
}
try {
nachweis = await caller["geg-nachweis-wohnen"]._uid.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
uid
}
});
nachweis = await getGEGNachweisGewerbe(id) as GEGNachweisGewerbe
nachweistyp = nachweis.nachweistyp
aufnahme = await caller.aufnahme._uid.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
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-gewerbe-anfragen"
);
}
} catch(e) {
if (!nachweis || nachweis.benutzer_id !== user.id) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne ID weiter.
return Astro.redirect(
"/angebot-anfragen/geg-nachweis-gewerbe-anfragen"
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
}
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(
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
}
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(
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
}
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(
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
}
objekt = await getObjekt(aufnahme.objekt_id) as Objekt
if (!objekt) {
// Das Objekt existiert nicht.
return Astro.redirect(
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
}
}
---
<AusweisLayout title="GEG Nachweis Gewerbe anfragen">
<GEGNachweisGewerbeModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} />
<GEGNachweisGewerbeModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} {nachweistyp} {user} loadFromDatabase={id !== null} />
</AusweisLayout>

View File

@@ -8,7 +8,7 @@ import { getUnterlagen } from "#lib/server/db";
const id = Astro.url.searchParams.get("id");
const aufnahme_id = Astro.url.searchParams.get("aufnahme")
let ausweistyp = Astro.url.searchParams.get("ausweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
let nachweistyp = Astro.url.searchParams.get("nachweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
let nachweis: GEGNachweisWohnen = {} as GEGNachweisWohnen;
let aufnahme: Aufnahme = {} as Aufnahme;
@@ -26,12 +26,13 @@ if (id) {
}
nachweis = await getGEGNachweisWohnen(id) as GEGNachweisWohnen
nachweistyp = nachweis.nachweistyp
if (!nachweis || nachweis.benutzer_id !== user.id) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne ID weiter.
return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
}
@@ -40,7 +41,7 @@ if (id) {
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"
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
}
@@ -49,7 +50,7 @@ if (id) {
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"
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
}
@@ -67,7 +68,7 @@ if (id) {
if (!aufnahme) {
// Die Aufnahme existiert wohl nicht.
return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
}
@@ -76,12 +77,12 @@ if (id) {
if (!objekt) {
// Das Objekt existiert nicht.
return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
"/angebot-anfragen/geg-nachweis-wohnen-anfragen"
);
}
}
---
<AusweisLayout title="GEG Nachweis Wohnen anfragen">
<GEGNachweisWohnenModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} {id} />
<GEGNachweisWohnenModule client:only {nachweis} {objekt} {aufnahme} {bilder} {unterlagen} {id} {nachweistyp} loadFromDatabase={id !== null} />
</AusweisLayout>

View File

@@ -46,7 +46,7 @@ export const PUT = defineApiRoute({
})
}
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.GEGNachweisGewerbe)
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.BedarfsausweisGewerbe)
const nachweis = await prisma.bedarfsausweisGewerbe.create({
data: {

View File

@@ -6,7 +6,7 @@ import { APIError, defineApiRoute } from "astro-typesafe-api/server";
export const GET = defineApiRoute({
input: z.object({
plz: z.string().min(4).max(5),
startdatum: z.coerce.date(),
startdatum: z.coerce.date().nullable(),
enddatum: z.coerce.date(),
genauigkeit: z.enum(["months", "years"]),
}),

View File

@@ -52,6 +52,8 @@ export const PUT = defineApiRoute({
})
}
console.log(nachweis);
if (!nachweis || nachweis.benutzer_id !== user.id) {
throw new APIError({

View File

@@ -40,7 +40,9 @@ export const PUT = defineApiRoute({
}
});
const buffer = Buffer.from(data, "base64");
// Wir kriegen die Daten als dataURL
const base64 = data.split(',')[1];
const buffer = Buffer.from(base64, "base64");
try {
const command = new PutObjectCommand({

View File

@@ -16,7 +16,7 @@ export const PATCH = defineApiRoute({
updated_at: true,
created_at: true
}).merge(z.object({
startdatum: z.coerce.date()
startdatum: z.coerce.date().nullable(),
})),
output: z.void(),
headers: {

View File

@@ -23,7 +23,7 @@ export const PUT = defineApiRoute({
updated_at: true,
created_at: true
}).merge(z.object({
startdatum: z.coerce.date()
startdatum: z.coerce.date().nullable()
})),
aufnahme_id: UUidWithPrefix
}),

View File

@@ -17,7 +17,7 @@ export const PATCH = defineApiRoute({
created_at: true,
updated_at: true
}).merge(z.object({
startdatum: z.coerce.date()
startdatum: z.coerce.date().nullable()
})),
output: z.void(),
headers: {

View File

@@ -19,7 +19,7 @@ export const PUT = defineApiRoute({
},
input: z.object({
ausweis: VerbrauchsausweisWohnenSchema.merge(z.object({
startdatum: z.coerce.date()
startdatum: z.coerce.date().nullable()
})).omit({
id: true,
benutzer_id: true,

View File

@@ -2,78 +2,80 @@
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
import BedarfsausweisWohnenModule from "#modules/BedarfsausweisWohnen/BedarfsausweisWohnenModule.svelte";
import { AufnahmeClient, ObjektClient, BildClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
import { createCaller } from "src/astro-typesafe-api-caller";
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants";
import { validateAccessTokenServer } from "#server/lib/validateAccessToken";
import { Enums } from "#lib/server/prisma";
import { Aufnahme, BedarfsausweisWohnen, Bild, Enums, Objekt } from "#lib/server/prisma";
import { getAufnahme, getObjekt, getBilder, getBedarfsausweisWohnen } from "#lib/server/db";
import { getCurrentUser } from "#lib/server/user";
const id = Astro.url.searchParams.get("uid") || "";
const id = Astro.url.searchParams.get("id");
const aufnahme_id = Astro.url.searchParams.get("aufnahme")
const ausweistyp = Astro.url.searchParams.get("ausweistyp") || Enums.AusweisTyp.Standard;
let ausweis: VerbrauchsausweisWohnenClient = {} as VerbrauchsausweisWohnenClient;
let aufnahme: AufnahmeClient = {} as AufnahmeClient;
let objekt: ObjektClient = {} as ObjektClient;
let bilder: BildClient[] = []
let ausweistyp = Astro.url.searchParams.get("ausweistyp") as Enums.AusweisTyp || Enums.AusweisTyp.Standard;
const valid = validateAccessTokenServer(Astro);
let ausweis: BedarfsausweisWohnen = {} as BedarfsausweisWohnen;
let aufnahme: Aufnahme = {} as Aufnahme;
let objekt: Objekt = {} as Objekt;
let bilder: Bild[] = []
const caller = createCaller(Astro);
const user = await getCurrentUser(Astro)
if (id) {
if (!valid) {
if (!user) {
return Astro.redirect(
`/auth/login?redirect=${Astro.url.toString()}`
);
}
try {
ausweis = await caller["bedarfsausweis-wohnen"]._id.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
id
}
});
ausweis = await getBedarfsausweisWohnen(id) as BedarfsausweisWohnen
ausweistyp = ausweis.ausweistyp;
aufnahme = await caller.aufnahme._id.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
id: ausweis.aufnahme_id
}
})
objekt = await caller.objekt._id.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
id: ausweis.objekt_id
}
})
bilder = await caller.aufnahme._id.bilder.GET.fetch(null, {
headers: {
authorization: `Bearer ${Astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)?.value}`
},
params: {
id: ausweis.aufnahme_id
}
})
if (!ausweis) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
return Astro.redirect(
"/energieausweis-erstellen/bedarfsausweis-wohnen"
);
}
} catch(e) {
if (!ausweis || ausweis.benutzer_id !== user.id) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne ID weiter.
return Astro.redirect(
"/energieausweis-erstellen/bedarfsausweis-wohnen"
"/energieausweis-erstellen/bedarfsausweis-wohngebaeude"
);
}
aufnahme = await getAufnahme(ausweis.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/bedarfsausweis-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/bedarfsausweis-wohngebaeude"
);
}
bilder = await getBilder(aufnahme.id);
} else if (aufnahme_id) {
if (!user) {
return Astro.redirect(
`/auth/login?redirect=${Astro.url.toString()}`
);
}
aufnahme = await getAufnahme(ausweis.aufnahme_id) as Aufnahme
if (!aufnahme) {
// Die Aufnahme existiert wohl nicht.
return Astro.redirect(
"/energieausweis-erstellen/bedarfsausweis-wohngebaeude"
);
}
objekt = await getObjekt(aufnahme.objekt_id) as Objekt
if (!objekt) {
// Das Objekt existiert nicht.
return Astro.redirect(
"/energieausweis-erstellen/bedarfsausweis-wohngebaeude"
);
}
}
@@ -81,5 +83,5 @@ if (id) {
---
<AusweisLayout title="Bedarfsausweis erstellen | IBCornelsen">
<BedarfsausweisWohnenModule client:only {ausweis} {objekt} {aufnahme} {bilder} {ausweistyp} {id}></BedarfsausweisWohnenModule>
<BedarfsausweisWohnenModule client:only {ausweis} {objekt} {aufnahme} {bilder} {ausweistyp} {id} {user} loadFromDatabase={id !== null}></BedarfsausweisWohnenModule>
</AusweisLayout>

View File

@@ -25,12 +25,13 @@ if (id) {
}
ausweis = await getVerbrauchsausweisGewerbe(id) as VerbrauchsausweisGewerbe
ausweistyp = ausweis.ausweistyp;
if (!ausweis || ausweis.benutzer_id !== user.id) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne ID weiter.
return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
"/energieausweis-erstellen/verbrauchsausweis-gewerbe"
);
}
@@ -39,7 +40,7 @@ if (id) {
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"
"/energieausweis-erstellen/verbrauchsausweis-gewerbe"
);
}
@@ -48,7 +49,7 @@ if (id) {
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"
"/energieausweis-erstellen/verbrauchsausweis-gewerbe"
);
}
@@ -65,7 +66,7 @@ if (id) {
if (!aufnahme) {
// Die Aufnahme existiert wohl nicht.
return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
"/energieausweis-erstellen/verbrauchsausweis-gewerbe"
);
}
@@ -74,12 +75,12 @@ if (id) {
if (!objekt) {
// Das Objekt existiert nicht.
return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohngebaeude"
"/energieausweis-erstellen/verbrauchsausweis-gewerbe"
);
}
}
---
<AusweisLayout title="Verbrauchsausweis Gewerbe erstellen | IBCornelsen">
<VerbrauchsausweisGewerbeModule client:only {ausweis} {objekt} {aufnahme} {bilder} {ausweistyp} {user} {id} />
<VerbrauchsausweisGewerbeModule client:only {ausweis} {objekt} {aufnahme} {bilder} {ausweistyp} {user} {id} loadFromDatabase={id !== null}/>
</AusweisLayout>

View File

@@ -25,6 +25,7 @@ if (id) {
}
ausweis = await getVerbrauchsausweisWohnen(id) as VerbrauchsausweisWohnen
ausweistyp = ausweis.ausweistyp;
if (!ausweis || ausweis.benutzer_id !== user.id) {
// Der Ausweis scheint nicht zu existieren.
@@ -81,5 +82,5 @@ if (id) {
---
<AusweisLayout title="Verbrauchsausweis erstellen">
<VerbrauchsausweisWohnenModule client:only {ausweis} {objekt} {aufnahme} {bilder} {id} {ausweistyp} {user} />
<VerbrauchsausweisWohnenModule client:only {ausweis} {objekt} {aufnahme} {bilder} {id} {ausweistyp} {user} loadFromDatabase={id !== null} />
</AusweisLayout>

View File

@@ -64,12 +64,12 @@ if (uid) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
return Astro.redirect(
"/energieausweis-erstellen/bedarfsausweis-wohnen"
"/energieausweis-erstellen/bedarfsausweis-wohngebaeude"
);
}
} catch(e) {
return Astro.redirect(
"/energieausweis-erstellen/bedarfsausweis-wohnen"
"/energieausweis-erstellen/bedarfsausweis-wohngebaeude"
);
}
}

View File

@@ -7,9 +7,14 @@ import { getCurrentUser } from "#lib/server/user";
const user = await getCurrentUser(Astro)
const id = Astro.url.searchParams.get("id");
if (!user || !id) {
return Astro.redirect("/")
}
const adapter = getPrismaAusweisAdapter(id || "")
if (!user || !id || !adapter) {
if (!adapter) {
return Astro.redirect("/")
}