// Script de test pour l'API bulk GoCardless
// Utilisation : node temp_keep/test_bulk_gocardless.js

const url = 'http://localhost:3000/api/staff/facturation/bulk-gocardless';

// IDs de factures de test (à ajuster selon votre DB)
const testInvoiceIds = [
  'facture-test-1',
  'facture-test-2',
  'facture-inexistante'
];

async function testBulkGoCardless() {
  try {
    console.log('Test API Bulk GoCardless...');
    console.log(`URL: ${url}`);
    console.log(`IDs de test: ${testInvoiceIds.join(', ')}`);
    
    const response = await fetch(url, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        // Note: En production il faudrait un vrai token d'authentification
      },
      body: JSON.stringify({
        invoiceIds: testInvoiceIds
      })
    });
    
    console.log(`\nStatut de réponse: ${response.status}`);
    
    const data = await response.json();
    console.log('\nRéponse:');
    console.log(JSON.stringify(data, null, 2));
    
    if (data.summary) {
      console.log('\nRésumé:');
      console.log(`✅ Succès: ${data.summary.success}`);
      console.log(`❌ Échecs: ${data.summary.failed}`);
      console.log(`📊 Total: ${data.summary.total}`);
    }
    
    if (data.errors && data.errors.length > 0) {
      console.log('\nErreurs détaillées:');
      data.errors.forEach((error, index) => {
        console.log(`${index + 1}. ID: ${error.invoiceId} - ${error.error}`);
      });
    }
    
  } catch (error) {
    console.error('Erreur lors du test:', error.message);
  }
}

// Fonction pour tester avec des IDs réels depuis la DB
async function testWithRealInvoices() {
  try {
    console.log('\n=== Test avec factures réelles ===');
    
    // D'abord récupérer quelques factures
    const listResponse = await fetch('http://localhost:3000/api/staff/facturation?limit=5');
    const listData = await listResponse.json();
    
    if (listData.factures?.data?.length > 0) {
      const realIds = listData.factures.data
        .slice(0, 2) // Prendre les 2 premières
        .map(invoice => invoice.id);
      
      console.log(`IDs réels trouvés: ${realIds.join(', ')}`);
      
      const response = await fetch(url, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({
          invoiceIds: realIds
        })
      });
      
      const data = await response.json();
      console.log('\nRéponse avec IDs réels:');
      console.log(JSON.stringify(data, null, 2));
      
    } else {
      console.log('Aucune facture trouvée pour le test');
    }
    
  } catch (error) {
    console.error('Erreur lors du test avec IDs réels:', error.message);
  }
}

// Exécuter les tests
testBulkGoCardless()
  .then(() => testWithRealInvoices())
  .then(() => console.log('\n✅ Tests terminés'))
  .catch(err => console.error('❌ Erreur globale:', err));