// ══════════════════════════════════════════════
// RRB Admin — Module: avisos
// ══════════════════════════════════════════════

// ══════════════════════════════════════════════
// ── AVISOS ──
// ══════════════════════════════════════════════
let avisosData = [];

async function cargarAvisos() {
  document.getElementById('avisos-loading').style.display = 'block';
  document.getElementById('avisos-table-wrap').style.display = 'none';
  document.getElementById('avisos-empty').style.display = 'none';

  try {
    const data = await api('GET', 'avisos.php');
    if (!data.success) throw new Error(data.message);
    avisosData = data.data || [];
    renderAvisos();
  } catch (err) {
    showToast('Error al cargar avisos: ' + err.message, 'error');
    document.getElementById('avisos-loading').style.display = 'none';
  }
}

function renderAvisos() {
  document.getElementById('avisos-loading').style.display = 'none';
  const tbody = document.getElementById('avisos-tbody');

  if (avisosData.length === 0) {
    document.getElementById('avisos-empty').style.display = 'block';
    document.getElementById('avisos-table-wrap').style.display = 'none';
    return;
  }

  document.getElementById('avisos-table-wrap').style.display = 'block';
  document.getElementById('avisos-empty').style.display = 'none';

  tbody.innerHTML = avisosData.map(a => {
    const activo  = parseInt(a.status) === 1;
    const badge   = activo
      ? '<span class="badge-status activo">● Activo</span>'
      : '<span class="badge-status inactivo">● Inactivo</span>';
    const vigencia = `${formatDate(a.fechaInicio)} — ${formatDate(a.fechaFin)}`;
    const toggleLabel = activo ? 'Desactivar' : 'Activar';
    const toggleClass = activo ? 'btn-toggle desactivar' : 'btn-toggle';
    return `<tr>
      <td style="color:var(--muted);font-size:12px">#${a.id}</td>
      <td>
        <div style="font-weight:600">${esc(a.titulo)}</div>
        <div style="font-size:12px;color:var(--muted);margin-top:2px;max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis">${esc(a.mensaje)}</div>
      </td>
      <td style="font-size:13px;color:var(--muted)">${vigencia}</td>
      <td>${badge}</td>
      <td>
        <div class="td-actions">
          <button class="btn-action btn-edit" onclick="editarAviso(${a.id})">✏️ Editar</button>
          <button class="btn-action ${toggleClass}" onclick="toggleAviso(${a.id})">${toggleLabel}</button>
        </div>
      </td>
    </tr>`;
  }).join('');
}

// formatDate() y esc() están en core.js

// ── Modal ──
function abrirModalAviso(aviso = null) {
  document.getElementById('modal-aviso-title').textContent = aviso ? 'Editar aviso' : 'Nuevo aviso';
  document.getElementById('aviso-id').value      = aviso?.id      || '';
  document.getElementById('aviso-titulo').value  = aviso?.titulo  || '';
  document.getElementById('aviso-mensaje').value = aviso?.mensaje || '';
  document.getElementById('aviso-inicio').value  = aviso?.fechaInicio || '';
  document.getElementById('aviso-fin').value     = aviso?.fechaFin    || '';
  document.getElementById('aviso-status').value  = aviso?.status != null ? String(aviso.status) : '1';
  document.getElementById('modal-aviso').classList.add('open');
}

function cerrarModalAviso() {
  document.getElementById('modal-aviso').classList.remove('open');
}

function editarAviso(id) {
  const aviso = avisosData.find(a => a.id == id);
  if (aviso) abrirModalAviso(aviso);
}

async function guardarAviso() {
  const id          = document.getElementById('aviso-id').value;
  const titulo      = document.getElementById('aviso-titulo').value.trim();
  const mensaje     = document.getElementById('aviso-mensaje').value.trim();
  const fechaInicio = document.getElementById('aviso-inicio').value;
  const fechaFin    = document.getElementById('aviso-fin').value;
  const status      = parseInt(document.getElementById('aviso-status').value);

  if (!titulo || !mensaje || !fechaInicio || !fechaFin) {
    showToast('Completa todos los campos', 'error');
    return;
  }
  if (fechaFin < fechaInicio) {
    showToast('La fecha fin no puede ser anterior a la fecha inicio', 'error');
    return;
  }

  const btn = document.getElementById('btn-guardar-aviso');
  btn.disabled = true;
  btn.textContent = 'Guardando...';

  try {
    const body   = { titulo, mensaje, fechaInicio, fechaFin, status };
    const method = id ? 'PUT' : 'POST';
    if (id) body.id = parseInt(id);

    const data = await api(method, 'avisos.php', body);
    if (!data.success) throw new Error(data.message);

    showToast(id ? 'Aviso actualizado' : 'Aviso creado correctamente');
    cerrarModalAviso();
    cargarAvisos();
  } catch (err) {
    showToast('Error: ' + err.message, 'error');
  } finally {
    btn.disabled = false;
    btn.textContent = 'Guardar';
  }
}

async function toggleAviso(id) {
  try {
    const data = await api('DELETE', 'avisos.php', { id });
    if (!data.success) throw new Error(data.message);
    showToast(data.message);
    cargarAvisos();
  } catch (err) {
    showToast('Error: ' + err.message, 'error');
  }
}

