import { cambiarEstatus, darDeBajaDatos } from './estatus.js';
import { lanzarNotificacion, reproducirSonido } from './notificaciones.js';

export function cargarBajas() {
  // Evento de clic en fila (exceptuando botones/dropdowns)
  document.querySelectorAll("#tablaBajas tbody tr").forEach(fila => {
    fila.addEventListener("click", function (e) {
      // Evitar clic en botones o menú
      if (e.target.closest('button, .dropdown-menu, .dropdown-item')) return;

      const curp = this.dataset.curp;
      if (curp) {
        window.location.href = `detalle-alta.php?curp=${encodeURIComponent(curp)}&from=bajas`;
      }
    });
  });

  // Aplicar colores por clase de fila según el texto del badge
  document.querySelectorAll("#tablaBajas tbody tr").forEach(fila => {
    const badge = fila.querySelector("td:nth-child(7) .badge"); // 7ma columna = estatus
    if (!badge) return;

    const texto = badge.textContent.trim().toLowerCase();
    if (texto === "asignado") {
      fila.classList.add("table-success");
    } else if (texto === "en espera") {
      fila.classList.add("table-warning");
    } else if (texto === "concluido") {
      fila.classList.add("table-danger", "text-white");
    }
  });
}

// 🔁 Monitoreo de nuevas bajas cada 30s
function iniciarMonitorBajas() {
  let bajasPrevias = sessionStorage.getItem("bajasPrevias");
  bajasPrevias = bajasPrevias ? parseInt(bajasPrevias) : null;

  setInterval(() => {
    fetch("../../backend/contabilidad/get_bajas.php")
      .then(res => res.json())
      .then(data => {
        if (!Array.isArray(data)) return;

        const totalActual = data.length;

        if (bajasPrevias !== null && totalActual > bajasPrevias) {
          lanzarNotificacion("Se registró una nueva baja en plantilla");
          reproducirSonido();
        }

        sessionStorage.setItem("bajasPrevias", totalActual);
        bajasPrevias = totalActual;
      });
  }, 30000);
}

// 🚀 Inicia al cargar la página
document.addEventListener('DOMContentLoaded', () => {
  cargarBajas();
  iniciarMonitorBajas();
});

// ⬆️ Exponer funciones para usarse inline en HTML
window.cambiarEstatus = cambiarEstatus;
window.darDeBajaDatos = darDeBajaDatos;
