109 lines
3.5 KiB
JavaScript
109 lines
3.5 KiB
JavaScript
// 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");
|
|
|
|
const selectedActivity = 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("appsettings.json")
|
|
.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: selectedActivity,
|
|
activities: storedActivities,
|
|
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) {
|
|
try {
|
|
const localBooked = JSON.parse(localStorage.getItem("bookedDates") || "[]");
|
|
if (!localBooked.includes(selectedDate)) {
|
|
localBooked.push(selectedDate);
|
|
localStorage.setItem("bookedDates", JSON.stringify(localBooked));
|
|
}
|
|
} catch (e) {}
|
|
|
|
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;
|
|
});
|
|
});
|
|
})();
|