// Скрипт для создания тестовых данных V2
import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function seedV2TestData() {
  try {
    console.warn('🌱 Создание тестовых данных для V2 системы...')
    
    // Найдем фулфилмент организацию
    const fulfillment = await prisma.organization.findFirst({
      where: { type: 'FULFILLMENT' }
    })
    
    if (!fulfillment) {
      throw new Error('❌ Фулфилмент организация не найдена')
    }
    
    console.warn(`✅ Найдена фулфилмент организация: ${fulfillment.name} (${fulfillment.id})`)
    
    // Создаем тестовые услуги
    console.warn('📋 Создание тестовых услуг...')
    const services = await Promise.all([
      prisma.fulfillmentService.upsert({
        where: { id: 'test-service-1' },
        update: {},
        create: {
          id: 'test-service-1',
          fulfillmentId: fulfillment.id,
          name: 'Упаковка товаров',
          description: 'Профессиональная упаковка с пузырчатой пленкой',
          price: 50.00,
          unit: 'шт',
          isActive: true,
          sortOrder: 1
        }
      }),
      prisma.fulfillmentService.upsert({
        where: { id: 'test-service-2' },
        update: {},
        create: {
          id: 'test-service-2', 
          fulfillmentId: fulfillment.id,
          name: 'Маркировка товаров',
          description: 'Наклейка штрих-кодов и этикеток',
          price: 15.00,
          unit: 'шт',
          isActive: true,
          sortOrder: 2
        }
      }),
      prisma.fulfillmentService.upsert({
        where: { id: 'test-service-3' },
        update: {},
        create: {
          id: 'test-service-3',
          fulfillmentId: fulfillment.id,
          name: 'Фотосъемка товаров', 
          description: 'Профессиональная предметная съемка',
          price: 200.00,
          unit: 'шт',
          isActive: true,
          sortOrder: 3
        }
      })
    ])
    console.warn(`✅ Создано ${services.length} тестовых услуг`)
    
    // Создаем тестовые расходники
    console.warn('📦 Создание тестовых расходников...')
    const consumables = await Promise.all([
      prisma.fulfillmentConsumable.upsert({
        where: { id: 'test-consumable-1' },
        update: {},
        create: {
          id: 'test-consumable-1',
          fulfillmentId: fulfillment.id,
          name: 'Коробки картонные 20x15x10',
          article: 'BOX-001',
          description: 'Стандартные коробки для упаковки мелких товаров',
          pricePerUnit: 25.50,
          unit: 'шт',
          minStock: 20,
          currentStock: 150,
          isAvailable: true,
          sortOrder: 1
        }
      }),
      prisma.fulfillmentConsumable.upsert({
        where: { id: 'test-consumable-2' },
        update: {},
        create: {
          id: 'test-consumable-2',
          fulfillmentId: fulfillment.id,
          name: 'Пузырчатая пленка',
          article: 'BUBBLE-001',
          description: 'Защитная пленка для хрупких товаров',
          pricePerUnit: 12.30,
          unit: 'м',
          minStock: 50,
          currentStock: 500,
          isAvailable: true,
          sortOrder: 2
        }
      }),
      prisma.fulfillmentConsumable.upsert({
        where: { id: 'test-consumable-3' },
        update: {},
        create: {
          id: 'test-consumable-3',
          fulfillmentId: fulfillment.id,
          name: 'Скотч упаковочный',
          article: 'TAPE-001',
          description: 'Прозрачный упаковочный скотч 48мм',
          pricePerUnit: 8.75,
          unit: 'шт',
          minStock: 10,
          currentStock: 75,
          isAvailable: true,
          sortOrder: 3
        }
      }),
      prisma.fulfillmentConsumable.upsert({
        where: { id: 'test-consumable-4' },
        update: {},
        create: {
          id: 'test-consumable-4',
          fulfillmentId: fulfillment.id,
          name: 'Этикетки самоклеящиеся',
          article: 'LABEL-001',
          description: 'Белые этикетки для маркировки',
          pricePerUnit: 5.20,
          unit: 'лист',
          minStock: 5,
          currentStock: 0,
          isAvailable: false,
          sortOrder: 4
        }
      })
    ])
    console.warn(`✅ Создано ${consumables.length} тестовых расходников`)
    
    // Создаем тестовые логистические маршруты
    console.warn('🚚 Создание тестовых логистических маршрутов...')
    const logistics = await Promise.all([
      prisma.fulfillmentLogistics.upsert({
        where: { id: 'test-logistics-1' },
        update: {},
        create: {
          id: 'test-logistics-1',
          fulfillmentId: fulfillment.id,
          fromLocation: 'Москва',
          toLocation: 'Санкт-Петербург',
          priceUnder1m3: 800.00,
          priceOver1m3: 1200.00,
          estimatedDays: 2,
          description: 'Экспресс доставка до двери',
          isActive: true,
          sortOrder: 1
        }
      }),
      prisma.fulfillmentLogistics.upsert({
        where: { id: 'test-logistics-2' },
        update: {},
        create: {
          id: 'test-logistics-2',
          fulfillmentId: fulfillment.id,
          fromLocation: 'Москва',
          toLocation: 'Казань',
          priceUnder1m3: 600.00,
          priceOver1m3: 900.00,
          estimatedDays: 3,
          description: 'Стандартная доставка',
          isActive: true,
          sortOrder: 2
        }
      }),
      prisma.fulfillmentLogistics.upsert({
        where: { id: 'test-logistics-3' },
        update: {},
        create: {
          id: 'test-logistics-3', 
          fulfillmentId: fulfillment.id,
          fromLocation: 'Санкт-Петербург',
          toLocation: 'Новосибирск',
          priceUnder1m3: 1500.00,
          priceOver1m3: 2200.00,
          estimatedDays: 5,
          description: 'Межрегиональная доставка',
          isActive: true,
          sortOrder: 3
        }
      })
    ])
    console.warn(`✅ Создано ${logistics.length} тестовых логистических маршрутов`)
    
    console.warn('🎉 Все тестовые данные V2 созданы успешно!')
    
  } catch (error) {
    console.error('❌ Ошибка при создании тестовых данных:', error)
  } finally {
    await prisma.$disconnect()
  }
}

seedV2TestData()