UNPKG

@speakr/speakr-module-services

Version:
104 lines (95 loc) 4.49 kB
'use strict'; 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); }