-- =====================================================================
-- SIMAP — Konten permainan edukatif untuk seluruh mata pelajaran
--
-- Dipasang setelah 02_seed.sql:
--   mysql -u root -p simap_db < database/03_game_konten.sql
--
-- Setiap mata pelajaran memperoleh sekurangnya satu permainan dengan soal
-- siap pakai. Guru tetap dapat menambah level sendiri lewat menu Game,
-- atau membuatkannya dengan bantuan AI.
-- =====================================================================

SET NAMES utf8mb4;

-- ------------------------------------------------------- GAME TAMBAHAN
INSERT INTO game (kode,nama,tipe,mapel_id,tingkat_min,tingkat_max,deskripsi,instruksi,warna,konfigurasi,poin_maks) VALUES
('PANCASILA_JODOH','Sila dan Lambangnya','MENJODOHKAN',(SELECT id FROM mapel WHERE kode='PP'),1,6,
 'Pasangkan bunyi sila Pancasila dengan lambangnya.','Pilih pasangan yang tepat untuk tiap sila.','#C0563F','{"durasi":150}',100),

('IPAS_TEBAK','Tebak Makhluk dan Benda','TEBAK_GAMBAR',(SELECT id FROM mapel WHERE kode='IPAS'),3,6,
 'Tebak nama makhluk hidup, benda, atau gejala alam dari petunjuknya.','Baca petunjuk lalu ketik jawabanmu.','#2E9E6B','{"durasi":120}',100),

('BING_MEMORI','Word Match','MEMORI',(SELECT id FROM mapel WHERE kode='BING'),1,6,
 'Cocokkan kata bahasa Inggris dengan artinya.','Buka dua kartu. Jika cocok, kartu tetap terbuka.','#2B4570','{"pasangan":8,"durasi":180}',100),

('BIN_SUSUN','Susun Kalimat','PUZZLE',(SELECT id FROM mapel WHERE kode='BIN'),2,6,
 'Susun potongan kata menjadi kalimat yang runtut.','Ketuk potongan kata sesuai urutan yang benar.','#E67E22','{"durasi":150}',100),

('SBDP_JODOH','Alat Musik dan Asalnya','MENJODOHKAN',(SELECT id FROM mapel WHERE kode='SBDP'),3,6,
 'Pasangkan alat musik tradisional dengan daerah asalnya.','Pilih daerah asal yang tepat.','#8E44AD','{"durasi":150}',100),

('PJOK_KUIS','Sehat dan Bugar','KUIS_CEPAT',(SELECT id FROM mapel WHERE kode='PJOK'),1,6,
 'Kuis seputar olahraga, kebugaran, dan hidup sehat.','Pilih jawaban yang benar.','#16A085','{"detik_per_soal":20}',100),

('BSUN_JODOH','Basa Sunda Sapopoé','MENJODOHKAN',(SELECT id FROM mapel WHERE kode='BSUN'),1,6,
 'Pasangkan kata bahasa Sunda dengan artinya dalam bahasa Indonesia.','Pilih arti yang tepat.','#D4A017','{"durasi":150}',100),

('PAI_KUIS','Kuis Akhlak Mulia','KUIS_CEPAT',(SELECT id FROM mapel WHERE kode='PAI'),1,6,
 'Kuis tentang akhlak, ibadah, dan kisah teladan.','Pilih jawaban yang benar.','#1F4A3C','{"detik_per_soal":20}',100),

('QH_SUSUN','Susun Ayat Pendek','PUZZLE',(SELECT id FROM mapel WHERE kode='QH'),3,6,
 'Susun potongan lafal surah pendek sesuai urutannya.','Ketuk potongan sesuai urutan ayat.','#16362B','{"durasi":180}',100),

('AA_KELOMPOK','Terpuji atau Tercela','DRAG_DROP',(SELECT id FROM mapel WHERE kode='AA'),1,6,
 'Kelompokkan perbuatan ke dalam akhlak terpuji atau tercela.','Pilih kelompok yang tepat untuk tiap perbuatan.','#1F4A3C','{"durasi":150}',100),

('FIK_KUIS','Kuis Fikih Sehari-hari','KUIS_CEPAT',(SELECT id FROM mapel WHERE kode='FIK'),3,6,
 'Kuis tentang tata cara ibadah sehari-hari.','Pilih jawaban yang benar.','#2E9E6B','{"detik_per_soal":25}',100),

('SKI_JODOH','Tokoh dan Peristiwa','MENJODOHKAN',(SELECT id FROM mapel WHERE kode='SKI'),4,6,
 'Pasangkan tokoh dengan peristiwa atau perannya.','Pilih pasangan yang tepat.','#8A6212','{"durasi":150}',100),

('BAR_MEMORI','Mufradat Harian','MEMORI',(SELECT id FROM mapel WHERE kode='BAR'),1,6,
 'Cocokkan kosakata bahasa Arab dengan artinya.','Buka dua kartu. Jika cocok, kartu tetap terbuka.','#C0563F','{"pasangan":8,"durasi":180}',100)
ON DUPLICATE KEY UPDATE nama = VALUES(nama);


-- =====================================================================
-- LEVEL / SOAL
-- =====================================================================

-- ---------------------------------------------- Matematika: hitung cepat
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Penjumlahan & Pengurangan',1,
'[{"soal":"5 + 3","jawaban":8},{"soal":"9 - 4","jawaban":5},{"soal":"7 + 6","jawaban":13},
  {"soal":"12 - 5","jawaban":7},{"soal":"8 + 8","jawaban":16},{"soal":"15 - 9","jawaban":6},
  {"soal":"14 + 5","jawaban":19},{"soal":"20 - 12","jawaban":8}]',90,10
FROM game WHERE kode='CEPAT_HITUNG';

INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,2,'Perkalian & Pembagian',4,
'[{"soal":"7 x 8","jawaban":56},{"soal":"9 x 6","jawaban":54},{"soal":"72 : 8","jawaban":9},
  {"soal":"12 x 5","jawaban":60},{"soal":"81 : 9","jawaban":9},{"soal":"11 x 7","jawaban":77},
  {"soal":"144 : 12","jawaban":12},{"soal":"25 x 4","jawaban":100}]',90,15
FROM game WHERE kode='CEPAT_HITUNG';

-- ------------------------------------------------ Bahasa Indonesia: kata
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Kata Benda di Sekitar',2,
'[{"kata":"SEKOLAH","petunjuk":"Tempat kita belajar setiap hari"},
  {"kata":"PERPUSTAKAAN","petunjuk":"Tempat meminjam buku"},
  {"kata":"SEPEDA","petunjuk":"Kendaraan roda dua tanpa mesin"},
  {"kata":"PELANGI","petunjuk":"Muncul di langit setelah hujan"},
  {"kata":"GURU","petunjuk":"Orang yang mengajar di kelas"},
  {"kata":"KEBUN","petunjuk":"Tempat menanam sayur dan bunga"}]',120,10
FROM game WHERE kode='SUSUN_KATA';

INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Susun Kalimat Sederhana',2,
'[{"petunjuk":"Susun menjadi kalimat yang benar","urutan":["Adik","membaca","buku","cerita"]},
  {"petunjuk":"Susun menjadi kalimat yang benar","urutan":["Ibu","memasak","nasi","goreng"]},
  {"petunjuk":"Susun menjadi kalimat yang benar","urutan":["Kami","belajar","di","perpustakaan"]},
  {"petunjuk":"Susun menjadi kalimat yang benar","urutan":["Burung","itu","terbang","tinggi"]}]',150,15
FROM game WHERE kode='BIN_SUSUN';

-- --------------------------------------------------- Pendidikan Pancasila
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Lambang Sila Pancasila',3,
'[{"kiri":"Sila ke-1 Ketuhanan Yang Maha Esa","kanan":"Bintang"},
  {"kiri":"Sila ke-2 Kemanusiaan yang Adil dan Beradab","kanan":"Rantai"},
  {"kiri":"Sila ke-3 Persatuan Indonesia","kanan":"Pohon Beringin"},
  {"kiri":"Sila ke-4 Kerakyatan yang Dipimpin oleh Hikmat Kebijaksanaan","kanan":"Kepala Banteng"},
  {"kiri":"Sila ke-5 Keadilan Sosial bagi Seluruh Rakyat Indonesia","kanan":"Padi dan Kapas"}]',150,15
FROM game WHERE kode='PANCASILA_JODOH';

-- --------------------------------------------------------------- IPAS
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Makhluk Hidup dan Alam',4,
'[{"petunjuk":"Hewan berkantung yang melompat, berasal dari Australia","jawaban":"KANGURU"},
  {"petunjuk":"Proses tumbuhan membuat makanan dengan bantuan cahaya matahari","jawaban":"FOTOSINTESIS"},
  {"petunjuk":"Perubahan air menjadi uap karena panas","jawaban":"PENGUAPAN"},
  {"petunjuk":"Bagian tumbuhan yang menyerap air dari tanah","jawaban":"AKAR"},
  {"petunjuk":"Planet tempat kita tinggal","jawaban":"BUMI"},
  {"petunjuk":"Hewan yang mengalami metamorfosis dari ulat","jawaban":"KUPU-KUPU"}]',120,15
FROM game WHERE kode='IPAS_TEBAK';

-- ------------------------------------------------------- Bahasa Inggris
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Everyday Words',3,
'[{"kiri":"Book","kanan":"Buku"},{"kiri":"Table","kanan":"Meja"},
  {"kiri":"Window","kanan":"Jendela"},{"kiri":"Teacher","kanan":"Guru"},
  {"kiri":"Bag","kanan":"Tas"},{"kiri":"Chair","kanan":"Kursi"},
  {"kiri":"Water","kanan":"Air"},{"kiri":"Friend","kanan":"Teman"}]',180,15
FROM game WHERE kode='BING_MEMORI';

-- ----------------------------------------------------------------- SBdP
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Alat Musik Tradisional',4,
'[{"kiri":"Angklung","kanan":"Jawa Barat"},{"kiri":"Gamelan","kanan":"Jawa Tengah"},
  {"kiri":"Sasando","kanan":"Nusa Tenggara Timur"},{"kiri":"Tifa","kanan":"Papua"},
  {"kiri":"Kolintang","kanan":"Sulawesi Utara"},{"kiri":"Saluang","kanan":"Sumatera Barat"}]',150,15
FROM game WHERE kode='SBDP_JODOH';

-- ----------------------------------------------------------------- PJOK
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Hidup Sehat',3,
'[{"tanya":"Berapa lama sebaiknya anak tidur setiap malam?","opsi":["4-5 jam","6-7 jam","9-11 jam","12-14 jam"],"kunci":2},
  {"tanya":"Sebelum berolahraga, kita sebaiknya melakukan?","opsi":["Makan banyak","Pemanasan","Tidur","Mandi"],"kunci":1},
  {"tanya":"Cabang olahraga yang dimainkan dengan raket dan kok adalah?","opsi":["Tenis meja","Bulu tangkis","Voli","Basket"],"kunci":1},
  {"tanya":"Minuman terbaik saat haus setelah berolahraga adalah?","opsi":["Air putih","Kopi","Minuman bersoda","Teh manis kental"],"kunci":0},
  {"tanya":"Cuci tangan sebaiknya menggunakan?","opsi":["Air saja","Air dan sabun","Tisu kering","Lap kain"],"kunci":1}]',100,10
FROM game WHERE kode='PJOK_KUIS';

-- ---------------------------------------------------------- Bahasa Sunda
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Kecap Sapopoé',3,
'[{"kiri":"Dahar","kanan":"Makan"},{"kiri":"Nginum","kanan":"Minum"},
  {"kiri":"Sare","kanan":"Tidur"},{"kiri":"Leumpang","kanan":"Berjalan"},
  {"kiri":"Maca","kanan":"Membaca"},{"kiri":"Nulis","kanan":"Menulis"}]',150,15
FROM game WHERE kode='BSUN_JODOH';

-- ------------------------------------------------------------------ PAI
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Akhlak dan Ibadah',3,
'[{"tanya":"Berapa jumlah rakaat salat Magrib?","opsi":["2 rakaat","3 rakaat","4 rakaat","5 rakaat"],"kunci":1},
  {"tanya":"Bacaan yang diucapkan saat memulai pekerjaan adalah?","opsi":["Hamdalah","Basmalah","Takbir","Salam"],"kunci":1},
  {"tanya":"Sikap yang benar ketika teman sedang berbicara adalah?","opsi":["Memotong pembicaraan","Mendengarkan","Bermain sendiri","Pergi"],"kunci":1},
  {"tanya":"Nabi yang dikenal sabar menghadapi ujian adalah?","opsi":["Nabi Ayyub","Nabi Nuh","Nabi Musa","Nabi Yusuf"],"kunci":0},
  {"tanya":"Berbuat baik kepada orang tua disebut?","opsi":["Birrul walidain","Silaturahmi","Ukhuwah","Tawakal"],"kunci":0}]',100,10
FROM game WHERE kode='PAI_KUIS';

-- -------------------------------------------------------- Al-Qur'an Hadis
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Urutan Surah Al-Fatihah',4,
'[{"petunjuk":"Susun potongan Surah Al-Fatihah ayat 1-3 sesuai urutan","urutan":["Bismillahirrahmanirrahim","Alhamdulillahi rabbil alamin","Ar-Rahmanir-Rahim"]},
  {"petunjuk":"Susun rukun Islam sesuai urutannya","urutan":["Syahadat","Salat","Zakat","Puasa","Haji"]}]',180,15
FROM game WHERE kode='QH_SUSUN';

-- ---------------------------------------------------------- Akidah Akhlak
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Terpuji atau Tercela',3,
'[{"benda":"Jujur saat ujian","kelompok":"Akhlak Terpuji"},
  {"benda":"Menolong teman yang jatuh","kelompok":"Akhlak Terpuji"},
  {"benda":"Berkata kasar kepada teman","kelompok":"Akhlak Tercela"},
  {"benda":"Membuang sampah sembarangan","kelompok":"Akhlak Tercela"},
  {"benda":"Mengucapkan terima kasih","kelompok":"Akhlak Terpuji"},
  {"benda":"Mengambil barang tanpa izin","kelompok":"Akhlak Tercela"}]',150,15
FROM game WHERE kode='AA_KELOMPOK';

-- ---------------------------------------------------------------- Fikih
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Tata Cara Ibadah',4,
'[{"tanya":"Bersuci dari hadas kecil dilakukan dengan?","opsi":["Mandi wajib","Wudu","Tayamum saja","Mencuci tangan"],"kunci":1},
  {"tanya":"Anggota tubuh yang pertama dibasuh saat wudu adalah?","opsi":["Wajah","Kedua tangan","Kepala","Kaki"],"kunci":1},
  {"tanya":"Salat yang jumlah rakaatnya paling banyak adalah?","opsi":["Subuh","Zuhur","Magrib","Isya"],"kunci":1},
  {"tanya":"Jika tidak ada air, bersuci dapat dilakukan dengan?","opsi":["Tayamum","Menunda salat","Berkumur","Tidak salat"],"kunci":0}]',120,15
FROM game WHERE kode='FIK_KUIS';

-- ------------------------------------------------------------------ SKI
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Tokoh dan Peristiwa',5,
'[{"kiri":"Nabi Muhammad SAW","kanan":"Menerima wahyu pertama di Gua Hira"},
  {"kiri":"Abu Bakar","kanan":"Khalifah pertama"},
  {"kiri":"Umar bin Khattab","kanan":"Menetapkan kalender Hijriah"},
  {"kiri":"Utsman bin Affan","kanan":"Membukukan mushaf Al-Qur an"},
  {"kiri":"Ali bin Abi Thalib","kanan":"Khalifah keempat"}]',150,15
FROM game WHERE kode='SKI_JODOH';

-- ----------------------------------------------------------- Bahasa Arab
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Mufradat Sekolah',3,
'[{"kiri":"مَدْرَسَة","kanan":"Sekolah"},{"kiri":"كِتَاب","kanan":"Buku"},
  {"kiri":"قَلَم","kanan":"Pena"},{"kiri":"مُعَلِّم","kanan":"Guru"},
  {"kiri":"بَيْت","kanan":"Rumah"},{"kiri":"مَاء","kanan":"Air"},
  {"kiri":"بَاب","kanan":"Pintu"},{"kiri":"صَدِيق","kanan":"Teman"}]',180,15
FROM game WHERE kode='BAR_MEMORI';

-- -------------------------------------------------------------- BTQ/Memori
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Huruf Hijaiyah',1,
'[{"kiri":"ا","kanan":"Alif"},{"kiri":"ب","kanan":"Ba"},
  {"kiri":"ت","kanan":"Ta"},{"kiri":"ث","kanan":"Tsa"},
  {"kiri":"ج","kanan":"Jim"},{"kiri":"ح","kanan":"Ha"},
  {"kiri":"خ","kanan":"Kha"},{"kiri":"د","kanan":"Dal"}]',180,10
FROM game WHERE kode='MEMORI_HIJAIYAH';

-- ------------------------------------------------------- Kuis kilat umum
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Pengetahuan Umum',4,
'[{"tanya":"Ibu kota Indonesia adalah?","opsi":["Bandung","Jakarta","Surabaya","Medan"],"kunci":1},
  {"tanya":"Alat untuk mengukur suhu badan adalah?","opsi":["Termometer","Barometer","Timbangan","Penggaris"],"kunci":0},
  {"tanya":"Hewan yang bernapas dengan insang adalah?","opsi":["Ayam","Ikan","Kucing","Burung"],"kunci":1},
  {"tanya":"Warna bendera Indonesia adalah?","opsi":["Merah putih","Merah biru","Putih hijau","Merah kuning"],"kunci":0},
  {"tanya":"Satu tahun terdiri atas berapa bulan?","opsi":["10","11","12","13"],"kunci":2},
  {"tanya":"Matahari terbit dari arah?","opsi":["Barat","Timur","Utara","Selatan"],"kunci":1}]',120,10
FROM game WHERE kode='KUIS_KILAT';

-- ------------------------------------------------------ Jodoh kata umum
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Istilah dan Artinya',4,
'[{"kiri":"Herbivora","kanan":"Pemakan tumbuhan"},
  {"kiri":"Karnivora","kanan":"Pemakan daging"},
  {"kiri":"Omnivora","kanan":"Pemakan segala"},
  {"kiri":"Ekosistem","kanan":"Hubungan makhluk hidup dan lingkungannya"},
  {"kiri":"Habitat","kanan":"Tempat tinggal makhluk hidup"}]',150,15
FROM game WHERE kode='JODOH_KATA';

-- -------------------------------------------------------- Tebak gambar umum
INSERT INTO game_level (game_id,level,judul,tingkat,data,durasi_detik,poin)
SELECT id,1,'Tebak Benda dan Tempat',3,
'[{"petunjuk":"Benda bulat yang ditendang saat bermain sepak bola","jawaban":"BOLA"},
  {"petunjuk":"Tempat kita berobat ketika sakit","jawaban":"RUMAH SAKIT"},
  {"petunjuk":"Alat untuk menulis di papan tulis","jawaban":"SPIDOL"},
  {"petunjuk":"Kendaraan yang berjalan di atas rel","jawaban":"KERETA"},
  {"petunjuk":"Tempat menyimpan buku di kelas","jawaban":"RAK"}]',120,10
FROM game WHERE kode='TEBAK_GAMBAR';

SELECT CONCAT(COUNT(DISTINCT g.id), ' game, ', COUNT(gl.id), ' level terpasang') AS hasil
FROM game g LEFT JOIN game_level gl ON gl.game_id = g.id;


-- =====================================================================
-- INDIKATOR DIMENSI PER FASE
-- Panduan singkat bagi guru saat menilai capaian dimensi profil lulusan.
-- Muncul sebagai keterangan pada judul kolom di halaman Capaian Dimensi.
-- =====================================================================

INSERT INTO dimensi_indikator (dimensi_id, fase, indikator)
SELECT d.id, f.fase, CONCAT(
  CASE f.fase
    WHEN 'A' THEN 'Kelas 1-2: mulai mengenal dan meniru perilaku '
    WHEN 'B' THEN 'Kelas 3-4: membiasakan diri menerapkan '
    ELSE          'Kelas 5-6: konsisten menunjukkan dan mengajak teman dalam '
  END, LOWER(d.nama), ' dalam kegiatan sehari-hari di sekolah.')
FROM dimensi_lulusan d
CROSS JOIN (SELECT 'A' AS fase UNION SELECT 'B' UNION SELECT 'C') f
WHERE NOT EXISTS (
  SELECT 1 FROM dimensi_indikator di WHERE di.dimensi_id = d.id AND di.fase = f.fase
);

SELECT CONCAT(COUNT(*), ' indikator dimensi terpasang') AS hasil FROM dimensi_indikator;
