| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- 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();
|