Datenbank und ID Generierung

This commit is contained in:
Moritz Utcke
2025-04-07 15:33:30 -04:00
parent 32d8e2383e
commit 2abb143cfe
66 changed files with 906 additions and 6309 deletions

View File

@@ -39,7 +39,7 @@ export const PUT = defineApiRoute({
})
}
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.Aufnahme)
const id = generatePrefixedId(9, VALID_UUID_PREFIXES.Aufnahme)
const aufnahme = await prisma.aufnahme.create({
data: {

View File

@@ -119,7 +119,7 @@ export const DELETE = defineApiRoute({
}
})
const event_id = generatePrefixedId(6, VALID_UUID_PREFIXES.Ticket)
const event_id = generatePrefixedId(9, VALID_UUID_PREFIXES.Ticket)
// Wir erstellen ein Event, dass der Nachweis storniert wurde
// Dann können wir das in der Historie anzeigen

View File

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

View File

@@ -122,7 +122,7 @@ export const DELETE = defineApiRoute({
}
})
const event_id = generatePrefixedId(6, VALID_UUID_PREFIXES.Ticket)
const event_id = generatePrefixedId(9, VALID_UUID_PREFIXES.Ticket)
// Wir erstellen ein Event, dass der Ausweis storniert wurde
// Dann können wir das in der Historie anzeigen

View File

@@ -37,7 +37,7 @@ export const PUT = defineApiRoute({
);
const buffer = Buffer.from(dataWithoutPrefix, "base64");
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.Bild)
const id = generatePrefixedId(9, VALID_UUID_PREFIXES.Bild)
const bild = await prisma.bild.create({
data: {

View File

@@ -120,7 +120,7 @@ export const DELETE = defineApiRoute({
})
const event_id = generatePrefixedId(6, VALID_UUID_PREFIXES.Ticket)
const event_id = generatePrefixedId(9, VALID_UUID_PREFIXES.Ticket)
// Wir erstellen ein Event, dass der Nachweis storniert wurde
// Dann können wir das in der Historie anzeigen
await prisma.event.create({

View File

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

View File

@@ -125,7 +125,7 @@ export const DELETE = defineApiRoute({
// Dann können wir das in der Historie anzeigen
await prisma.event.create({
data: {
id: generatePrefixedId(6, VALID_UUID_PREFIXES.Event),
id: generatePrefixedId(9, VALID_UUID_PREFIXES.Event),
title: "Nachweis storniert",
description: ((user.rolle === "ADMIN") && (nachweis.benutzer_id !== user.id)) ? "Nachweis wurde von einem Administrator storniert." : "Nachweis wurde vom Besitzer storniert.",
benutzer: {

View File

@@ -50,7 +50,7 @@ export const PUT = defineApiRoute({
})
}
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.GEGNachweisWohnen)
const id = generatePrefixedId(9, VALID_UUID_PREFIXES.GEGNachweisWohnen)
const nachweis = await prisma.gEGNachweisWohnen.create({
data: {

View File

@@ -17,7 +17,7 @@ export const PUT = defineApiRoute({
}),
middleware: authorizationMiddleware,
async fetch(input, context, user) {
const id = generatePrefixedId(6, "OB")
const id = generatePrefixedId(9, "OB")
console.log(id);

View File

@@ -62,7 +62,7 @@ export const PUT = defineApiRoute({
})
}
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.GEGEinpreisung)
const id = generatePrefixedId(9, VALID_UUID_PREFIXES.GEGEinpreisung)
if (ausweisart === Enums.Ausweisart.GEGNachweisWohnen) {
einpreisung = await prisma.gEGEinpreisung.create({

View File

@@ -37,6 +37,8 @@ export const PUT = defineApiRoute({
betrag: true,
storniert_am: true,
transaktions_referenz: true,
created_at: true,
updated_at: true
})
),
output: z.object({
@@ -87,7 +89,7 @@ export const PUT = defineApiRoute({
betrag += servicePriceList[service]
}
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.Rechnung);
const id = generatePrefixedId(9, VALID_UUID_PREFIXES.Rechnung);
// Wir erstellen eine neue Rechnung in unserer Datenbank.
let rechnung: Rechnung | null = null;
@@ -176,7 +178,8 @@ export const PUT = defineApiRoute({
method: input.bezahlmethode as PaymentMethod,
description: "Verbrauchsausweis Wohnen 2016",
redirectUrl: `https://online-energieausweis.org/payment/success?a=${ausweis.id}&r=${rechnung.id}`,
webhookUrl: `http://online-energieausweis.org/api/webhooks/mollie?uid=${rechnung.id}`,
webhookUrl: `https://online-energieausweis.org/api/webhooks/mollie?uid=${rechnung.id}`,
cancelUrl: `https://online-energieausweis.org/kundendaten?a=${ausweis.id}&r=${rechnung.id}`
});
const checkoutUrl = payment.getCheckoutUrl();

View File

@@ -28,7 +28,7 @@ export const PUT = defineApiRoute({
id: UUidWithPrefix,
}),
async fetch(input, ctx) {
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.Ticket)
const id = generatePrefixedId(9, VALID_UUID_PREFIXES.Ticket)
const ticket = await prisma.tickets.create({
data: {

View File

@@ -29,7 +29,7 @@ export const PUT = defineApiRoute({
})
}
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.Unterlage)
const id = generatePrefixedId(9, VALID_UUID_PREFIXES.Unterlage)
await prisma.unterlage.create({
data: {

View File

@@ -13,7 +13,9 @@ export const POST = defineApiRoute({
input: BenutzerSchema.omit({
id: true,
lex_office_id: true,
rolle: true
rolle: true,
created_at: true,
updated_at: true
}),
middleware: authorizationMiddleware,
async fetch(input, context, user) {
@@ -103,7 +105,7 @@ export const PUT = defineApiRoute({
})
}
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.User);
const id = generatePrefixedId(9, VALID_UUID_PREFIXES.User);
const user = await prisma.benutzer.create({
data: {

View File

@@ -120,7 +120,7 @@ export const DELETE = defineApiRoute({
// Dann können wir das in der Historie anzeigen
await prisma.event.create({
data: {
id: generatePrefixedId(6, VALID_UUID_PREFIXES.Event),
id: generatePrefixedId(9, VALID_UUID_PREFIXES.Event),
title: "Ausweis storniert",
description: ((user.rolle === "ADMIN") && (ausweis.benutzer_id !== user.id)) ? "Ausweis wurde von einem Administrator storniert." : "Ausweis wurde vom Besitzer storniert.",
benutzer: {

View File

@@ -48,7 +48,7 @@ export const PUT = defineApiRoute({
})
}
const id = generatePrefixedId(6, VALID_UUID_PREFIXES.VerbrauchsausweisGewerbe)
const id = generatePrefixedId(9, VALID_UUID_PREFIXES.VerbrauchsausweisGewerbe)
const createdAusweis = await prisma.verbrauchsausweisGewerbe.create({
data: {

View File

@@ -121,7 +121,7 @@ export const DELETE = defineApiRoute({
// Dann können wir das in der Historie anzeigen
await prisma.event.create({
data: {
id: generatePrefixedId(6, VALID_UUID_PREFIXES.Event),
id: generatePrefixedId(9, VALID_UUID_PREFIXES.Event),
title: "Ausweis storniert",
description: ((user.rolle === "ADMIN") && (ausweis.benutzer_id !== user.id)) ? "Ausweis wurde von einem Administrator storniert." : "Ausweis wurde vom Besitzer storniert.",
benutzer: {

View File

@@ -51,7 +51,7 @@ export const PUT = defineApiRoute({
})
}
const id = generatePrefixedId(6, "VW");
const id = generatePrefixedId(9, "VW");
const createdAusweis = await prisma.verbrauchsausweisWohnen.create({
data: {

View File

@@ -4,6 +4,8 @@ import KundendatenModule from "#modules/KundendatenModule.svelte";
import AusweisLayout from "#layouts/AusweisLayoutPruefung.astro";
import { Enums } from "#lib/client/prisma";
import { getCurrentUser } from "#lib/server/user";
import { getAusweisartFromId } from "#components/Ausweis/types";
import { getAufnahme, getBedarfsausweisWohnen, getBilder, getObjekt, getUnterlagen, getVerbrauchsausweisGewerbe, getVerbrauchsausweisWohnen } from "#lib/server/db";
// Man sollte nur auf diese Seite kommen, wenn ein Ausweis bereits vorliegt und in der Datenbank abgespeichert wurde.
@@ -11,26 +13,53 @@ const user = await getCurrentUser(Astro) || {}
// POST Body
const params = new URLSearchParams(await Astro.request.text());
if (!params.has("ausweis") || !params.has("aufnahme") || !params.has("objekt") || !params.has("bilder") || !params.has("ausweisart")) {
return Astro.redirect("/404")
}
const searchParams = Astro.url.searchParams;
let ausweis, aufnahme, objekt, ausweisart, bilder, unterlagen, partner_code;
try {
ausweis = JSON.parse(params.get("ausweis") || "")
aufnahme = JSON.parse(params.get("aufnahme") || "")
objekt = JSON.parse(params.get("objekt") || "")
ausweisart = JSON.parse(params.get("ausweisart") || "") as Enums.Ausweisart;
bilder = JSON.parse(params.get("bilder") || "");
unterlagen = JSON.parse(params.get("unterlagen") || "[]")
partner_code = params.get("partner_code") || ""
if (!ausweisart || !Object.keys(Enums.Ausweisart).includes(ausweisart)) {
throw new Error()
if (!params.has("ausweis") || !params.has("aufnahme") || !params.has("objekt") || !params.has("bilder") || !params.has("ausweisart")) {
// Rechnung und Ausweis als GET parameter
if (searchParams.has("a") && searchParams.has("r")) {
const id = searchParams.get("id") as string
const ausweisart = getAusweisartFromId(id)
if (ausweisart === Enums.Ausweisart.VerbrauchsausweisWohnen) {
ausweis = await getVerbrauchsausweisWohnen(id)
} else if (ausweisart === Enums.Ausweisart.VerbrauchsausweisGewerbe) {
ausweis = await getVerbrauchsausweisGewerbe(id)
} else if (ausweisart === Enums.Ausweisart.BedarfsausweisWohnen) {
ausweis = await getBedarfsausweisWohnen(id)
}
if (!ausweis || ausweis.benutzer_id !== user.id) {
// Ausweis gehört nicht diesem Benutzer oder existiert nicht
return Astro.redirect("/404")
}
aufnahme = await getAufnahme(ausweis.aufnahme_id)
objekt = await getObjekt(aufnahme?.objekt_id)
bilder = await getBilder(ausweis.aufnahme_id)
unterlagen = await getUnterlagen(ausweis.aufnahme_id)
} else {
// Nichts ist vorhanden
return Astro.redirect("/404")
}
} else {
try {
ausweis = JSON.parse(params.get("ausweis") || "")
aufnahme = JSON.parse(params.get("aufnahme") || "")
objekt = JSON.parse(params.get("objekt") || "")
ausweisart = JSON.parse(params.get("ausweisart") || "") as Enums.Ausweisart;
bilder = JSON.parse(params.get("bilder") || "");
unterlagen = JSON.parse(params.get("unterlagen") || "[]")
partner_code = params.get("partner_code") || ""
if (!ausweisart || !Object.keys(Enums.Ausweisart).includes(ausweisart)) {
throw new Error()
}
} catch(e){
return Astro.redirect("/404")
}
} catch(e){
return Astro.redirect("/404")
}
---