From ad6520731301fbaf25fac342632ed388488c4d08 Mon Sep 17 00:00:00 2001 From: titver968 Date: Tue, 17 Jun 2025 15:10:36 +0200 Subject: [PATCH] selektion vorhanden --- src/routes/admin/anmeldungen/+page.svelte | 72 +++++++++++++++++++-- src/routes/api/admin/anmeldungen/+server.ts | 2 +- 2 files changed, 68 insertions(+), 6 deletions(-) diff --git a/src/routes/admin/anmeldungen/+page.svelte b/src/routes/admin/anmeldungen/+page.svelte index 99bbf66..6b789ec 100644 --- a/src/routes/admin/anmeldungen/+page.svelte +++ b/src/routes/admin/anmeldungen/+page.svelte @@ -9,15 +9,58 @@ noteDeutsch?: string; noteMathe?: string; sozialverhalten?: string; - wunsch1?: { name: string }; - wunsch2?: { name: string }; - wunsch3?: { name: string }; + wunsch1?: { id: number; name: string }; + wunsch2?: { id: number; name: string }; + wunsch3?: { id: number; name: string }; timestamp: number; id: number; } let anmeldungen: Anmeldung[] = []; + let auswahlDialogOffen = false; + let auswahlAnmeldungId: number | null = null; + let ausgewaehlteDienststelleId: number | null = null; + let aktuelleWuensche: { id: number, name: string }[] = []; + + function oeffneAuswahl(id: number) { + const anmeldung = anmeldungen.find(a => a.id === id); + if (!anmeldung) return; + + aktuelleWuensche = [ + anmeldung.wunsch1 && { id: anmeldung.wunsch1.id, name: `1. Wunsch: ${anmeldung.wunsch1.name}` }, + anmeldung.wunsch2 && { id: anmeldung.wunsch2.id, name: `2. Wunsch: ${anmeldung.wunsch2.name}` }, + anmeldung.wunsch3 && { id: anmeldung.wunsch3.id, name: `3. Wunsch: ${anmeldung.wunsch3.name}` } + ].filter(Boolean) as { id: number, name: string }[]; + + ausgewaehlteDienststelleId = aktuelleWuensche[0]?.id ?? null; + auswahlAnmeldungId = id; + auswahlDialogOffen = true; + } + async function bestaetigeAnnahme() { + if (!auswahlAnmeldungId || !ausgewaehlteDienststelleId) return; + + try { + const res = await fetch(`/api/admin/anmeldungen?id=${auswahlAnmeldungId}`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ dienststelleId: ausgewaehlteDienststelleId }) + }); + + if (!res.ok) { + const errorText = await res.text(); + throw new Error(`Fehler beim Annehmen (${res.status}): ${errorText}`); + } + + auswahlDialogOffen = false; + auswahlAnmeldungId = null; + await ladeAnmeldungen(); + } catch (error) { + console.error(error); + alert('Fehler beim Annehmen der Anmeldung.\n' + (error as Error).message); + } + } + async function ladeAnmeldungen() { const res = await fetch('/api/admin/anmeldungen'); anmeldungen = await res.json(); @@ -113,7 +156,7 @@

- \ No newline at end of file + + +{#if auswahlDialogOffen} +
+
+

Dienststelle auswählen

+ + + +
+ + +
+
+
+{/if} \ No newline at end of file diff --git a/src/routes/api/admin/anmeldungen/+server.ts b/src/routes/api/admin/anmeldungen/+server.ts index b417f67..e3789c0 100644 --- a/src/routes/api/admin/anmeldungen/+server.ts +++ b/src/routes/api/admin/anmeldungen/+server.ts @@ -28,7 +28,7 @@ export const GET: RequestHandler = async ({ cookies }) => { }); }; -export const POST: RequestHandler = async ({ cookies, url }) => { +export const POST: RequestHandler = async ({ url }) => { const id = Number(url.searchParams.get('id')); if (!id) return json({ error: 'Ungültige ID' }, { status: 400 });