DROP DATABASE IF EXISTS learnova_db;
CREATE DATABASE learnova_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE learnova_db;
USE learnova_db;

-- TABEL SISWA
DROP TABLE IF EXISTS progress_siswa;
DROP TABLE IF EXISTS nilai_kuis;
DROP TABLE IF EXISTS siswa;

CREATE TABLE siswa (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama_lengkap VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    no_telepon VARCHAR(20) NOT NULL,
    alamat TEXT NOT NULL,
    jenis_kelamin ENUM('Laki-laki', 'Perempuan') NOT NULL,
    tanggal_lahir DATE NOT NULL,
    kursus VARCHAR(100) NOT NULL,
    tanggal_daftar TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_email (email),
    INDEX idx_kursus (kursus)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- TABEL KURSUS
DROP TABLE IF EXISTS materi;
DROP TABLE IF EXISTS kuis;
DROP TABLE IF EXISTS kursus;

CREATE TABLE kursus (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama_kursus VARCHAR(100) NOT NULL,
    deskripsi TEXT,
    status ENUM('Aktif', 'Selesai') DEFAULT 'Aktif',
    icon VARCHAR(50) DEFAULT 'book-outline',
    color VARCHAR(50) DEFAULT 'primary'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- TABEL MATERI
CREATE TABLE materi (
    id INT AUTO_INCREMENT PRIMARY KEY,
    kursus_id INT NOT NULL,
    judul VARCHAR(200) NOT NULL,
    durasi VARCHAR(20),
    video_url VARCHAR(255),
    content TEXT,
    urutan INT DEFAULT 0,
    FOREIGN KEY (kursus_id) REFERENCES kursus(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- TABEL KUIS
CREATE TABLE kuis (
    id INT AUTO_INCREMENT PRIMARY KEY,
    kursus_id INT NOT NULL,
    pertanyaan TEXT NOT NULL,
    opsi_a VARCHAR(255) NOT NULL,
    opsi_b VARCHAR(255) NOT NULL,
    opsi_c VARCHAR(255) NOT NULL,
    opsi_d VARCHAR(255) NOT NULL,
    jawaban_benar CHAR(1) NOT NULL,
    FOREIGN KEY (kursus_id) REFERENCES kursus(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- TABEL PROGRESS
CREATE TABLE progress_siswa (
    id INT AUTO_INCREMENT PRIMARY KEY,
    siswa_id INT NOT NULL,
    materi_id INT NOT NULL,
    selesai BOOLEAN DEFAULT FALSE,
    tanggal_selesai TIMESTAMP NULL,
    FOREIGN KEY (siswa_id) REFERENCES siswa(id) ON DELETE CASCADE,
    FOREIGN KEY (materi_id) REFERENCES materi(id) ON DELETE CASCADE,
    UNIQUE KEY unique_progress (siswa_id, materi_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- TABEL NILAI
CREATE TABLE nilai_kuis (
    id INT AUTO_INCREMENT PRIMARY KEY,
    siswa_id INT NOT NULL,
    kursus_id INT NOT NULL,
    score INT NOT NULL,
    total_soal INT NOT NULL,
    tanggal_kuis TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (siswa_id) REFERENCES siswa(id) ON DELETE CASCADE,
    FOREIGN KEY (kursus_id) REFERENCES kursus(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- INSERT DATA KURSUS
INSERT INTO kursus (nama_kursus, deskripsi, status, icon, color) VALUES
('Matematika Dasar', 'Materi mencakup operasi dasar, pecahan, dan konsep aljabar sederhana.', 'Aktif', 'book-outline', 'blue'),
('Bahasa Indonesia', 'Materi fokus pada Struktur Kalimat dan Teks Prosedur.', 'Aktif', 'book-outline', 'green'),
('Bahasa Inggris', 'Materi meliputi grammar dan self introduction.', 'Aktif', 'book-outline', 'yellow');

-- INSERT MATERI
INSERT INTO materi (kursus_id, judul, durasi, video_url, content, urutan) VALUES
(1, 'Pengenalan Aljabar', '12:20', 'assets/videos/pengenalan-aljabar.mp4', 'Aljabar adalah cabang matematika yang menggunakan simbol dan huruf.', 1),
(1, 'Operasi Bilangan Bulat', '36:38', 'assets/videos/operasi-bilangan.mp4', 'Operasi bilangan bulat adalah perhitungan yang melibatkan bilangan positif, negatif, dan nol.', 2),
(1, 'Persamaan Linear Dua Variabel', '15:18', 'assets/videos/persamaan-linear-dua-variabel.mp4', 'Persamaan linear dua variabel adalah persamaan matematika yang memiliki dua variabel.', 3),
(2, 'Struktur Kalimat', '6:46', 'assets/videos/struktur-kalimat.mp4', 'Susunan subjek, predikat, dan objek.', 1),
(2, 'Teks Prosedur', '10:38', 'assets/videos/teks-prosedur.mp4', 'Teks yang berisi langkah-langkah untuk melakukan sesuatu.', 2),
(3, 'Grammar Introduction', '08:20', 'assets/videos/grammar-intro.mp4', 'Basic grammar rules in English.', 1),
(3, 'Self Introduction', '5:50', 'assets/videos/self-intro.mp4', 'Self-introduction in English.', 2);

-- INSERT KUIS
INSERT INTO kuis (kursus_id, pertanyaan, opsi_a, opsi_b, opsi_c, opsi_d, jawaban_benar) VALUES
(1, 'Bentuk aljabar dari "suatu bilangan yang dikalikan 5 kemudian dikurangi 3" adalah …', 'A. 5 − x − 3', 'B. 5x − 3', 'C. x − 5 − 3', 'D. 3 − 5x', 'B'),
(1, 'Jika diketahui 𝑥 = 4, nilai dari 2𝑥 + 6 adalah …', 'A. 10', 'B. 12', 'C. 14', 'D. 16', 'C'),
(1, 'Hasil dari −7+12 adalah …', 'A. −19', 'B. −5', 'C. 5', 'D. 19', 'C'),
(1, 'Manakah yang merupakan persamaan linear dua variabel?', 'A. 𝑥² + 𝑦 = 6', 'B. 2𝑥 + 3𝑦 = 12', 'C. 𝑥 + 𝑦² = 5', 'D. 𝑥𝑦 = 8', 'B'),
(2, 'Kalimat yang memiliki struktur S–P–O adalah …', 'A. Di taman sedang bermain anak-anak', 'B. Ibu memasak sayur', 'C. Sangat indah pemandangannya', 'D. Ke sekolah pagi hari', 'B'),
(2, 'Ciri utama teks prosedur adalah …', 'A. Mengandung unsur khayalan', 'B. Menjelaskan peristiwa masa lalu', 'C. Berisi langkah-langkah terurut', 'D. Mengungkapkan pendapat penulis', 'C'),
(3, 'Kalimat yang menggunakan grammar dengan benar adalah …', 'A. She go to school every day', 'B. She goes to school every day', 'C. She going to school every day', 'D. She gone to school every day', 'B'),
(3, 'Kalimat yang tepat untuk memperkenalkan diri adalah …', 'A. My name is Andi', 'B. Name I Andi', 'C. I name Andi', 'D. My Andi name', 'A');

-- INSERT SISWA
INSERT INTO siswa (nama_lengkap, email, no_telepon, alamat, jenis_kelamin, tanggal_lahir, kursus) VALUES
('Rafika Kaya Imani', 'rafikakayaimani05@gmail.com', '081234567890', 'Jl. Merdeka No. 10, Jakarta', 'Perempuan', '2005-03-15', 'Matematika Dasar'),
('Budi Santoso', 'budi.santoso@example.com', '081234567891', 'Jl. Sudirman No. 20, Bandung', 'Laki-laki', '2004-07-22', 'Bahasa Indonesia'),
('Siti Nurhaliza', 'siti.nurhaliza@example.com', '081234567892', 'Jl. Thamrin No. 30, Surabaya', 'Perempuan', '2005-11-08', 'Bahasa Inggris');