import { createClient } from '@supabase/supabase-js'
import { readFileSync } from 'fs'

// Cargar .env.local manualmente
const env = Object.fromEntries(
  readFileSync(new URL('../.env.local', import.meta.url), 'utf8')
    .split('\n')
    .filter(l => l.trim() && !l.startsWith('#'))
    .map(l => l.split('=').map((v, i) => i === 0 ? v.trim() : l.slice(l.indexOf('=') + 1).trim().replace(/^"|"$/g, '')))
)

const supabase = createClient(
  env.NEXT_PUBLIC_SUPABASE_URL,
  env.SUPABASE_SERVICE_ROLE_KEY,
  { auth: { autoRefreshToken: false, persistSession: false } }
)

// ─── CONFIGURACIÓN ──────────────────────────────────────────
const ADMIN_EMAIL    = 'gilbertomeza@gmail.com'
const ADMIN_PASSWORD = 'Lukakin$90'
const ADMIN_NOMBRE   = 'Gilberto Meza'

const BARBEROS = [
  { nombre: 'Valentín',  descripcion: 'Especialista en cortes clásicos y fade' },
  { nombre: 'Carlos',    descripcion: 'Experto en barba y estilos modernos' },
  { nombre: 'Pedro',     descripcion: 'Cortes infantiles y degradados' },
  { nombre: 'Lola',      descripcion: 'Coloración y cortes creativos' },
  { nombre: 'Ukachin',   descripcion: 'Afeitado clásico y cortes tradicionales' },
]

// Horario por defecto: Lunes a Sábado 9am–7pm
const HORARIO_DEFAULT = [
  { dia_semana: 1, hora_inicio: '09:00', hora_fin: '19:00', activo: true },
  { dia_semana: 2, hora_inicio: '09:00', hora_fin: '19:00', activo: true },
  { dia_semana: 3, hora_inicio: '09:00', hora_fin: '19:00', activo: true },
  { dia_semana: 4, hora_inicio: '09:00', hora_fin: '19:00', activo: true },
  { dia_semana: 5, hora_inicio: '09:00', hora_fin: '19:00', activo: true },
  { dia_semana: 6, hora_inicio: '09:00', hora_fin: '17:00', activo: true },
  { dia_semana: 0, hora_inicio: '09:00', hora_fin: '13:00', activo: false },
]
// ────────────────────────────────────────────────────────────

async function main() {
  console.log('🚀 Iniciando seed de Barbería Lukakin...\n')

  // 1. Crear usuario admin
  console.log('👤 Creando usuario admin...')
  const { data: authData, error: authError } = await supabase.auth.admin.createUser({
    email: ADMIN_EMAIL,
    password: ADMIN_PASSWORD,
    email_confirm: true,
    user_metadata: { nombre: ADMIN_NOMBRE, rol: 'admin' },
  })

  if (authError && !authError.message.includes('already been registered')) {
    console.error('❌ Error creando admin:', authError.message)
    process.exit(1)
  }

  let adminId = authData?.user?.id

  // Si ya existía, obtener el ID
  if (!adminId) {
    const { data: existing } = await supabase
      .from('perfiles')
      .select('id')
      .eq('id', (await supabase.auth.admin.listUsers()).data.users.find(u => u.email === ADMIN_EMAIL)?.id)
      .maybeSingle()
    adminId = existing?.id
  }

  // Actualizar rol a admin en perfiles
  if (adminId) {
    await supabase.from('perfiles').upsert({
      id: adminId,
      nombre: ADMIN_NOMBRE,
      rol: 'admin',
    }, { onConflict: 'id' })
    console.log(`   ✅ Admin creado: ${ADMIN_EMAIL}`)
  }

  // 2. Crear barberos con horarios
  console.log('\n✂️  Creando barberos...')
  for (const b of BARBEROS) {
    const { data: barbero, error: bErr } = await supabase
      .from('barberos')
      .insert({ nombre: b.nombre, descripcion: b.descripcion, activo: true })
      .select()
      .single()

    if (bErr) {
      console.error(`   ❌ Error creando ${b.nombre}:`, bErr.message)
      continue
    }

    // Insertar horarios
    const horarios = HORARIO_DEFAULT.map(h => ({
      ...h,
      barbero_id: barbero.id,
    }))

    const { error: hErr } = await supabase.from('horarios_barbero').insert(horarios)
    if (hErr) {
      console.error(`   ⚠️  Error en horarios de ${b.nombre}:`, hErr.message)
    } else {
      console.log(`   ✅ ${b.nombre} — horarios Lun–Sáb configurados`)
    }
  }

  // 3. Verificar servicios
  console.log('\n💈 Verificando servicios...')
  const { data: servicios } = await supabase.from('servicios').select('nombre').eq('activo', true)
  if (servicios && servicios.length > 0) {
    servicios.forEach(s => console.log(`   ✅ ${s.nombre}`))
  } else {
    console.log('   ⚠️  No se encontraron servicios. Asegúrate de haber ejecutado el SQL de migraciones.')
  }

  console.log('\n🎉 Seed completado exitosamente!')
  console.log('\n─────────────────────────────────────────')
  console.log('📋 Credenciales de administrador:')
  console.log(`   Email:      ${ADMIN_EMAIL}`)
  console.log(`   Contraseña: ${ADMIN_PASSWORD}`)
  console.log('\n🌐 Abre: http://localhost:3000/login')
  console.log('📊 Panel admin: http://localhost:3000/dashboard')
  console.log('─────────────────────────────────────────\n')
}

main().catch(console.error)
