const { PrismaClient } = require('@prisma/client'); const prisma = new PrismaClient(); async function testReservationSum() { try { console.log('🔍 Test de la condition registrationClosed avec fermeture de trajet...'); const companyId = 1; // IMANA TRANSPORT // 1. Fermer le trajet 1 pour le test console.log('\n🔒 Fermeture du trajet 1 pour le test...'); await prisma.trajet.update({ where: { id: 1 }, data: { registrationClosed: true }, }); // 2. Voir tous les trajets de la compagnie avec leur statut const allTrajets = await prisma.trajet.findMany({ where: { vehicule: { companyId: companyId, }, }, include: { vehicule: { include: { company: true, }, }, _count: { select: { reservations: true, }, }, }, }); console.log(`\n🚌 Trajets de la compagnie ${companyId} (${allTrajets[0]?.vehicule?.company?.name}):`); allTrajets.forEach(trajet => { console.log(` - Trajet ${trajet.id}: fermé=${trajet.registrationClosed}, prix=${trajet.pricePerSeat}€, réservations=${trajet._count.reservations}`); }); // 3. Test SANS condition registrationClosed (tous les trajets) const allReservations = await prisma.reservation.findMany({ where: { trajet: { vehicule: { companyId: companyId, }, }, }, include: { trajet: { select: { pricePerSeat: true, registrationClosed: true, }, }, }, }); const totalAmountAll = allReservations.reduce( (sum, reservation) => sum + (reservation.trajet?.pricePerSeat || 0), 0, ); console.log(`\n📊 TOUS les trajets (ouverts + fermés):`); console.log(` 💰 ${allReservations.length} réservations, Total: ${totalAmountAll}€`); // 4. Test AVEC condition registrationClosed: true (trajets fermés uniquement) const closedReservations = await prisma.reservation.findMany({ where: { trajet: { vehicule: { companyId: companyId, }, registrationClosed: true, // Uniquement les trajets fermés }, }, include: { trajet: { select: { pricePerSeat: true, registrationClosed: true, }, }, }, }); const totalAmountClosed = closedReservations.reduce( (sum, reservation) => sum + (reservation.trajet?.pricePerSeat || 0), 0, ); console.log(`\n📊 TRAJETS FERMÉS uniquement (registrationClosed: true):`); console.log(` 💰 ${closedReservations.length} réservations, Total: ${totalAmountClosed}€`); // 5. Test AVEC condition registrationClosed: false (trajets ouverts uniquement) const openReservations = await prisma.reservation.findMany({ where: { trajet: { vehicule: { companyId: companyId, }, registrationClosed: false, // Uniquement les trajets ouverts }, }, include: { trajet: { select: { pricePerSeat: true, registrationClosed: true, }, }, }, }); const totalAmountOpen = openReservations.reduce( (sum, reservation) => sum + (reservation.trajet?.pricePerSeat || 0), 0, ); console.log(`\n📊 TRAJETS OUVERTS uniquement (registrationClosed: false):`); console.log(` 💰 ${openReservations.length} réservations, Total: ${totalAmountOpen}€`); // 6. Vérification console.log(`\n✅ Vérification: ${totalAmountClosed + totalAmountOpen} = ${totalAmountAll} (fermés + ouverts = tous)`); // 7. Remettre le trajet 1 en ouvert pour ne pas affecter les autres tests console.log('\n🔓 Remise en ouvert du trajet 1...'); await prisma.trajet.update({ where: { id: 1 }, data: { registrationClosed: false }, }); console.log('✅ Test terminé, trajet 1 remis en ouvert.'); } catch (error) { console.error('❌ Erreur:', error); } finally { await prisma.$disconnect(); } } testReservationSum();