-- ================================================================
-- UPDATE SKEMA — WIFI SECOND DEVICE (PINCODE) LANTAI 1 & 2
-- ================================================================
-- Jalankan SEKALI di phpMyAdmin (tab "SQL"), SETELAH schema_portal_update.sql.
-- Ini hanya MENAMBAH 1 tabel baru — tidak mengubah/menghapus tabel lain
-- yang sudah ada (rooms/tenants di kv_store, bukti_pembayaran,
-- permintaan_wifi, dst tetap aman).
--
-- Fitur: penghuni lantai 1 & 2 bisa membuat PINCODE untuk WiFi "perangkat
-- kedua" (second device) dengan kuota 10GB, masa aktif 30 hari, biaya
-- Rp20.000. Pincode TIDAK langsung aktif — harus menunggu verifikasi admin
-- dulu setelah penghuni upload bukti bayar (Transfer / QRIS / GoPay). Admin
-- baru membuat akun hotspot-nya di Mikrotik (dengan limit kuota & masa
-- aktif) setelah pengajuan disetujui.
--
-- Kolom `pincode` SENGAJA TIDAK dibuat UNIQUE secara permanen di database —
-- keunikannya hanya dijaga di antara pincode yang statusnya masih
-- 'menunggu_verifikasi' atau 'aktif' (dicek di api.php saat membuat kode
-- baru), supaya kode yang sudah kadaluarsa/ditolak boleh dipakai ulang di
-- masa depan tanpa bentrok dengan riwayat lama.

CREATE TABLE IF NOT EXISTS wifi_second_device (
  id INT AUTO_INCREMENT PRIMARY KEY,
  room_nomor VARCHAR(50) NOT NULL,
  nama_penyewa VARCHAR(150) DEFAULT '',
  lantai INT NOT NULL DEFAULT 1,

  -- Kode 6 digit yang dipakai penghuni untuk login WiFi second device
  -- (username = password = pincode ini, supaya gampang diketik di perangkat
  -- kedua seperti voucher hotspot pada umumnya).
  pincode VARCHAR(10) NOT NULL,

  -- Pembayaran
  metode VARCHAR(20) NOT NULL DEFAULT 'Transfer', -- 'Transfer' | 'QRIS' | 'GoPay'
  jumlah INT NOT NULL DEFAULT 20000,
  catatan TEXT,
  file_url TEXT,
  file_nama VARCHAR(255),

  -- Paket yang berlaku SAAT pengajuan dibuat (disalin dari Pengaturan
  -- Mikrotik supaya kalau admin ubah harga/kuota di kemudian hari, riwayat
  -- pengajuan lama tidak ikut berubah retroaktif).
  kuota_gb INT NOT NULL DEFAULT 10,
  masa_aktif_hari INT NOT NULL DEFAULT 30,

  -- status: menunggu_verifikasi | aktif | ditolak | kadaluarsa
  status VARCHAR(20) NOT NULL DEFAULT 'menunggu_verifikasi',
  catatan_admin TEXT,

  -- Diisi HANYA setelah admin menyetujui (status='aktif')
  mikrotik_username VARCHAR(100) DEFAULT NULL,
  aktif_at TIMESTAMP NULL,
  aktif_sampai DATETIME NULL, -- aktif_at + masa_aktif_hari, dipakai cron untuk auto-nonaktifkan

  dibuat_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  diproses_at TIMESTAMP NULL,

  INDEX idx_room_nomor (room_nomor),
  INDEX idx_status (status),
  INDEX idx_pincode (pincode)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
