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

const prisma = new PrismaClient()

async function clearAllCabinetsData() {
  try {
    console.log('🧹 ОЧИСТКА ДАННЫХ ВСЕХ КАБИНЕТОВ...')
    console.log('⚠️  Организации и пользователи НЕ УДАЛЯЮТСЯ')
    console.log('🗑️  Удаляются только данные внутри кабинетов')
    console.log('=' .repeat(50))
    
    // 1. СКЛАДЫ И ПОСТАВКИ
    console.log('\n1️⃣ ОЧИСТКА СКЛАДОВ И ПОСТАВОК:')
    
    console.log('   🗑️  Удаляем SupplyOrderItem...')
    const deletedOrderItems = await prisma.supplyOrderItem.deleteMany({})
    console.log(`      ✅ Удалено: ${deletedOrderItems.count}`)
    
    console.log('   🗑️  Удаляем SupplyOrder...')
    const deletedOrders = await prisma.supplyOrder.deleteMany({})
    console.log(`      ✅ Удалено: ${deletedOrders.count}`)
    
    console.log('   🗑️  Удаляем Supply (расходники на складах)...')
    const deletedSupplies = await prisma.supply.deleteMany({})
    console.log(`      ✅ Удалено: ${deletedSupplies.count}`)
    
    // 2. ТОВАРЫ ПОСТАВЩИКОВ
    console.log('\n2️⃣ ОЧИСТКА ТОВАРОВ ПОСТАВЩИКОВ:')
    
    console.log('   🗑️  Удаляем Product (товары в каталогах поставщиков)...')
    const deletedProducts = await prisma.product.deleteMany({})
    console.log(`      ✅ Удалено: ${deletedProducts.count}`)
    
    // 3. УСЛУГИ ФУЛФИЛМЕНТА
    console.log('\n3️⃣ ОЧИСТКА УСЛУГ ФУЛФИЛМЕНТА:')
    
    console.log('   🗑️  Удаляем Service (услуги)...')
    const deletedServices = await prisma.service.deleteMany({})
    console.log(`      ✅ Удалено: ${deletedServices.count}`)
    
    console.log('   🗑️  Удаляем Logistics (логистические маршруты)...')
    const deletedLogistics = await prisma.logistics.deleteMany({})
    console.log(`      ✅ Удалено: ${deletedLogistics.count}`)
    
    // 4. СОТРУДНИКИ
    console.log('\n4️⃣ ОЧИСТКА СОТРУДНИКОВ:')
    
    console.log('   🗑️  Удаляем Employee (сотрудники)...')
    const deletedEmployees = await prisma.employee.deleteMany({})
    console.log(`      ✅ Удалено: ${deletedEmployees.count}`)
    
    // 5. КОРЗИНЫ И ИЗБРАННОЕ
    console.log('\n5️⃣ ОЧИСТКА КОРЗИН И ИЗБРАННОГО:')
    
    console.log('   🗑️  Удаляем CartItem...')
    const deletedCartItems = await prisma.cartItem.deleteMany({})
    console.log(`      ✅ Удалено: ${deletedCartItems.count}`)
    
    console.log('   🗑️  Удаляем Cart...')
    const deletedCarts = await prisma.cart.deleteMany({})
    console.log(`      ✅ Удалено: ${deletedCarts.count}`)
    
    console.log('   🗑️  Удаляем Favorite...')
    // Проверяем существование таблицы Favorite
    let deletedFavorites = { count: 0 }
    try {
      deletedFavorites = await prisma.favorite.deleteMany({})
    } catch (error) {
      console.log('      ⚠️  Таблица Favorite не найдена, пропускаем')
    }
    console.log(`      ✅ Удалено: ${deletedFavorites.count}`)
    
    // 6. РЕКЛАМА И СТАТИСТИКА
    console.log('\n6️⃣ ОЧИСТКА РЕКЛАМЫ И СТАТИСТИКИ:')
    
    console.log('   🗑️  Удаляем ExternalAd (внешняя реклама)...')
    const deletedAds = await prisma.externalAd.deleteMany({})
    console.log(`      ✅ Удалено: ${deletedAds.count}`)
    
    // 7. СООБЩЕНИЯ
    console.log('\n7️⃣ ОЧИСТКА СООБЩЕНИЙ:')
    
    console.log('   🗑️  Удаляем Message (сообщения в мессенджере)...')
    const deletedMessages = await prisma.message.deleteMany({})
    console.log(`      ✅ Удалено: ${deletedMessages.count}`)
    
    // 8. КЕШИ И ВСПОМОГАТЕЛЬНЫЕ ДАННЫЕ
    console.log('\n8️⃣ ОЧИСТКА КЕШЕЙ:')
    
    console.log('   🗑️  Удаляем WBWarehouseCache...')
    const deletedWarehouseCache = await prisma.wBWarehouseCache.deleteMany({})
    console.log(`      ✅ Удалено: ${deletedWarehouseCache.count}`)
    
    console.log('   🗑️  Удаляем SellerStatsCache...')
    const deletedStatsCache = await prisma.sellerStatsCache.deleteMany({})
    console.log(`      ✅ Удалено: ${deletedStatsCache.count}`)
    
    // 9. WILDBERRIES ПОСТАВКИ
    console.log('\n9️⃣ ОЧИСТКА ПОСТАВОК WILDBERRIES:')
    
    console.log('   🗑️  Удаляем WildberriesSupplyItem...')
    let deletedWBItems = { count: 0 }
    try {
      deletedWBItems = await prisma.wildberriesSupplyItem.deleteMany({})
    } catch (error) {
      console.log('      ⚠️  Таблица WildberriesSupplyItem не найдена, пропускаем')
    }
    console.log(`      ✅ Удалено: ${deletedWBItems.count}`)
    
    console.log('   🗑️  Удаляем WildberriesSupply...')
    let deletedWBSupplies = { count: 0 }
    try {
      deletedWBSupplies = await prisma.wildberriesSupply.deleteMany({})
    } catch (error) {
      console.log('      ⚠️  Таблица WildberriesSupply не найдена, пропускаем')
    }
    console.log(`      ✅ Удалено: ${deletedWBSupplies.count}`)

    // ИТОГИ
    console.log('\n' + '='.repeat(50))
    console.log('✅ ОЧИСТКА ЗАВЕРШЕНА УСПЕШНО!')
    console.log('')
    console.log('🗑️  ЧТО БЫЛО УДАЛЕНО:')
    console.log(`   📦 Заказы поставок: ${deletedOrders.count}`)
    console.log(`   📋 Элементы заказов: ${deletedOrderItems.count}`)
    console.log(`   🏪 Расходники на складах: ${deletedSupplies.count}`)
    console.log(`   📦 Товары поставщиков: ${deletedProducts.count}`)
    console.log(`   🛠️  Услуги фулфилмента: ${deletedServices.count}`)
    console.log(`   🚚 Логистические маршруты: ${deletedLogistics.count}`)
    console.log(`   👥 Сотрудники: ${deletedEmployees.count}`)
    console.log(`   🛒 Корзины: ${deletedCarts.count}`)
    console.log(`   📋 Элементы корзин: ${deletedCartItems.count}`)
    console.log(`   ❤️  Избранное: ${deletedFavorites.count}`)
    console.log(`   📢 Реклама: ${deletedAds.count}`)
    console.log(`   💬 Сообщения: ${deletedMessages.count}`)
    console.log(`   📊 Кеш WB: ${deletedWarehouseCache.count}`)
    console.log(`   📈 Кеш статистики: ${deletedStatsCache.count}`)
    console.log(`   📦 Поставки WB: ${deletedWBSupplies.count}`)
    console.log(`   📋 Элементы WB: ${deletedWBItems.count}`)
    
    console.log('\n✅ ЧТО ОСТАЛОСЬ НЕТРОНУТЫМ:')
    console.log('   👤 Пользователи (User)')
    console.log('   🏢 Организации (Organization)')
    console.log('   🤝 Контрагенты (Counterparty)')
    console.log('   📋 Запросы на партнерство (CounterpartyRequest)')
    console.log('   📂 Категории товаров (Category)')
    console.log('   🎖️  Рефералы и сферы (ReferralTransaction)')
    console.log('   🔑 API ключи (MarketplaceApiKey)')
    
    console.log('\n🎯 РЕЗУЛЬТАТ:')
    console.log('   Все кабинеты очищены от данных')
    console.log('   Система готова для чистого тестирования')
    console.log('   Пользователи могут войти и начать работу заново')

  } catch (error) {
    console.error('❌ ОШИБКА при очистке:', error)
    console.error('   Детали:', error.message)
  } finally {
    await prisma.$disconnect()
  }
}

clearAllCabinetsData()