-- =====================================================================
-- GENETHINK - Interactive Genetics Learning Platform
-- Database Schema + Demo Seed Data
-- Engine: MySQL 5.7+ / MariaDB 10.3+
-- =====================================================================

SET FOREIGN_KEY_CHECKS = 0;
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+07:00";

CREATE DATABASE IF NOT EXISTS `genethink` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE `genethink`;

-- ---------------------------------------------------------------------
-- Table: users
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(100) NOT NULL,
  `username` VARCHAR(50) NOT NULL,
  `email` VARCHAR(100) NOT NULL,
  `password` VARCHAR(255) NOT NULL,
  `role` ENUM('admin','dosen','mahasiswa') NOT NULL DEFAULT 'mahasiswa',
  `photo` VARCHAR(255) DEFAULT NULL,
  `nim_nip` VARCHAR(30) DEFAULT NULL,
  `status` ENUM('active','inactive') NOT NULL DEFAULT 'active',
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_users_username` (`username`),
  UNIQUE KEY `uq_users_email` (`email`),
  KEY `idx_users_role` (`role`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- Table: categories
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `categories`;
CREATE TABLE `categories` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(100) NOT NULL,
  `slug` VARCHAR(120) NOT NULL,
  `description` VARCHAR(255) DEFAULT NULL,
  `icon` VARCHAR(50) DEFAULT 'dna',
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_categories_slug` (`slug`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- Table: materials
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `materials`;
CREATE TABLE `materials` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `category_id` INT UNSIGNED NOT NULL,
  `author_id` INT UNSIGNED NOT NULL,
  `title` VARCHAR(150) NOT NULL,
  `slug` VARCHAR(170) NOT NULL,
  `description` TEXT,
  `thumbnail` VARCHAR(255) DEFAULT NULL,
  `icon` VARCHAR(50) DEFAULT 'dna',
  `color` VARCHAR(20) DEFAULT '#4F46E5',
  `objectives` TEXT COMMENT 'Tujuan pembelajaran, satu baris per poin',
  `views` INT UNSIGNED NOT NULL DEFAULT 0,
  `status` ENUM('draft','published') NOT NULL DEFAULT 'draft',
  `sort_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_materials_slug` (`slug`),
  KEY `idx_materials_category` (`category_id`),
  KEY `idx_materials_author` (`author_id`),
  KEY `idx_materials_status` (`status`),
  CONSTRAINT `fk_materials_category` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  CONSTRAINT `fk_materials_author` FOREIGN KEY (`author_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- Table: material_sections (bab / submateri)
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `material_sections`;
CREATE TABLE `material_sections` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `material_id` INT UNSIGNED NOT NULL,
  `title` VARCHAR(150) NOT NULL,
  `slug` VARCHAR(170) NOT NULL,
  `content` LONGTEXT,
  `video_url` VARCHAR(255) DEFAULT NULL,
  `attachment` VARCHAR(255) DEFAULT NULL,
  `sort_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `status` ENUM('draft','published') NOT NULL DEFAULT 'published',
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_sections_material` (`material_id`),
  CONSTRAINT `fk_sections_material` FOREIGN KEY (`material_id`) REFERENCES `materials` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- Table: media (pustaka media terpusat)
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `media`;
CREATE TABLE `media` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `uploader_id` INT UNSIGNED NOT NULL,
  `file_name` VARCHAR(255) NOT NULL,
  `original_name` VARCHAR(255) NOT NULL,
  `file_path` VARCHAR(255) NOT NULL,
  `file_type` ENUM('image','document') NOT NULL DEFAULT 'image',
  `mime_type` VARCHAR(100) DEFAULT NULL,
  `size` INT UNSIGNED DEFAULT 0,
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_media_uploader` (`uploader_id`),
  CONSTRAINT `fk_media_uploader` FOREIGN KEY (`uploader_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- Table: quizzes
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `quizzes`;
CREATE TABLE `quizzes` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `material_id` INT UNSIGNED NOT NULL,
  `author_id` INT UNSIGNED NOT NULL,
  `title` VARCHAR(150) NOT NULL,
  `description` VARCHAR(255) DEFAULT NULL,
  `duration` INT UNSIGNED NOT NULL DEFAULT 10 COMMENT 'menit',
  `passing_grade` INT UNSIGNED NOT NULL DEFAULT 70,
  `status` ENUM('draft','published') NOT NULL DEFAULT 'draft',
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_quizzes_material` (`material_id`),
  KEY `idx_quizzes_author` (`author_id`),
  CONSTRAINT `fk_quizzes_material` FOREIGN KEY (`material_id`) REFERENCES `materials` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_quizzes_author` FOREIGN KEY (`author_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- Table: questions
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `questions`;
CREATE TABLE `questions` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `quiz_id` INT UNSIGNED NOT NULL,
  `question` TEXT NOT NULL,
  `option_a` VARCHAR(255) NOT NULL,
  `option_b` VARCHAR(255) NOT NULL,
  `option_c` VARCHAR(255) NOT NULL,
  `option_d` VARCHAR(255) NOT NULL,
  `correct_answer` ENUM('a','b','c','d') NOT NULL,
  `explanation` TEXT,
  `weight` INT UNSIGNED NOT NULL DEFAULT 1,
  `sort_order` INT UNSIGNED NOT NULL DEFAULT 0,
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_questions_quiz` (`quiz_id`),
  CONSTRAINT `fk_questions_quiz` FOREIGN KEY (`quiz_id`) REFERENCES `quizzes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- Table: quiz_results
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `quiz_results`;
CREATE TABLE `quiz_results` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `quiz_id` INT UNSIGNED NOT NULL,
  `user_id` INT UNSIGNED NOT NULL,
  `score` DECIMAL(5,2) NOT NULL DEFAULT 0,
  `correct` INT UNSIGNED NOT NULL DEFAULT 0,
  `wrong` INT UNSIGNED NOT NULL DEFAULT 0,
  `duration` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'detik dipakai mengerjakan',
  `is_passed` TINYINT(1) NOT NULL DEFAULT 0,
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_results_quiz` (`quiz_id`),
  KEY `idx_results_user` (`user_id`),
  CONSTRAINT `fk_results_quiz` FOREIGN KEY (`quiz_id`) REFERENCES `quizzes` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_results_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- Table: quiz_answers (jawaban per-soal milik mahasiswa, untuk review)
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `quiz_answers`;
CREATE TABLE `quiz_answers` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `quiz_result_id` INT UNSIGNED NOT NULL,
  `question_id` INT UNSIGNED NOT NULL,
  `selected_answer` ENUM('a','b','c','d') DEFAULT NULL,
  `is_correct` TINYINT(1) NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  KEY `idx_answers_result` (`quiz_result_id`),
  KEY `idx_answers_question` (`question_id`),
  CONSTRAINT `fk_answers_result` FOREIGN KEY (`quiz_result_id`) REFERENCES `quiz_results` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_answers_question` FOREIGN KEY (`question_id`) REFERENCES `questions` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- Table: progress (progress bab per mahasiswa)
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `progress`;
CREATE TABLE `progress` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_id` INT UNSIGNED NOT NULL,
  `material_id` INT UNSIGNED NOT NULL,
  `section_id` INT UNSIGNED NOT NULL,
  `status` ENUM('in_progress','completed') NOT NULL DEFAULT 'completed',
  `completed_at` DATETIME DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_progress_user_section` (`user_id`,`section_id`),
  KEY `idx_progress_material` (`material_id`),
  CONSTRAINT `fk_progress_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_progress_material` FOREIGN KEY (`material_id`) REFERENCES `materials` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_progress_section` FOREIGN KEY (`section_id`) REFERENCES `material_sections` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- Table: activity_logs
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `activity_logs`;
CREATE TABLE `activity_logs` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_id` INT UNSIGNED DEFAULT NULL,
  `material_id` INT UNSIGNED DEFAULT NULL,
  `activity` VARCHAR(255) NOT NULL,
  `ip_address` VARCHAR(45) DEFAULT NULL,
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_logs_user` (`user_id`),
  KEY `idx_logs_material` (`material_id`),
  KEY `idx_logs_created` (`created_at`),
  CONSTRAINT `fk_logs_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
  CONSTRAINT `fk_logs_material` FOREIGN KEY (`material_id`) REFERENCES `materials` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------
-- Table: settings
-- ---------------------------------------------------------------------
DROP TABLE IF EXISTS `settings`;
CREATE TABLE `settings` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `setting_key` VARCHAR(100) NOT NULL,
  `setting_value` TEXT,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uq_settings_key` (`setting_key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

SET FOREIGN_KEY_CHECKS = 1;

-- =====================================================================
-- SEED DATA
-- =====================================================================

-- Default settings
INSERT INTO `settings` (`setting_key`, `setting_value`) VALUES
('site_name', 'GENETHINK'),
('site_tagline', 'Belajar Genetika Jadi Mudah'),
('site_description', 'Platform sumber belajar genetika yang membantu mahasiswa memahami konsep genetika secara lebih terstruktur, interaktif, dan menyenangkan.'),
('contact_email', 'halo@genethink.id'),
('contact_phone', '+62 812-3456-7890'),
('maintenance_mode', '0');

-- Users
-- password untuk admin   : Admin123!
-- password untuk dosen   : Dosen123!
-- password untuk mahasiswa: Mahasiswa123!
-- Hash berikut dibuat dengan password_hash() (bcrypt, cost 10)
INSERT INTO `users` (`id`, `name`, `username`, `email`, `password`, `role`, `nim_nip`, `status`) VALUES
(1, 'Administrator', 'admin', 'admin@genethink.id', '$2b$10$LOn/BX3ST5AHuE40u9jTAuOK.7.N6JUJfEbqvsv1zhTvnbVxtIb9K', 'admin', 'ADM001', 'active'),
(2, 'Dr. Bagus Wirawan', 'dosen', 'dosen@genethink.id', '$2b$10$BVm5v5EOPBlzi6ySrL9dM.SnyFFwtz6w6/p2OApFw8kNil64yp/Gu', 'dosen', 'NIP0011', 'active'),
(3, 'Ayu Lestari', 'mahasiswa', 'mahasiswa@genethink.id', '$2b$10$YMpX9n9tCuNXuc4JA8U2Tu/CMaf8OmyHt.oWCMmf2ioEABv4.8w3y', 'mahasiswa', 'NIM2023001', 'active'),
(4, 'Rafi Firmansyah', 'rafi_f', 'rafi@genethink.id', '$2b$10$YMpX9n9tCuNXuc4JA8U2Tu/CMaf8OmyHt.oWCMmf2ioEABv4.8w3y', 'mahasiswa', 'NIM2023002', 'active'),
(5, 'Sinta Amelia', 'sinta_a', 'sinta@genethink.id', '$2b$10$YMpX9n9tCuNXuc4JA8U2Tu/CMaf8OmyHt.oWCMmf2ioEABv4.8w3y', 'mahasiswa', 'NIM2023003', 'active');

-- Categories
INSERT INTO `categories` (`id`, `name`, `slug`, `description`, `icon`) VALUES
(1, 'Genetika Dasar', 'genetika-dasar', 'Konsep dasar pewarisan sifat dan materi genetik', 'dna'),
(2, 'Biologi Sel', 'biologi-sel', 'Struktur, siklus, dan pembelahan sel', 'cell'),
(3, 'Hukum Mendel', 'hukum-mendel', 'Prinsip dan pengembangan hukum pewarisan Mendel', 'flask');

-- Materials (10 materi utama)
INSERT INTO `materials` (`id`, `category_id`, `author_id`, `title`, `slug`, `description`, `icon`, `color`, `objectives`, `views`, `status`, `sort_order`) VALUES
(1, 1, 2, 'Pewarisan Sifat', 'pewarisan-sifat', 'Mempelajari bagaimana sifat-sifat induk diturunkan kepada keturunannya melalui materi genetik.', 'users', '#4F46E5', 'Menjelaskan konsep pewarisan sifat.\nMengidentifikasi sifat dominan dan resesif.\nMenjelaskan peran gen dan kromosom dalam pewarisan.', 214, 'published', 1),
(2, 1, 2, 'DNA', 'dna', 'DNA (Deoxyribonucleic Acid) adalah molekul yang membawa informasi genetik pada semua makhluk hidup. DNA tersusun atas nukleotida yang membentuk struktur double helix (untai ganda).', 'dna', '#2563EB', 'Menjelaskan pengertian DNA.\nMenjelaskan struktur DNA.\nMenjelaskan fungsi DNA.\nMenjelaskan peran DNA dalam pewarisan sifat.', 342, 'published', 2),
(3, 1, 2, 'RNA', 'rna', 'RNA (Ribonucleic Acid) berperan penting dalam sintesis protein dan ekspresi gen, sebagai perantara antara DNA dan protein.', 'rna', '#3B82F6', 'Menjelaskan pengertian dan jenis RNA.\nMembandingkan struktur RNA dengan DNA.\nMenjelaskan proses transkripsi.', 187, 'published', 3),
(4, 1, 2, 'Gen', 'gen', 'Gen adalah unit dasar hereditas yang menyimpan instruksi untuk membentuk protein dan menentukan sifat suatu organisme.', 'link', '#6366F1', 'Menjelaskan pengertian gen.\nMenjelaskan lokus dan alel.\nMenjelaskan ekspresi gen.', 156, 'published', 4),
(5, 1, 2, 'Kromosom', 'kromosom', 'Kromosom adalah struktur pembawa gen yang tersusun rapi di dalam inti sel dan berperan penting dalam pembelahan sel.', 'x-shape', '#7C3AED', 'Menjelaskan struktur kromosom.\nMembedakan autosom dan gonosom.\nMenjelaskan kariotipe manusia.', 129, 'published', 5),
(6, 2, 2, 'Siklus Sel', 'siklus-sel', 'Siklus sel adalah rangkaian tahapan pertumbuhan dan pembelahan yang dilalui sel dari satu pembelahan ke pembelahan berikutnya.', 'cycle', '#4F46E5', 'Menjelaskan tahapan siklus sel.\nMenjelaskan fase interfase.\nMenjelaskan pengaturan siklus sel.', 98, 'published', 6),
(7, 2, 2, 'Mitosis', 'mitosis', 'Mitosis adalah proses pembelahan sel yang menghasilkan dua sel anak dengan jumlah kromosom identik dengan sel induk.', 'divide', '#2563EB', 'Menjelaskan tahapan mitosis.\nMenjelaskan hasil akhir mitosis.\nMenjelaskan pentingnya mitosis bagi tubuh.', 87, 'published', 7),
(8, 2, 2, 'Meiosis', 'meiosis', 'Meiosis adalah pembelahan sel yang menghasilkan sel gamet dengan jumlah kromosom separuh dari sel induk.', 'split', '#7C3AED', 'Menjelaskan tahapan meiosis I dan II.\nMembedakan meiosis dengan mitosis.\nMenjelaskan peran meiosis dalam variasi genetik.', 76, 'published', 8),
(9, 3, 2, 'Mendelian', 'mendelian', 'Mempelajari prinsip pewarisan sifat yang dirumuskan oleh Gregor Mendel melalui percobaan persilangan kacang ercis.', 'person', '#4F46E5', 'Menjelaskan riwayat percobaan Mendel.\nMenjelaskan Hukum Segregasi.\nMenjelaskan Hukum Berpasangan Bebas.', 64, 'draft', 9),
(10, 3, 2, 'Pengembangan Hukum Mendel', 'pengembangan-hukum-mendel', 'Membahas penyimpangan dan pengembangan dari hukum Mendel klasik seperti kodominansi, alel ganda, dan gen letal.', 'sprout', '#2563EB', 'Menjelaskan penyimpangan semu hukum Mendel.\nMenjelaskan kodominansi dan alel ganda.\nMenjelaskan interaksi antar gen.', 41, 'draft', 10);

-- Material sections (bab) - contoh lengkap untuk DNA (id 2), ringkas untuk lainnya
INSERT INTO `material_sections` (`id`, `material_id`, `title`, `slug`, `content`, `video_url`, `sort_order`, `status`) VALUES
(1, 2, 'Pendahuluan', 'pendahuluan', '<p>DNA (<strong>Deoxyribonucleic Acid</strong>) adalah molekul yang membawa informasi genetik pada semua makhluk hidup. DNA tersusun atas nukleotida yang membentuk struktur double helix (untai ganda).</p><p>Setiap nukleotida terdiri dari tiga komponen: gugus fosfat, gula deoksiribosa, dan basa nitrogen. Basa nitrogen pada DNA terdiri dari Adenin (A), Timin (T), Guanin (G), dan Sitosin (C).</p>', 'https://www.youtube.com/embed/o_-6JXLYS-k', 1, 'published'),
(2, 2, 'Struktur DNA', 'struktur-dna', '<p>DNA memiliki struktur double helix yang ditemukan oleh James Watson dan Francis Crick pada tahun 1953. Dua untai polinukleotida saling berpilin membentuk heliks ganda.</p><ul><li>Adenin selalu berpasangan dengan Timin (2 ikatan hidrogen)</li><li>Guanin selalu berpasangan dengan Sitosin (3 ikatan hidrogen)</li></ul>', NULL, 2, 'published'),
(3, 2, 'Fungsi DNA', 'fungsi-dna', '<p>DNA memiliki beberapa fungsi utama:</p><ol><li>Menyimpan informasi genetik</li><li>Mengontrol sintesis protein</li><li>Mewariskan sifat kepada keturunan</li><li>Menjadi cetakan untuk replikasi dan transkripsi</li></ol>', NULL, 3, 'published'),
(4, 2, 'Replikasi DNA', 'replikasi-dna', '<p>Replikasi DNA adalah proses penggandaan molekul DNA sebelum sel membelah. Proses ini bersifat semikonservatif, artinya setiap DNA baru terdiri dari satu untai lama dan satu untai baru.</p>', NULL, 4, 'published'),
(5, 2, 'Video Pembelajaran', 'video-pembelajaran', '<p>Simak video berikut untuk memperkuat pemahaman mengenai struktur dan replikasi DNA.</p>', 'https://www.youtube.com/embed/o_-6JXLYS-k', 5, 'published'),
(6, 2, 'Rangkuman', 'rangkuman', '<p>DNA adalah pembawa informasi genetik berbentuk double helix yang tersusun dari nukleotida, berfungsi menyimpan dan mewariskan informasi genetik serta mengarahkan sintesis protein melalui proses transkripsi dan translasi.</p>', NULL, 6, 'published');

INSERT INTO `material_sections` (`material_id`, `title`, `slug`, `content`, `sort_order`, `status`) VALUES
(1, 'Pendahuluan', 'pendahuluan', '<p>Pewarisan sifat adalah proses penurunan karakteristik dari induk kepada keturunannya melalui materi genetik yang terkandung dalam gen dan kromosom.</p>', 1, 'published'),
(1, 'Sifat Dominan dan Resesif', 'sifat-dominan-resesif', '<p>Sifat dominan adalah sifat yang selalu muncul jika alelnya ada, sedangkan sifat resesif hanya muncul apabila tidak ada alel dominan yang menutupinya.</p>', 2, 'published'),
(1, 'Genotipe dan Fenotipe', 'genotipe-fenotipe', '<p>Genotipe adalah susunan gen suatu individu, sedangkan fenotipe adalah sifat yang tampak sebagai hasil interaksi genotipe dengan lingkungan.</p>', 3, 'published'),
(1, 'Latihan Soal', 'latihan-soal', '<p>Kerjakan latihan soal pada menu kuis untuk menguji pemahamanmu mengenai pewarisan sifat.</p>', 4, 'published'),
(1, 'Rangkuman', 'rangkuman', '<p>Pewarisan sifat terjadi melalui gen yang diturunkan dari induk ke keturunan, dengan pola dominan-resesif yang menentukan fenotipe akhir.</p>', 5, 'published'),

(3, 'Pendahuluan', 'pendahuluan', '<p>RNA (Ribonucleic Acid) adalah molekul yang berperan sebagai perantara dalam ekspresi gen, membawa informasi dari DNA untuk sintesis protein.</p>', 1, 'published'),
(3, 'Jenis-jenis RNA', 'jenis-jenis-rna', '<p>Terdapat tiga jenis RNA utama: mRNA (messenger RNA), tRNA (transfer RNA), dan rRNA (ribosomal RNA), masing-masing dengan peran spesifik dalam sintesis protein.</p>', 2, 'published'),
(3, 'Perbedaan RNA dan DNA', 'perbedaan-rna-dna', '<p>RNA berbeda dari DNA dalam hal gula penyusun (ribosa vs deoksiribosa), struktur (untai tunggal vs untai ganda), dan basa nitrogen (Urasil menggantikan Timin).</p>', 3, 'published'),
(3, 'Latihan Soal', 'latihan-soal', '<p>Kerjakan latihan soal pada menu kuis untuk menguji pemahamanmu mengenai RNA.</p>', 4, 'published'),
(3, 'Rangkuman', 'rangkuman', '<p>RNA adalah molekul untai tunggal yang berperan penting dalam proses transkripsi dan translasi, menjembatani informasi genetik DNA menjadi protein fungsional.</p>', 5, 'published'),

(4, 'Pendahuluan', 'pendahuluan', '<p>Gen adalah unit dasar hereditas yang terletak pada lokus tertentu di kromosom dan menyimpan instruksi untuk sintesis protein.</p>', 1, 'published'),
(4, 'Lokus dan Alel', 'lokus-dan-alel', '<p>Lokus adalah posisi spesifik suatu gen pada kromosom, sedangkan alel adalah bentuk alternatif dari gen yang menempati lokus yang sama.</p>', 2, 'published'),
(4, 'Ekspresi Gen', 'ekspresi-gen', '<p>Ekspresi gen adalah proses di mana informasi dalam gen digunakan untuk mensintesis produk fungsional seperti protein.</p>', 3, 'published'),
(4, 'Rangkuman', 'rangkuman', '<p>Gen merupakan unit hereditas yang menentukan sifat organisme melalui proses ekspresi gen yang terkontrol.</p>', 4, 'published'),

(5, 'Pendahuluan', 'pendahuluan', '<p>Kromosom adalah struktur benang halus berisi DNA yang membawa informasi genetik dan berperan penting saat sel membelah.</p>', 1, 'published'),
(5, 'Struktur Kromosom', 'struktur-kromosom', '<p>Kromosom tersusun dari DNA yang melilit protein histon, membentuk struktur yang disebut kromatin, kemudian memadat menjadi kromosom saat pembelahan sel.</p>', 2, 'published'),
(5, 'Autosom dan Gonosom', 'autosom-dan-gonosom', '<p>Manusia memiliki 23 pasang kromosom: 22 pasang autosom (kromosom tubuh) dan 1 pasang gonosom (kromosom kelamin, XX atau XY).</p>', 3, 'published'),
(5, 'Rangkuman', 'rangkuman', '<p>Kromosom adalah pembawa gen yang berperan krusial dalam pewarisan sifat dan pembelahan sel.</p>', 4, 'published'),

(6, 'Pendahuluan', 'pendahuluan', '<p>Siklus sel adalah rangkaian peristiwa yang dialami sel dari saat terbentuk hingga membelah menjadi sel baru.</p>', 1, 'published'),
(6, 'Fase Interfase', 'fase-interfase', '<p>Interfase terdiri dari fase G1, S (sintesis DNA), dan G2, di mana sel tumbuh dan mempersiapkan diri untuk pembelahan.</p>', 2, 'published'),
(6, 'Fase Mitotik', 'fase-mitotik', '<p>Fase mitotik (fase M) adalah tahap di mana sel benar-benar membelah menjadi dua sel anak melalui mitosis atau meiosis.</p>', 3, 'published'),
(6, 'Rangkuman', 'rangkuman', '<p>Siklus sel memastikan pertumbuhan dan regenerasi sel berjalan teratur melalui tahapan interfase dan fase mitotik.</p>', 4, 'published'),

(7, 'Pendahuluan', 'pendahuluan', '<p>Mitosis adalah proses pembelahan sel yang menghasilkan dua sel anak dengan jumlah kromosom identik dengan sel induk (2n).</p>', 1, 'published'),
(7, 'Tahapan Mitosis', 'tahapan-mitosis', '<p>Mitosis terdiri dari profase, metafase, anafase, dan telofase, yang masing-masing memiliki ciri pergerakan kromosom yang khas.</p>', 2, 'published'),
(7, 'Fungsi Mitosis', 'fungsi-mitosis', '<p>Mitosis berperan dalam pertumbuhan, perbaikan jaringan, dan regenerasi sel pada organisme.</p>', 3, 'published'),
(7, 'Rangkuman', 'rangkuman', '<p>Mitosis menghasilkan dua sel anak identik yang berperan penting dalam pertumbuhan dan perbaikan sel tubuh.</p>', 4, 'published'),

(8, 'Pendahuluan', 'pendahuluan', '<p>Meiosis adalah pembelahan sel khusus yang menghasilkan sel gamet dengan jumlah kromosom separuh dari sel induk (n).</p>', 1, 'published'),
(8, 'Meiosis I dan II', 'meiosis-i-dan-ii', '<p>Meiosis terdiri dari dua tahap pembelahan berurutan, meiosis I (memisahkan kromosom homolog) dan meiosis II (memisahkan kromatid saudara).</p>', 2, 'published'),
(8, 'Variasi Genetik', 'variasi-genetik', '<p>Pindah silang (crossing over) selama meiosis I menghasilkan kombinasi genetik baru yang meningkatkan variasi genetik keturunan.</p>', 3, 'published'),
(8, 'Rangkuman', 'rangkuman', '<p>Meiosis menghasilkan sel gamet haploid dan berkontribusi pada variasi genetik melalui pindah silang.</p>', 4, 'published'),

(9, 'Pendahuluan', 'pendahuluan', '<p>Gregor Mendel adalah seorang biarawan yang melakukan percobaan persilangan pada tanaman kacang ercis dan merumuskan hukum dasar pewarisan sifat.</p>', 1, 'published'),
(9, 'Hukum Segregasi', 'hukum-segregasi', '<p>Hukum Segregasi (Hukum Mendel I) menyatakan bahwa sepasang alel akan memisah secara bebas saat pembentukan gamet.</p>', 2, 'published'),
(9, 'Hukum Berpasangan Bebas', 'hukum-berpasangan-bebas', '<p>Hukum Berpasangan Bebas (Hukum Mendel II) menyatakan bahwa gen-gen untuk sifat berbeda diwariskan secara independen satu sama lain.</p>', 3, 'published'),

(10, 'Pendahuluan', 'pendahuluan', '<p>Beberapa pola pewarisan tidak sepenuhnya mengikuti hukum Mendel klasik, dikenal sebagai penyimpangan semu hukum Mendel.</p>', 1, 'published'),
(10, 'Kodominansi dan Alel Ganda', 'kodominansi-alel-ganda', '<p>Kodominansi terjadi ketika dua alel sama-sama terekspresi tanpa ada yang dominan penuh, seperti pada golongan darah sistem ABO.</p>', 2, 'published'),
(10, 'Interaksi Antar Gen', 'interaksi-antar-gen', '<p>Interaksi antar gen seperti epistasis terjadi ketika satu gen memengaruhi ekspresi gen lain yang bukan alelnya.</p>', 3, 'published');

-- Quizzes
INSERT INTO `quizzes` (`id`, `material_id`, `author_id`, `title`, `description`, `duration`, `passing_grade`, `status`) VALUES
(1, 2, 2, 'Kuis DNA', 'Uji pemahamanmu mengenai struktur dan fungsi DNA.', 10, 70, 'published'),
(2, 1, 2, 'Kuis Pewarisan Sifat', 'Uji pemahamanmu mengenai konsep dasar pewarisan sifat.', 10, 70, 'published'),
(3, 3, 2, 'Kuis RNA', 'Uji pemahamanmu mengenai RNA dan perbedaannya dengan DNA.', 8, 70, 'published'),
(4, 7, 2, 'Kuis Mitosis', 'Uji pemahamanmu mengenai tahapan dan fungsi mitosis.', 8, 70, 'published');

-- Questions for Kuis DNA (quiz_id 1)
INSERT INTO `questions` (`quiz_id`, `question`, `option_a`, `option_b`, `option_c`, `option_d`, `correct_answer`, `explanation`, `weight`, `sort_order`) VALUES
(1, 'Apa kepanjangan dari DNA?', 'Deoxyribonucleic Acid', 'Dynamic Nuclear Acid', 'Deoxyribose Nitrogen Acid', 'Dual Nucleotide Acid', 'a', 'DNA merupakan singkatan dari Deoxyribonucleic Acid, molekul pembawa informasi genetik.', 1, 1),
(1, 'Basa nitrogen manakah yang berpasangan dengan Adenin pada DNA?', 'Guanin', 'Sitosin', 'Timin', 'Urasil', 'c', 'Adenin selalu berpasangan dengan Timin melalui dua ikatan hidrogen.', 1, 2),
(1, 'Siapa yang menemukan struktur double helix DNA?', 'Gregor Mendel', 'Watson dan Crick', 'Charles Darwin', 'Louis Pasteur', 'b', 'James Watson dan Francis Crick mempublikasikan model struktur double helix DNA pada tahun 1953.', 1, 3),
(1, 'Proses penggandaan DNA sebelum sel membelah disebut...', 'Transkripsi', 'Translasi', 'Replikasi', 'Transduksi', 'c', 'Replikasi adalah proses penggandaan DNA yang terjadi sebelum pembelahan sel.', 1, 4),
(1, 'Komponen penyusun nukleotida DNA terdiri dari...', 'Gula, basa nitrogen, gugus fosfat', 'Protein, lipid, karbohidrat', 'Asam amino dan gula', 'Ribosom dan basa nitrogen', 'a', 'Setiap nukleotida DNA tersusun dari gula deoksiribosa, basa nitrogen, dan gugus fosfat.', 1, 5);

-- Questions for Kuis Pewarisan Sifat (quiz_id 2)
INSERT INTO `questions` (`quiz_id`, `question`, `option_a`, `option_b`, `option_c`, `option_d`, `correct_answer`, `explanation`, `weight`, `sort_order`) VALUES
(2, 'Sifat yang selalu muncul jika alelnya ada disebut sifat...', 'Resesif', 'Dominan', 'Intermediet', 'Kodominan', 'b', 'Sifat dominan akan selalu tampak pada fenotipe jika alel dominan tersebut ada.', 1, 1),
(2, 'Susunan gen suatu individu disebut...', 'Fenotipe', 'Genotipe', 'Alel', 'Lokus', 'b', 'Genotipe adalah susunan genetik suatu individu.', 1, 2),
(2, 'Sifat yang tampak dari luar sebagai hasil interaksi gen dan lingkungan disebut...', 'Genotipe', 'Kariotipe', 'Fenotipe', 'Genom', 'c', 'Fenotipe adalah sifat yang tampak, hasil interaksi genotipe dengan lingkungan.', 1, 3),
(2, 'Materi genetik diwariskan induk kepada keturunan melalui...', 'Sel darah', 'Gamet', 'Otot', 'Hormon', 'b', 'Materi genetik diwariskan melalui sel gamet (sel kelamin) saat pembuahan.', 1, 4);

-- Questions for Kuis RNA (quiz_id 3)
INSERT INTO `questions` (`quiz_id`, `question`, `option_a`, `option_b`, `option_c`, `option_d`, `correct_answer`, `explanation`, `weight`, `sort_order`) VALUES
(3, 'Basa nitrogen yang menggantikan Timin pada RNA adalah...', 'Adenin', 'Guanin', 'Sitosin', 'Urasil', 'd', 'Pada RNA, Timin digantikan oleh Urasil.', 1, 1),
(3, 'RNA yang membawa kode genetik dari DNA ke ribosom disebut...', 'tRNA', 'mRNA', 'rRNA', 'DNA polimerase', 'b', 'mRNA (messenger RNA) membawa kode genetik dari DNA ke ribosom untuk sintesis protein.', 1, 2),
(3, 'RNA memiliki struktur untai...', 'Tunggal', 'Ganda', 'Tripel', 'Melingkar penuh', 'a', 'Berbeda dengan DNA, RNA umumnya berstruktur untai tunggal.', 1, 3);

-- Questions for Kuis Mitosis (quiz_id 4)
INSERT INTO `questions` (`quiz_id`, `question`, `option_a`, `option_b`, `option_c`, `option_d`, `correct_answer`, `explanation`, `weight`, `sort_order`) VALUES
(4, 'Mitosis menghasilkan sel anak dengan jumlah kromosom...', 'Setengah dari induk', 'Identik dengan induk', 'Dua kali induk', 'Acak', 'b', 'Mitosis menghasilkan dua sel anak dengan jumlah kromosom identik dengan sel induk (2n).', 1, 1),
(4, 'Tahap mitosis di mana kromosom berjajar di bidang tengah sel disebut...', 'Profase', 'Metafase', 'Anafase', 'Telofase', 'b', 'Pada metafase, kromosom berjajar di bidang ekuator (tengah) sel.', 1, 2),
(4, 'Mitosis berperan penting dalam...', 'Pembentukan sel gamet', 'Pertumbuhan dan perbaikan jaringan', 'Rekombinasi genetik', 'Pengurangan jumlah kromosom', 'b', 'Mitosis berfungsi untuk pertumbuhan, regenerasi, dan perbaikan jaringan tubuh.', 1, 3);

-- Progress demo untuk mahasiswa Ayu Lestari (user_id 3)
INSERT INTO `progress` (`user_id`, `material_id`, `section_id`, `status`, `completed_at`) VALUES
(3, 2, 1, 'completed', NOW() - INTERVAL 6 DAY),
(3, 2, 2, 'completed', NOW() - INTERVAL 5 DAY),
(3, 2, 3, 'completed', NOW() - INTERVAL 3 DAY),
(3, 1, 6, 'completed', NOW() - INTERVAL 4 DAY),
(3, 1, 7, 'completed', NOW() - INTERVAL 2 DAY),
(3, 1, 8, 'completed', NOW() - INTERVAL 1 DAY),
(3, 3, 11, 'completed', NOW() - INTERVAL 2 DAY);

-- Quiz results demo
INSERT INTO `quiz_results` (`quiz_id`, `user_id`, `score`, `correct`, `wrong`, `duration`, `is_passed`, `created_at`) VALUES
(1, 3, 80.00, 4, 1, 340, 1, NOW() - INTERVAL 3 DAY),
(2, 3, 75.00, 3, 1, 210, 1, NOW() - INTERVAL 1 DAY),
(3, 3, 66.67, 2, 1, 180, 0, NOW() - INTERVAL 2 DAY),
(1, 4, 60.00, 3, 2, 400, 0, NOW() - INTERVAL 5 DAY),
(2, 5, 100.00, 4, 0, 150, 1, NOW() - INTERVAL 1 DAY);

-- Activity logs demo
INSERT INTO `activity_logs` (`user_id`, `activity`, `created_at`) VALUES
(3, 'Membuka materi DNA', NOW() - INTERVAL 10 MINUTE),
(4, 'Membuka materi Kromosom', NOW() - INTERVAL 25 MINUTE),
(5, 'Mengerjakan latihan soal Mitosis', NOW() - INTERVAL 40 MINUTE),
(3, 'Menyelesaikan bab Struktur DNA', NOW() - INTERVAL 3 DAY),
(4, 'Mendaftar akun baru', NOW() - INTERVAL 6 DAY),
(2, 'Menambahkan materi baru: Pengembangan Hukum Mendel', NOW() - INTERVAL 7 DAY);
