diff --git a/usuarios.html b/usuarios.html index 3072bd6..5026cf6 100644 --- a/usuarios.html +++ b/usuarios.html @@ -186,80 +186,46 @@ loader.classList.remove('hidden'); try { // Llamada a tu propio endpoint del server - const res = await fetch(`${API_URL}/api/geo/municipios/${provName}`, { - headers: { "Authorization": `Bearer ${localStorage.getItem("token")}` } - }); - const data = await res.json(); - - if (data.ok) { - selMun.innerHTML = ''; - data.municipios.forEach(m => { - const opt = document.createElement('option'); - opt.value = m.municipio; - opt.dataset.cp = m.codigo_postal; - opt.innerText = m.municipio.toUpperCase(); - selMun.appendChild(opt); - }); - // Opción de respaldo manual - selMun.innerHTML += ''; - selMun.disabled = false; - } - } catch (e) { showToast("Error al cargar municipios desde la DB local", true); } - finally { loader.classList.add('hidden'); lucide.createIcons(); } - } + async function fetchMunicipios(provName) { + const selMun = document.getElementById('selMunicipio'); + const loader = document.getElementById('loaderMun'); + + selMun.innerHTML = ''; + selMun.disabled = true; + if(!provName) return; - function autoFillCP(munName) { - const sel = document.getElementById('selMunicipio'); - const selectedOpt = sel.options[sel.selectedIndex]; - if (munName === "OTRO") { - const customMun = prompt("Nombre del Municipio:"); - if (customMun) { - const newOpt = document.createElement('option'); - newOpt.value = customMun.toUpperCase(); - newOpt.innerText = customMun.toUpperCase(); - newOpt.selected = true; - sel.appendChild(newOpt); - document.getElementById('cpInput').focus(); - } - return; - } - if(selectedOpt && selectedOpt.dataset.cp) { - document.getElementById('cpInput').value = selectedOpt.dataset.cp; - } - } + if (loader) loader.classList.remove('hidden'); - function addZoneToUser() { - const prov = document.getElementById('selProvince').value; - const mun = document.getElementById('selMunicipio').value; - const cp = document.getElementById('cpInput').value.trim(); - if (!prov || !mun || !cp || mun === "OTRO") { showToast("Completa los datos de zona", true); return; } - - if (tempUserZones.some(z => z.city === mun && z.cps === cp)) { - showToast("Esta zona ya está añadida", true); return; - } - - tempUserZones.push({ province: prov, city: mun, cps: cp }); - renderTempZones(); - document.getElementById('cpInput').value = ""; - } - - function removeTempZone(idx) { - tempUserZones.splice(idx, 1); - renderTempZones(); - } - - function renderTempZones() { - const area = document.getElementById('userZonesArea'); - area.innerHTML = tempUserZones.length === 0 ? '

Sin zonas añadidas...

' : ""; - tempUserZones.forEach((z, i) => { - area.innerHTML += ` - - ${z.city} (${z.cps}) - - `; + try { + // Llamamos a tu propia base de datos a través del servidor + const res = await fetch(`${API_URL}/api/geo/municipios/${provName}`, { + headers: { "Authorization": `Bearer ${localStorage.getItem("token")}` } + }); + const data = await res.json(); + + if (data.ok && data.municipios.length > 0) { + selMun.innerHTML = ''; + data.municipios.forEach(m => { + const opt = document.createElement('option'); + opt.value = m.municipio; + opt.dataset.cp = m.codigo_postal; + opt.innerText = `${m.municipio.toUpperCase()} (${m.codigo_postal})`; + selMun.appendChild(opt); }); - lucide.createIcons(); + selMun.innerHTML += ''; + selMun.disabled = false; + } else { + // Si la provincia no tiene datos aún en la DB, mostramos la opción manual + selMun.innerHTML = ''; + selMun.disabled = false; } + } catch (e) { + console.error("Error de conexión con la DB geográfica"); + } finally { + if (loader) loader.classList.add('hidden'); + lucide.createIcons(); + } +} async function fetchGuilds() { try {