@speakr/speakr-module-services
Version:
SPEAKR Shared Service Module
104 lines (95 loc) • 4.49 kB
JavaScript
;
module.exports = {
publicData,
influencerPublicData,
influencerPublicDataSingle
};
function publicData(options) {
// 1. Get the invite base object
let invites = options.invites;
let initiatives = options.initiatives;
// 2. Delete the options invites
delete options.invites;
// 3. Reset the options users
options.invites = {
initiatives: initiatives,
invites: invites
};
// 4. Return the options variable
return Promise.resolve(options);
}
function influencerPublicData(options) {
var d = new Date();
d.setHours(0,0,0,0);
options.invites = {
count: options.invites.count,
rows: options.invites.rows.map((invite) => {
return {
id_hash: invite.id_hash,
updated_at: invite.updated_at,
current_username: invite.account.current_username,
brand: invite.initiative.campaign.brand.name,
campaign: invite.initiative.campaign.title,
initiative: invite.initiative.name,
network: invite.initiative.network.name,
platform: invite.initiative.platform.name,
product_type: invite.initiative.product == 'Content Distribution' ? 'Brand Provided' : 'User Created',
media_type: invite.initiative.user_created_media_type ? invite.initiative.user_created_media_type.charAt(0).toUpperCase() + invite.initiative.user_created_media_type.slice(1) : null,
offer_price: invite.initiative.payment_type == 'Special' ? 'Special' :
(!!invite.offer_price ? `$${parseFloat(invite.offer_price).toFixed(2)}` : null),
promo_link: invite.promo_link,
end_time: invite.initiative.end_date,
status: parseInt(invite.creatives.length) > 0 ? `${invite.creatives.length} submission(s)` :
(invite.created_at > (new Date().getDate() - 2) ? 'New' : (invite.initiative.end_date < new Date()) ? 'Expired' : ''),
instructions_json: invite.initiative.instructions_json,
daily_creative_limit: {
allowed: invite.initiative.posts_per_day,
remaining: invite.initiative.posts_per_day - invite.creatives.filter(creative => creative.created_at > d).length
}
}
})
};
return Promise.resolve(options);
}
function influencerPublicDataSingle(options) {
let invite = options.invites;
var d = new Date();
d.setHours(0,0,0,0);
let required_words = invite.initiative.required_words;
if (invite.initiative.disclosure_type == 'Custom') {
required_words.push(invite.initiative.custom_disclosure);
} else if (invite.initiative.disclosure_type == 'Standard') {
required_words.push(invite.initiative.dynamic_disclosure);
}
required_words = [...new Set(required_words)];
options.invites = {
image_link: invite.initiative.image_link,
video_link: invite.initiative.video_link,
target_link: invite.initiative.target_link,
standard_disapproved_words: invite.initiative.standard_disapproved_words ? options.profanities : [],
disapproved_words: invite.initiative.disapproved_words,
required_words: required_words,
id_hash: invite.id_hash,
current_username: invite.account.current_username,
brand: invite.initiative.campaign.brand.name,
campaign: invite.initiative.campaign.title,
initiative: invite.initiative.name,
network: invite.initiative.network.name,
platform: invite.initiative.platform.name,
product_type: invite.initiative.product == 'Content Distribution' ? 'Brand Provided' : 'User Created',
media_type: invite.initiative.user_created_media_type ? invite.initiative.user_created_media_type.charAt(0).toUpperCase() + invite.initiative.user_created_media_type.slice(1) : null,
offer_price: invite.initiative.payment_type == 'Special' ? 'Special' :
(!!invite.offer_price ? `$${parseFloat(invite.offer_price).toFixed(2)}` : null),
end_time: invite.initiative.end_date,
promo_link: invite.promo_link,
status: parseInt(invite.creatives.length) > 0 ? `${invite.creatives.length} submission(s)` :
(invite.created_at > (new Date().getDate() - 2) ? 'New' : (invite.initiative.end_date < new Date()) ? 'Expired' : ''),
instructions_json: invite.initiative.instructions_json,
daily_creative_limit: {
allowed: invite.initiative.posts_per_day,
remaining: invite.initiative.posts_per_day - invite.creatives.filter(creative => creative.created_at > d).length
},
point_of_contacts: invite.initiative.campaign.point_of_contacts
};
return Promise.resolve(options);
}