const { PrismaClient } = require('@prisma/client')

const prisma = new PrismaClient()

async function seedServices() {
  try {
    // Check if services already exist
    const existingServices = await prisma.service.count()
    if (existingServices > 0) {
      console.log('Services already exist, skipping seed')
      return
    }

    // Create services
    const skck = await prisma.service.create({
      data: {
        title: 'SKCK',
        slug: 'skck',
        description: 'Surat Keterangan Catatan Kriminal untuk keperluan pekerjaan, pendidikan, dan lainnya'
      }
    })

    const spkt = await prisma.service.create({
      data: {
        title: 'SPKT',
        slug: 'spkt',
        description: 'Surat Pemberitahuan Kepolisian Terpadu untuk berbagai keperluan kepolisian'
      }
    })

    const laluLintas = await prisma.service.create({
      data: {
        title: 'Lalu Lintas',
        slug: 'lalu-lintas',
        description: 'Pengajuan dokumen terkait lalu lintas dan SIM'
      }
    })

    // Create templates for each service
    await prisma.serviceTemplate.createMany({
      data: [
        {
          serviceId: skck.id,
          templateContent: `
SURAT KETERANGAN CATATAN KRIMINAL
Nomor: {{trackingNumber}}

Yang bertanda tangan di bawah ini:
Kepala Kepolisian Resor Wonosobo

Menyatakan bahwa:
Nama: {{fullName}}
Tempat/Tanggal Lahir: {{placeOfBirth}}, {{dateOfBirth}}
Jenis Kelamin: {{gender}}
Agama: {{religion}}
Pekerjaan: {{occupation}}
Alamat: {{address}}, {{village}}, {{district}}, {{regency}}, {{province}}

Berdasarkan hasil pemeriksaan dalam catatan kepolisian, yang bersangkutan:
[ ] Tidak pernah tercatat melakukan tindak pidana
[ ] Pernah tercatat melakukan tindak pidana

Demikian surat keterangan ini dibuat untuk dapat dipergunakan seperlunya.

Wonosobo, {{tanggal}}
Kapolres Wonosobo
{{tandaTangan}}
          `.trim()
        },
        {
          serviceId: spkt.id,
          templateContent: `
SURAT TANDA BUKTI LAPORAN
Nomor: {{trackingNumber}}

DATA PELAPOR:
Nama: {{fullName}}
Tempat/Tanggal Lahir: {{placeOfBirth}}, {{dateOfBirth}}
Jenis Kelamin: {{gender}}
Pekerjaan: {{occupation}}
Alamat: {{address}}, {{village}}, {{district}}, {{regency}}, {{province}}
No. HP: {{phone}}

DATA LAPORAN:
Jenis Laporan: {{reportType}}
Tanggal Kejadian: {{incidentDate}}
Lokasi Kejadian: {{incidentLocation}}
Kronologi: {{incidentDescription}}

Demikian tanda bukti laporan ini dibuat untuk dapat dipergunakan seperlunya.

Wonosobo, {{tanggal}}
Kapolres Wonosobo
{{tandaTangan}}
          `.trim()
        },
        {
          serviceId: laluLintas.id,
          templateContent: `
SURAT KETERANGAN LALU LINTAS
Nomor: {{trackingNumber}}

DATA PEMOHON:
Nama: {{fullName}}
Tempat/Tanggal Lahir: {{placeOfBirth}}, {{dateOfBirth}}
Jenis Kelamin: {{gender}}
Pekerjaan: {{occupation}}
Alamat: {{address}}, {{village}}, {{district}}, {{regency}}, {{province}}
No. HP: {{phone}}

DATA KENDARAAN:
Jenis Kendaraan: {{vehicleType}}
Merek: {{vehicleBrand}}
Tipe: {{vehicleTypeDetail}}
Warna: {{vehicleColor}}
Nomor Polisi: {{vehicleNumber}}

Keperluan: {{purpose}}

Demikian surat keterangan ini dibuat untuk dapat dipergunakan seperlunya.

Wonosobo, {{tanggal}}
Kapolres Wonosobo
{{tandaTangan}}
          `.trim()
        }
      ]
    })

    // Create admin user
    const existingAdmin = await prisma.user.findFirst({
      where: { role: 'ADMIN' }
    })

    if (!existingAdmin) {
      await prisma.user.create({
        data: {
          name: 'Admin Polres Wonosobo',
          email: 'admin@polres-wonosobo.com',
          password: 'admin123', // In production, this should be hashed
          role: 'ADMIN',
          permissions: {
            access_services: ['skck', 'spkt', 'lalu-lintas']
          }
        }
      })
    }

    // Create superadmin user
    const existingSuperadmin = await prisma.user.findFirst({
      where: { role: 'SUPERADMIN' }
    })

    if (!existingSuperadmin) {
      await prisma.user.create({
        data: {
          name: 'Superadmin',
          email: 'superadmin@polres-wonosobo.com',
          password: 'superadmin123', // In production, this should be hashed
          role: 'SUPERADMIN',
          permissions: {
            access_services: ['skck', 'spkt', 'lalu-lintas'],
            manage_users: true,
            manage_permissions: true
          }
        }
      })
    }

    console.log('Database seeded successfully')
  } catch (error) {
    console.error('Error seeding database:', error)
  } finally {
    await prisma.$disconnect()
  }
}

// Run the seed function
seedServices()