@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
JavaScript
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));