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