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

const prisma = new PrismaClient()

const products = [
  // CUBO serisi
  { slug: 'cubo-s',        nameTr: 'Cubo S',        nameEn: 'Cubo S',        category: 'CUBO',  size: '40×45',    priceB2B: 64,  priceSelf: 86  },
  { slug: 'cubo-m',        nameTr: 'Cubo M',        nameEn: 'Cubo M',        category: 'CUBO',  size: '50×52',    priceB2B: 84,  priceSelf: 113 },
  { slug: 'cubo-l',        nameTr: 'Cubo L',        nameEn: 'Cubo L',        category: 'CUBO',  size: '60×65',    priceB2B: 116, priceSelf: 157 },
  // RECTA serisi
  { slug: 'recta-1',       nameTr: 'Recta 1',       nameEn: 'Recta 1',       category: 'RECTA', size: '30×95×40', priceB2B: 68,  priceSelf: 92  },
  { slug: 'recta-2',       nameTr: 'Recta 2',       nameEn: 'Recta 2',       category: 'RECTA', size: '40×95×40', priceB2B: 68,  priceSelf: 92  },
  { slug: 'recta-3',       nameTr: 'Recta 3',       nameEn: 'Recta 3',       category: 'RECTA', size: '30×95×60', priceB2B: 72,  priceSelf: 97  },
  { slug: 'recta-4',       nameTr: 'Recta 4',       nameEn: 'Recta 4',       category: 'RECTA', size: '30×80×40', priceB2B: 60,  priceSelf: 81  },
  // GLOBE serisi
  { slug: 'globe-s',       nameTr: 'Globe S',       nameEn: 'Globe S',       category: 'GLOBE', size: '⌀40',      priceB2B: 72,  priceSelf: 97  },
  { slug: 'globe-m',       nameTr: 'Globe M',       nameEn: 'Globe M',       category: 'GLOBE', size: '⌀55',      priceB2B: 84,  priceSelf: 113 },
  { slug: 'globe-l',       nameTr: 'Globe L',       nameEn: 'Globe L',       category: 'GLOBE', size: '⌀65',      priceB2B: 116, priceSelf: 157 },
  // Diğer modeller
  { slug: 'doppio',        nameTr: 'Doppio',        nameEn: 'Doppio',        category: 'OTHER', size: '50×40',    priceB2B: 104, priceSelf: 140 },
  { slug: 'elora',         nameTr: 'Elora',         nameEn: 'Elora',         category: 'OTHER', size: '80×40',    priceB2B: 84,  priceSelf: 113 },
  { slug: 'tripod',        nameTr: 'Tripod',        nameEn: 'Tripod',        category: 'OTHER', size: '50×45',    priceB2B: 84,  priceSelf: 113 },
  { slug: 'forma',         nameTr: 'Forma',         nameEn: 'Forma',         category: 'OTHER', size: '40×45',    priceB2B: 72,  priceSelf: 97  },
  { slug: 'marbella',      nameTr: 'Marbella',      nameEn: 'Marbella',      category: 'OTHER', size: null,       priceB2B: 84,  priceSelf: 113 },
  { slug: 'colo',          nameTr: 'Colo',          nameEn: 'Colo',          category: 'OTHER', size: null,       priceB2B: 84,  priceSelf: 113 },
  { slug: 'ardea',         nameTr: 'Ardea',         nameEn: 'Ardea',         category: 'OTHER', size: null,       priceB2B: 84,  priceSelf: 113 },
  { slug: 'tera',          nameTr: 'Tera',          nameEn: 'Tera',          category: 'OTHER', size: null,       priceB2B: 44,  priceSelf: 59  },
  { slug: 'vals',          nameTr: 'Vals',          nameEn: 'Vals',          category: 'OTHER', size: null,       priceB2B: 44,  priceSelf: 59  },
  { slug: 'mossa',         nameTr: 'Mossa',         nameEn: 'Mossa',         category: 'OTHER', size: null,       priceB2B: 104, priceSelf: 140 },
  { slug: 'velis',         nameTr: 'Velis',         nameEn: 'Velis',         category: 'OTHER', size: null,       priceB2B: 96,  priceSelf: 130 },
  { slug: 'velis-kab',     nameTr: 'Velis Kab',     nameEn: 'Velis Kab',     category: 'OTHER', size: null,       priceB2B: 144, priceSelf: 194 },
  { slug: 'forma-doppio',  nameTr: 'Forma Doppio',  nameEn: 'Forma Doppio',  category: 'OTHER', size: null,       priceB2B: 104, priceSelf: 140 },
  { slug: 'aure',          nameTr: 'Aure',          nameEn: 'Aure',          category: 'OTHER', size: null,       priceB2B: 44,  priceSelf: 59  },
]

async function main() {
  console.log('Seed başlatılıyor...')

  for (const product of products) {
    await prisma.product.upsert({
      where: { slug: product.slug },
      update: {},
      create: {
        slug: product.slug,
        nameTr: product.nameTr,
        nameEn: product.nameEn,
        category: product.category,
        size: product.size ?? undefined,
        priceB2B: product.priceB2B,
        priceSelf: product.priceSelf,
        images: '[]',
        stock: 100,
        isActive: true,
      },
    })
  }
  console.log(`✓ ${products.length} ürün eklendi.`)

  const adminPassword = await bcrypt.hash('admin123', 12)
  await prisma.dealer.upsert({
    where: { dealerCode: 'ADMIN' },
    update: {},
    create: {
      dealerCode: 'ADMIN',
      password: adminPassword,
      companyName: 'PeyzajArt',
      contactName: 'Admin',
      email: 'info@peyzajart.com',
      isAdmin: true,
      isActive: true,
    },
  })
  console.log('✓ Admin hesabı oluşturuldu. Kod: ADMIN  Şifre: admin123')
  console.log('⚠️  Lütfen admin şifresini production öncesi değiştirin!')
}

main()
  .catch((e) => {
    console.error(e)
    process.exit(1)
  })
  .finally(() => prisma.$disconnect())
