@speakr/speakr-module-services
Version:
SPEAKR Shared Service Module
84 lines (76 loc) • 4.24 kB
JavaScript
;
module.exports = {
publicData
};
function publicData(options) {
var d = new Date();
d.setHours(0,0,0,0);
options.notifications = options.notifications.map(notification => {
let creative = notification.creative;
let invite = notification.invite;
let line_item = notification.line_item;
if (notification.creative) {
creative = {
id_hash: creative.id_hash,
submission_status: creative.submission_status,
offer_price: `$${parseFloat(creative.offer_price).toFixed(2)}`,
scheduled_at: creative.scheduled_at,
campaign: {
disapproved_words: creative.invite.initiative.disapproved_words,
required_words: creative.invite.initiative.required_words,
id_hash: creative.invite.id_hash,
current_username: creative.invite.account.current_username,
brand: creative.invite.initiative.campaign.brand.name,
campaign: creative.invite.initiative.campaign.title,
initiative: creative.invite.initiative.name,
network: creative.invite.initiative.network.name,
platform: creative.invite.initiative.platform ? creative.invite.initiative.platform.name : null,
product_type: creative.invite.initiative.product == 'Content Distribution' ? 'Brand Provided' : 'User Created',
media_type: creative.invite.initiative.user_created_media_type ? creative.invite.initiative.user_created_media_type.charAt(0).toUpperCase() + creative.invite.initiative.user_created_media_type.slice(1) : null,
offer_price: creative.invite.initiative.payment_type == 'Special' ? 'Special' : (!!creative.invite.offer_price ? `$${parseFloat(creative.invite.offer_price).toFixed(2)}` : null),
end_time: creative.invite.initiative.end_date,
status: parseInt(creative.invite.creatives.length) > 0 ? `${creative.invite.creatives.length} submission(s)` :
(creative.invite.created_at > (new Date().getDate() - 2) ? 'New' : (creative.invite.initiative.end_date < new Date()) ? 'Expired' : ''),
instructions_json: creative.invite.initiative.instructions_json,
daily_creative_limit: {
allowed: creative.invite.initiative.posts_per_day,
remaining: creative.invite.initiative.posts_per_day - creative.invite.creatives.filter(creative => creative.created_at > d).length
}
}
};
}
if (notification.invite) {
invite = {
disapproved_words: invite.initiative.disapproved_words,
required_words: invite.initiative.required_words,
id_hash: invite.id_hash,
current_username: invite.account ? invite.account.current_username : null,
brand: invite.initiative.campaign.brand.name,
campaign: invite.initiative.campaign.title,
initiative: invite.initiative.name,
network: invite.initiative.network.name,
platform: invite.initiative.platform ? invite.initiative.platform.name : null,
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,
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 {
type: notification.type,
created_at: notification.created_at,
creative: creative,
invite: invite,
line_item: line_item
};
});
return Promise.resolve(options);
}