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

const prisma = new PrismaClient()

// Симулируем GraphQL резолвер myFulfillmentSupplies
async function testGraphQLQuery() {
  console.log('🔍 Тестируем GraphQL query myFulfillmentSupplies...')

  try {
    // Найдем организацию фулфилмента (как в резолвере)
    const fulfillmentOrg = await prisma.organization.findFirst({
      where: { type: 'FULFILLMENT' },
      select: { id: true, name: true }
    })

    if (!fulfillmentOrg) {
      console.log('❌ Организация фулфилмента не найдена')
      return
    }

    console.log(`🏢 Организация фулфилмента: ${fulfillmentOrg.name} (${fulfillmentOrg.id})`)

    // Симулируем резолвер myFulfillmentSupplies
    console.log('\n🔍 Выполняем запрос myFulfillmentSupplies...')
    
    const supplies = await prisma.supply.findMany({
      where: {
        organizationId: fulfillmentOrg.id,
        type: 'FULFILLMENT_CONSUMABLES',
      },
      include: {
        organization: true,
      },
      orderBy: { createdAt: 'desc' },
    })

    console.log(`📦 Найдено Supply записей: ${supplies.length}`)

    if (supplies.length === 0) {
      console.log('⚠️  Нет данных для отображения')
      return
    }

    supplies.forEach((supply, index) => {
      console.log(`\n${index + 1}. Supply ID: ${supply.id}`)
      console.log(`   Название: ${supply.name}`)
      console.log(`   Артикул: ${supply.article}`) // НОВОЕ ПОЛЕ
      console.log(`   Описание: ${supply.description}`)
      console.log(`   Цена: ${supply.price}`)
      console.log(`   Общее количество: ${supply.quantity}`)
      console.log(`   Текущий остаток: ${supply.currentStock}`)
      console.log(`   Использовано: ${supply.usedStock}`)
      console.log(`   Единица: ${supply.unit}`)
      console.log(`   Категория: ${supply.category}`)
      console.log(`   Статус: ${supply.status}`)
      console.log(`   Поставщик: ${supply.supplier}`)
      console.log(`   Мин. остаток: ${supply.minStock}`)
      console.log(`   Тип: ${supply.type}`)
      console.log(`   Организация: ${supply.organizationId}`)
      console.log(`   Создан: ${supply.createdAt}`)
      console.log(`   Обновлен: ${supply.updatedAt}`)
    })

    // Проверяем статистику как в dashboard
    console.log('\n📊 СТАТИСТИКА РАСХОДНИКОВ ФУЛФИЛМЕНТА:')
    
    const totalCurrent = supplies.reduce((sum, supply) => sum + supply.currentStock, 0)
    const totalUsed = supplies.reduce((sum, supply) => sum + supply.usedStock, 0)
    const lowStockCount = supplies.filter(supply => supply.currentStock <= supply.minStock).length
    
    console.log(`   Общий остаток: ${totalCurrent}`)
    console.log(`   Всего использовано: ${totalUsed}`)
    console.log(`   Позиций с низким остатком: ${lowStockCount}`)
    console.log(`   Всего позиций: ${supplies.length}`)

    console.log('\n✅ GraphQL query работает корректно!')

  } catch (error) {
    console.error('❌ ОШИБКА в GraphQL query:', error)
    console.error('Детали:', error.message)
  } finally {
    await prisma.$disconnect()
  }
}

testGraphQLQuery()