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

36 lines (35 loc) • 3 kB
import { Id, Nom, Pivot } from '../../../models'; import { ficheAccedLibreIfAny, adresse, fraisAChargeIfAny, contactIfAny, horairesIfAny, autresFormationsLabelsIfAny, dispositifProgrammesNationauxIfAny, localisationIfAny, modalitesAccompagnementIfAny, presentationIfAny, priseRdvIfAny, sourceIfAny, structureParenteIfAny, typologiesIfAny, itinerancesIfAny, servicesIfAny, modalitesAccessIfAny, publicsSpecifiquementAdressesIfAny, priseEnChargeSpecifiqueIfAny, formationsLabelsIfAny } from './from-schema-lieux-de-mediation-numerique-fields'; const optionalFields = (schemaLieuMediationNumeriqueItem) => { const servicesFound = servicesIfAny(schemaLieuMediationNumeriqueItem.services); return { ...servicesFound, ...localisationIfAny(schemaLieuMediationNumeriqueItem.latitude, schemaLieuMediationNumeriqueItem.longitude), ...typologiesIfAny(schemaLieuMediationNumeriqueItem.typologie), ...contactIfAny(schemaLieuMediationNumeriqueItem), ...horairesIfAny(schemaLieuMediationNumeriqueItem.horaires), ...presentationIfAny(schemaLieuMediationNumeriqueItem), ...sourceIfAny(schemaLieuMediationNumeriqueItem.source), ...structureParenteIfAny(schemaLieuMediationNumeriqueItem.structure_parente), ...publicsSpecifiquementAdressesIfAny(schemaLieuMediationNumeriqueItem.publics_specifiquement_adresses, servicesFound.services), ...priseEnChargeSpecifiqueIfAny(schemaLieuMediationNumeriqueItem.prise_en_charge_specifique, servicesFound.services), ...fraisAChargeIfAny(schemaLieuMediationNumeriqueItem.frais_a_charge, servicesFound.services), ...itinerancesIfAny(schemaLieuMediationNumeriqueItem.itinerance, servicesFound.services), ...dispositifProgrammesNationauxIfAny(schemaLieuMediationNumeriqueItem.dispositif_programmes_nationaux), ...formationsLabelsIfAny(schemaLieuMediationNumeriqueItem.formations_labels), ...autresFormationsLabelsIfAny(schemaLieuMediationNumeriqueItem.autres_formations_labels), ...modalitesAccompagnementIfAny(schemaLieuMediationNumeriqueItem.modalites_accompagnement, servicesFound.services), ...modalitesAccessIfAny(schemaLieuMediationNumeriqueItem.modalites_acces, servicesFound.services), ...ficheAccedLibreIfAny(schemaLieuMediationNumeriqueItem.fiche_acces_libre), ...priseRdvIfAny(schemaLieuMediationNumeriqueItem.prise_rdv) }; }; export const fromSchemaLieuDeMediationNumerique = (schemaLieuMediationNumeriqueItem) => ({ id: Id(schemaLieuMediationNumeriqueItem.id), pivot: Pivot(schemaLieuMediationNumeriqueItem.pivot), nom: Nom(schemaLieuMediationNumeriqueItem.nom), ...adresse(schemaLieuMediationNumeriqueItem), date_maj: new Date(schemaLieuMediationNumeriqueItem.date_maj), ...optionalFields(schemaLieuMediationNumeriqueItem) }); export const fromSchemaLieuxDeMediationNumerique = (schemaLieuxMediationNumerique) => schemaLieuxMediationNumerique.map(fromSchemaLieuDeMediationNumerique);