-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Data sur l'utilisation du CEJ par les conseillers milo pour UNML (#1329)
- Loading branch information
Showing
2 changed files
with
121 additions
and
56 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
121 changes: 121 additions & 0 deletions
121
scripts/taux-de-penetration/ajout_agences_milo_sans_conseiller_cej.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,121 @@ | ||
const { Sequelize } = require('sequelize') | ||
const sequelize = new Sequelize(DATABASE_URL, { | ||
dialect: 'postgres' | ||
}) | ||
|
||
const referentiel_agences_milo = | ||
require('./referentiel_agences_api_milo.json').Sheet1 | ||
|
||
async function execute() { | ||
const [agencesCej, _metadata] = await sequelize.query(` | ||
SELECT * FROM structure_milo | ||
`) | ||
|
||
/*let agencesNonCejReferentiel = await recupererLesAgencesSansConseillersCej( | ||
agencesCej | ||
) | ||
ajouterLesInformationsGeographiques(agencesNonCejReferentiel, agencesCej)*/ | ||
await sequelize.transaction(async transaction => { | ||
/*await persisterLesAgencesSansConseillersCej( | ||
agencesNonCejReferentiel, | ||
transaction | ||
)*/ | ||
await persisterLeNomUsuelDansLesAgencesCej(agencesCej, transaction) | ||
}) | ||
} | ||
|
||
execute() | ||
|
||
async function recupererLesAgencesSansConseillersCej(agencesCej) { | ||
return referentiel_agences_milo | ||
.map(agenceMilo => { | ||
return { | ||
id: agenceMilo['Code structure'] + 'S00', | ||
nom_officiel: agenceMilo['Nom officiel structure'], | ||
nom_usuel: agenceMilo['Nom usuel structure'] | ||
} | ||
}) | ||
.filter( | ||
agenceMilo => !agencesCej.map(agence => agence.id).includes(agenceMilo.id) | ||
) | ||
} | ||
|
||
function ajouterLesInformationsGeographiques( | ||
agencesNonCejReferentiel, | ||
agencesCej | ||
) { | ||
for (let agenceNonCej of agencesNonCejReferentiel) { | ||
const departement = agenceNonCej['Code département'] | ||
const autreAgencesCejMemeDepartement = agencesCej.find( | ||
agenceCej => agenceCej.code_departement === departement | ||
) | ||
|
||
if (autreAgencesCejMemeDepartement) { | ||
agenceNonCej.codeRegion = autreAgencesCejMemeDepartement.code_region | ||
agenceNonCej.nomRegion = autreAgencesCejMemeDepartement.nom_region | ||
agenceNonCej.codeDepartement = departement | ||
agenceNonCej.nomDepartement = | ||
autreAgencesCejMemeDepartement.nom_departement | ||
agenceNonCej.timezone = autreAgencesCejMemeDepartement.timezone | ||
} else { | ||
agenceNonCej.codeRegion = '-' | ||
agenceNonCej.nomRegion = 'Structure régionale -' | ||
agenceNonCej.codeDepartement = departement | ||
agenceNonCej.nomDepartement = 'Structure départementale -' | ||
agenceNonCej.timezone = '-' | ||
} | ||
} | ||
} | ||
|
||
async function persisterLesAgencesSansConseillersCej( | ||
agencesNonCejReferentiel, | ||
transaction | ||
) { | ||
for (let agenceNonCej of agencesNonCejReferentiel) { | ||
await sequelize.query( | ||
` | ||
INSERT INTO agence (id, nom_agence, nom_region, code_departement, structure, code_region, nom_departement, timezone, nom_usuel) | ||
VALUES agence (:id, :nom_agence, :nom_region, :code_departement, 'MILO', :code_region, :nom_departement, :timezone, :nom_usuel);`, | ||
{ | ||
replacements: { | ||
id: agenceNonCej.id, | ||
nom_agence: agenceNonCej.nom_officiel, | ||
nom_region: agenceNonCej.nomRegion, | ||
code_departement: agenceNonCej.codeDepartement, | ||
code_region: agenceNonCej.codeRegion, | ||
nom_departement: agenceNonCej.nomDepartement, | ||
timezone: agenceNonCej.timezone, | ||
nom_usuel: agenceNonCej.nomUsuel | ||
}, | ||
transaction | ||
} | ||
) | ||
await sequelize.query( | ||
` | ||
INSERT INTO structure_milo (id, nom_officiel, nom_usuel, nom_region, code_region, nom_departement, code_departement, timezone) | ||
VALUES structure_milo (:id, :nom_officiel, :nom_usuel, :nom_region, :code_region, :nom_departement, :code_departement, :timezone);`, | ||
{ | ||
replacements: { | ||
id: agenceNonCej.id, | ||
nom_officiel: agenceNonCej.nom_officiel, | ||
nom_usuel: agenceNonCej.nom_usuel, | ||
nom_region: agenceNonCej.nomRegion, | ||
code_region: agenceNonCej.codeRegion, | ||
nom_departement: agenceNonCej.nomDepartement, | ||
code_departement: agenceNonCej.codeDepartement, | ||
timezone: agenceNonCej.timezone | ||
}, | ||
transaction | ||
} | ||
) | ||
} | ||
} | ||
|
||
async function persisterLeNomUsuelDansLesAgencesCej(agencesCej, transaction) { | ||
for (let agenceCej of agencesCej) { | ||
await sequelize.query(`UPDATE agence SET nom_usuel = ? WHERE id = ?;`, { | ||
replacements: [agenceCej.nom_usuel, agenceCej.id], | ||
transaction | ||
}) | ||
} | ||
} |