-- =====================================================================
-- SIMAP — Pendaftaran akun wali secara mandiri
--
--   mysql -u root -p simap_db < database/17_daftar_wali_mandiri.sql
--
-- Orang tua mendaftar sendiri lewat halaman publik: cari nama anak, pilih
-- kelas, isi nomor telepon. Sekolah tidak perlu memasukkan 800 nomor satu
-- per satu.
--
-- Halaman ini terbuka untuk umum, jadi ada dua hal yang harus dijaga:
-- seseorang tidak boleh mendaftarkan nomornya ke anak orang lain, dan daftar
-- nama siswa tidak boleh bisa disedot begitu saja. Karena itu pencarian
-- meminta minimal tiga huruf dan hasilnya dibatasi, dan pendaftaran meminta
-- tanggal lahir anak sebagai bukti bahwa pendaftarnya memang keluarganya.
-- =====================================================================

SET NAMES utf8mb4;

CREATE TABLE IF NOT EXISTS wali_daftar (
  id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  siswa_id    INT UNSIGNED NOT NULL,
  nama_wali   VARCHAR(120) NOT NULL,
  hubungan    ENUM('AYAH','IBU','WALI') NOT NULL DEFAULT 'AYAH',
  no_hp       VARCHAR(20) NOT NULL,
  ip          VARCHAR(45) NULL,
  status      ENUM('MENUNGGU','DISETUJUI','DITOLAK') NOT NULL DEFAULT 'MENUNGGU',
  catatan     VARCHAR(255) NULL,
  diproses_oleh INT UNSIGNED NULL,
  diproses_at DATETIME NULL,
  created_at  DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  KEY idx_status (status, created_at),
  KEY idx_hp (no_hp),
  CONSTRAINT fk_wd_siswa FOREIGN KEY (siswa_id) REFERENCES siswa(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT IGNORE INTO setting (skey, svalue, tipe, grup, label) VALUES
 ('wali_daftar_mandiri', '1', 'boolean', 'sekolah',
  'Izinkan orang tua mendaftar sendiri lewat halaman publik'),
 ('wali_daftar_langsung', '0', 'boolean', 'sekolah',
  'Akun langsung aktif tanpa menunggu persetujuan operator');

SELECT 'pendaftaran wali mandiri siap' AS info;

INSERT IGNORE INTO setting (skey, svalue, tipe, grup, label) VALUES
 ('wali_daftar_cek_lahir', '1', 'boolean', 'sekolah',
  'Minta tanggal lahir anak sebagai bukti saat orang tua mendaftar sendiri');
