ProyectoTicketFei/js/editarConcierto.js

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);
}
})();