GEG Nachweis Gewerbe

This commit is contained in:
Moritz Utcke
2025-03-12 16:21:27 -03:00
parent cf68652880
commit 0b93b2d230
17 changed files with 526 additions and 157 deletions

View File

@@ -1,6 +1,6 @@
---
import AusweisLayout from "#layouts/AusweisLayoutDaten.astro";
import { AufnahmeClient, GEGNachweisWohnenClient, ObjektClient, UnterlageClient, UploadedGebaeudeBild } from "#components/Ausweis/types";
import { AufnahmeClient, BildClient, GEGNachweisWohnenClient, ObjektClient, UnterlageClient } from "#components/Ausweis/types";
import { createCaller } from "src/astro-typesafe-api-caller";
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
import { validateAccessTokenServer } from "#server/lib/validateAccessToken.js";
@@ -10,7 +10,7 @@ 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 bilder: BildClient[] = []
let unterlagen: UnterlageClient[] = []
const valid = validateAccessTokenServer(Astro);

View File

@@ -1,7 +1,8 @@
import { UUidWithPrefix } from "#components/Ausweis/types.js"
import { authorizationMiddleware } from "#lib/middleware/authorization.js"
import { AufnahmeSchema, ObjektSchema, prisma } from "#lib/server/prisma.js"
import { prisma } from "#lib/server/prisma.js"
import { APIError, defineApiRoute } from "astro-typesafe-api/server"
import { AufnahmeSchema } from "src/generated/zod/aufnahme.js"
import { z } from "zod"
export const PUT = defineApiRoute({

View File

@@ -1,7 +1,8 @@
import { UUidWithPrefix } from "#components/Ausweis/types.js";
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
import { GEGNachweisGewerbeSchema, GEGNachweisWohnenSchema, prisma } from "#lib/server/prisma";
import { prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { GEGNachweisGewerbeSchema } from "src/generated/zod/gegnachweisgewerbe.js";
import { z } from "zod";
export const PUT = defineApiRoute({
@@ -18,6 +19,7 @@ export const PUT = defineApiRoute({
uid: true,
aufnahme_id: true,
geg_einpreisung_id: true,
rechnung_id: true
}),
uid_aufnahme: UUidWithPrefix
}),
@@ -109,7 +111,6 @@ export const GET = defineApiRoute({
benutzer: true,
aufnahme: {
include: {
rechnungen: true,
events: {
include: {
benutzer: {

View File

@@ -1,7 +1,8 @@
import { UUidWithPrefix } from "#components/Ausweis/types.js";
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
import { GEGNachweisWohnenSchema, prisma } from "#lib/server/prisma";
import { prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { GEGNachweisWohnenSchema } from "src/generated/zod/gegnachweiswohnen.js";
import { z } from "zod";
export const PUT = defineApiRoute({
@@ -17,7 +18,8 @@ export const PUT = defineApiRoute({
benutzer_id: true,
uid: true,
aufnahme_id: true,
geg_einpreisung_id: true
geg_einpreisung_id: true,
rechnung_id: true
}),
uid_aufnahme: UUidWithPrefix
}),
@@ -109,7 +111,6 @@ export const GET = defineApiRoute({
benutzer: true,
aufnahme: {
include: {
rechnungen: true,
events: {
include: {
benutzer: {

View File

@@ -2,7 +2,7 @@ import { getAusweisartFromUUID, UUidWithPrefix } from "#components/Ausweis/types
import { omit } from "#lib/helpers.js";
import { authorizationHeaders, authorizationMiddleware } from "#lib/middleware/authorization.js";
import { sendGEGAnforderungsMail } from "#lib/server/mail/geg-anfordern.js";
import { Enums, prisma } from "#lib/server/prisma.js";
import { Enums, GEGNachweisGewerbe, GEGNachweisWohnen, prisma } from "#lib/server/prisma.js";
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
import { GEGEinpreisungSchema } from "src/generated/zod/gegeinpreisung.js";
import { z } from "zod";
@@ -22,21 +22,35 @@ export const PUT = defineApiRoute({
const ausweisart = getAusweisartFromUUID(input.nachweis_uid);
let einpreisung;
let nachweis: GEGNachweisWohnen | GEGNachweisGewerbe;
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) {
const nachweis = await prisma.gEGNachweisWohnen.findUnique({
nachweis = await prisma.gEGNachweisWohnen.findUnique({
where: {
uid: input.nachweis_uid
}
})
} else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) {
nachweis = await prisma.gEGNachweisGewerbe.findUnique({
where: {
uid: input.nachweis_uid
}
})
} else {
throw new APIError({
"code": "BAD_REQUEST",
"message": `Ausweisart wird nicht unterstützt: ${ausweisart}`
})
}
if (!nachweis || nachweis.benutzer_id !== user.id) {
throw new APIError({
code: "BAD_REQUEST",
message: "Ausweis existiert nicht oder gehört einem anderen Benutzer."
})
}
if (!nachweis || nachweis.benutzer_id !== user.id) {
throw new APIError({
code: "BAD_REQUEST",
message: "Ausweis existiert nicht oder gehört einem anderen Benutzer."
})
}
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) {
einpreisung = await prisma.gEGEinpreisung.create({
data: {
...omit(input, ["nachweis_uid"]),
@@ -53,16 +67,26 @@ export const PUT = defineApiRoute({
}
}
})
await sendGEGAnforderungsMail(nachweis, user)
} else {
throw new APIError({
"code": "BAD_REQUEST",
"message": `Ausweisart wird nicht unterstützt: ${ausweisart}`
} else if (ausweisart === Enums.Ausweisart.GEGNachweisGewerbe) {
einpreisung = await prisma.gEGEinpreisung.create({
data: {
...omit(input, ["nachweis_uid"]),
status: Enums.Einpreisungsstatus.open,
benutzer: {
connect: {
id: user.id
}
},
geg_nachweis_gewerbe: {
connect: {
uid: input.nachweis_uid
}
}
}
})
}
await sendGEGAnforderungsMail(nachweis, user)
return {
uid: einpreisung.uid

View File

@@ -35,6 +35,6 @@ try {
---
<AusweisLayout title="Kundendaten Aufnehmen - IBCornelsen">
<KundendatenModule {user} {ausweis} {objekt} {aufnahme} {bilder} {ausweisart} {ausweistyp} aktiveBezahlmethode={Enums.Bezahlmethoden.paypal} client:only></KundendatenModule>
<KundendatenModule {user} {ausweis} {objekt} {aufnahme} {bilder} {ausweisart} {ausweistyp} unterlagen={[]} aktiveBezahlmethode={Enums.Bezahlmethoden.paypal} client:only></KundendatenModule>
</AusweisLayout>