#!/usr/bin/env node

const fetch = require('node-fetch');

async function limparDevolucoesDuplicadas() {
  try {
    console.log('🔧 Iniciando limpeza de devoluções duplicadas...');
    
    const response = await fetch('http://localhost:5000/api/devolucoes/limpar-duplicadas', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      }
    });

    const result = await response.json();
    
    if (result.success) {
      console.log(`✅ ${result.message}`);
      console.log(`📊 Total removidas: ${result.removidas}`);
    } else {
      console.log('❌ Erro:', result.error);
    }
    
  } catch (error) {
    console.error('❌ Erro ao limpar devoluções:', error.message);
  }
}

async function verificarEstadoDevolucoes() {
  try {
    console.log('\n📋 Verificando estado atual das devoluções...');
    
    const response = await fetch('http://localhost:5000/api/devolucoes');
    const devolucoes = await response.json();
    
    console.log(`📊 Total de devoluções: ${devolucoes.length}`);
    
    // Agrupar por venda para verificar duplicatas
    const porVenda = {};
    devolucoes.forEach(dev => {
      const key = dev.venda_id;
      if (!porVenda[key]) {
        porVenda[key] = [];
      }
      porVenda[key].push(dev);
    });
    
    console.log(`📊 Vendas com devoluções: ${Object.keys(porVenda).length}`);
    
    // Verificar vendas com múltiplas devoluções
    const vendasComMultiplas = Object.entries(porVenda)
      .filter(([_, devs]) => devs.length > 1);
    
    if (vendasComMultiplas.length > 0) {
      console.log(`⚠️  Vendas com múltiplas devoluções: ${vendasComMultiplas.length}`);
      vendasComMultiplas.forEach(([vendaId, devs]) => {
        console.log(`   - Venda ${vendaId}: ${devs.length} devoluções`);
      });
    } else {
      console.log('✅ Nenhuma venda com múltiplas devoluções encontrada');
    }
    
  } catch (error) {
    console.error('❌ Erro ao verificar devoluções:', error.message);
  }
}

async function main() {
  console.log('🔧 Sistema de Correção de Devoluções/Trocas - Liberi Kids');
  console.log('======================================================');
  
  await verificarEstadoDevolucoes();
  await limparDevolucoesDuplicadas();
  await verificarEstadoDevolucoes();
  
  console.log('\n✅ Processo concluído!');
  console.log('\n📋 Próximos passos:');
  console.log('1. Teste uma devolução simples');
  console.log('2. Teste uma troca de produto');
  console.log('3. Verifique se o estoque está sendo atualizado corretamente');
}

main().catch(console.error);
