/**
 * logService.js — Registro de eventos y mantenimiento de logs.
 * Sustituye logEventPdf (duplicada ×2) + limpiarArchivo + borrar* de indexpdf.js.
 *
 * ORIGEN v1: logEventPdf copiada en varapp.js y pdfcreator.js.
 *            limpiarArchivo, borrarPdfuser, borrarRhbuser, borrarLoginuser, borrarLoginCst
 *            todas en indexpdf.js sin encapsulado.
 */

import { PATHS, SERVER_URL } from '../config.js';
import { session } from '../data/store.js';

// ─── Log de PDF generado ──────────────────────────────────────────────────────
export async function logPdfEvent({ pdfName, qrUrl, imageList }) {
  const username = session.getUsername();
  const payload = {
    uniqueNumber: Date.now(),
    timestamp: new Date().toLocaleString('en-GB', { timeZone: 'Europe/Madrid', hour12: true }),
    autor: username,
    pdf_nom: pdfName,
    qr_nom: qrUrl,
    image_nom: imageList,
  };
  try {
    const res = await fetch(`${PATHS.logPdf}?t=${Date.now()}`, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json; charset=utf-8' },
      body: JSON.stringify(payload),
    });
    return await res.json();
  } catch (err) {
    console.error('[logService] logPdfEvent:', err);
  }
}

// ─── Limpieza de logs (solo admin "jmab") ─────────────────────────────────────
export async function cleanLog(archivo) {
  const confirmed = confirm(`¿Está a punto de depurar ${archivo}?`);
  if (!confirmed) return null;
  const res = await fetch(`${PATHS.limpiarLogs}?t=${Date.now()}`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ archivo }),
  });
  const result = await res.json();
  const extra = result.total_restantes !== undefined ? ` (${result.total_restantes} restantes)` : '';
  alert(result.message + extra);
  return result;
}

async function _deleteUserLog(endpoint, autor, archivo) {
  const res = await fetch(`${SERVER_URL}${endpoint}?autor=${autor}`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ archivo }),
  });
  const result = await res.json();
  const extra = result.total_restantes !== undefined ? ` (${result.total_restantes} restantes)` : '';
  alert(result.message + extra);
}

export async function cleanAllLogs() {
  const username = session.getUsername();
  if (username !== 'jmab') return;
  if (!confirm('Está a punto de eliminar registros obsoletos, desea continuar?')) return;
  if (!confirm('Confirma la operación?')) return;

  const AUTOR = 'jmab';
  await Promise.allSettled([
    _deleteUserLog('/php/logs/php_delete_pdf_user.php',   AUTOR, 'log_pdf.json'),
    _deleteUserLog('/php/logs/php_delete_rhb_user.php',   AUTOR, 'log_rhb.json'),
    _deleteUserLog('/php/logs/php_delete_login_user.php', AUTOR, 'log_login.json'),
    cleanLog('log_login.json'),
    cleanLog('log_encuesta.json'),
    cleanLog('log_pdf.json'),
    cleanLog('log_rhb.json'),
    cleanLog('log_ubicacion.json'),
    cleanLog('log_video.json'),
    cleanLog('log_generico.json'),
  ]);
}
