/* global Venue */ 'use strict'; const _ = require('lodash'); const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper'); const Sequelize = require('sequelize'); const models = require('../../core/models'); 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, })); 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) }; const rrss = socialNetworksComposer(speaker, context); return Object.assign({}, speaker, rrss, { multimedias: multimedias }, ) }; const extraMethods = { afterFetchAll: (result, params, context) => { if (!result.count) { return result; } let rows = result.rows.map(row => row.toJSON()); rows = rows.map(speaker => speakerComposer(speaker, context)); return { count: rows.length, rows: rows } }, afterFetchOne: (result, params, context) => { return speakerComposer(result.toJSON(), context); }, } module.exports = generateService(models.Speaker, extraMethods);