// Checkout & Bestätigungsseite (function () { const backLink = document.getElementById("backLink"); const summarySection = document.getElementById("summarySection"); const confirmationSection = document.getElementById("confirmationSection"); const summaryActivity = document.getElementById("summaryActivity"); const summaryDate = document.getElementById("summaryDate"); const summaryName = document.getElementById("summaryName"); const activityIcon = document.getElementById("activityIcon"); const checkoutBtn = document.getElementById("checkoutBtn"); function cleanPrefix(str) { if (!str) return ""; return str.replace(/^(Etwas eigenes|Sonstiges):\s*/i, ""); } const selectedActivity = cleanPrefix(localStorage.getItem("selectedActivity")); const selectedDate = localStorage.getItem("selectedDate"); const selectedName = localStorage.getItem("selectedName"); if (!selectedActivity || !selectedDate || !selectedName) { window.location.href = "index.html"; return; } summaryActivity.textContent = selectedActivity; summaryName.textContent = selectedName; const dateObj = new Date(`${selectedDate}T00:00:00`); const formattedDate = dateObj.toLocaleDateString("de-DE", { weekday: "long", day: "numeric", month: "long", year: "numeric", }); summaryDate.textContent = formattedDate; // Icons aus selectedActivities oder appsettings.json laden let storedActivities = []; try { storedActivities = JSON.parse(localStorage.getItem("selectedActivities") || "[]"); } catch (e) {} if (storedActivities.length > 0) { activityIcon.textContent = storedActivities.map((a) => a.icon).join(" "); } else { fetch("/api/settings", { cache: "no-store" }) .then((res) => res.json()) .then((settings) => { const match = (settings.activities || []).find((a) => a.name === selectedActivity); if (match && match.icon) { activityIcon.textContent = match.icon; } }) .catch(() => {}); } checkoutBtn.addEventListener("click", () => { checkoutBtn.disabled = true; const originalText = checkoutBtn.textContent; checkoutBtn.textContent = "Wird übermittelt... 💌"; const payload = { activity: cleanPrefix(selectedActivity), activities: storedActivities.map((a) => ({ ...a, name: cleanPrefix(a.name), customDescription: cleanPrefix(a.customDescription || a.name), })), date: selectedDate, dateType: localStorage.getItem("selectedDateType") || "long", name: selectedName, }; fetch("/api/submit", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(payload), }) .then((res) => { if (!res.ok) { throw new Error("Fehler beim Übermitteln."); } return res.json(); }) .then((data) => { if (data.success) { // Alle lokal gespeicherten Daten (inkl. bookedDates und ausgewählter Werte) leeren, // damit bei der nächsten Buchung alles frisch geladen / neu ausgewählt wird. localStorage.clear(); summarySection.classList.add("hidden"); if (backLink) { backLink.classList.add("hidden"); } confirmationSection.classList.remove("hidden"); } else { alert(data.message || "Es gab ein Problem bei der Übermittlung."); checkoutBtn.disabled = false; checkoutBtn.textContent = originalText; } }) .catch((err) => { console.error("Submission error:", err); alert("Übermittlung fehlgeschlagen. Bitte versuche es erneut."); checkoutBtn.disabled = false; checkoutBtn.textContent = originalText; }); }); })();