diff --git a/prisma/praktika.db b/prisma/praktika.db
index 138d6ba..fa2608d 100644
Binary files a/prisma/praktika.db and b/prisma/praktika.db differ
diff --git a/src/routes/admin/anmeldungen/+page.svelte b/src/routes/admin/anmeldungen/+page.svelte
index dd1cd72..d454fa2 100644
--- a/src/routes/admin/anmeldungen/+page.svelte
+++ b/src/routes/admin/anmeldungen/+page.svelte
@@ -6,11 +6,27 @@
const res = await fetch('/api/admin/anmeldungen');
anmeldungen = await res.json();
}
+
+ async function loeschen(id: number) {
+ if (!confirm('Diese Anmeldung wirklich löschen?')) return;
+ try {
+ const res = await fetch(`/api/admin/anmeldungen?id=${id}`, { method: 'DELETE' });
+ if (!res.ok) {
+ const errorText = await res.text();
+ throw new Error(`Fehler beim Löschen (${res.status}): ${errorText}`);
+ }
+ await ladeAnmeldungen();
+ } catch (error) {
+ console.error(error);
+ alert('Fehler beim Löschen der Anmeldung.\n' + error.message);
+ }
+}
+
onMount(ladeAnmeldungen);
-
-
-
Alle Anmeldungen
+
+
+
Alle Anmeldungen
@@ -18,6 +34,7 @@
| E-Mail |
Wunsch 1–3 |
Datum |
+ Aktionen |
@@ -25,18 +42,30 @@
| {a.anrede} {a.vorname} {a.nachname} |
{a.email} |
- {a.wunsch1.name} {a.wunsch2.name} {a.wunsch3.name} |
+
+ {a.wunsch1?.name}
+ {a.wunsch2?.name}
+ {a.wunsch3?.name}
+ |
{new Date(a.timestamp).toLocaleDateString()} |
+
+
+ |
{/each}
+
diff --git a/src/routes/api/admin/anmeldungen/+server.ts b/src/routes/api/admin/anmeldungen/+server.ts
index 0bef532..ef75ef7 100644
--- a/src/routes/api/admin/anmeldungen/+server.ts
+++ b/src/routes/api/admin/anmeldungen/+server.ts
@@ -1,9 +1,18 @@
+//import { PrismaClient } from '@prisma/client';
+//import type { RequestHandler } from '@sveltejs/kit';
+
import { PrismaClient } from '@prisma/client';
-import type { RequestHandler } from '@sveltejs/kit';
+import { json } from '@sveltejs/kit';
+import type { RequestHandler } from './$types';
const prisma = new PrismaClient();
-export const GET: RequestHandler = async () => {
+function checkAuth(cookies: any) {
+ return cookies.get('admin_session') === 'true';
+}
+
+export const GET: RequestHandler = async ({ cookies }) => {
+ if (!checkAuth(cookies)) return new Response('Nicht erlaubt', { status: 401 });
const anmeldungen = await prisma.anmeldung.findMany({
include: {
wunsch1: true,
@@ -12,8 +21,15 @@ export const GET: RequestHandler = async () => {
},
orderBy: { timestamp: 'desc' }
});
-
return new Response(JSON.stringify(anmeldungen), {
headers: { 'Content-Type': 'application/json' }
});
};
+
+export const DELETE: RequestHandler = async ({ cookies, url }) => {
+ if (!checkAuth(cookies)) return new Response('Nicht erlaubt', { status: 401 });
+ const id = Number(url.searchParams.get('id'));
+ if (!id) return new Response('Ungültige ID', { status: 400 });
+ await prisma.anmeldung.delete({ where: { id } });
+ return json({ success: true });
+};
\ No newline at end of file