test-reservation-sum.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. const { PrismaClient } = require('@prisma/client');
  2. const prisma = new PrismaClient();
  3. async function testReservationSum() {
  4. try {
  5. console.log('🔍 Test de la condition registrationClosed avec fermeture de trajet...');
  6. const companyId = 1; // IMANA TRANSPORT
  7. // 1. Fermer le trajet 1 pour le test
  8. console.log('\n🔒 Fermeture du trajet 1 pour le test...');
  9. await prisma.trajet.update({
  10. where: { id: 1 },
  11. data: { registrationClosed: true },
  12. });
  13. // 2. Voir tous les trajets de la compagnie avec leur statut
  14. const allTrajets = await prisma.trajet.findMany({
  15. where: {
  16. vehicule: {
  17. companyId: companyId,
  18. },
  19. },
  20. include: {
  21. vehicule: {
  22. include: {
  23. company: true,
  24. },
  25. },
  26. _count: {
  27. select: {
  28. reservations: true,
  29. },
  30. },
  31. },
  32. });
  33. console.log(`\n🚌 Trajets de la compagnie ${companyId} (${allTrajets[0]?.vehicule?.company?.name}):`);
  34. allTrajets.forEach(trajet => {
  35. console.log(` - Trajet ${trajet.id}: fermé=${trajet.registrationClosed}, prix=${trajet.pricePerSeat}€, réservations=${trajet._count.reservations}`);
  36. });
  37. // 3. Test SANS condition registrationClosed (tous les trajets)
  38. const allReservations = await prisma.reservation.findMany({
  39. where: {
  40. trajet: {
  41. vehicule: {
  42. companyId: companyId,
  43. },
  44. },
  45. },
  46. include: {
  47. trajet: {
  48. select: {
  49. pricePerSeat: true,
  50. registrationClosed: true,
  51. },
  52. },
  53. },
  54. });
  55. const totalAmountAll = allReservations.reduce(
  56. (sum, reservation) => sum + (reservation.trajet?.pricePerSeat || 0),
  57. 0,
  58. );
  59. console.log(`\n📊 TOUS les trajets (ouverts + fermés):`);
  60. console.log(` 💰 ${allReservations.length} réservations, Total: ${totalAmountAll}€`);
  61. // 4. Test AVEC condition registrationClosed: true (trajets fermés uniquement)
  62. const closedReservations = await prisma.reservation.findMany({
  63. where: {
  64. trajet: {
  65. vehicule: {
  66. companyId: companyId,
  67. },
  68. registrationClosed: true, // Uniquement les trajets fermés
  69. },
  70. },
  71. include: {
  72. trajet: {
  73. select: {
  74. pricePerSeat: true,
  75. registrationClosed: true,
  76. },
  77. },
  78. },
  79. });
  80. const totalAmountClosed = closedReservations.reduce(
  81. (sum, reservation) => sum + (reservation.trajet?.pricePerSeat || 0),
  82. 0,
  83. );
  84. console.log(`\n📊 TRAJETS FERMÉS uniquement (registrationClosed: true):`);
  85. console.log(` 💰 ${closedReservations.length} réservations, Total: ${totalAmountClosed}€`);
  86. // 5. Test AVEC condition registrationClosed: false (trajets ouverts uniquement)
  87. const openReservations = await prisma.reservation.findMany({
  88. where: {
  89. trajet: {
  90. vehicule: {
  91. companyId: companyId,
  92. },
  93. registrationClosed: false, // Uniquement les trajets ouverts
  94. },
  95. },
  96. include: {
  97. trajet: {
  98. select: {
  99. pricePerSeat: true,
  100. registrationClosed: true,
  101. },
  102. },
  103. },
  104. });
  105. const totalAmountOpen = openReservations.reduce(
  106. (sum, reservation) => sum + (reservation.trajet?.pricePerSeat || 0),
  107. 0,
  108. );
  109. console.log(`\n📊 TRAJETS OUVERTS uniquement (registrationClosed: false):`);
  110. console.log(` 💰 ${openReservations.length} réservations, Total: ${totalAmountOpen}€`);
  111. // 6. Vérification
  112. console.log(`\n✅ Vérification: ${totalAmountClosed + totalAmountOpen} = ${totalAmountAll} (fermés + ouverts = tous)`);
  113. // 7. Remettre le trajet 1 en ouvert pour ne pas affecter les autres tests
  114. console.log('\n🔓 Remise en ouvert du trajet 1...');
  115. await prisma.trajet.update({
  116. where: { id: 1 },
  117. data: { registrationClosed: false },
  118. });
  119. console.log('✅ Test terminé, trajet 1 remis en ouvert.');
  120. } catch (error) {
  121. console.error('❌ Erreur:', error);
  122. } finally {
  123. await prisma.$disconnect();
  124. }
  125. }
  126. testReservationSum();