document.addEventListener("DOMContentLoaded", () => { cargarConciertos(); }); const listaConciertos = document.getElementById("listaConciertos"); const buscadorBoton = document.getElementById("buscadorBoton"); const buscadorInput = document.getElementById("buscadorColaborador"); const modal = document.getElementById("modalMensaje"); const modalTexto = document.getElementById("modalTexto"); const cerrarModal = document.getElementById("cerrarModal"); const modalConfirmacion = document.getElementById("modalConfirmacion"); const modalConfirmarTexto = document.getElementById("modalConfirmarTexto"); const btnConfirmarEliminar = document.getElementById("btnConfirmarEliminar"); const btnCancelarEliminar = document.getElementById("btnCancelarEliminar"); let conciertoIdEliminar = null; // Para almacenar el ID del concierto a eliminar // Ocultar modales al inicio modal.style.display = "none"; modalConfirmacion.style.display = "none"; // Función para mostrar modal de mensaje (confirmación de eliminación exitosa) function mostrarModal(mensaje) { modalTexto.textContent = mensaje; modal.style.display = "flex"; setTimeout(() => { modal.style.display = "none"; }, 2000); // Se cierra automáticamente en 2 segundos } // Función para mostrar el modal de confirmación antes de eliminar function mostrarModalConfirmacion(id) { conciertoIdEliminar = id; modalConfirmarTexto.textContent = "¿Estás seguro de que deseas eliminar este concierto?"; modalConfirmacion.style.display = "flex"; } // Evento para cerrar el modal de confirmación sin eliminar btnCancelarEliminar.addEventListener("click", () => { modalConfirmacion.style.display = "none"; }); // Evento para confirmar eliminación btnConfirmarEliminar.addEventListener("click", async () => { if (conciertoIdEliminar) { await eliminarConcierto(conciertoIdEliminar); } modalConfirmacion.style.display = "none"; // Cierra el modal después de eliminar }); // Evento para cerrar el modal de mensaje manualmente cerrarModal.addEventListener("click", () => { modal.style.display = "none"; }); window.addEventListener("click", (event) => { if (event.target === modal) { modal.style.display = "none"; } if (event.target === modalConfirmacion) { modalConfirmacion.style.display = "none"; } }); async function cargarConciertos(filtro = "") { try { const respuesta = await fetch('controladores/conciertos.php'); if (!respuesta.ok) throw new Error("Error al cargar conciertos"); const conciertos = await respuesta.json(); listaConciertos.innerHTML = ""; const conciertosFiltrados = filtro ? conciertos.filter(c => c.nombre_concierto.toLowerCase().includes(filtro.toLowerCase())) : conciertos; if (conciertosFiltrados.length === 0) { listaConciertos.innerHTML = `<p class="text-red-500 text-center">No se encontraron conciertos.</p>`; return; } let tarjetas = []; conciertosFiltrados.forEach((concierto) => { const tarjeta = document.createElement("div"); tarjeta.classList.add("concierto-card"); let zonasHTML = ""; if (concierto.zonas.length > 0) { zonasHTML = `<ul class="text-sm text-gray-300 mt-2">`; concierto.zonas.forEach(zona => { zonasHTML += `<li>🔹 ${zona.nombre_zona}: <b>${zona.capacidad} asientos</b> - $${zona.precio}</li>`; }); zonasHTML += `</ul>`; } tarjeta.innerHTML = ` <div class="menu-container"> <button class="menu-btn">⋮</button> <div class="menu"> <button class="edit" data-id="${concierto.id}">Editar</button> <button class="delete" data-id="${concierto.id}">Eliminar</button> </div> </div> <img src="img/concierto_${concierto.id}.jpg" alt="Concierto" class="card-img"> <div class="card-body"> <h3 class="card-title">${concierto.nombre_concierto}</h3> <p class="card-text">🎤 ${concierto.artista}</p> <p class="card-text">📅 ${concierto.fecha}</p> <p class="card-text">📍 ${concierto.direccion || 'No definida'}</p> <p class="card-text">🎟 ${concierto.capacidad_total} Asistentes</p> ${zonasHTML} </div> <button class="btn-comprar" data-id="${concierto.id}">Comprar Boletos</button> `; // Evento para editar tarjeta.querySelector(".edit").addEventListener("click", () => { window.location.href = `editarConciertos.html?id=${concierto.id}`; }); // Evento para eliminar usando el modal de confirmación tarjeta.querySelector(".delete").addEventListener("click", (e) => { const id = e.target.dataset.id; mostrarModalConfirmacion(id); }); tarjeta.querySelector(".btn-comprar").addEventListener("click", (e) => { const id = e.target.dataset.id; window.location.href = `ventaBoletos.html?id=${id}`; }); listaConciertos.appendChild(tarjeta); tarjetas.push(tarjeta); }); gsap.fromTo( tarjetas, { opacity: 0, scale: 0.9 }, { opacity: 1, scale: 1, duration: 0.6, stagger: 0.2, ease: "power3.out" } ); } catch (error) { console.error(error); listaConciertos.innerHTML = `<p class="text-red-500">No se pudieron cargar los conciertos.</p>`; } } buscadorBoton.addEventListener('click', (event) => { event.preventDefault(); const termino = buscadorInput.value.trim(); cargarConciertos(termino); }); document.addEventListener("click", (e) => { if (e.target.classList.contains("menu-btn")) { e.stopPropagation(); let menu = e.target.nextElementSibling; menu.style.display = menu.style.display === "block" ? "none" : "block"; } else { document.querySelectorAll(".menu").forEach(menu => { menu.style.display = "none"; }); } }); /** 🔹 Función para eliminar el concierto usando modal */ async function eliminarConcierto(id) { try { const respuesta = await fetch("controladores/eliminar_concierto.php", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ id }) }); const resultado = await respuesta.json(); if (resultado.eliminacionCorrecta) { mostrarModal("Concierto eliminado correctamente"); cargarConciertos(); // Recargar la lista } else { mostrarModal("Error al eliminar el concierto"); } } catch (error) { console.error(error); mostrarModal("Error de conexión con el servidor"); } }