@speakr/speakr-module-services
Version:
SPEAKR Shared Service Module
72 lines (67 loc) • 1.83 kB
JavaScript
;
const db = require('../../db');
module.exports = {
isExternal,
exists
};
function exists(options) {
return db.accounts.findOne({
where: {
platform_id: options.platforms.id,
platform_user_id: options.id,
deleted_at: null
}})
.then(account => {
if (!!account) {
return db.accounts.findOne({
where: {
parent_id: account.id,
deleted_at: null
}})
.then(childAccount => {
if (!!childAccount) {
return Promise.reject('account_exists');
} else {
return Promise.resolve(options);
}
})
} else {
return Promise.resolve(options);
}
});
}
function isExternal(network_id, influencer_id, platform_id, account_username) {
if(!account_username) {
account_username = 'unknown';
}
return db.accounts.findOne({
where: {
influencer_id: influencer_id,
platform_id: platform_id
},
include: {model: db.accounts_networks, where: {network_id: network_id }}
})
.then(accountObj => {
if (!accountObj) {
return db.influencers.findOne({
where: { id: influencer_id }
})
.then(inf => {
let influencer;
if(inf) {
influencer = inf.dataValues ? inf.dataValues : inf;
} else {
influencer = {};
}
return true;
// return db.Sequelize.Promise.reject({
// error: `Error with account ${account_username}. The influencer ${influencer.first_name || 'unknown'} ${influencer.last_name || 'unknown'} (email: ${influencer.email || 'unknown'}) does not have an account in your network.`,
// message: `Edit your csv and try again.`,
// code: 404
// });
});
} else {
return accountObj.accounts_networks.external;
}
});
}