${escapeHtml(primaryMovie?.title || "Bestellung")}
Datum${escapeHtml(order.date || "-")}
Saal${escapeHtml(hall)}
Uhrzeit${escapeHtml(time)}
Tickets${ticketCount}x
Sitze${escapeHtml(seats)}
Gesamt${formatEuro(order.total || 0)}
function readStorageJson(key, fallbackValue) { const raw = localStorage.getItem(key); if (!raw || raw === "undefined" || raw === "null") { return fallbackValue; } try { return JSON.parse(raw); } catch (error) { console.warn(`Konnte LocalStorage-Wert fuer ${key} nicht lesen.`, error); return fallbackValue; } } function normalizeUser(user) { if (!user || typeof user !== "object") { return null; } return { firstName: user.firstName || "", lastName: user.lastName || "", email: user.email || "", password: user.password || "", orders: Array.isArray(user.orders) ? user.orders : [], paymentMethods: Array.isArray(user.paymentMethods) ? user.paymentMethods : [] }; } function escapeHtml(value) { return String(value || "") .replaceAll("&", "&") .replaceAll("<", "<") .replaceAll(">", ">") .replaceAll('"', """) .replaceAll("'", "'"); } function formatEuro(value) { return `${Number(value || 0).toFixed(2).replace(".", ",")} EUR`; } function persistUsers() { localStorage.setItem("eagleUsers", JSON.stringify(users)); } function persistCurrentUser() { if (currentUser) { localStorage.setItem("currentUser", JSON.stringify(currentUser)); } else { localStorage.removeItem("currentUser"); } } let users = readStorageJson("eagleUsers", []); if (!Array.isArray(users)) { users = []; } users = users.map(normalizeUser).filter(Boolean); let currentUser = normalizeUser(readStorageJson("currentUser", null)); if (currentUser && currentUser.email) { const storedMatch = users.find((user) => user.email === currentUser.email); if (storedMatch) { currentUser = storedMatch; } else { users.push(currentUser); persistUsers(); } } function registerUser() { const firstName = document.getElementById("reg-firstname")?.value.trim() || ""; const lastName = document.getElementById("reg-lastname")?.value.trim() || ""; const email = (document.getElementById("reg-email")?.value.trim() || "").toLowerCase(); const password = document.getElementById("reg-password")?.value || ""; if (!firstName || !lastName || !email || !password) { alert("Bitte fuelle alle Felder aus."); return; } if (!email.includes("@")) { alert("Bitte gib eine gueltige E-Mail-Adresse ein."); return; } const existingUser = users.find((user) => user.email.toLowerCase() === email); if (existingUser) { alert("E-Mail bereits registriert"); return; } const newUser = { firstName, lastName, email, password, orders: [], paymentMethods: [] }; users.push(newUser); currentUser = newUser; persistUsers(); persistCurrentUser(); alert("Registrierung erfolgreich"); document.getElementById("register-modal")?.classList.add("hidden"); openAccountDashboard(); } function loginUser() { const email = (document.getElementById("login-email")?.value.trim() || "").toLowerCase(); const password = document.getElementById("login-password")?.value || ""; const user = users.find( (entry) => entry.email.toLowerCase() === email && entry.password === password ); if (!user) { document.getElementById("login-error")?.classList.remove("hidden"); return; } currentUser = user; persistCurrentUser(); openAccountDashboard(); } function openAccountDashboard() { const accountView = document.getElementById("account-view"); if (!accountView) { return; } if (!currentUser) { accountView.innerHTML = "
Bitte melde dich an oder registriere dich.
Vorname: ${currentUser.firstName || "-"}
Nachname: ${currentUser.lastName || "-"}
E-Mail: ${currentUser.email || "-"}
Noch keine Bestellungen vorhanden.
Klicke auf eine Bestellung, um dein Ticket-Detail zu sehen.
Datum${escapeHtml(order.date || "-")}
Saal${escapeHtml(hall)}
Uhrzeit${escapeHtml(time)}
Tickets${ticketCount}x
Sitze${escapeHtml(seats)}
Gesamt${formatEuro(order.total || 0)}
Platzhalter zum Hinterlegen deiner Logos oder Anbieter-Informationen.