all repos — caroster @ b2f79a8edfa66402e88fc52215152f5a36b079d9

[Octree] Group carpool to your event https://caroster.io

fix: 🐛 Avoid daily notification for return events
Tim Izzo tim@5ika.ch
Thu, 09 Oct 2025 16:48:01 +0200
commit

b2f79a8edfa66402e88fc52215152f5a36b079d9

parent

4c43232e489612f59db859d64e29a62e9d922e0b

2 files changed, 52 insertions(+), 12 deletions(-)

jump to
M backend/config/cron-tasks.tsbackend/config/cron-tasks.ts

@@ -12,7 +12,9 @@ filters: {

date: { $gte: DateTime.now().toISODate(), }, + isReturnEvent: false, }, + populate: { linkedEvent: { populate: ["travels", "passengers"] } }, limit: -1, });

@@ -31,8 +33,18 @@ filters: {

date: { $eq: DateTime.now().minus({ day: 1 }).toISODate(), }, + isReturnEvent: false, }, - populate: ["travels", "passengers", "passengers.travel"], + populate: { + linkedEvents: { + populate: { + travels: true, + passengers: { populate: { passengers: true } }, + }, + }, + travels: true, + passengers: { populate: { passengers: true } }, + }, limit: -1, }); await pMap(events, strapi.service("api::event.event").sendEndRecap, {
M backend/src/api/event/services/event.tsbackend/src/api/event/services/event.ts

@@ -51,17 +51,41 @@ (tripAlert) => !usersInTravel.includes(tripAlert.user.id)

); }, sendDailyRecap: async (event) => { + const returnEvent = event.linkedEvent; const referenceDate = DateTime.now().minus({ day: 1 }); const hasBeenModified = referenceDate <= DateTime.fromISO(event.updatedAt); - if (hasBeenModified) { + const returnEventHasBeenModified = + returnEvent && referenceDate <= DateTime.fromISO(returnEvent.updatedAt); + if (hasBeenModified || returnEventHasBeenModified) { strapi.log.debug(`Send daily recap to admins of event #${event.id}`); + + const travelsCount = + (event.travels?.length || 0) + (returnEvent?.travels?.length || 0); + + let waitingListCount = 0; + const waitingPassengers = await strapi + .service("api::event.event") + .getWaitingPassengers(event); + waitingListCount += waitingPassengers?.length || 0; + + let newTravelsCount = 0; const newTravels = event.travels?.filter( (travel) => referenceDate <= DateTime.fromISO(travel.createdAt) ); - const waitingPassengers = await strapi - .service("api::event.event") - .getWaitingPassengers(event); + newTravelsCount += newTravels?.length || 0; + + if (returnEvent) { + const returningWaitingPassengers = await strapi + .service("api::event.event") + .getWaitingPassengers(returnEvent); + waitingListCount += returningWaitingPassengers?.length || 0; + + const returningNewTravels = returnEvent.travels?.filter( + (travel) => referenceDate <= DateTime.fromISO(travel.createdAt) + ); + newTravelsCount += returningNewTravels?.length || 0; + } const administratorEmails = event.administrators?.split(/, ?/) || []; administratorEmails.push(event.email);

@@ -71,19 +95,23 @@ await strapi

.service("api::email.email") .sendEmailNotif(email, "EventRecap", event.lang, { event, - waitingListCount: waitingPassengers?.length || 0, - travelsCount: event.travels?.length || 0, - newTravelsCount: newTravels?.length || 0, + travelsCount, + waitingListCount, + newTravelsCount, }); } } }, sendEndRecap: async (event) => { - const travelsCount = event.travels?.length || 0; - const passengersCount = event.passengers?.filter( - (passenger) => passenger.travel - ).length; + const returnEvent = event.linkedEvent; + const travelsCount = + (event.travels?.length || 0) + (returnEvent?.travels?.length || 0); + const passengersCount = + (event.passengers?.filter((passenger) => passenger.travel).length || + 0) + + (returnEvent.passengers?.filter((passenger) => passenger.travel) + .length || 0); const administratorEmails = event.administrators?.split(/, ?/) || []; administratorEmails.push(event.email);