283 lines
7.9 KiB
JavaScript
283 lines
7.9 KiB
JavaScript
'use strict';
|
|
const cdnHelper = require('./cdn.helper');
|
|
const fetch = require("node-fetch");
|
|
|
|
const partnersCurrent = [{
|
|
name: "CantabriaLabs",
|
|
image: "https://cdnapp2.loquedeverdadimporta.org/partners/cantabria_labs/banner_live.jpg",
|
|
width: "1080",
|
|
height: "540",
|
|
link: "https://es.surveymonkey.com/r/HABITOS-AL-SOL-HELIOCARE-2021"
|
|
},{
|
|
name: "Gonvarri",
|
|
image: "https://cdnapp2.loquedeverdadimporta.org/partners/gonvarri/banner_live.jpg",
|
|
width: "1080",
|
|
height: "540",
|
|
link: "http://www.emotionaldriving.com/mensajes/"
|
|
}, {
|
|
name: "Bizum",
|
|
image: "https://cdnapp2.loquedeverdadimporta.org/banners/banner-bizum-alt-app.png",
|
|
width: "1080",
|
|
height: "540",
|
|
link: ""
|
|
}];
|
|
|
|
const partnersPast = [{
|
|
name: "CantabriaLabs",
|
|
image: "https://cdnapp2.loquedeverdadimporta.org/partners/cantabria_labs/banner_past.jpg",
|
|
width: "1080",
|
|
height: "445",
|
|
link: "default"
|
|
}, {
|
|
name: "Gonvarri",
|
|
image: "https://cdnapp2.loquedeverdadimporta.org/partners/gonvarri/banner_past.jpg",
|
|
width: "1080",
|
|
height: "445",
|
|
link: "default", //"https://twitter.com/hashtag/ED${city}?src=hash"
|
|
}];
|
|
|
|
|
|
|
|
const valuesComposer = (values) => (values) ? values.map(value => ({id: value.id, name: value.name,})): values;
|
|
|
|
const citiesComposer = (city, context) => {
|
|
if (city) {
|
|
|
|
if (city.location)
|
|
city.location = locationComposer(city.location, context);
|
|
|
|
return {
|
|
...city,
|
|
};
|
|
}
|
|
else return city;
|
|
}
|
|
|
|
const locationComposer = (location, context) => {
|
|
if (location) {
|
|
|
|
let multimedias = [];
|
|
if (location.multimedias)
|
|
multimedias = multimediaComposer(location.multimedias);
|
|
|
|
return {
|
|
...location,
|
|
multimedias: multimedias,
|
|
};
|
|
}
|
|
else return location;
|
|
}
|
|
|
|
const commentComposer = (comment, context) => {
|
|
if (comment.user) {
|
|
comment.user_name = comment.user.name + ' ' + comment.user.surname;
|
|
comment.profile_picture = cdnHelper.getCDNMediaUrl(comment.user.profile_picture);
|
|
}else {
|
|
comment.user_name = comment.nameUserOld;
|
|
comment.profile_picture = cdnHelper.getCDNMediaUrl(comment.profile_pictureOld);
|
|
}
|
|
delete comment.nameUserOld;
|
|
delete comment.profile_pictureOld;
|
|
delete comment.userId;
|
|
delete comment.user;
|
|
|
|
return Object.assign({},
|
|
comment);
|
|
};
|
|
|
|
const commentsComposer = (comments) => {
|
|
if (comments) {
|
|
return comments.map(comment => ({
|
|
...commentComposer(comment)
|
|
}));
|
|
}
|
|
else return comments;
|
|
};
|
|
|
|
|
|
const multimediaComposer = (multimedias) => {
|
|
if(multimedias) {
|
|
return 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,
|
|
}));
|
|
}
|
|
else
|
|
return multimedias;
|
|
};
|
|
|
|
|
|
const socialNetworksComposer = (speaker) => {
|
|
if (speaker) {
|
|
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
|
|
};
|
|
}
|
|
else
|
|
return speaker;
|
|
};
|
|
|
|
|
|
const speakerComposer = (speaker, context) => {
|
|
|
|
let multimedias = [];
|
|
if ((context.scopes) && (context.scopes.includes('includeMultimedias') || context.scopes.includes('includeMultimediaAvatar'))) {
|
|
multimedias = multimediaComposer(speaker.multimedias);
|
|
};
|
|
|
|
let comments = [];
|
|
if ((context.scopes) && (context.scopes.includes('includeComments'))) {
|
|
comments = commentsComposer(speaker.comments);
|
|
};
|
|
|
|
if (speaker.type) {
|
|
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) => {
|
|
|
|
const getPartnersData = () => {
|
|
let partners = [];
|
|
|
|
if (event && event.type && event.type.name == 'conference' && event.location && event.location.country == 'España') {
|
|
if (event.stateCode && event.stateCode === 'current_event') {
|
|
return partnersCurrent;
|
|
} else if (event.stateCode === 'closed_event') {
|
|
return partnersPast;
|
|
}
|
|
}
|
|
return partners;
|
|
|
|
|
|
if (event && event.location && event.location.country == 'España') {
|
|
try {
|
|
let urlJSON = undefined;
|
|
if (event.stateCode && event.stateCode === 'current_event') {
|
|
urlJSON = cdnHelper.getCDNCurrentPartnersJSON;
|
|
} else if (event.stateCode === 'closed_event') {
|
|
urlJSON = cdnHelper.getCDNPastPartnersJSON;
|
|
} else {
|
|
return partners;
|
|
}
|
|
|
|
let response = fetch(urlJSON);
|
|
let partners = response.json();
|
|
|
|
return partners;
|
|
} catch(error) {
|
|
return partners;
|
|
}
|
|
}
|
|
|
|
return partners;
|
|
}
|
|
|
|
if ((context.scopes) && (context.scopes.includes('includeVenue'))){
|
|
if (event.venue) {
|
|
delete event.venue.updatedAt;
|
|
delete event.venue.createdAt;
|
|
//event.venue.image_url = cdnHelper.getCDNCityMediaUrl(event.venue.city); <-- se hace en el modelo
|
|
}
|
|
};
|
|
|
|
let multimedias = []
|
|
if ((context.scopes) && (context.scopes.includes('includeMultimedias') || context.scopes.includes('includeMultimediaAvatar'))) {
|
|
multimedias = multimediaComposer(event.multimedias)
|
|
};
|
|
|
|
let comments = [];
|
|
if ((context.scopes) && (context.scopes.includes('includeComments'))) {
|
|
comments = commentsComposer(event.comments);
|
|
};
|
|
|
|
let speakers = []
|
|
let details = []
|
|
if ((context.scopes) && (context.scopes.includes('includeDetails'))) {
|
|
|
|
event.details.map((detail) => {
|
|
if (detail.type == 'speaker')
|
|
speakers.push({
|
|
order: detail.order,
|
|
...speakerComposer(detail.speaker, context),
|
|
});
|
|
if (detail.type == 'info')
|
|
details.push({
|
|
...detail,
|
|
speaker: undefined,
|
|
});
|
|
});
|
|
};
|
|
|
|
let partners = getPartnersData();
|
|
|
|
return Object.assign({},
|
|
event,
|
|
{ multimedias: multimedias },
|
|
{ details: details },
|
|
{ speakers: speakers },
|
|
{ partners: partners },
|
|
)
|
|
};
|
|
|
|
const entityComposer = (entity, context) => {
|
|
|
|
return Object.assign({},
|
|
entity,
|
|
)
|
|
};
|
|
|
|
const usersIdsComposer = (inscriptions) => {
|
|
let usersId = []
|
|
if (inscriptions) {
|
|
inscriptions.map((inscription) => {
|
|
usersId.push(inscription.userId);
|
|
});
|
|
};
|
|
return usersId;
|
|
};
|
|
|
|
|
|
module.exports = {
|
|
entityComposer,
|
|
speakerComposer,
|
|
eventComposer,
|
|
commentComposer,
|
|
citiesComposer,
|
|
locationComposer,
|
|
usersIdsComposer,
|
|
}
|