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

38 lines (37 loc) • 2.19 kB
import { accesFields, adresseFields, collecteFields, contactFields, disponibiliteFields, generalFields, labelsFields, localisationFields, presentationFields } from './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 } : {}; export const toSchemaLieuMediationNumerique = (lieuMediationNumerique, withArrondissement = false) => ({ ...generalFields(lieuMediationNumerique), ...adresseFields(lieuMediationNumerique), ...localisationFields(lieuMediationNumerique), ...contactFields(lieuMediationNumerique), ...presentationFields(lieuMediationNumerique), ...accesFields(lieuMediationNumerique), ...labelsFields(lieuMediationNumerique), ...disponibiliteFields(lieuMediationNumerique), ...collecteFields(lieuMediationNumerique), ...arrondissementCodeInsee(withArrondissement, codeInseeForArrondissement(lieuMediationNumerique)) }); export const toSchemaLieuxDeMediationNumerique = (lieuxMediationNumerique, withArrondissement = false) => lieuxMediationNumerique.map((lieuMediationNumerique) => toSchemaLieuMediationNumerique(lieuMediationNumerique, withArrondissement));