// =============================== // UI FUNCTIONS // =============================== // Output foto →
function out(data) {
  const el = document.getElementById("out");
  if (el) {
    el.textContent = JSON.stringify(data, null, 2);
  }
}

// Output attività → 
function outActivities(data) {
  const el = document.getElementById("outActivities");
  if (el) {
    el.textContent = JSON.stringify(data, null, 2);
  }
}

// ===============================
//  CARICA LISTA UTENTI — solo Admin
// ===============================
async function loadUserDropdown() {
  try {
    const users = await apiGet(`/users`);

    // FOTO
    const selPhotos = document.getElementById("userSelect");
    if (selPhotos) {
      selPhotos.innerHTML = "";

      users.forEach(u => {
        const opt = document.createElement("option");
        opt.value = u.name;
        opt.textContent = u.name;
        selPhotos.appendChild(opt);
      });
    }

    // ATTIVITÀ
    const selActivities = document.getElementById("userSelectActivities");
    if (selActivities) {
      selActivities.innerHTML = "";

      users.forEach(u => {
        const opt = document.createElement("option");
        opt.value = u.name;
        opt.textContent = u.name;
        selActivities.appendChild(opt);
      });
    }

  } catch (err) {
    console.error("Errore nel caricare gli utenti:", err);
    out({
      error: "Errore nel caricare gli utenti",
      details: err.message
    });
  }
}

// ===============================
//  INIZIALIZZAZIONE UI
// ===============================
document.addEventListener("DOMContentLoaded", async () => {
  // 1. Aspetta che config.js carichi Admin.BASE_URL
  await loadConfig();

  // 2. Helper per bind
  const bind = (id, fn) => {
    const el = document.getElementById(id);

    if (el && typeof fn === "function") {
      el.onclick = fn;
    }
  };

  // ===============================
  // FOTO
  // ===============================
  bind("btnScan", scan);
  bind("btnResetDB", resetDB);
  bind("btnReadDBUser", readDBUser);
  bind("btnDeletePhoto", deletePhoto);
  bind("btnFindIdIndex", findIdIndex);
  bind("btnResetDBuser", resetDBuser);
  bind("btnSearchPhotoById", searchPhotoById);

  // Toggle soft delete foto
  bind("btnToggleSoft", toggleSoftDelete);

  bind("btnShowDBChanges", async () => {
    const since = getSinceISO();

    if (!since) {
      return out({ error: "Inserisci una data/ora" });
    }

    const payload = parseJwt(Admin.token);
    const user = payload.name;
    const res = await getDBChanges(since, user);

    out(res);
  });

  bind("btnShowHardDeleted", async () => {
    const since = getSinceISO();

    if (!since) {
      return out({ error: "Inserisci una data/ora" });
    }

    const payload = parseJwt(Admin.token);
    const user = payload.name;
    const res = await getHardDeleted(since, user);

    out(res.deleted || res);
  });

  bind("btnBack", () => {
    window.location.href = "index.html";
  });

  // ===============================
  // ATTIVITÀ
  // ===============================
  bind("btnScanActivities", scanActivities);
  bind("btnResetActivitiesDB", resetActivitiesDB);
  bind("btnReadActivitiesDB", readActivitiesDBUser);
  bind("btnDeleteActivity", deleteActivity);

  // Toggle soft delete attività
  bind("btnToggleSoftActivity", toggleSoftDeleteActivity);

  bind("btnSearchActivityById", searchActivityById);

  bind("btnShowActivitiesChanges", async () => {
    const since = getSinceISOActivities();

    if (!since) {
      return outActivities({ error: "Inserisci una data/ora" });
    }

    const payload = parseJwt(Admin.token);
    const user = payload.name;
    const res = await getActivitiesChanges(since, user);

    outActivities(res);
  });

  bind("btnShowActivitiesHardDeleted", async () => {
    const since = getSinceISOActivities();

    if (!since) {
      return outActivities({ error: "Inserisci una data/ora" });
    }

    const payload = parseJwt(Admin.token);
    const user = payload.name;
    const res = await getActivitiesHardDeleted(since, user);

    outActivities(res.deleted || res);
  });

  // ===============================
  // DROPDOWN UTENTI — solo Admin
  // ===============================
  const payload = parseJwt(Admin.token);

  if (payload.name === "Admin") {
    loadUserDropdown();
  }
});