2019-07-09 18:34:39 +00:00
|
|
|
/* global Venue */
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
const _ = require('lodash');
|
|
|
|
|
const { generateService, parseParamsToFindOptions } = require('../../helpers/service.helper');
|
|
|
|
|
const Sequelize = require('sequelize');
|
|
|
|
|
const models = require('../../core/models');
|
|
|
|
|
|
2019-07-19 15:47:06 +00:00
|
|
|
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
|
|
|
|
|
};
|
2019-07-09 18:34:39 +00:00
|
|
|
};
|
|
|
|
|
|
2019-07-19 15:47:06 +00:00
|
|
|
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);
|
|
|
|
|
},
|
2019-07-21 09:20:16 +00:00
|
|
|
|
2019-07-19 15:47:06 +00:00
|
|
|
}
|
|
|
|
|
|
2019-07-09 18:34:39 +00:00
|
|
|
module.exports = generateService(models.Speaker, extraMethods);
|