diff --git a/src/routes/admin/anmeldungen/+page.svelte b/src/routes/admin/anmeldungen/+page.svelte index 3d96885..1ee3c61 100644 --- a/src/routes/admin/anmeldungen/+page.svelte +++ b/src/routes/admin/anmeldungen/+page.svelte @@ -32,6 +32,22 @@ let selectedDienststelleId: number | null = null; let availableWishes: { id: number, name: string }[] = []; + // E-Mail Konfiguration + let emailSubject = 'Praktikumsplatz-Zusage'; + let emailTemplate = `Sehr geehrte/r \{anrede\} \{nachname\}, + +wir freuen uns, Ihnen mitteilen zu können, dass Ihre Bewerbung für ein Praktikum erfolgreich war. + +Sie wurden für das Praktikum bei folgender Dienststelle angenommen: +\{dienststelle\} + +Weitere Informationen erhalten Sie in den kommenden Tagen. + +Mit freundlichen Grüßen +Ihr Praktikumsteam`; + + let showEmailConfig = false; + async function loadAnmeldungen() { try { isLoading = true; @@ -83,6 +99,10 @@ } showDialog = false; + + // E-Mail senden nach erfolgreichem Annehmen + await sendAcceptanceEmail(selectedAnmeldungId, event.detail.dienststelleId); + selectedAnmeldungId = null; await loadAnmeldungen(); } catch (err) { @@ -91,6 +111,28 @@ } } + async function sendAcceptanceEmail(anmeldungId: number, dienststelleId: number) { + const anmeldung = anmeldungen.find(a => a.id === anmeldungId); + if (!anmeldung) return; + + // Dienststelle finden + const dienststelle = availableWishes.find(w => w.id === dienststelleId); + const dienststelleName = dienststelle ? dienststelle.name.replace(/^\d+\.\s*Wunsch:\s*/, '') : 'Unbekannte Dienststelle'; + + // E-Mail Text personalisieren + const personalizedEmail = emailTemplate + .replace(/\{anrede\}/g, anmeldung.anrede) + .replace(/\{vorname\}/g, anmeldung.vorname) + .replace(/\{nachname\}/g, anmeldung.nachname) + .replace(/\{dienststelle\}/g, dienststelleName); + + // mailto: Link erstellen + const mailtoLink = `mailto:${anmeldung.email}?subject=${encodeURIComponent(emailSubject)}&body=${encodeURIComponent(personalizedEmail)}`; + + // Standard E-Mail Client öffnen + window.location.href = mailtoLink; + } + async function handleReject(event: CustomEvent<{id: number}>) { if (!confirm('Diese Anmeldung wirklich ablehnen?')) return; @@ -136,7 +178,27 @@ selectedAnmeldungId = null; } - onMount(loadAnmeldungen); + function saveEmailTemplate() { + // Hier könnten Sie die E-Mail-Vorlage in localStorage oder auf dem Server speichern + localStorage.setItem('emailSubject', emailSubject); + localStorage.setItem('emailTemplate', emailTemplate); + showEmailConfig = false; + alert('E-Mail-Vorlage gespeichert!'); + } + + function loadEmailTemplate() { + // E-Mail-Vorlage aus localStorage laden + const savedSubject = localStorage.getItem('emailSubject'); + const savedTemplate = localStorage.getItem('emailTemplate'); + + if (savedSubject) emailSubject = savedSubject; + if (savedTemplate) emailTemplate = savedTemplate; + } + + onMount(() => { + loadAnmeldungen(); + loadEmailTemplate(); + }); @@ -150,6 +212,70 @@ />
+ +
+ +
+ + + {#if showEmailConfig} +
+

E-Mail-Vorlage konfigurieren

+ +
+
+ + +
+ +
+ + +

+ Verfügbare Platzhalter: {anrede}, {vorname}, {nachname}, {dienststelle} +

+
+ +
+ + +
+
+
+ {/if} + {#if error}