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