UNPKG

@gouvfr-anct/lieux-de-mediation-numerique

Version:

📚 Bibliothèque pour la modélisation des lieux de médiation numérique respectant le standard du schéma de données des lieux de médiation numériques

43 lines (42 loc) • 2.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toSchemaLieuxDeMediationNumerique = exports.toSchemaLieuMediationNumerique = void 0; const to_schema_lieux_de_mediation_numerique_fields_1 = require("./to-schema-lieux-de-mediation-numerique-fields"); const bigCities = [ { codeInsee: '69123', beginArrondissemntIndex: 4, arrondissementInseePrefix: '6938' }, { codeInsee: '13055', beginArrondissemntIndex: 3, arrondissementInseePrefix: '132' }, { codeInsee: '75056', beginArrondissemntIndex: 3, arrondissementInseePrefix: '751' } ]; const isParisLyonOrMarseille = (lieuMediationNumerique, bigCity) => lieuMediationNumerique.adresse.code_insee === bigCity.codeInsee; const getArrondissementCodeInsee = (bigCity, lieuMediationNumerique) => `${bigCity.arrondissementInseePrefix}${lieuMediationNumerique.adresse.code_postal.slice(bigCity.beginArrondissemntIndex, 5)}`; const codeInseeForArrondissement = (lieuMediationNumerique) => bigCities.reduce((codeInsee, bigCity) => isParisLyonOrMarseille(lieuMediationNumerique, bigCity) ? getArrondissementCodeInsee(bigCity, lieuMediationNumerique) : codeInsee, ''); const arrondissementCodeInsee = (withArrondissement, codeInsee) => withArrondissement && codeInsee !== '' ? { code_insee: codeInsee } : {}; const toSchemaLieuMediationNumerique = (lieuMediationNumerique, withArrondissement = false) => ({ ...(0, to_schema_lieux_de_mediation_numerique_fields_1.generalFields)(lieuMediationNumerique), ...(0, to_schema_lieux_de_mediation_numerique_fields_1.adresseFields)(lieuMediationNumerique), ...(0, to_schema_lieux_de_mediation_numerique_fields_1.localisationFields)(lieuMediationNumerique), ...(0, to_schema_lieux_de_mediation_numerique_fields_1.contactFields)(lieuMediationNumerique), ...(0, to_schema_lieux_de_mediation_numerique_fields_1.presentationFields)(lieuMediationNumerique), ...(0, to_schema_lieux_de_mediation_numerique_fields_1.accesFields)(lieuMediationNumerique), ...(0, to_schema_lieux_de_mediation_numerique_fields_1.labelsFields)(lieuMediationNumerique), ...(0, to_schema_lieux_de_mediation_numerique_fields_1.disponibiliteFields)(lieuMediationNumerique), ...(0, to_schema_lieux_de_mediation_numerique_fields_1.collecteFields)(lieuMediationNumerique), ...arrondissementCodeInsee(withArrondissement, codeInseeForArrondissement(lieuMediationNumerique)) }); exports.toSchemaLieuMediationNumerique = toSchemaLieuMediationNumerique; const toSchemaLieuxDeMediationNumerique = (lieuxMediationNumerique, withArrondissement = false) => lieuxMediationNumerique.map((lieuMediationNumerique) => (0, exports.toSchemaLieuMediationNumerique)(lieuMediationNumerique, withArrondissement)); exports.toSchemaLieuxDeMediationNumerique = toSchemaLieuxDeMediationNumerique;