import { formateaFecha } from './utilidades.js';
import { lanzarNotificacion, reproducirSonido } from './notificaciones.js';

export let movimientos = [];
export let paginaActual = 1;
export const porPagina = 7;
export let totalPendientesAnterior = 0;

export function cargarMovimientos() {
  fetch("../../backend/contabilidad/get_movimientos_contabilidad.php")
    .then(res => res.json())
    .then(data => {
      if (!data.success) return;

      movimientos = data.data;

      const pendientesActuales = movimientos.filter(m => m.enteradoContabilidad == 0).length;
      if (pendientesActuales > totalPendientesAnterior) {
        lanzarNotificacion("Tienes solicitudes pendientes por revisar");
        reproducirSonido();
      }
      totalPendientesAnterior = pendientesActuales;

      paginaActual = 1;
      renderizarTabla();
    });
}

export function marcarEnterado(id) {
  console.log("✅ Función marcarEnterado fue llamada con ID:", id); // 👈 línea para depuración

  fetch("../../backend/contabilidad/marcar_enterado.php", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ id })
  })
  .then(res => res.json())
  .then(data => {
    if (data.success) {
      Swal.fire({
        icon: 'success',
        title: 'Marcado como enterado',
        timer: 1200,
        showConfirmButton: false
      });
      cargarMovimientos();
    } else {
      Swal.fire({
        icon: 'error',
        title: 'Error',
        text: data.message || 'No se pudo marcar como enterado'
      });
    }
  });
}


export function renderizarTabla() {
  const tbody = document.querySelector("#tablaBonos tbody");
  if (!tbody) return; // 🚫 Evita el error si no existe la tabla

  tbody.innerHTML = "";

  const inicio = (paginaActual - 1) * porPagina;
  const paginados = movimientos.slice(inicio, inicio + porPagina);

  paginados.forEach(m => {
    const fila = document.createElement("tr");
    if (parseInt(m.enteradoContabilidad) === 1) {
      fila.classList.add("table-success");
    }

    fila.innerHTML = `
      <td>${m.Nombre}</td>
      <td>${m.CURP}</td>
      <td>${m.PRM}</td>
      <td>${m.actualPuesto}</td>
      <td>${m.actualPDV}</td>
      <td>$${parseFloat(m.nuevoSueldo || 0).toFixed(2)}</td>
      <td>${m.Bono ? `$${parseFloat(m.Bono).toFixed(2)}` : '—'}</td>
      <td>${formateaFecha(m.fechaSolicitud)}</td>
      <td>
        <button class="btn btn-sm btn-outline-success btn-enterado" data-id="${m.ID}">
          Marcar como enterado
        </button>
      </td>
    `;

const btn = fila.querySelector('.btn-enterado');
if (btn) {
  btn.addEventListener('click', () => {
    marcarEnterado(m.ID);
  });
}
    tbody.appendChild(fila);
  });

  tbody.querySelectorAll('.btn-enterado').forEach(btn => {
    btn.addEventListener('click', () => {
      const id = parseInt(btn.dataset.id);
      marcarEnterado(id);
    });
  });


  renderizarPaginacion();
}


export function renderizarPaginacion() {
  const totalPaginas = Math.ceil(movimientos.length / porPagina);
  const contenedor = document.getElementById("paginacion-movimientos");

  if (!contenedor) return;

  contenedor.innerHTML = `
    <button class="btn btn-outline-primary btn-sm me-2" ${paginaActual === 1 ? 'disabled' : ''} onclick="cambiarPagina(-1)">
      <i class="fas fa-angle-left"></i> Anterior
    </button>
    <span class="fw-bold">Página ${paginaActual} de ${totalPaginas}</span>
    <button class="btn btn-outline-primary btn-sm ms-2" ${paginaActual === totalPaginas ? 'disabled' : ''} onclick="cambiarPagina(1)">
      Siguiente <i class="fas fa-angle-right"></i>
    </button>
  `;
}

export function cambiarPagina(delta) {
  const totalPaginas = Math.ceil(movimientos.length / porPagina);
  const nuevaPagina = paginaActual + delta;

  if (nuevaPagina >= 1 && nuevaPagina <= totalPaginas) {
    paginaActual = nuevaPagina;
    renderizarTabla();
  }
}

window.cambiarPagina = cambiarPagina;
