const { PrismaClient } = require('@prisma/client'); const prisma = new PrismaClient(); async function testCompany5Integration() { try { console.log('🔍 Test d\'intĂ©gration frontend - endpoint reservations/company/5/sum'); const companyId = 5; // test-company // 1. VĂ©rifier la compagnie 5 const company = await prisma.company.findUnique({ where: { id: companyId }, include: { vehicules: { include: { trajets: { include: { _count: { select: { reservations: true, }, }, }, }, }, }, }, }); if (!company) { console.log('❌ Compagnie 5 non trouvĂ©e'); return; } console.log(`\n🏱 Compagnie ${companyId}: ${company.name}`); console.log(` - VĂ©hicules: ${company.vehicules.length}`); if (company.vehicules.length > 0) { company.vehicules.forEach(vehicule => { console.log(` - VĂ©hicule ${vehicule.id}: ${vehicule.trajets.length} trajets`); vehicule.trajets.forEach(trajet => { console.log(` - Trajet ${trajet.id}: ${trajet._count.reservations} rĂ©servations, fermĂ©=${trajet.registrationClosed}`); }); }); } // 2. Simuler l'appel de l'endpoint (comme le ferait le frontend) console.log(`\nđŸ§Ș Test de l'endpoint pour la compagnie ${companyId}:`); const reservations = await prisma.reservation.findMany({ where: { trajet: { vehicule: { companyId: companyId, }, registrationClosed: true, // Uniquement les trajets fermĂ©s }, }, include: { trajet: { select: { id: true, pricePerSeat: true, registrationClosed: true, vehicule: { select: { company: { select: { name: true, }, }, }, }, }, }, }, }); const totalAmount = reservations.reduce( (sum, reservation) => sum + (reservation.trajet?.pricePerSeat || 0), 0, ); const result = { companyId: companyId, totalReservations: reservations.length, totalAmount: totalAmount, }; console.log('📊 RĂ©sultat de l\'endpoint pour la compagnie 5:'); console.log(JSON.stringify(result, null, 2)); // 3. Si aucune rĂ©servation, crĂ©er un trajet fermĂ© pour le test if (reservations.length === 0) { console.log('\n🔧 Aucune rĂ©servation trouvĂ©e, crĂ©ation d\'un test...'); // VĂ©rifier s'il y a des trajets pour cette compagnie const allTrajets = await prisma.trajet.findMany({ where: { vehicule: { companyId: companyId, }, }, }); if (allTrajets.length > 0) { // Fermer le premier trajet et crĂ©er quelques rĂ©servations de test const trajetId = allTrajets[0].id; console.log(` - Fermeture du trajet ${trajetId} pour le test...`); await prisma.trajet.update({ where: { id: trajetId }, data: { registrationClosed: true }, }); // Refaire le test const newReservations = await prisma.reservation.findMany({ where: { trajet: { vehicule: { companyId: companyId, }, registrationClosed: true, }, }, include: { trajet: { select: { pricePerSeat: true, }, }, }, }); const newTotalAmount = newReservations.reduce( (sum, reservation) => sum + (reservation.trajet?.pricePerSeat || 0), 0, ); const newResult = { companyId: companyId, totalReservations: newReservations.length, totalAmount: newTotalAmount, }; console.log('📊 Nouveau rĂ©sultat aprĂšs fermeture du trajet:'); console.log(JSON.stringify(newResult, null, 2)); // Remettre en ouvert await prisma.trajet.update({ where: { id: trajetId }, data: { registrationClosed: false }, }); console.log(' - Trajet remis en ouvert'); } else { console.log(' - Aucun trajet trouvĂ© pour cette compagnie'); } } // 4. Test de la logique frontend console.log('\n✅ Test de la logique frontend pour la compagnie 5:'); console.log(` - URL appelĂ©e: /api/reservations/company/5/sum`); console.log(` - reservationsSumResult?.totalAmount: ${result.totalAmount}`); console.log(` - reservationsSum.value sera dĂ©fini Ă : ${result.totalAmount}`); console.log(` - Type: ${typeof result.totalAmount} (attendu: number)`); console.log('\n✅ Test d\'intĂ©gration terminĂ© avec succĂšs !'); } catch (error) { console.error('❌ Erreur lors du test:', error); } finally { await prisma.$disconnect(); } } testCompany5Integration();