'use strict';

// ── Carga de ofertas TIC monitorizadas ─────────────────────────
async function cargarEmpleoTIC() {
  const panel = document.getElementById('empleo-items');
  const badge = document.getElementById('empleo-fecha');

  try {
    const resp = await fetch('/api/empleo/publicaciones');
    if (!resp.ok) throw new Error('HTTP ' + resp.status);
    const items = await resp.json();
    if (!Array.isArray(items) || items.length === 0) {
      panel.innerHTML = '<p class="news-empty">No hay ofertas TIC recientes.</p>';
      badge.textContent = 'Sin datos';
      return;
    }

    // Separar: primero los que coincidan con informática, luego el resto
    const KW_TIC = /inform[aá]tica|TIC|técnico[a]? auxiliar informática|técnico especialista|sistemas|desarrollo|soporte|microinformática|administración electrónica|programación|DAM|ASIR|C1 informática|bolsa|interino/i;
    const importantes = items.filter(it => KW_TIC.test(it.titulo));
    const resto       = items.filter(it => !KW_TIC.test(it.titulo));
    const ordenados   = [...importantes, ...resto].slice(0, 30);

    // Fecha de la última publicación
    const fechas = ordenados.map(it => it.fecha).filter(Boolean);
    const fechaMax = fechas.length ? fechas.sort().reverse()[0] : null;
    badge.textContent = fechaMax ? 'Última: ' + fechaMax : 'Actualizado';

    panel.innerHTML = ordenados.map(item => {
      const esTIC = KW_TIC.test(item.titulo);
      const fecha = item.fecha || '';
      const titulo = escHtml(truncar(item.titulo || 'Sin título', 120));
      const organismo = escHtml(item.organismo || '');

      return `
        <a href="${escHtml(item.enlace || '#')}" target="_blank" rel="noopener"
           class="news-item${esTIC ? ' news-item--tai' : ''}">
          <div class="news-item-meta">
            ${esTIC
              ? '<span class="news-tag-tai"><i class="fas fa-star"></i> TIC / Informática</span>'
              : ''}
            <span class="news-date">${fecha}</span>
            <span class="news-org">${organismo}</span>
          </div>
          <div class="news-title">${titulo}</div>
        </a>`;
    }).join('');

  } catch (err) {
    console.warn('[noticias.js] Error cargando ofertas TIC:', err.message);
    badge.textContent = 'Error';
    panel.innerHTML = `
      <div class="news-error">
        <i class="fas fa-exclamation-triangle"></i>
        No se pudo cargar la información automáticamente.
      </div>`;
  }
}

// ── Helpers ────────────────────────────────────────────────────
function escHtml(s) {
  return (s || '').replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');
}

function truncar(s, max) {
  return s.length > max ? s.slice(0, max) + '…' : s;
}

// ── Arranque ───────────────────────────────────────────────────
cargarEmpleoTIC();
