-- ================================================================
-- UPDATE SKEMA — PORTAL PENGHUNI
-- ================================================================
-- Jalankan isi file ini SEKALI di phpMyAdmin (tab "SQL") pada database
-- yang sama dengan schema.sql sebelumnya. Ini hanya MENAMBAH tabel baru,
-- tidak mengubah/menghapus tabel yang sudah ada (users, kv_store aman).

-- Akun login penghuni untuk portal mandiri (terpisah dari akun admin/pemilik)
CREATE TABLE IF NOT EXISTS portal_akun (
  id INT AUTO_INCREMENT PRIMARY KEY,
  room_nomor VARCHAR(50) NOT NULL,
  nama_penyewa VARCHAR(150) DEFAULT '',
  username VARCHAR(100) NOT NULL UNIQUE,
  password_hash VARCHAR(255) NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Kode aktivasi sekali pakai yang dibuat admin untuk tiap kamar, supaya
-- hanya penghuni yang benar-benar tinggal di kos yang bisa daftar portal.
CREATE TABLE IF NOT EXISTS portal_kode_aktivasi (
  id INT AUTO_INCREMENT PRIMARY KEY,
  room_nomor VARCHAR(50) NOT NULL,
  nama_penyewa VARCHAR(150) DEFAULT '',
  kode VARCHAR(10) NOT NULL,
  terpakai TINYINT(1) NOT NULL DEFAULT 0,
  dibuat_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  kadaluarsa_at DATETIME NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Sesi login portal (token bearer sederhana)
CREATE TABLE IF NOT EXISTS portal_sesi (
  token VARCHAR(64) PRIMARY KEY,
  akun_id INT NOT NULL,
  room_nomor VARCHAR(50) NOT NULL,
  dibuat_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  kadaluarsa_at DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bukti pembayaran yang diupload mandiri oleh penghuni
CREATE TABLE IF NOT EXISTS bukti_pembayaran (
  id INT AUTO_INCREMENT PRIMARY KEY,
  room_nomor VARCHAR(50) NOT NULL,
  nama_penyewa VARCHAR(150) DEFAULT '',
  bulan VARCHAR(50) DEFAULT '',
  jumlah BIGINT DEFAULT 0,
  metode VARCHAR(20) DEFAULT 'Transfer',
  catatan TEXT,
  file_url TEXT,
  file_nama VARCHAR(255),
  status VARCHAR(20) NOT NULL DEFAULT 'pending',
  catatan_admin TEXT,
  dibuat_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  diproses_at TIMESTAMP NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Permintaan setup/ganti WiFi dari penghuni (perlu disetujui admin dulu,
-- kecuali setup pertama kali yang langsung diterapkan)
CREATE TABLE IF NOT EXISTS permintaan_wifi (
  id INT AUTO_INCREMENT PRIMARY KEY,
  room_nomor VARCHAR(50) NOT NULL,
  nama_penyewa VARCHAR(150) DEFAULT '',
  jenis VARCHAR(20) NOT NULL DEFAULT 'reset',
  username_lama VARCHAR(100) DEFAULT '',
  username_baru VARCHAR(100) NOT NULL,
  password_baru VARCHAR(100) NOT NULL,
  status VARCHAR(20) NOT NULL DEFAULT 'pending',
  dibuat_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  diproses_at TIMESTAMP NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Pendaftaran calon penghuni kos mahasiswi (pengganti Google Form lama)
CREATE TABLE IF NOT EXISTS pendaftaran_calon_penghuni (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nama_lengkap VARCHAR(150) NOT NULL,
  nik VARCHAR(30) DEFAULT '',
  tempat_lahir VARCHAR(100) DEFAULT '',
  tanggal_lahir DATE NULL,
  asal_kampus VARCHAR(150) DEFAULT '',
  program_studi VARCHAR(150) DEFAULT '',
  alamat_asal TEXT,
  no_hp VARCHAR(30) DEFAULT '',
  no_hp_orangtua VARCHAR(30) DEFAULT '',
  nama_orangtua VARCHAR(150) DEFAULT '',
  rencana_masuk DATE NULL,
  catatan TEXT,
  foto_ktp_url TEXT,
  pas_foto_url TEXT,
  status VARCHAR(20) NOT NULL DEFAULT 'baru',
  dibuat_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
