/**
 * modulos-cd.js
 * Gestión de módulos asignados a cada Centro de Distribución.
 * Tabla: cd_modulos (cd_id, modulo_key)
 */

/* ── Catálogo de módulos disponibles ── */
const MCD_MODULOS = [
  { key: 'avisos',              icon: '📢', label: 'Avisos' },
  { key: 'distribuidores',      icon: '👥', label: 'Distribuidores' },
  { key: 'kyc',                 icon: '🔐', label: 'KYC Verificación' },
  { key: 'transacciones',       icon: '💰', label: 'Transacciones' },
  { key: 'productos',           icon: '📦', label: 'Productos' },
  { key: 'ganancias-regs',      icon: '🏦', label: 'Ganancias' },
  { key: 'voucher-grupal',      icon: '💳', label: 'Vouchers' },
  { key: 'notas-asignar',       icon: '📋', label: 'Notas por Asignar' },
  { key: 'ordenes-pendientes',  icon: '⏳', label: 'Órdenes Pendientes' },
  { key: 'inventario',          icon: '📦', label: 'Inventario' },
  { key: 'pedidos-stock',       icon: '🚚', label: 'Pedidos de Stock' },
  { key: 'nueva-compra',        icon: '🛒', label: 'Nueva Compra' },
  { key: 'agrupaciones',        icon: '📦', label: 'Agrupaciones' },
  { key: 'entrega',             icon: '🚚', label: 'Entrega' },
  { key: 'depositos-banco',     icon: '🏦', label: 'Depósitos en Banco' },
  { key: 'reportes',            icon: '📊', label: 'Reportes' },
];

let _mcdCentros = [];
let _mcdActivos = [];   // keys activos para el centro seleccionado

/* ── Init ── */
function mcdInit() {
  const sel = document.getElementById('mcd-sel-centro');
  if (sel.options.length <= 1) mcdCargarCentros();
}

/* ── Cargar lista de centros en el select ── */
async function mcdCargarCentros() {
  try {
    const r = await api('GET', 'api/compra-centros.php');
    _mcdCentros = r.centros || [];
    const sel = document.getElementById('mcd-sel-centro');
    sel.innerHTML = '<option value="">— Selecciona un centro —</option>';
    _mcdCentros.forEach(c => {
      const o = document.createElement('option');
      o.value = c.idusuarios_ci;
      o.textContent = c.idusuarios_ci + ' — ' + c.nombre;
      sel.appendChild(o);
    });
  } catch (e) {
    showToast('Error al cargar centros', 'error');
  }
}

/* ── Cargar módulos asignados al centro seleccionado ── */
async function mcdCargar() {
  const sel = document.getElementById('mcd-sel-centro');
  const cdId = sel.value;
  if (!cdId) { showToast('Selecciona un centro', 'warning'); return; }

  try {
    const r = await api('GET', `api/modulos-cd.php?cd_id=${cdId}`);
    _mcdActivos = r.modulos || [];

    // Nombre del centro
    const centro = _mcdCentros.find(c => String(c.idusuarios_ci) === String(cdId));
    document.getElementById('mcd-centro-nombre').textContent =
      centro ? (centro.idusuarios_ci + ' — ' + centro.nombre) : 'Centro #' + cdId;

    mcdRender();
    document.getElementById('mcd-grid').style.display = '';
  } catch (e) {
    showToast('Error al cargar módulos: ' + (e.message || e), 'error');
  }
}

/* ── Render grid de checkboxes ── */
function mcdRender() {
  const cont = document.getElementById('mcd-lista');
  cont.innerHTML = MCD_MODULOS.map(m => {
    const checked = _mcdActivos.includes(m.key) ? 'checked' : '';
    return `
      <label style="display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer;transition:background .15s;background:${checked ? '#f0fdf4' : '#fff'}"
             onmouseover="this.style.background='#f5f5f5'" onmouseout="this.style.background=this.querySelector('input').checked?'#f0fdf4':'#fff'">
        <input type="checkbox" value="${m.key}" ${checked}
               onchange="mcdToggle(this)"
               style="width:18px;height:18px;accent-color:var(--primary);cursor:pointer" />
        <span style="font-size:18px">${m.icon}</span>
        <span style="font-size:14px;font-weight:500;color:#333">${m.label}</span>
      </label>`;
  }).join('');
}

/* ── Toggle individual ── */
function mcdToggle(cb) {
  const key = cb.value;
  if (cb.checked) {
    if (!_mcdActivos.includes(key)) _mcdActivos.push(key);
    cb.closest('label').style.background = '#f0fdf4';
  } else {
    _mcdActivos = _mcdActivos.filter(k => k !== key);
    cb.closest('label').style.background = '#fff';
  }
}

/* ── Seleccionar / deseleccionar todos ── */
function mcdSelTodos(estado) {
  if (estado) {
    _mcdActivos = MCD_MODULOS.map(m => m.key);
  } else {
    _mcdActivos = [];
  }
  mcdRender();
}

/* ── Guardar en BD ── */
async function mcdGuardar() {
  const cdId = document.getElementById('mcd-sel-centro').value;
  if (!cdId) { showToast('Selecciona un centro', 'warning'); return; }

  try {
    const r = await api('POST', 'api/modulos-cd.php', {
      cd_id:   parseInt(cdId),
      modulos: _mcdActivos
    });
    if (r.ok || r.success) {
      showToast('Módulos guardados correctamente', 'success');
    } else {
      showToast(r.error || r.message || 'Error al guardar', 'error');
    }
  } catch (e) {
    showToast('Error al guardar: ' + (e.message || e), 'error');
  }
}
