@speakr/speakr-module-services
Version:
SPEAKR Shared Service Module
64 lines (56 loc) • 1.99 kB
JavaScript
;
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);
}
})
})
}