// Cliente del backend FastAPI de Leads (puerto 8001).
const BASE_URL = import.meta.env.VITE_API_URL || "http://localhost:8001";

async function get(path, params = {}) {
  const qs = new URLSearchParams(params).toString();
  const r = await fetch(`${BASE_URL}${path}${qs ? "?" + qs : ""}`);
  if (!r.ok) throw new Error(`Error ${r.status} en ${path}`);
  return r.json();
}

export const api = {
  leadsFiltros: () => get("/api/leads/filtros"),
  leads: (ano = "TODOS", mes = "TODOS", dia = "TODOS", programa = "TODOS", sede = "TODOS") =>
    get("/api/leads", { ano, mes, dia, programa, sede }),
  otrosGeneral: (ano = "TODOS", mes = "TODOS", dia = "TODOS") =>
    get("/api/otros-general", { ano, mes, dia }),
  ultimaActualizacion: () => get("/api/ultima-actualizacion"),
  conjuntosSinPauta: () => get("/api/conjuntos-sin-pauta"),
  usoPauta: (pauta, excluir) => get("/api/pauta/uso", { pauta, excluir: excluir || "" }),
  leyendaAnuncios: () => get("/api/leyenda-anuncios"),
  programasDisponibles: () => get("/api/programas-disponibles"),
  programasOcultos: () => get("/api/programas-ocultos"),
  encenderProgramas: (num_indices) =>
    fetch(`${BASE_URL}/api/programas-ocultos/encender`, {
      method: "POST", headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ num_indices }),
    }).then((r) => { if (!r.ok) throw new Error("Error al guardar"); return r.json(); }),
  guardarLeyenda: (cambios) =>
    fetch(`${BASE_URL}/api/leyenda-anuncios/guardar`, {
      method: "POST", headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ cambios }),
    }).then((r) => { if (!r.ok) throw new Error("Error al guardar"); return r.json(); }),
  guardarPauta: (num_indice, pauta, conjunto, contar) =>
    fetch(`${BASE_URL}/api/curso/guardar-pauta`, {
      method: "POST", headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ num_indice, pauta, conjunto, contar }),
    }).then((r) => { if (!r.ok) throw new Error("Error al guardar"); return r.json(); }),
  alertas: () => get("/api/leads/alertas"),
};
