ADMIN ACCESS

ΚΡΑΤΗΣΕΙΣ

ΚΡΑΤΗΣΗ ΕΠΙΤΥΧΗΣ!

Σας ευχαριστούμε! Θα σας στείλουμε μήνυμα για τον τρόπο πληρωμής.

Mythos Nights

EXPERIENCE THE LEGEND

LOCATION SHAKA
PHONE 96807443
ΚΡΑΤΗΣΗ ΤΩΡΑ

MYTHOS NIGHTS BEGINS IN

00

DAYS

00

HOURS

00

MINUTES

00

SECONDS

MYTHOS_NIGHTS

FEAT. DINGLIS

"Ό,τι αγγίζουμε γίνεται χρυσός"

📅 Σάββατο 25 Απριλίου | 21:00

🎟️ Η παραλαβή των εισιτηρίων θα γίνεται στην είσοδο του SHAKA την ημέρα του event.

RESERVATIONS

Σάββατο 25 Απριλίου 2026 - 9:00 μ.μ.

@

Για τραπέζι & καναπέ: επιλέγεις μπουκάλι στο venue

🎟️ Η παραλαβή των εισιτηρίων θα γίνεται στην είσοδο του SHAKA την ημέρα του event.

💡

Πώς λειτουργεί η κράτηση:

1. Συμπλήρωσε τη φόρμα κράτησης.
2. Η κράτησή σου καταχωρείται στο σύστημά μας.
3. Θα επικοινωνήσουμε μαζί σου για να κανονιστεί η πληρωμή.
4. Παραλαβή εισιτηρίων στην είσοδο του SHAKA την ημέρα του event.

INSTAGRAM async function saveReservation() { const name = document.getElementById('name').value.trim(); const surname = document.getElementById('surname').value.trim(); const phone = document.getElementById('phone').value.trim(); const people = document.getElementById('people').value; const type = document.getElementById('type').value; const instagramRaw = document.getElementById('instagram').value.trim(); const instagram = instagramRaw.replace(/^@/, '').trim(); if (!name || !surname || !phone || !instagram) { showMessage('Συμπληρώστε όλα τα πεδία συμπεριλαμβανομένου του Instagram!', 'red'); return; } if (!/^[0-9]{8}$/.test(phone)) { showMessage('Το τηλέφωνο πρέπει να έχει 8 ψηφία!', 'red'); return; } const btn = document.getElementById('submitBtn'); btn.disabled = true; btn.innerHTML = 'ΑΠΟΘΗΚΕΥΣΗ...'; const reservation = { ονομα: name, επωνυμο: surname, τηλεφωνο: phone, ατομα: people, τυπος: type, instagram: instagram, ημερομηνια_event: "25/4/2026", ωρα_event: "9:00 μ.μ.", status: "pending" }; try { await fetch(GOOGLE_APPS_SCRIPT_URL, { method: 'POST', mode: 'no-cors', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(reservation) }); } catch(e) { console.log(e); } document.getElementById('name').value = ''; document.getElementById('surname').value = ''; document.getElementById('phone').value = ''; document.getElementById('people').value = '2'; document.getElementById('instagram').value = ''; btn.disabled = false; btn.innerHTML = 'ΚΑΤΑΧΩΡΗΣΗ'; document.getElementById('smsModal').classList.add('visible'); } function closeWindow() { document.getElementById('smsModal').classList.remove('visible'); } function showMessage(text, color) { const msg = document.getElementById('message'); msg.innerHTML = text; msg.style.color = color === 'red' ? '#ef4444' : '#22c55e'; msg.classList.remove('hidden'); setTimeout(() => msg.classList.add('hidden'), 5000); } // ── ADMIN TABLE ── async function loadReservations() { document.getElementById('reservationsList').innerHTML = '

Φόρτωση...

'; try { const response = await fetch(GOOGLE_APPS_SCRIPT_URL + '?t=' + Date.now()); const data = await response.json(); window._allReservations = Array.isArray(data) ? data : []; renderTable(window._allReservations); } catch(e) { document.getElementById('reservationsList').innerHTML = '

Σφάλμα σύνδεσης

'; } } function renderTable(reservations) { const listDiv = document.getElementById('reservationsList'); const filtered = currentFilter === 'all' ? reservations : reservations.filter(r => (r.status || 'pending').toLowerCase() === currentFilter); if (!filtered.length) { listDiv.innerHTML = '

Δεν υπάρχουν κρατήσεις

'; document.getElementById('totalRes').innerHTML = ''; return; } let html = ``; [...filtered].reverse().forEach((r, i) => { const status = (r.status || 'pending').toLowerCase(); const badgeClass = status === 'confirmed' ? 'badge-confirmed' : 'badge-pending'; const badgeLabel = status === 'confirmed' ? 'CONFIRMED' : 'PENDING'; const realIdx = reservations.length - 1 - i; const igVal = r.instagram ? r.instagram.replace(/^@/, '') : ''; const igLink = igVal ? `@${igVal}` : '—'; html += ``; }); html += '
TimestampΌνομαΕπίθετοΤηλέφωνο ΆτομαΤύποςInstagramStatusΑλλαγή
${r.reg_date || '—'} ${r.name || ''} ${r.surname || ''} ${r.phone || ''} ${r.people || ''} ${r.type || ''} ${igLink} ${badgeLabel} ${status === 'pending' ? `` : `` }
'; listDiv.innerHTML = html; const confirmed = reservations.filter(r => (r.status||'pending') === 'confirmed').length; document.getElementById('totalRes').innerHTML = `Σύνολο: ${reservations.length} | Confirmed: ${confirmed} | Pending: ${reservations.length - confirmed}`; } async function updateStatus(index, newStatus) { const res = window._allReservations[index]; if (!res) return; res.status = newStatus; try { await fetch(GOOGLE_APPS_SCRIPT_URL, { method: 'POST', mode: 'no-cors', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ action: 'updateStatus', rowIndex: index, status: newStatus }) }); } catch(e) {} renderTable(window._allReservations); } async function downloadExcel() { try { const response = await fetch(GOOGLE_APPS_SCRIPT_URL + '?t=' + Date.now()); const reservations = await response.json(); let csv = 'Ημερομηνία,Όνομα,Επίθετο,Τηλέφωνο,Άτομα,Τύπος,Instagram,Status\n'; reservations.forEach(r => { const clean = v => (v||'').toString().replace(/,/g,' '); csv += `${clean(r.reg_date)},${clean(r.name)},${clean(r.surname)},${clean(r.phone)},${r.people},${clean(r.type)},${clean(r.instagram)},${r.status}\n`; }); const blob = new Blob(["\uFEFF" + csv], { type: 'text/csv;charset=utf-8;' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'reservations.csv'; a.click(); } catch(e) { alert('Σφάλμα'); } } // ── CAROUSEL (διορθωμένο) ── let currentSlide = 0; const slides = document.querySelectorAll('.carousel-slide'); function nextSlide() { slides[currentSlide].classList.remove('active'); currentSlide = (currentSlide + 1) % slides.length; slides[currentSlide].classList.add('active'); } setInterval(nextSlide, 4000);