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

56 lines (55 loc) • 4.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fromSchemaDataInclusion = exports.mergeServices = void 0; const models_1 = require("../../../models"); const mandatory_siret_or_rna_error_1 = require("./errors/mandatory-siret-or-rna.error"); const from_schema_data_inclusion_fields_1 = require("./from-schema-data-inclusion-fields"); const toSingleService = (mergedService, service) => ({ ...mergedService, ...(0, from_schema_data_inclusion_fields_1.mergeThematiques)(mergedService.thematiques, service.thematiques), ...(0, from_schema_data_inclusion_fields_1.mergeFrais)(mergedService.frais, service.frais), ...(0, from_schema_data_inclusion_fields_1.mergeProfils)(mergedService.profils, service.profils), ...(0, from_schema_data_inclusion_fields_1.mergeTypes)(mergedService.types, service.types), ...(0, from_schema_data_inclusion_fields_1.mergeModesAccueil)(mergedService.modes_accueil, service.modes_accueil), ...(0, from_schema_data_inclusion_fields_1.mergePriseRdv)(mergedService.prise_rdv, service.prise_rdv), ...(0, from_schema_data_inclusion_fields_1.mergeModesOrientationBeneficiaire)(mergedService.modes_orientation_beneficiaire, service.modes_orientation_beneficiaire), ...(0, from_schema_data_inclusion_fields_1.mergeModesOrientationAccompagnateur)(mergedService.modes_orientation_accompagnateur, service.modes_orientation_accompagnateur) }); const mergeServices = (services, structure) => services.reduce(toSingleService, { id: `${structure.id}-mediation-numerique`, nom: 'Médiation numérique', source: structure.source ?? '', structure_id: structure.id, thematiques: [] }); exports.mergeServices = mergeServices; const throwMandatorySiretOrRnaError = () => { throw new mandatory_siret_or_rna_error_1.MandatorySiretOrRnaError(); }; const ifAnyPublicSpecifiquementAdresseInArray = (publicSpecifiquementAdresse) => ((publicSpecifiquementAdresse.publics_specifiquement_adresses?.length ?? 0) > 0 ? publicSpecifiquementAdresse : {}); const ifAnyPriseEnChargeSpecifiqueInArray = (priseEnChargeSpecifique) => ((priseEnChargeSpecifique.prise_en_charge_specifique?.length ?? 0) > 0 ? priseEnChargeSpecifique : {}); const fromSchemaDataInclusionItem = (structure, service) => ({ id: (0, models_1.Id)(structure.id), nom: (0, models_1.Nom)(structure.nom), pivot: (0, models_1.Pivot)(structure.siret ?? structure.rna ?? throwMandatorySiretOrRnaError()), ...(0, from_schema_data_inclusion_fields_1.adresseFromDataInclusion)(structure), ...(0, from_schema_data_inclusion_fields_1.localisationFromDataInclusion)(structure.latitude, structure.longitude), ...(0, from_schema_data_inclusion_fields_1.servicesFromDataInclusion)(service.thematiques), date_maj: new Date(structure.date_maj), ...(0, from_schema_data_inclusion_fields_1.contactFromDataInclusion)(structure.courriel, structure.telephone, structure.site_web), ...(0, from_schema_data_inclusion_fields_1.sourceFromDataInclusion)(structure.source), ...(0, from_schema_data_inclusion_fields_1.accessibiliteFromDataInclusion)(structure.accessibilite), ...(0, from_schema_data_inclusion_fields_1.conditionsAccesFromDataInclusion)(service.frais), ...(0, from_schema_data_inclusion_fields_1.horairesFromDataInclusion)(structure.horaires_ouverture), ...(0, from_schema_data_inclusion_fields_1.labelsFromDataInclusion)(structure.labels_nationaux, structure.labels_autres), ...(0, from_schema_data_inclusion_fields_1.modalitesAccompagnementFromDataInclusion)(service.types, service.modes_accueil), ...(0, from_schema_data_inclusion_fields_1.modalitesAccesFromDataInclusion)([...(service.modes_orientation_beneficiaire ?? []), ...(service.modes_orientation_accompagnateur ?? [])], (0, from_schema_data_inclusion_fields_1.priseRdvFromDataInclusion)(service.prise_rdv)), ...(0, from_schema_data_inclusion_fields_1.presentationFromDataInclusion)(structure.presentation_detail, structure.presentation_resume), ...(0, from_schema_data_inclusion_fields_1.priseRdvFromDataInclusion)(service.prise_rdv), ...ifAnyPublicSpecifiquementAdresseInArray((0, from_schema_data_inclusion_fields_1.publicSpecifiquementAdresseFromDataInclusion)(service.profils)), ...ifAnyPriseEnChargeSpecifiqueInArray((0, from_schema_data_inclusion_fields_1.priseEnChargeSpecifiqueFromDataInclusion)(service.profils)), ...(0, from_schema_data_inclusion_fields_1.structureParenteFromDataInclusion)(structure.structure_parente), ...(structure.typologie == null ? {} : (0, from_schema_data_inclusion_fields_1.typologiesFromDataInclusion)(from_schema_data_inclusion_fields_1.TYPOLOGIES_MAP.get(structure.typologie))) }); const fromSchemaDataInclusion = (services, structure) => fromSchemaDataInclusionItem(structure, (0, exports.mergeServices)(services, structure)); exports.fromSchemaDataInclusion = fromSchemaDataInclusion;