From e79eb491233fe6c94c77e073ced366516a2070c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?BITARD=20Micha=C3=ABl?= <michael.bitard@beta.gouv.fr> Date: Tue, 1 Apr 2025 12:35:13 +0000 Subject: [PATCH] =?UTF-8?q?chore(data):=20les=20prolongations=20doivent=20?= =?UTF-8?q?reprendre=20les=20m=C3=AAmes=20infos=20que=20les=20octrois=20(p?= =?UTF-8?q?ub/pnm-public/camino!1690)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/src/business/check-prolongations.ts | 77 +++++++++++++------ 1 file changed, 54 insertions(+), 23 deletions(-) diff --git a/packages/api/src/business/check-prolongations.ts b/packages/api/src/business/check-prolongations.ts index 4d70651e9..370e61b2d 100644 --- a/packages/api/src/business/check-prolongations.ts +++ b/packages/api/src/business/check-prolongations.ts @@ -207,6 +207,7 @@ const fixProlongation = (pool: Pool, checkedProlongation: CheckedProlongation): substances: getMostRecentValuePropFromEtapeFondamentaleValide('substances', demarches), titulaireIds: getMostRecentValuePropFromEtapeFondamentaleValide('titulaireIds', demarches), perimetre: getMostRecentValuePropFromEtapeFondamentaleValide('perimetre', demarches), + duree: getMostRecentValuePropFromEtapeFondamentaleValide('duree', [...demarches.filter(demarche => demarche.id === checkedProlongation.demarche_id)]), } }) ) @@ -214,27 +215,64 @@ const fixProlongation = (pool: Pool, checkedProlongation: CheckedProlongation): Effect.flatMap(({ titre, etape, propsHeritees }) => Effect.tryPromise({ try: () => { - console.info(`Trying to fix http://localhost:4180/etapes/${etape.id}`) + const changes = [] + let duree = 'fondamentale' in etape ? etape.fondamentale.duree : null + if ((isNullOrUndefined(duree) || duree === 0) && isNotNullNorUndefined(propsHeritees.duree) && propsHeritees.duree !== 0) { + duree = propsHeritees.duree + changes.push('duree') + } + + let substances = 'fondamentale' in etape ? (etape.fondamentale.substances ?? []) : [] + if (isNullOrUndefinedOrEmpty(substances) && isNotNullNorUndefinedNorEmpty(propsHeritees.substances)) { + substances = propsHeritees.substances + changes.push('substances') + } + + let titulaireIds = 'fondamentale' in etape ? (etape.fondamentale.titulaireIds ?? []) : [] + if (isNullOrUndefinedOrEmpty(titulaireIds) && isNotNullNorUndefinedNorEmpty(propsHeritees.titulaireIds)) { + titulaireIds = propsHeritees.titulaireIds + changes.push('titulaireIds') + } + let perimetre = + 'fondamentale' in etape + ? { + surface: etape.fondamentale.perimetre?.surface, + geojson4326Perimetre: etape.fondamentale.perimetre?.geojson4326_perimetre, + geojsonOriginePerimetre: etape.fondamentale.perimetre?.geojson_origine_perimetre, + geojsonOrigineGeoSystemeId: etape.fondamentale.perimetre?.geojson_origine_geo_systeme_id, + geojson4326Points: etape.fondamentale.perimetre?.geojson4326_points, + geojsonOriginePoints: etape.fondamentale.perimetre?.geojson_origine_points, + geojson4326Forages: etape.fondamentale.perimetre?.geojson4326_forages, + geojsonOrigineForages: etape.fondamentale.perimetre?.geojson_origine_forages, + } + : null + if (isNullOrUndefined(perimetre?.geojsonOriginePerimetre) && isNotNullNorUndefined(propsHeritees.perimetre?.geojson_origine_perimetre)) { + perimetre = { + surface: propsHeritees.perimetre.surface, + geojson4326Perimetre: propsHeritees.perimetre.geojson4326_perimetre, + geojsonOriginePerimetre: propsHeritees.perimetre.geojson_origine_perimetre, + geojsonOrigineGeoSystemeId: propsHeritees.perimetre.geojson_origine_geo_systeme_id, + geojson4326Points: propsHeritees.perimetre.geojson4326_points, + geojsonOriginePoints: propsHeritees.perimetre.geojson_origine_points, + geojson4326Forages: propsHeritees.perimetre.geojson4326_forages, + geojsonOrigineForages: propsHeritees.perimetre.geojson_origine_forages, + } + changes.push('perimetre') + } + + if (isNotNullNorUndefinedNorEmpty(changes)) { + console.info(`Trying to fix http://localhost:4180/etapes/${etape.slug} -> ${changes.join(',')}`) + } + return titreEtapeUpsert( { id: etape.id, titreDemarcheId: checkedProlongation.demarche_id, date: etape.date, - substances: 'fondamentale' in etape && isNotNullNorUndefinedNorEmpty(etape.fondamentale.substances) ? etape.fondamentale.substances : propsHeritees.substances, - titulaireIds: 'fondamentale' in etape && isNotNullNorUndefinedNorEmpty(etape.fondamentale.titulaireIds) ? etape.fondamentale.titulaireIds : propsHeritees.titulaireIds, - surface: 'fondamentale' in etape && isNotNullNorUndefined(etape.fondamentale.perimetre?.surface) ? etape.fondamentale.perimetre.surface : propsHeritees.perimetre?.surface, - geojson4326Perimetre: - 'fondamentale' in etape && isNotNullNorUndefined(etape.fondamentale.perimetre?.geojson4326_perimetre) - ? etape.fondamentale.perimetre.geojson4326_perimetre - : propsHeritees.perimetre?.geojson4326_perimetre, - geojsonOriginePerimetre: - 'fondamentale' in etape && isNotNullNorUndefined(etape.fondamentale.perimetre?.geojson_origine_perimetre) - ? etape.fondamentale.perimetre.geojson_origine_perimetre - : propsHeritees.perimetre?.geojson_origine_perimetre, - geojsonOrigineGeoSystemeId: - 'fondamentale' in etape && isNotNullNorUndefined(etape.fondamentale.perimetre?.geojson_origine_geo_systeme_id) - ? etape.fondamentale.perimetre.geojson_origine_geo_systeme_id - : propsHeritees.perimetre?.geojson_origine_geo_systeme_id, + duree, + substances, + titulaireIds, + ...perimetre, }, userSuper, titre.id @@ -274,13 +312,6 @@ export const checkProlongations = (pool: Pool): Effect.Effect<CheckedProlongatio return fixProlongation(pool, checkedProlongation) }), Effect.map(checkedProlongation => { - // if (isNotNullNorUndefinedNorEmpty(checkedProlongation.errors) && !checkedProlongation.errors.includes(demarchePasProlongationError)) { - // const link = isNotNullNorUndefined(checkedProlongation.titre_slug) - // ? `http://localhost:4180/titres/${checkedProlongation.titre_slug}` - // : `http://localhost:4180/demarches/${checkedProlongation.demarche_id}` - // console.info(`${link} : ${checkedProlongation.errors.join(' | ')}`) - // } - return [...acc, checkedProlongation] }) ) -- GitLab