const params = new URLSearchParams(window.location.search); const conciertoId = params.get("id"); const formulario = document.getElementById("formulario"); const modal = document.getElementById("modalMensaje"); const modalTexto = document.getElementById("modalTexto"); const cerrarModal = document.getElementById("cerrarModal"); let capacidadTotal = 0; modal.style.display = "none"; function mostrarModal(mensaje) { modalTexto.textContent = mensaje; modal.style.display = "flex"; } cerrarModal.addEventListener("click", () => { modal.style.display = "none"; }); window.addEventListener("click", (event) => { if (event.target === modal) { modal.style.display = "none"; } }); function siguientePaso(paso) { document.querySelectorAll("[id^='paso']").forEach(p => p.classList.add("d-none")); document.getElementById(`paso${paso}`).classList.remove("d-none"); if (paso === 3) { capacidadTotal = parseInt(document.getElementById("capacidad_total").value) || 0; document.getElementById("capacidad_disponible").textContent = capacidadTotal; // ✅ Llamar a actualizar capacidad después de cargar los datos actualizarCapacidad(); } } // ✅ Función para actualizar la capacidad disponible function actualizarCapacidad() { let sumaZonas = 0; ["capacidad_general", "capacidad_plata", "capacidad_oro", "capacidad_vip"].forEach(id => { sumaZonas += parseInt(document.getElementById(id).value) || 0; }); let capacidadDisponibleElement = document.getElementById("capacidad_disponible"); let restante = capacidadTotal - sumaZonas; if (restante < 0) { capacidadDisponibleElement.textContent = "⚠️ Excede la capacidad total"; capacidadDisponibleElement.style.color = "red"; } else if (restante > 0) { capacidadDisponibleElement.textContent = `⚠️ Faltan ${restante} lugares`; capacidadDisponibleElement.style.color = "orange"; } else { capacidadDisponibleElement.textContent = `✅ Todo correcto`; capacidadDisponibleElement.style.color = "green"; } } // ✅ Función para validar la capacidad antes de actualizar function validarCapacidadZonas() { let sumaZonas = 0; ["capacidad_general", "capacidad_plata", "capacidad_oro", "capacidad_vip"].forEach(id => { sumaZonas += parseInt(document.getElementById(id).value) || 0; }); let capacidadTotalInput = parseInt(document.getElementById("capacidad_total").value); if (sumaZonas < capacidadTotalInput) { mostrarModal(`⚠️ Error: La suma de las capacidades es menor`); return false; } if (sumaZonas > capacidadTotalInput) { mostrarModal(`⚠️ Error: La suma de las capacidades es mayor`); return false; } return true; } // ✅ Bloquear la actualización si la validación no pasa formulario.addEventListener("submit", async (event) => { event.preventDefault(); if (!validarCapacidadZonas()) { return; // 🚫 Bloquear la actualización si la validación falla } await actualizarConcierto(conciertoId); }); // ✅ Función para cargar los datos del concierto async function cargarDatosConcierto(id) { try { const respuesta = await fetch(`/ProyectoTicketFei/controladores/obtener_concierto.php?id=${id}`); if (!respuesta.ok) throw new Error("Error al cargar los datos del concierto"); const concierto = await respuesta.json(); document.getElementById("nombre_concierto").value = concierto.nombre_concierto; document.getElementById("artista").value = concierto.artista; document.getElementById("fecha").value = concierto.fecha; document.getElementById("calle").value = concierto.calle; document.getElementById("colonia").value = concierto.colonia; document.getElementById("numero_direccion").value = concierto.numero_direccion; document.getElementById("codigo_postal").value = concierto.codigo_postal; document.getElementById("estado").value = concierto.estado; document.getElementById("capacidad_total").value = concierto.capacidad_total; capacidadTotal = parseInt(concierto.capacidad_total); // Guardar la capacidad total if (concierto.zonas && concierto.zonas.length > 0) { concierto.zonas.forEach(zona => { switch (zona.nombre_zona) { case "General": document.getElementById("capacidad_general").value = zona.capacidad; document.getElementById("precio_general").value = zona.precio; break; case "Plata": document.getElementById("capacidad_plata").value = zona.capacidad; document.getElementById("precio_plata").value = zona.precio; break; case "Oro": document.getElementById("capacidad_oro").value = zona.capacidad; document.getElementById("precio_oro").value = zona.precio; break; case "VIP": document.getElementById("capacidad_vip").value = zona.capacidad; document.getElementById("precio_vip").value = zona.precio; break; } }); } else { console.warn("⚠️ No se encontraron zonas para este concierto."); } } catch (error) { console.error("❌ Error en cargarDatosConcierto:", error); } } // ✅ Función para actualizar el concierto async function actualizarConcierto(id) { if (!validarCapacidadZonas()) return; // 🚫 Bloquear la actualización si la validación falla const datosConcierto = { id: id, nombre_concierto: document.getElementById("nombre_concierto").value.trim(), artista: document.getElementById("artista").value.trim(), fecha: document.getElementById("fecha").value, calle: document.getElementById("calle").value.trim(), colonia: document.getElementById("colonia").value.trim(), numero_direccion: document.getElementById("numero_direccion").value.trim(), codigo_postal: document.getElementById("codigo_postal").value.trim(), estado: document.getElementById("estado").value.trim(), capacidad_total: document.getElementById("capacidad_total").value, zonas: [ { nombre_zona: "General", capacidad: document.getElementById("capacidad_general").value, precio: document.getElementById("precio_general").value }, { nombre_zona: "Plata", capacidad: document.getElementById("capacidad_plata").value, precio: document.getElementById("precio_plata").value }, { nombre_zona: "Oro", capacidad: document.getElementById("capacidad_oro").value, precio: document.getElementById("precio_oro").value }, { nombre_zona: "VIP", capacidad: document.getElementById("capacidad_vip").value, precio: document.getElementById("precio_vip").value } ] }; try { const respuesta = await fetch("/ProyectoTicketFei/controladores/actualizar_concierto.php", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(datosConcierto) }); const resultado = await respuesta.json(); if (resultado.actualizacionCorrecta) { mostrarModal("✅ Concierto actualizado correctamente"); setTimeout(() => { window.location.href = "ventanaConciertos.html"; }, 2000); } else { mostrarModal("⚠️ Error al actualizar el concierto"); } } catch (error) { console.error(error); mostrarModal("⚠️ Error de conexión con el servidor"); } } // ✅ Llamar a cargar los datos cuando la página cargue (async function () { if (conciertoId) { await cargarDatosConcierto(conciertoId); } })();