diff --git a/packages/api/src/business/check-prolongations.ts b/packages/api/src/business/check-prolongations.ts index 4d70651e99aa3ee2909a9f73d76cf9d8937138c2..370e61b2d8a72d99f1d5dbd31f2169a267999018 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] }) )