function showErrorMessage(message) { const errorMessageElement = document.getElementById('registerErrorMessage'); if (errorMessageElement) { errorMessageElement.textContent = message; errorMessageElement.classList.remove('hidden'); } } function showRegisterModal() { document.getElementById('registerModal').classList.remove('hidden'); } function hideRegisterModal() { document.getElementById('registerModal').classList.add('hidden'); } // Formateo automático del RUT mientras se escribe document.getElementById('rutInput').addEventListener('input', function (e) { let rut = e.target.value.replace(/[^0-9kK]/g, ''); if (rut.length > 1) { let body = rut.slice(0, -1); let dv = rut.slice(-1); if (body.length > 0) { // Agregar puntos cada 3 dígitos desde la derecha body = body.replace(/\B(?=(\d{3})+(?!\d))/g, '.'); rut = body + '-' + dv; } } e.target.value = rut; }); // Manejo del envío del formulario document.getElementById('registerForm').addEventListener('submit', function (e) { e.preventDefault(); showGlobalLoader(); const formData = new FormData(e.target); const data = { name: formData.get('name'), email: formData.get('email'), rut: formData.get('rut') }; fetch('/api/users/register', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(async response => { const responseData = await response.json().catch(() => ({})); if (!response.ok) { const errorMsg = responseData.detail || 'Error al registrar el usuario.'; console.error('Error en el registro:', errorMsg); showErrorMessage(errorMsg); return null; } return responseData; }) .then(result => { if (result) { document.getElementById('successPage').classList.remove('hidden'); hideRegisterModal(); } }) .catch(error => { console.error('Error de red o conexión:', error); showErrorMessage('Error de conexión. Por favor, intenta nuevamente.'); }) .finally(() => { hideGlobalLoader(); }); }); function createGlobalLoader() { if (document.getElementById('globalLoader')) return; globalLoaderElement = document.createElement('div'); globalLoaderElement.id = 'globalLoader'; globalLoaderElement.className = 'fixed inset-0 bg-black bg-opacity-80 flex flex-col items-center justify-center z-[2000] transition-opacity duration-300 ease-in-out pointer-events-none'; globalLoaderElement.style.opacity = '0'; globalLoaderElement.innerHTML = `

Procesando su registro...

`; document.body.appendChild(globalLoaderElement); } function showGlobalLoader() { if (!globalLoaderElement) createGlobalLoader(); globalLoaderElement.style.display = 'flex'; setTimeout(() => { if (globalLoaderElement) globalLoaderElement.style.opacity = '1'; }, 10); } function hideGlobalLoader() { if (globalLoaderElement) { globalLoaderElement.style.opacity = '0'; setTimeout(() => { if (globalLoaderElement) globalLoaderElement.style.display = 'none'; }, 300); } } document.addEventListener('DOMContentLoaded', async function () { const nextIdResponse = await fetch('/api/users/next'); if (nextIdResponse.ok) { const nextIdData = await nextIdResponse.json(); document.getElementById('successMessage').innerHTML = `Revisa tu correo electronico para establecer tu PIN`; } createGlobalLoader(); hideGlobalLoader(); // showRegisterModal(); });