-- Database schema for Absensi Sekolah System

CREATE DATABASE IF NOT EXISTS sekolah_absensi;
USE sekolah_absensi;

-- Tabel sekolah (config)
CREATE TABLE IF NOT EXISTS sekolah (
  id INT PRIMARY KEY AUTO_INCREMENT,
  nama_sekolah VARCHAR(255) DEFAULT 'Sistem Absensi Sekolah',
  jam_masuk TIME DEFAULT '07:00',
  jam_terlambat TIME DEFAULT '07:30',
  sidobe_api_key VARCHAR(255),
  sidobe_sender VARCHAR(20),
  template_datang TEXT,
  template_pulang TEXT,
  admin_password VARCHAR(255) DEFAULT 'admin123',
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- Tabel siswa
CREATE TABLE IF NOT EXISTS siswa (
  id INT PRIMARY KEY AUTO_INCREMENT,
  nis VARCHAR(50) UNIQUE NOT NULL,
  nama VARCHAR(255) NOT NULL,
  kelas VARCHAR(50) NOT NULL,
  no_wa_siswa VARCHAR(20),
  no_wa_ortu VARCHAR(20),
  foto_url TEXT,
  qr_code VARCHAR(100) UNIQUE,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabel wali_kelas
CREATE TABLE IF NOT EXISTS wali_kelas (
  id INT PRIMARY KEY AUTO_INCREMENT,
  nama_wali VARCHAR(255) NOT NULL,
  kelas VARCHAR(50) UNIQUE NOT NULL,
  no_wa_wali VARCHAR(20),
  password VARCHAR(255) NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabel absensi
CREATE TABLE IF NOT EXISTS absensi (
  id INT PRIMARY KEY AUTO_INCREMENT,
  siswa_id INT,
  tanggal DATE NOT NULL,
  jam_datang TIME,
  jam_pulang TIME,
  status ENUM('hadir', 'terlambat', 'izin', 'sakit', 'alpha', 'belum') DEFAULT 'belum',
  keterangan TEXT,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (siswa_id) REFERENCES siswa(id) ON DELETE CASCADE,
  INDEX idx_tanggal (tanggal),
  INDEX idx_siswa_tanggal (siswa_id, tanggal)
);

-- Insert default data
INSERT INTO sekolah (nama_sekolah, template_datang, template_pulang) VALUES (
  'Sistem Absensi Sekolah',
  'Assalamualaikum, {nama} dari kelas {kelas} telah hadir di sekolah pada pukul {jam}. Terima kasih.',
  'Assalamualaikum, {nama} dari kelas {kelas} telah pulang dari sekolah pada pukul {jam}. Terima kasih.'
);

INSERT INTO wali_kelas (nama_wali, kelas, password) VALUES (
  'Administrator',
  'ADMIN',
  'admin123'
);