export async function initAyarlarPage() {
  await yukleAyarlar();
  bindAyarlar();
}

async function yukleAyarlar() {
  try {
    const res = await fetch('/api/ayarlar');
    if (!res.ok) return;
    const d = await res.json();

    // Dükkan adı
    const dukkanInput = document.getElementById('ay-dukkan-adi');
    if (dukkanInput) dukkanInput.value = d.dukkan_adi || '';

    // Tema
    setTemaBtn(d.tema || 'light');

    // Otomatik kilit
    const kilitSelect = document.getElementById('ay-kilit-sure');
    if (kilitSelect) kilitSelect.value = d.otomatik_kilit_dk || '0';

    // Yedek hatırlatıcı
    const yedekGun = document.getElementById('ay-yedek-gun');
    if (yedekGun) yedekGun.value = d.yedek_hatirlat_gun || '0';

    // Son yedek tarihi
    const sonYedekEl = document.getElementById('ay-son-yedek-text');
    if (sonYedekEl) {
      sonYedekEl.textContent = d.son_yedek_tarihi
        ? `Son yedek: ${formatTarih(d.son_yedek_tarihi)}`
        : 'Son yedek: Henüz alınmadı';
    }
  } catch (e) {
    console.error('[ayarlar] Yükleme hatası:', e);
  }
}

function bindAyarlar() {
  // --- DÜKKAN ADI ---
  document.getElementById('ay-dukkan-kaydet')?.addEventListener('click', async () => {
    const val = document.getElementById('ay-dukkan-adi')?.value.trim();
    if (!val) return window.showToast('Dükkan adı boş olamaz', 'err');

    const res = await apiFetch('/api/ayarlar/dukkan', { dukkan_adi: val });
    if (res?.ok) {
      // Topbar'ı güncelle
      const shopEl = document.getElementById('shop-name');
      if (shopEl) shopEl.textContent = val;
      const homeEl = document.getElementById('home-shopname');
      if (homeEl) homeEl.textContent = val;
      window.showToast('Dükkan adı güncellendi');
    } else {
      window.showToast(res?.hata || 'Hata oluştu', 'err');
    }
  });

  // --- ŞİFRE ---
  document.getElementById('ay-parola-kaydet')?.addEventListener('click', async () => {
    const mevcut = document.getElementById('ay-mevcut-parola')?.value;
    const yeni = document.getElementById('ay-yeni-parola')?.value;
    const yeni2 = document.getElementById('ay-yeni-parola2')?.value;

    const res = await apiFetch('/api/ayarlar/parola', {
      mevcut_parola: mevcut,
      yeni_parola: yeni,
      yeni_parola_tekrar: yeni2
    });

    if (res?.ok) {
      document.getElementById('ay-mevcut-parola').value = '';
      document.getElementById('ay-yeni-parola').value = '';
      document.getElementById('ay-yeni-parola2').value = '';
      window.showToast('Şifre güncellendi');
    } else {
      window.showToast(res?.hata || 'Hata oluştu', 'err');
    }
  });

  // --- TEMA ---
  document.querySelectorAll('.tema-btn').forEach(btn => {
    btn.addEventListener('click', async () => {
      const tema = btn.dataset.tema;
      const res = await apiFetch('/api/ayarlar/tema', { tema });
      if (res?.ok) {
        if (typeof window.applyTema === 'function') window.applyTema(tema);
        setTemaBtn(tema);
        window.showToast(tema === 'dark' ? 'Koyu tema aktif' : tema === 'sistem' ? 'Sistem teması aktif' : 'Açık tema aktif');
      }
    });
  });

  // --- OTOMATİK KİLİT ---
  document.getElementById('ay-kilit-kaydet')?.addEventListener('click', async () => {
    const dk = document.getElementById('ay-kilit-sure')?.value || '0';
    const res = await apiFetch('/api/ayarlar/kilit', { otomatik_kilit_dk: dk });
    if (res?.ok) {
      window._autoLockDk = parseInt(dk);
      window.resetAutoLockTimer();
      const mesaj = dk === '0' ? 'Otomatik kilitleme kapatıldı' : `${dk} dakika sonra otomatik kilitlenecek`;
      window.showToast(mesaj);
    }
  });

  // --- YEDEK HATIRLATICI ---
  document.getElementById('ay-yedek-hatirlat-kaydet')?.addEventListener('click', async () => {
    const gun = document.getElementById('ay-yedek-gun')?.value || '0';
    const res = await apiFetch('/api/ayarlar/yedek-hatirlat', { yedek_hatirlat_gun: gun });
    if (res?.ok) {
      const mesaj = gun === '0' ? 'Yedek hatırlatıcı kapatıldı' : `${gun} günde bir hatırlatılacak`;
      window.showToast(mesaj);
    }
  });

  // --- YEDEK AL (.zip) ---
  document.getElementById('ay-yedek-zip')?.addEventListener('click', async () => {
    const btn = document.getElementById('ay-yedek-zip');
    btn.disabled = true;
    btn.textContent = 'İndiriliyor...';

    try {
      const res = await fetch('/api/yedek/indir');
      if (!res.ok) {
        const d = await res.json().catch(() => ({}));
        window.showToast(d.hata || 'İndirme başarısız', 'err');
        return;
      }

      // Dosya adını header'dan al
      const disposition = res.headers.get('Content-Disposition') || '';
      const match = disposition.match(/filename=(.+)/);
      const dosyaAdi = match ? match[1].replace(/"/g, '') : 'yedek.zip';

      const blob = await res.blob();
      const url = URL.createObjectURL(blob);
      const a = document.createElement('a');
      a.href = url;
      a.download = dosyaAdi;
      document.body.appendChild(a);
      a.click();
      a.remove();
      URL.revokeObjectURL(url);

      guncelleSonYedek();
      window.showToast('Yedek ZIP indirildi ✓');
    } catch (e) {
      window.showToast('Bağlantı hatası', 'err');
    } finally {
      btn.disabled = false;
      btn.innerHTML = `<svg viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.6" width="12" height="12"><path d="M8 1v9M5 7l3 3 3-3"/><path d="M2 11v2.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V11"/></svg> .zip İndir`;
    }
  });

  // --- YEDEK YÜKLE ---
  const yukleInput = document.getElementById('ay-yukle-input');
  const yukleBtn = document.getElementById('ay-yukle-btn');
  const yukleDosyaAdi = document.getElementById('ay-yukle-dosya-adi');

  yukleInput?.addEventListener('change', () => {
    const f = yukleInput.files[0];
    if (f) {
      yukleDosyaAdi.textContent = f.name;
      yukleBtn.disabled = false;
    } else {
      yukleDosyaAdi.textContent = 'Dosya seç (.zip)';
      yukleBtn.disabled = true;
    }
  });

  yukleBtn?.addEventListener('click', async () => {
    const f = yukleInput?.files[0];
    if (!f) return;

    const onay = confirm(`"${f.name}" dosyasını geri yüklemek istediğinize emin misiniz?\n\nMevcut tüm veriler silinecek!`);
    if (!onay) return;

    yukleBtn.disabled = true;
    yukleBtn.textContent = 'Yükleniyor...';

    const form = new FormData();
    form.append('dosya', f);

    try {
      const res = await fetch('/api/yedek/yukle', { method: 'POST', body: form });
      const d = await res.json();
      if (d.ok) {
        window.showToast(d.mesaj || 'Yedek yüklendi!');
        setTimeout(() => location.reload(), 2000);
      } else {
        window.showToast(d.hata || 'Yükleme başarısız', 'err');
        yukleBtn.disabled = false;
        yukleBtn.textContent = 'Yükle ve Geri Yükle';
      }
    } catch (e) {
      window.showToast('Bağlantı hatası', 'err');
      yukleBtn.disabled = false;
      yukleBtn.textContent = 'Yükle ve Geri Yükle';
    }
  });
}

// --- YARDIMCILAR ---

async function apiFetch(url, body) {
  try {
    const res = await fetch(url, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(body)
    });
    return await res.json();
  } catch (e) {
    return null;
  }
}

function setTemaBtn(tema) {
  document.querySelectorAll('.tema-btn').forEach(b => {
    b.classList.toggle('aktif', b.dataset.tema === tema);
  });
}

function formatTarih(str) {
  try {
    // 'YYYY-MM-DD HH:MM' veya 'YYYY-MM-DD'
    const [tarihStr, saatStr] = str.split(' ');
    const [y, m, d] = tarihStr.split('-');
    const tarih = `${d}.${m}.${y}`;
    return saatStr ? `${tarih} ${saatStr}` : tarih;
  } catch {
    return str;
  }
}

function guncelleSonYedek() {
  const el = document.getElementById('ay-son-yedek-text');
  if (!el) return;
  const now = new Date();
  const d = String(now.getDate()).padStart(2, '0');
  const m = String(now.getMonth() + 1).padStart(2, '0');
  const y = now.getFullYear();
  const h = String(now.getHours()).padStart(2, '0');
  const min = String(now.getMinutes()).padStart(2, '0');
  el.textContent = `Son yedek: ${d}.${m}.${y} ${h}:${min}`;
}
