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 aufnahme.id = aufnahme_id
if (ausweisart == Enums.Ausweisart.GEGNachweisWohnen) { 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) { } 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) { } 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), { await api.aufnahme._id.bilder.PUT.fetch(bilder.map(bild => bild.id), {

View File

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

View File

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

View File

@@ -88,6 +88,12 @@
{#each aufnahme.geg_nachweise_wohnen as nachweis} {#each aufnahme.geg_nachweise_wohnen as nachweis}
<DashboardNachweis {nachweis} {aufnahme} {objekt}></DashboardNachweis> <DashboardNachweis {nachweis} {aufnahme} {objekt}></DashboardNachweis>
{/each} {/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>
<div class="fixed bottom-8 right-8 flex flex-col gap-4"> <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; let result: Awaited<ReturnType<typeof nachweisSpeichern>> | null = null;
try { try {
result = await nachweisSpeichern(ausweis, objekt, aufnahme, bilder, unterlagen, ausweisart) result = await nachweisSpeichern(ausweis as unknown as GEGNachweisWohnen | GEGNachweisGewerbe | BedarfsausweisGewerbe, objekt, aufnahme, bilder, unterlagen, ausweisart)
} catch(e) { } catch(e) {
addNotification({ addNotification({
dismissable: true, dismissable: true,
message: "Ups... Das hat nicht geklappt.", message: "Ups... Das hat nicht geklappt.",
subtext: "Speichern ist fehlgeschlagen, bitte versuchen sie es erneut oder kontaktieren sie unseren Support." subtext: "Speichern ist fehlgeschlagen, bitte versuchen sie es erneut oder kontaktieren sie unseren Support."
}) })
return; return;
} }
try { try {
const { id } = await api.rechnung.anfordern.PUT.fetch( const { id } = await api.rechnung.anfordern.PUT.fetch(

View File

@@ -8,7 +8,7 @@
BildClient, BildClient,
} from "#components/Ausweis/types.js"; } from "#components/Ausweis/types.js";
import Bereich from "#components/labels/Bereich.svelte"; import Bereich from "#components/labels/Bereich.svelte";
import { BedarfsausweisGewerbe, Enums } from "#lib/client/prisma.js"; import { BedarfsausweisGewerbe, Enums, Unterlage } from "#lib/client/prisma.js";
import Progressbar from "#components/Ausweis/Progressbar.svelte"; import Progressbar from "#components/Ausweis/Progressbar.svelte";
import FileGrid from "#components/FileGrid.svelte"; import FileGrid from "#components/FileGrid.svelte";
import ButtonWeiterHilfe from "#components/Ausweis/ButtonWeiterHilfe.svelte"; import ButtonWeiterHilfe from "#components/Ausweis/ButtonWeiterHilfe.svelte";
@@ -24,8 +24,7 @@
export let aufnahme: AufnahmeClient; export let aufnahme: AufnahmeClient;
export let user: BenutzerClient = {} as BenutzerClient; export let user: BenutzerClient = {} as BenutzerClient;
export let bilder: BildClient[] = []; export let bilder: BildClient[] = [];
export let plaene: UnterlageClient[] = []; export let unterlagen: Unterlage[] = [];
export let unterlagen: UnterlageClient[] = [];
export let ausweistyp: Enums.AusweisTyp; export let ausweistyp: Enums.AusweisTyp;
export let id: string | null; export let id: string | null;
@@ -151,35 +150,6 @@
> >
<Bereich bereich="G" title="Gebäudepläne & Unterlagen"> <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 <div
class="bereich-box grid grid-cols-1 lg:grid-cols-2 gap-x-6 mt-6" 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 können entweder im PDF Format oder als Bild hochgeladen
werden. werden.
</div> </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>
<div class="md:box md:card mb-0 mt-6 md:mt-0"> <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({ const nachweis = await prisma.bedarfsausweisGewerbe.create({
data: { data: {

View File

@@ -52,6 +52,8 @@ export const PUT = defineApiRoute({
}) })
} }
console.log(nachweis);
if (!nachweis || nachweis.benutzer_id !== user.id) { if (!nachweis || nachweis.benutzer_id !== user.id) {
throw new APIError({ 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 { try {
const command = new PutObjectCommand({ const command = new PutObjectCommand({

View File

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