Bedarfsausweis Gewerbe

This commit is contained in:
Moritz Utcke
2025-04-06 13:27:08 -04:00
parent 7b0fdbf5f8
commit 624fd3c045
10 changed files with 58 additions and 54 deletions

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

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

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

@@ -88,6 +88,12 @@
{#each aufnahme.geg_nachweise_wohnen as nachweis}
<DashboardNachweis {nachweis} {aufnahme} {objekt}></DashboardNachweis>
{/each}
{#each aufnahme.geg_nachweise_gewerbe as nachweis}
<DashboardNachweis {nachweis} {aufnahme} {objekt}></DashboardNachweis>
{/each}
{#each aufnahme.bedarfsausweise_gewerbe as nachweis}
<DashboardNachweis {nachweis} {aufnahme} {objekt}></DashboardNachweis>
{/each}
</div>
<div class="fixed bottom-8 right-8 flex flex-col gap-4">

View File

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

@@ -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";
@@ -24,8 +24,7 @@
export let aufnahme: AufnahmeClient;
export let user: BenutzerClient = {} as BenutzerClient;
export let bilder: BildClient[] = [];
export let plaene: UnterlageClient[] = [];
export let unterlagen: UnterlageClient[] = [];
export let unterlagen: Unterlage[] = [];
export let ausweistyp: Enums.AusweisTyp;
export let id: string | null;
@@ -151,35 +150,6 @@
>
<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"
>
@@ -193,6 +163,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

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

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

@@ -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("/")
}