import { PrismaClient } from '@prisma/client'
import bcrypt from 'bcryptjs'

const prisma = new PrismaClient()

async function main() {
  const adminEmail = 'admin@totes.com.bo'
  const adminPassword = '%%S0p0rt326'

  // Check if admin already exists
  const existing = await prisma.user.findFirst({
    where: { email: adminEmail }
  })

  if (existing) {
    console.log('⚠️  Admin user already exists:', adminEmail)
    
    // Update role to ADMIN if not already
    if (existing.role !== 'ADMIN') {
      await prisma.user.update({
        where: { id: existing.id },
        data: { role: 'ADMIN' }
      })
      console.log('✅ Updated existing user to ADMIN role')
    }

    // Update password to ensure it's correct
    const passwordHash = await bcrypt.hash(adminPassword, 12)
    await prisma.user.update({
      where: { id: existing.id },
      data: { passwordHash }
    })
    console.log('✅ Admin password updated')
    return
  }

  // Create new admin user
  const passwordHash = await bcrypt.hash(adminPassword, 12)
  const admin = await prisma.user.create({
    data: {
      email: adminEmail,
      name: 'Administrador',
      passwordHash,
      role: 'ADMIN',
      isActive: true,
    }
  })

  console.log('✅ Admin user created successfully!')
  console.log('   Email:', adminEmail)
  console.log('   Password: %%S0p0rt326')
  console.log('   ID:', admin.id)
}

main()
  .catch((e) => {
    console.error('❌ Error seeding admin:', e)
    process.exit(1)
  })
  .finally(async () => {
    await prisma.$disconnect()
  })
