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

73 lines (72 loc) • 5.54 kB
import { Adresse, Contact, FormationsLabels, FraisACharge, Itinerances, DispositifProgrammesNationaux, Localisation, ModaliteAcces, ModalitesAcces, ModalitesAccompagnement, PrisesEnChargeSpecifiques, PublicsSpecifiquementAdresses, Services, toAccessibleLieu, Typologies, Url } from '../../../models'; const toListOf = (listItem) => listItem; export const listFromString = (stringList) => stringList.split('|').map((toListOf)); const hasServices = (services) => services != null && services.length > 0; export const servicesIfAny = (services) => services == null ? {} : { services: Services(listFromString(services)) }; export const localisationIfAny = (latitude, longitude) => latitude == null || longitude == null ? {} : { localisation: Localisation({ latitude, longitude }) }; export const adresse = (schemaLieuMediationNumerique) => ({ adresse: Adresse({ code_postal: schemaLieuMediationNumerique.code_postal, commune: schemaLieuMediationNumerique.commune, voie: schemaLieuMediationNumerique.adresse, ...codeInseeIfAny(schemaLieuMediationNumerique.code_insee), ...complementAdresseIfAny(schemaLieuMediationNumerique.complement_adresse) }) }); const codeInseeIfAny = (codeInsee) => (codeInsee == null ? {} : { code_insee: codeInsee }); const complementAdresseIfAny = (complementAdresse) => complementAdresse == null ? {} : { complement_adresse: complementAdresse }; export const typologiesIfAny = (typologies) => typologies == null ? {} : { typologies: Typologies(listFromString(typologies)) }; const telephoneIfAny = (telephone) => (telephone == null ? {} : { telephone }); const courrielsIfAny = (courriels) => courriels == null ? {} : { courriels: listFromString(courriels) }; const siteWebIfAny = (siteWeb) => (siteWeb == null ? {} : { site_web: listFromString(siteWeb) }); export const contactIfAny = (schemaLieuMediationNumerique) => schemaLieuMediationNumerique.telephone == null && schemaLieuMediationNumerique.courriels == null && schemaLieuMediationNumerique.site_web == null ? {} : { contact: Contact({ ...telephoneIfAny(schemaLieuMediationNumerique.telephone), ...courrielsIfAny(schemaLieuMediationNumerique.courriels), ...siteWebIfAny(schemaLieuMediationNumerique.site_web) }) }; export const horairesIfAny = (horaires) => (horaires == null ? {} : { horaires }); const resumeIfAny = (resume) => (resume == null ? {} : { resume }); const detailIfAny = (detail) => (detail == null ? {} : { detail }); export const presentationIfAny = (schemaLieuMediationNumerique) => schemaLieuMediationNumerique.presentation_resume == null && schemaLieuMediationNumerique.presentation_detail == null ? {} : { presentation: { ...resumeIfAny(schemaLieuMediationNumerique.presentation_resume), ...detailIfAny(schemaLieuMediationNumerique.presentation_detail) } }; export const sourceIfAny = (source) => (source == null ? {} : { source }); export const structureParenteIfAny = (structureParente) => structureParente == null ? {} : { structure_parente: structureParente }; export const publicsSpecifiquementAdressesIfAny = (publicsSpecifiquementAdresses, services) => publicsSpecifiquementAdresses == null || !hasServices(services) ? {} : { publics_specifiquement_adresses: PublicsSpecifiquementAdresses(listFromString(publicsSpecifiquementAdresses)) }; export const priseEnChargeSpecifiqueIfAny = (priseEnChargeSpecifique, services) => priseEnChargeSpecifique == null || !hasServices(services) ? {} : { prise_en_charge_specifique: PrisesEnChargeSpecifiques(listFromString(priseEnChargeSpecifique)) }; export const fraisAChargeIfAny = (conditionsAcces, services) => conditionsAcces == null || !hasServices(services) ? {} : { frais_a_charge: FraisACharge(listFromString(conditionsAcces)) }; export const itinerancesIfAny = (itinerance, services) => itinerance == null || !hasServices(services) ? {} : { itinerance: Itinerances(listFromString(itinerance)) }; export const dispositifProgrammesNationauxIfAny = (dispositifProgrammesNationaux) => dispositifProgrammesNationaux == null ? {} : { dispositif_programmes_nationaux: DispositifProgrammesNationaux(listFromString(dispositifProgrammesNationaux)) }; export const formationsLabelsIfAny = (formationsLabels) => formationsLabels == null ? {} : { formations_labels: FormationsLabels(listFromString(formationsLabels)) }; export const autresFormationsLabelsIfAny = (autresFormationsLabels) => autresFormationsLabels == null ? {} : { autres_formations_labels: listFromString(autresFormationsLabels) }; export const modalitesAccompagnementIfAny = (modalitesAccompagnement, services) => modalitesAccompagnement == null || !hasServices(services) ? {} : { modalites_accompagnement: ModalitesAccompagnement(listFromString(modalitesAccompagnement)) }; const PublicAccess = (modalitesAcces) => modalitesAcces == null ? {} : { modalites_acces: ModalitesAcces(listFromString(modalitesAcces).filter(toAccessibleLieu)) }; const noPublicAccess = () => ({ modalites_acces: ModalitesAcces([ModaliteAcces.PasDePublic]) }); export const modalitesAccessIfAny = (modalitesAcces, services) => hasServices(services) ? PublicAccess(modalitesAcces) : noPublicAccess(); export const ficheAccedLibreIfAny = (ficheAccesLibre) => ficheAccesLibre == null ? {} : { fiche_acces_libre: Url(ficheAccesLibre) }; export const priseRdvIfAny = (priseRdv) => (priseRdv == null ? {} : { prise_rdv: Url(priseRdv) });