// ══════════════════════════════════════════════
// RRB Admin — Module: reportes
// ══════════════════════════════════════════════

// ════════════════════════════════════════════
let calData = null;

function iniciarReportes() {
  // Establecer mes y año actual por defecto
  const now = new Date();
  document.getElementById('cal-mes').value  = now.getMonth() + 1;
  document.getElementById('cal-anio').value = now.getFullYear();
}

// seleccionarReporte() está en ganancias.js

async function cargarCalificados() {
  const mes  = document.getElementById('cal-mes').value;
  const anio = document.getElementById('cal-anio').value;
  if (!mes || !anio) { showToast('Selecciona mes y año', 'error'); return; }

  const btn = document.getElementById('btn-cal-buscar');
  btn.disabled = true;
  btn.textContent = '⏳ Consultando...';

  document.getElementById('cal-loading').style.display = 'block';
  document.getElementById('cal-result').style.display  = 'none';
  document.getElementById('cal-empty').style.display   = 'none';
  document.getElementById('cal-summary').style.display = 'none';
  document.getElementById('btn-cal-export').style.display = 'none';

  try {
    const data = await api('GET', `calificados.php?mes=${mes}&anio=${anio}`);
    if (!data.success) throw new Error(data.message);
    calData = data;
    renderCalificados(data);
  } catch (err) {
    showToast('Error: ' + err.message, 'error');
    document.getElementById('cal-loading').style.display = 'none';
  } finally {
    btn.disabled = false;
    btn.textContent = '🔍 Consultar';
  }
}

function renderCalificados(data) {
  document.getElementById('cal-loading').style.display = 'none';

  const total   = data.total || 0;
  const grupo1  = data.grupo1 || [];  // 625-1499
  const grupo2  = data.grupo2 || [];  // 1500+

  if (total === 0) {
    document.getElementById('cal-empty').style.display = 'block';
    return;
  }

  // Resumen
  document.getElementById('cal-total').textContent   = total;
  document.getElementById('cal-parcial').textContent = grupo1.length;
  document.getElementById('cal-pleno').textContent   = grupo2.length;
  document.getElementById('cal-summary').style.display = 'grid';

  // Barra de puntos: máximo para escalar
  const maxPts = Math.max(...[...grupo1, ...grupo2].map(r => r.puntos), 1500);

  function buildRows(grupo, tipo) {
    if (grupo.length === 0) return '<tr><td colspan="5" style="text-align:center;color:var(--muted);padding:20px">Sin registros en este grupo</td></tr>';
    return grupo.map((r, i) => {
      const pct  = Math.min(100, Math.round((r.puntos / maxPts) * 100));
      const pts  = Number(r.puntos).toLocaleString('es-MX', { maximumFractionDigits: 0 });
      return `<tr>
        <td style="color:var(--muted);font-size:12px">${i + 1}</td>
        <td style="font-weight:600">${esc(r.referencia)}</td>
        <td style="font-size:13px;color:var(--muted)">${esc(r.rfc)}</td>
        <td>${esc(r.nombre_completo.trim())}</td>
        <td>
          <div class="pts-bar-wrap">
            <div class="pts-bar"><div class="pts-bar-fill ${tipo}" style="width:${pct}%"></div></div>
            <span class="pts-num ${tipo}">${pts}</span>
          </div>
        </td>
      </tr>`;
    }).join('');
  }

  // Grupo pleno (1500+)
  document.getElementById('cal-tbody-pleno').innerHTML   = buildRows(grupo2, 'pleno');
  document.getElementById('cal-count-pleno').textContent = `${grupo2.length} distribuidor${grupo2.length !== 1 ? 'es' : ''}`;
  document.getElementById('cal-wrap-pleno').style.display = grupo2.length > 0 ? 'block' : 'none';

  // Grupo parcial (625-1499)
  document.getElementById('cal-tbody-parcial').innerHTML   = buildRows(grupo1, 'parcial');
  document.getElementById('cal-count-parcial').textContent = `${grupo1.length} distribuidor${grupo1.length !== 1 ? 'es' : ''}`;
  document.getElementById('cal-wrap-parcial').style.display = grupo1.length > 0 ? 'block' : 'none';

  document.getElementById('cal-result').style.display = 'block';
  document.getElementById('btn-cal-export').style.display = 'inline-block';
}

function exportarCalificados() {
  if (!calData) return;
  const mes  = document.getElementById('cal-mes');
  const anio = document.getElementById('cal-anio').value;
  const mesNombre = mes.options[mes.selectedIndex].text;

  const rows = [
    ['Grupo', 'Referencia', 'RFC', 'Nombre', 'Puntos'],
    ...(calData.grupo2 || []).map(r => ['Calificado Pleno (1500+)', r.referencia, r.rfc, r.nombre_completo.trim(), r.puntos]),
    ...(calData.grupo1 || []).map(r => ['Calificación Parcial (625-1499)', r.referencia, r.rfc, r.nombre_completo.trim(), r.puntos]),
  ];

  const csv = rows.map(r => r.map(c => `"${String(c).replace(/"/g, '""')}"`).join(',')).join('\n');
  const blob = new Blob(['\uFEFF' + csv], { type: 'text/csv;charset=utf-8;' });
  const url  = URL.createObjectURL(blob);
  const a    = document.createElement('a');
  a.href     = url;
  a.download = `calificados_${mesNombre}_${anio}.csv`;
  a.click();
  URL.revokeObjectURL(url);
}

// Cerrar modal al hacer clic fuera
document.getElementById('modal-aviso').addEventListener('click', function(e) {
  if (e.target === this) cerrarModalAviso();
});
document.getElementById('modal-ganancias').addEventListener('click', function(e) {
  if (e.target === this) cerrarModalGanancias();
});

