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