import { db } from '../src/lib/db';
import { hash } from 'bcryptjs';

async function main() {
  // Seed Kepala Sekolah
  const kepsek = await db.kepsek.create({
    data: {
      nama: 'KH. Mahmud',
      email: 'kepsek@gmail.com',
      password: await hash('kepsek123', 10),
    },
  });

  // Seed Guru
  const guru1 = await db.guru.create({
    data: {
      nama: 'Ustadzah Fatimah',
      email: 'fatimah@gmail.com',
      password: await hash('guru123', 10),
    },
  });

  const guru2 = await db.guru.create({
    data: {
      nama: 'Ustadz Ahmad',
      email: 'ahmad@gmail.com',
      password: await hash('guru456', 10),
    },
  });

  // Seed Santri for Guru 1
  const santri1 = await db.santri.create({
    data: {
      nama: 'Aisyah Putri',
      kelas: '1A',
      kelompokBacaan: 'Lanjutan',
      passwordOrtu: 'aisyah123',
      guruId: guru1.id,
    },
  });

  const santri2 = await db.santri.create({
    data: {
      nama: 'Bilal Rahman',
      kelas: '1B',
      kelompokBacaan: 'Pemula',
      passwordOrtu: 'bilal123',
      guruId: guru1.id,
    },
  });

  const santri3 = await db.santri.create({
    data: {
      nama: 'Citra Dewi',
      kelas: '2A',
      kelompokBacaan: 'Menengah',
      passwordOrtu: 'citra123',
      guruId: guru1.id,
    },
  });

  const santri4 = await db.santri.create({
    data: {
      nama: 'Dzaki Fikri',
      kelas: '1A',
      kelompokBacaan: 'Lanjutan',
      passwordOrtu: 'dzaki123',
      guruId: guru1.id,
    },
  });

  // Seed Santri for Guru 2
  const santri5 = await db.santri.create({
    data: {
      nama: 'Elsa Nuraini',
      kelas: '3A',
      kelompokBacaan: 'Lanjutan',
      passwordOrtu: 'elsa123',
      guruId: guru2.id,
    },
  });

  const santri6 = await db.santri.create({
    data: {
      nama: 'Faisal Habibi',
      kelas: '2B',
      kelompokBacaan: 'Menengah',
      passwordOrtu: 'faisal123',
      guruId: guru2.id,
    },
  });

  // Seed Hafalan
  await db.hafalan.createMany({
    data: [
      { santriId: santri1.id, surah: 'An-Nas', ayatMulai: 1, ayatAkhir: 6, status: 'KUAT', tanggal: new Date('2026-06-01'), catatan: 'Sempurna' },
      { santriId: santri1.id, surah: 'Al-Falaq', ayatMulai: 1, ayatAkhir: 5, status: 'KUAT', tanggal: new Date('2026-06-05'), catatan: 'Tajwid baik' },
      { santriId: santri1.id, surah: 'Al-Ikhlas', ayatMulai: 1, ayatAkhir: 4, status: 'MUROJA\'AH', tanggal: new Date('2026-06-10') },
      { santriId: santri1.id, surah: 'Al-Lahab', ayatMulai: 1, ayatAkhir: 5, status: 'BARU', tanggal: new Date('2026-07-01'), catatan: 'Perlu banyak latihan' },
      { santriId: santri2.id, surah: 'An-Nas', ayatMulai: 1, ayatAkhir: 3, status: 'BARU', tanggal: new Date('2026-07-02'), catatan: 'Masih terbata-bata' },
      { santriId: santri3.id, surah: 'Al-Mulk', ayatMulai: 1, ayatAkhir: 10, status: 'MUROJA\'AH', tanggal: new Date('2026-06-15') },
      { santriId: santri3.id, surah: 'Al-Mulk', ayatMulai: 11, ayatAkhir: 20, status: 'BARU', tanggal: new Date('2026-07-01') },
      { santriId: santri4.id, surah: 'An-Nas', ayatMulai: 1, ayatAkhir: 6, status: 'KUAT', tanggal: new Date('2026-05-20') },
      { santriId: santri4.id, surah: 'Al-Falaq', ayatMulai: 1, ayatAkhir: 5, status: 'KUAT', tanggal: new Date('2026-05-28') },
      { santriId: santri4.id, surah: 'Al-Ikhlas', ayatMulai: 1, ayatAkhir: 4, status: 'MUROJA\'AH', tanggal: new Date('2026-06-10') },
      { santriId: santri5.id, surah: 'Yasin', ayatMulai: 1, ayatAkhir: 12, status: 'KUAT', tanggal: new Date('2026-06-01') },
      { santriId: santri5.id, surah: 'Yasin', ayatMulai: 13, ayatAkhir: 25, status: 'MUROJA\'AH', tanggal: new Date('2026-06-20') },
      { santriId: santri6.id, surah: 'Al-Kahfi', ayatMulai: 1, ayatAkhir: 10, status: 'BARU', tanggal: new Date('2026-07-01'), catatan: 'Baru mulai' },
    ],
  });

  // Seed Ngaji
  await db.ngaji.createMany({
    data: [
      { santriId: santri1.id, juz: 30, halamanMulai: 580, halamanAkhir: 585, tanggal: new Date('2026-06-01'), kualitas: 'BAIK' },
      { santriId: santri1.id, juz: 30, halamanMulai: 585, halamanAkhir: 590, tanggal: new Date('2026-06-05'), kualitas: 'BAIK_SEKALI' },
      { santriId: santri1.id, juz: 30, halamanMulai: 590, halamanAkhir: 594, tanggal: new Date('2026-06-10'), kualitas: 'CUKUP' },
      { santriId: santri1.id, juz: 30, halamanMulai: 594, halamanAkhir: 600, tanggal: new Date('2026-07-01'), kualitas: 'BAIK' },
      { santriId: santri2.id, juz: 30, halamanMulai: 580, halamanAkhir: 582, tanggal: new Date('2026-07-02'), kualitas: 'CUKUP', catatan: 'Perlu perbaikan tajwid' },
      { santriId: santri3.id, juz: 29, halamanMulai: 540, halamanAkhir: 550, tanggal: new Date('2026-06-15'), kualitas: 'BAIK' },
      { santriId: santri3.id, juz: 29, halamanMulai: 550, halamanAkhir: 560, tanggal: new Date('2026-07-01'), kualitas: 'BAIK_SEKALI' },
      { santriId: santri4.id, juz: 30, halamanMulai: 580, halamanAkhir: 600, tanggal: new Date('2026-05-20'), kualitas: 'BAIK_SEKALI' },
      { santriId: santri4.id, juz: 29, halamanMulai: 540, halamanAkhir: 548, tanggal: new Date('2026-06-01'), kualitas: 'BAIK' },
      { santriId: santri5.id, juz: 22, halamanMulai: 330, halamanAkhir: 340, tanggal: new Date('2026-06-01'), kualitas: 'BAIK' },
      { santriId: santri5.id, juz: 22, halamanMulai: 340, halamanAkhir: 348, tanggal: new Date('2026-06-20'), kualitas: 'BAIK_SEKALI' },
      { santriId: santri6.id, juz: 15, halamanMulai: 250, halamanAkhir: 258, tanggal: new Date('2026-07-01'), kualitas: 'CUKUP' },
    ],
  });

  // Seed Jilid
  const JILID_OPTIONS = ['Jilid 1', 'Jilid 2', 'Jilid 3', 'Jilid 4', 'Jilid 5', 'Jilid 6', 'Ghorib', 'Tajwid Dasar'];

  await db.jilid.createMany({
    data: [
      { santriId: santri1.id, namaJilid: 'Jilid 1', halaman: 45, tanggalSelesai: new Date('2026-06-15'), status: 'SELESAI', catatanGuru: 'Lancar, tajwid baik' },
      { santriId: santri1.id, namaJilid: 'Jilid 2', halaman: 30, status: 'PROSES', catatanGuru: 'Sedang berjalan' },
      { santriId: santri1.id, namaJilid: 'Jilid 3', status: 'BELUM' },
      { santriId: santri1.id, namaJilid: 'Jilid 4', status: 'BELUM' },
      { santriId: santri1.id, namaJilid: 'Jilid 5', status: 'BELUM' },
      { santriId: santri1.id, namaJilid: 'Jilid 6', status: 'BELUM' },
      { santriId: santri1.id, namaJilid: 'Ghorib', status: 'BELUM' },
      { santriId: santri1.id, namaJilid: 'Tajwid Dasar', tanggalSelesai: new Date('2026-07-01'), status: 'SELESAI' },

      { santriId: santri2.id, namaJilid: 'Jilid 1', halaman: 12, status: 'PROSES', catatanGuru: 'Masih di awal jilid' },
      { santriId: santri2.id, namaJilid: 'Jilid 2', status: 'BELUM' },
      { santriId: santri2.id, namaJilid: 'Jilid 3', status: 'BELUM' },
      { santriId: santri2.id, namaJilid: 'Jilid 4', status: 'BELUM' },
      { santriId: santri2.id, namaJilid: 'Jilid 5', status: 'BELUM' },
      { santriId: santri2.id, namaJilid: 'Jilid 6', status: 'BELUM' },
      { santriId: santri2.id, namaJilid: 'Ghorib', status: 'BELUM' },
      { santriId: santri2.id, namaJilid: 'Tajwid Dasar', status: 'BELUM' },

      { santriId: santri3.id, namaJilid: 'Jilid 1', tanggalSelesai: new Date('2026-06-01'), status: 'SELESAI' },
      { santriId: santri3.id, namaJilid: 'Jilid 2', tanggalSelesai: new Date('2026-06-20'), status: 'SELESAI' },
      { santriId: santri3.id, namaJilid: 'Jilid 3', halaman: 50, status: 'PROSES' },
      { santriId: santri3.id, namaJilid: 'Jilid 4', status: 'BELUM' },
      { santriId: santri3.id, namaJilid: 'Jilid 5', status: 'BELUM' },
      { santriId: santri3.id, namaJilid: 'Jilid 6', status: 'BELUM' },
      { santriId: santri3.id, namaJilid: 'Ghorib', status: 'BELUM' },
      { santriId: santri3.id, namaJilid: 'Tajwid Dasar', tanggalSelesai: new Date('2026-05-15'), status: 'SELESAI' },

      { santriId: santri4.id, namaJilid: 'Jilid 1', tanggalSelesai: new Date('2026-05-20'), status: 'SELESAI' },
      { santriId: santri4.id, namaJilid: 'Jilid 2', tanggalSelesai: new Date('2026-06-10'), status: 'SELESAI' },
      { santriId: santri4.id, namaJilid: 'Jilid 3', tanggalSelesai: new Date('2026-06-25'), status: 'SELESAI' },
      { santriId: santri4.id, namaJilid: 'Jilid 4', halaman: 20, status: 'PROSES' },
      { santriId: santri4.id, namaJilid: 'Jilid 5', status: 'BELUM' },
      { santriId: santri4.id, namaJilid: 'Jilid 6', status: 'BELUM' },
      { santriId: santri4.id, namaJilid: 'Ghorib', tanggalSelesai: new Date('2026-07-01'), status: 'SELESAI' },
      { santriId: santri4.id, namaJilid: 'Tajwid Dasar', tanggalSelesai: new Date('2026-05-01'), status: 'SELESAI' },

      { santriId: santri5.id, namaJilid: 'Jilid 1', tanggalSelesai: new Date('2026-05-01'), status: 'SELESAI' },
      { santriId: santri5.id, namaJilid: 'Jilid 2', tanggalSelesai: new Date('2026-05-20'), status: 'SELESAI' },
      { santriId: santri5.id, namaJilid: 'Jilid 3', tanggalSelesai: new Date('2026-06-10'), status: 'SELESAI' },
      { santriId: santri5.id, namaJilid: 'Jilid 4', tanggalSelesai: new Date('2026-06-25'), status: 'SELESAI' },
      { santriId: santri5.id, namaJilid: 'Jilid 5', halaman: 40, status: 'PROSES' },
      { santriId: santri5.id, namaJilid: 'Jilid 6', status: 'BELUM' },
      { santriId: santri5.id, namaJilid: 'Ghorib', tanggalSelesai: new Date('2026-06-15'), status: 'SELESAI' },
      { santriId: santri5.id, namaJilid: 'Tajwid Dasar', tanggalSelesai: new Date('2026-04-20'), status: 'SELESAI' },

      { santriId: santri6.id, namaJilid: 'Jilid 1', halaman: 25, status: 'PROSES' },
      { santriId: santri6.id, namaJilid: 'Jilid 2', status: 'BELUM' },
      { santriId: santri6.id, namaJilid: 'Jilid 3', status: 'BELUM' },
      { santriId: santri6.id, namaJilid: 'Jilid 4', status: 'BELUM' },
      { santriId: santri6.id, namaJilid: 'Jilid 5', status: 'BELUM' },
      { santriId: santri6.id, namaJilid: 'Jilid 6', status: 'BELUM' },
      { santriId: santri6.id, namaJilid: 'Ghorib', status: 'BELUM' },
      { santriId: santri6.id, namaJilid: 'Tajwid Dasar', status: 'BELUM' },
    ],
  });

  console.log('Seed data berhasil dibuat!');
  console.log('--- Akun Kepala Sekolah ---');
  console.log(`Kepsek: ${kepsek.email} / password: kepsek123`);
  console.log('--- Akun Guru ---');
  console.log(`Guru 1: ${guru1.email} / password: guru123`);
  console.log(`Guru 2: ${guru2.email} / password: guru456`);
  console.log('--- Akun Orang Tua ---');
  console.log(`Ortu Aisyah: nama=Aisyah Putri, password=aisyah123`);
  console.log(`Ortu Bilal: nama=Bilal Rahman, password=bilal123`);
  console.log(`Ortu Citra: nama=Citra Dewi, password=citra123`);
  console.log(`Ortu Dzaki: nama=Dzaki Fikri, password=dzaki123`);
  console.log(`Ortu Elsa: nama=Elsa Nuraini, password=elsa123`);
  console.log(`Ortu Faisal: nama=Faisal Habibi, password=faisal123`);
}

main()
  .then(async () => {
    await db.$disconnect();
  })
  .catch(async (e) => {
    console.error(e);
    await db.$disconnect();
    process.exit(1);
  });