From 46086fe4ea3bc4a3b24cc056d7195d3df6921442 Mon Sep 17 00:00:00 2001 From: Paul G Date: Thu, 6 Jun 2024 20:28:46 +0200 Subject: [PATCH] fix: ajout d'un job de maj ponctuel de deca (#3700) Co-authored-by: Paul Gaucher --- server/src/commands.ts | 6 ++++++ .../actions/organismes/organismes.actions.ts | 14 +++++++++++++ .../hydrate-effectifs-count-with-hierarchy.ts | 20 ++++++++++++++++++- server/src/jobs/jobs.ts | 10 +++++++++- 4 files changed, 48 insertions(+), 2 deletions(-) diff --git a/server/src/commands.ts b/server/src/commands.ts index f196fcdfc..0b638d33b 100644 --- a/server/src/commands.ts +++ b/server/src/commands.ts @@ -459,6 +459,12 @@ program .option("-f, --full", "Récupère l'intégralité des données disponibles via l'API Deca", false) .action(createJobAction("hydrate:contrats-deca-raw")); +program + .command("update:organismes-deca-transmitter") + .description("Mise a jour des effectifs DECA désynchronisé") + .option("-q, --queued", "Run job asynchronously", false) + .action(createJobAction("update:organismes-deca-transmitter")); + program .command("dev:generate-open-api") .description("Création/maj du fichier open-api.json") diff --git a/server/src/common/actions/organismes/organismes.actions.ts b/server/src/common/actions/organismes/organismes.actions.ts index d5e87c3a3..fcadcca71 100644 --- a/server/src/common/actions/organismes/organismes.actions.ts +++ b/server/src/common/actions/organismes/organismes.actions.ts @@ -472,6 +472,20 @@ export const updateOrganismesHasTransmittedWithHierarchy = async ( ); }; +export const updateDecaCompatibilityFromOrganismeId = async (organismeId: ObjectId, isDecaCompatible: boolean) => { + await effectifsDECADb().updateMany( + { + organisme_id: organismeId, + }, + { + $set: { + is_deca_compatible: isDecaCompatible, + }, + }, + { bypassDocumentValidation: true } + ); +}; + /** * Génération d'une api key s'il n'existe pas */ diff --git a/server/src/jobs/hydrate/organismes/hydrate-effectifs-count-with-hierarchy.ts b/server/src/jobs/hydrate/organismes/hydrate-effectifs-count-with-hierarchy.ts index 55c8732b9..ce0a7ef23 100644 --- a/server/src/jobs/hydrate/organismes/hydrate-effectifs-count-with-hierarchy.ts +++ b/server/src/jobs/hydrate/organismes/hydrate-effectifs-count-with-hierarchy.ts @@ -1,6 +1,9 @@ import { captureException } from "@sentry/node"; -import { updateOrganismesHasTransmittedWithHierarchy } from "@/common/actions/organismes/organismes.actions"; +import { + updateOrganismesHasTransmittedWithHierarchy, + updateDecaCompatibilityFromOrganismeId, +} from "@/common/actions/organismes/organismes.actions"; import logger from "@/common/logger"; import { organismesDb } from "@/common/model/collections"; @@ -20,3 +23,18 @@ export const hydrateOrganismesEffectifsCountWithHierarchy = async () => { captureException(err); } }; + +export const updateOrganismesDecaTransmitter = async () => { + try { + logger.info(`updateOrganismesDecaTransmitter: processing`); + const organismesCursor = organismesDb().find({ is_transmission_target: true }); + while (await organismesCursor.hasNext()) { + const organisme = await organismesCursor.next(); + if (organisme) { + await updateDecaCompatibilityFromOrganismeId(organisme._id, false); + } + } + } catch (err) { + captureException(err); + } +}; diff --git a/server/src/jobs/jobs.ts b/server/src/jobs/jobs.ts index b804269f4..64c792271 100644 --- a/server/src/jobs/jobs.ts +++ b/server/src/jobs/jobs.ts @@ -29,7 +29,10 @@ import { hydrateOrganismesOPCOs } from "./hydrate/hydrate-organismes-opcos"; import { hydrateRNCP } from "./hydrate/hydrate-rncp"; import { hydrateROME } from "./hydrate/hydrate-rome"; import { hydrateOpenApi } from "./hydrate/open-api/hydrate-open-api"; -import { hydrateOrganismesEffectifsCountWithHierarchy } from "./hydrate/organismes/hydrate-effectifs-count-with-hierarchy"; +import { + hydrateOrganismesEffectifsCountWithHierarchy, + updateOrganismesDecaTransmitter, +} from "./hydrate/organismes/hydrate-effectifs-count-with-hierarchy"; import { hydrateOrganismesEffectifsCount } from "./hydrate/organismes/hydrate-effectifs_count"; import { hydrateOrganismesFromReferentiel } from "./hydrate/organismes/hydrate-organismes"; import { hydrateOrganismesBassinEmploi } from "./hydrate/organismes/hydrate-organismes-bassinEmploi"; @@ -307,6 +310,11 @@ export async function setupJobProcessor() { return updateAllOrganismesRelatedFormations(); }, }, + "update:organismes-deca-transmitter": { + handler: async () => { + return updateOrganismesDecaTransmitter(); + }, + }, "hydrate:opcos": { handler: async () => { return hydrateOrganismesOPCOs();