Multi-Sports
?? System Error | Systémová chyba
The face verification service is currently unavailable.
Slu?ba overenia tváre je momentálne nedostupná.
`; if (data.technical_error) { errorDetails += `Technical Details | Technické detaily
${data.technical_error}
New User Registration | Registrácia nového pou?ívate?a
Prosím vypl?te va?e údaje | Please provide your information:
`; visitInfo.innerHTML=content; visitInfo.style.display='block'; // Auto-fill if we have data from MS API if(data.data) { if(data.data.firstName) document.getElementById('firstName').value = data.data.firstName; if(data.data.lastName) document.getElementById('lastName').value = data.data.lastName; if(data.data.facilityName) document.getElementById('company').value = data.data.facilityName; } // Focus on the first name input field setTimeout(() => { const firstNameInput = document.getElementById('firstName'); if (firstNameInput) { firstNameInput.focus(); } }, 100); document.getElementById('completeRegistrationBtn').addEventListener('click', ()=>{ const firstName = document.getElementById('firstName').value.trim(); const lastName = document.getElementById('lastName').value.trim(); const email = document.getElementById('email').value.trim(); const phone = document.getElementById('phone').value.trim(); const company = document.getElementById('company').value.trim(); if(!firstName || !lastName || !email) { scanText.textContent="Prosím vypl?te povinné polia: Meno, Priezvisko, Email\nPlease fill in required fields: First Name, Last Name, Email"; return; } if(!isValidEmail(email)){ scanText.textContent="Neplatný e-mail. Zadajte svoj e-mail znova.\nInvalid Email. Please input your email again."; return; } showLoading(); fetch(MS_CONFIG.registerUserEndpoint, { method:'POST', headers: {'Content-Type':'application/json'}, body: JSON.stringify({ fixed_qr_code: data.fixed_qr_code, face_image_url: data.face_image_url, first_name: firstName, last_name: lastName, email: email, phone: phone, company_name: company }) }) .then(r=>r.json()) .then(regData=>{ handleQRScanResponse(regData); }) .catch(()=>{ hideLoading(); scanText.textContent="Chyba! Skúste to znova.\nError! Try again."; }); }); document.getElementById('cancelRegistrationBtn').addEventListener('click', ()=>{ resetToInitial(); }); } function handleScanAgain(data) { hideLoading(); allowFocus=true; input.focus(); input.value=""; cancelCountdownTimer(); currentAction = 'scan_again'; scanText.textContent = data.message + '\n\nWelcome back, ' + (data.user_data.first_name + ' ' + data.user_data.last_name).trim() + (data.user_data.company_name ? ' (' + data.user_data.company_name + ')' : ''); visitInfo.style.display='none'; } function handleRegistrationComplete(data) { hideLoading(); allowFocus=true; input.focus(); input.value=""; cancelCountdownTimer(); currentAction = 'scan_again'; scanText.textContent = data.message; visitInfo.style.display='none'; } function handleDirectEntry(data) { hideLoading(); scanText.textContent=''; visitInfo.style.display='none'; allowFocus=true; input.focus(); input.value=""; cancelCountdownTimer(); currentAction = 'initial'; const today=new Date().toISOString().split('T')[0]; const htmlContent = `${data.user.subject}
Card No: ${data.user.ticket_number}
No. ${data.user.lastid}
${data.user.date_time}
${data.user.gender_group}
${today}
Hi ${data.data.firstName} ${data.data.lastName}, Welcome to our Gym!
${data.data.facilityName} ${data.data.serviceName}
`; visitInfo.innerHTML=content; visitInfo.style.display='block'; document.getElementById('submitTicketBtn').addEventListener('click', ()=>{ const email=document.getElementById('email').value; const phone=document.getElementById('phone').value; if(!email || !phone){ scanText.textContent="Zadajte, prosím, svoj e-mail a telefónne ?íslo.\nPlease input your email and phone number."; return; } if(!isValidEmail(email)){ scanText.textContent="Neplatný e-mail. Zadajte svoj e-mail znova.\nInvalid Email. Please input your email again."; return; } const new_visit_data = Object.assign({}, data.data, { email, phone }); showLoading(); fetch(MS_CONFIG.verifyEndpoint, { method:'POST', headers: {'Content-Type':'application/json'}, body: JSON.stringify({ visit_data: new_visit_data, mode: 'live' }) }) .then(r=>r.json()) .then(data2=>{ if(data2.status==200){ scanText.textContent=''; visitInfo.style.display='none'; allowFocus=true; input.focus(); input.value=""; cancelCountdownTimer(); currentAction = 'initial'; const today=new Date().toISOString().split('T')[0]; const htmlContent = `${data2.data.subject}
Card No: ${data2.data.ticket_number}
No. ${data2.data.lastid}
${data2.data.date_time}
${data2.data.gender_group}
${today}
${data.user.subject||'Entry Ticket'}
Card No: ${data.user.ticket_number||data.data.barcode}
No. ${data.user.lastid}
${data.user.date_time||new Date().toLocaleString()}
${data.user.gender_group||''}
${today}

