UNPKG

@speakr/speakr-module-services

Version:
64 lines (56 loc) 1.99 kB
'use strict'; const db = require('../../db'); const account = require('../account'); module.exports = { areDuplicatesAcceptable, // this one may be outdated... talk to Felipe about the logic onlyAllowDuplicatePermalinksAcrossNetworks, validateSubmission }; function validateSubmission(options) { return new Promise((resolve, reject) => { let errors = []; if ( options.initiatives.product == 'Content Creation' && ( options.initiatives.user_created_media_type == 'Video' || options.initiatives.user_created_media_type == 'Image') ) { if ( options.req.file == null) { errors.push('Missing media file.') } } if (errors.length == 0) { resolve(options); } else { reject(errors); } }) } function areDuplicatesAcceptable(network_id, influencer_id, platform_id, account_username) { return account.validate.isExternal(network_id, influencer_id, platform_id, account_username) .then(externalBoolean => { let allowDuplicates; if(externalBoolean === false) { // no duplicates allowed for any internals allowDuplicates = false; } else if(network_id === 1 && externalBoolean) { // no duplicates allowed for speakr external (bc we don't want to generate a line item) allowDuplicates = false; } else if(network_id !== 1 && externalBoolean) { // duplicates are okay non-speakr externals (bc non-speakr externals never create line items) allowDuplicates = true; } return allowDuplicates; }); } function onlyAllowDuplicatePermalinksAcrossNetworks(network_id, permalink) { return new Promise((resolve, reject) => { return db.creatives.findAll({ where: { permalink: permalink }}) .then(creatives => { const network_ids = creatives.map(creative => creative.network_id); if(!creatives) { resolve(true); } else if (!network_ids.includes(network_id)) { resolve(true); } else if (network_ids.includes(network_id)) { resolve(false); } }) }) }