195 lines
7.9 KiB
JavaScript
195 lines
7.9 KiB
JavaScript
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);
|
|
}
|
|
})();
|