From 5fb2bb58a509af0e26dabe8153a4c676d21f6fec Mon Sep 17 00:00:00 2001 From: Pierre LE BIHAN Date: Thu, 14 Nov 2024 15:57:05 +0100 Subject: [PATCH] =?UTF-8?q?feat(cron):=20am=C3=A9lioration=20de=20l'autova?= =?UTF-8?q?lidation=20de=20la=20phase=201=20avec=20filtrage=20des=20jeunes?= =?UTF-8?q?=20valid=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/src/crons/autoValidatePhase1.ts | 18 +++++++++--------- api/src/utils/index.js | 11 ++++------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/api/src/crons/autoValidatePhase1.ts b/api/src/crons/autoValidatePhase1.ts index e02904af58..de5caceb16 100644 --- a/api/src/crons/autoValidatePhase1.ts +++ b/api/src/crons/autoValidatePhase1.ts @@ -18,21 +18,21 @@ export const handler = async (): Promise => { if (!onGoingCohorts.length) return; for (const cohort of onGoingCohorts) { - let daysToValidate = cohort.daysToValidate; - if (!daysToValidate) { - console.warn(`Cohort ${cohort.name} has no daysToValidate`); - daysToValidate = 8; - } - if (differenceInDays(now, cohort.dateStart) !== cohort.daysToValidate) continue; - - const youngs = await YoungModel.find({ cohortId: cohort._id }); + const youngs = await YoungModel.find({ cohortId: cohort._id, status: "VALIDATED", statusPhase1: "AFFECTED" }); let nbYoungs = 0; - for await (const young of youngs) { + for (const young of youngs) { const bus = await LigneBusModel.findById(young.ligneId); const sessionPhase1 = await CohortModel.findById(young.sessionPhase1Id); const dateStart = getDepartureDate(young, sessionPhase1, cohort, { bus }); + let daysToValidate = cohort.daysToValidate; + if (!daysToValidate) { + console.warn(`Cohort ${cohort.name} has no daysToValidate`); + daysToValidate = 8; + } + if (differenceInDays(now, dateStart) !== cohort.daysToValidate) continue; + const validationDateWithDays = addDays(new Date(dateStart), cohort.daysToValidate).toISOString(); const modified = await updateStatusPhase1(young, validationDateWithDays, { firstName: `[CRON] Autovalidation de la phase 1 après ${cohort.daysToValidate} jours après le départ`, diff --git a/api/src/utils/index.js b/api/src/utils/index.js index 136beb06b2..6e4a258600 100644 --- a/api/src/utils/index.js +++ b/api/src/utils/index.js @@ -729,15 +729,12 @@ async function addingDayToDate(days, dateStart) { return formattedValidationDate; } -async function autoValidationSessionPhase1Young({ young, sessionPhase1, cohort = null, user }) { +async function autoValidationSessionPhase1Young({ young, sessionPhase1, user }) { let cohortWithOldRules = ["2021", "2022", "Février 2023 - C", "Avril 2023 - A", "Avril 2023 - B", "Juin 2023"]; - let youngCohort = cohort; - if (!cohort) { - youngCohort = await CohortModel.findOne({ name: young.cohort }); - } + const youngCohort = await CohortModel.findOne({ name: young.cohort }); // ! Freeze validation for legacy cohort - if (cohortWithOldRules.includes(young.cohort) || cohortWithOldRules.includes(youngCohort.name)) return; + if (cohortWithOldRules.includes(youngCohort.name)) return; const { daysToValidate: daysToValidate, dateStart: dateStartCohort } = await getCohortDateInfo(sessionPhase1.cohort); @@ -762,7 +759,7 @@ async function updateStatusPhase1(young, validationDateWithDays, user) { // Cette constante nous permet de vérifier si un jeune était présent au début du séjour (exception pour cette cohorte : pas besoin de JDM)(basé sur son grade) // ! Si null, on considère que le statut de pointage n'est pas encore connu (présent/absent) const isCohesionStayValid = young.cohesionStayPresence === "true"; - // Cette constante nour permet de vérifier si la date de départ d'un jeune permet de valider sa phase 1 (basé sur son grade) + // Cette constante pour permet de vérifier si la date de départ d'un jeune permet de valider sa phase 1 (basé sur son grade) const isDepartureDateValid = now >= validationDate && (!young?.departSejourAt || young?.departSejourAt >= validationDate); // On valide la phase 1 si toutes les condition sont réunis. Une exception : le jeune a été exclu. if (isValidationDatePassed) {