From e3c8dff6465fe3fffdaba13f84b1d0972d95e2f0 Mon Sep 17 00:00:00 2001 From: titver968 Date: Thu, 24 Apr 2025 08:14:12 +0200 Subject: [PATCH] delete button in Anmeldung, Breite seite --- prisma/praktika.db | Bin 36864 -> 36864 bytes src/routes/admin/anmeldungen/+page.svelte | 39 +++++++++++++++++--- src/routes/api/admin/anmeldungen/+server.ts | 22 +++++++++-- 3 files changed, 53 insertions(+), 8 deletions(-) diff --git a/prisma/praktika.db b/prisma/praktika.db index 138d6ba6a1f21a8c639acba5c70076757f95fb69..fa2608df77abaecd18838064327870c3f61ccb7b 100644 GIT binary patch delta 57 zcmZozz|^pSX@WGP!bBNoMum+DOZ0`9`8PB0pW=VazZneU`QtYWDj4!_cDLVaz|71S Ky_vn>r#t}uW)Z~z delta 57 zcmV-90LK4-paOuP0+1U49FZJD0UWVlq%RT&4@UqG$`6$fcMszavkylPU$YS)F%Ppx PKfN#m2Mlks2XOfx;&2f8 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 @@ + @@ -25,18 +42,30 @@ - + + {/each}
E-Mail Wunsch 1–3 DatumAktionen
{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()} + +
+
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