'use strict'; const cdnHelper = require('./cdn.helper'); const valuesComposer = (values) => values.map(value => ({ id: value.id, name: value.name, })); const commentsComposer = (comments) => comments.map(comment => ({ ...comment, userId: undefined, user: { ...comment.user, profile_picture: cdnHelper.getCDNMediaUrl(comment.user.profile_picture) } })) const multimediaComposer = (multimedias) => multimedias.map(multimedia => ({ ...multimedia, ...multimedia.multimediaFile, type: multimedia.type, media_type: multimedia.multimediaFile.type, multimediaFile: undefined, createdAt: undefined, updatedAt: undefined, userId: undefined, url: (multimedia.multimediaFile.provider === 'cdn') ? cdnHelper.getCDNMediaUrl(multimedia.multimediaFile.url) : multimedia.multimediaFile.url, })); const socialNetworksComposer = (speaker, context) => { return { rrss: { twitter: speaker.twitter ? speaker.twitter : null, facebook: speaker.facebook ? speaker.facebook : null, youtube: speaker.youtube ? speaker.youtube : null, linkedin: speaker.linkedin ? speaker.linkedin : null, instagram: speaker.instagram ? speaker.instagram : null, web: speaker.web ? speaker.web : null }, twitter: undefined, facebook: undefined, youtube: undefined, linkedin: undefined, instagram: undefined, web: undefined }; }; const speakerComposer = (speaker, context) => { let multimedias = []; if (context.scopes.includes('includeMultimedias')) { multimedias = multimediaComposer(speaker.multimedias); }; let comments = []; if (context.scopes.includes('includeComments')) { comments = commentsComposer(speaker.comments); }; speaker.typename = speaker.type.name; delete speaker.type; speaker.values = valuesComposer(speaker.values); const rrss = socialNetworksComposer(speaker, context); return Object.assign({}, speaker, rrss, { multimedias: multimedias }, { comments: comments }, ) }; const eventComposer = (event, context) => { if (context.scopes.includes('includeVenue')) { delete event.venue.updatedAt; delete event.venue.createdAt; event.venue.image_url = cdnHelper.getCDNCityMediaUrl(event.venue.city); }; let multimedias = [] if (context.scopes.includes('includeMultimedias')) { multimedias = multimediaComposer(event.multimedias) }; let speakers = [] if (context.scopes.includes('includeSpeakers')) { speakers = event.details.map((detail) => ({ order: detail.order, ...speakerComposer(detail.speaker), })) }; return Object.assign({}, event, { multimedias: multimedias }, { details: undefined }, { speakers: speakers } ) }; const entityComposer = (entity, context) => { delete entity.contact_person; delete entity.contact_email; return Object.assign({}, entity, ) }; module.exports = { entityComposer, speakerComposer, eventComposer }