Added links click count stats to campaign view
This commit is contained in:
parent
84869dafa7
commit
09de6e4576
5 changed files with 396 additions and 245 deletions
|
@ -177,29 +177,89 @@ module.exports.get = (id, withSegment, callback) => {
|
|||
|
||||
let campaign = tools.convertKeys(rows[0]);
|
||||
|
||||
if (!campaign.segment || !withSegment) {
|
||||
return callback(null, campaign);
|
||||
} else {
|
||||
segments.get(campaign.segment, (err, segment) => {
|
||||
if (err || !segment) {
|
||||
// ignore
|
||||
return callback(null, campaign);
|
||||
}
|
||||
segments.subscribers(segment.id, true, (err, subscribers) => {
|
||||
if (err || !subscribers) {
|
||||
segment.subscribers = 0;
|
||||
} else {
|
||||
segment.subscribers = subscribers;
|
||||
let handleSegment = () => {
|
||||
|
||||
if (!campaign.segment || !withSegment) {
|
||||
return callback(null, campaign);
|
||||
} else {
|
||||
segments.get(campaign.segment, (err, segment) => {
|
||||
if (err || !segment) {
|
||||
// ignore
|
||||
return callback(null, campaign);
|
||||
}
|
||||
campaign.segment = segment;
|
||||
return callback(null, campaign);
|
||||
segments.subscribers(segment.id, true, (err, subscribers) => {
|
||||
if (err || !subscribers) {
|
||||
segment.subscribers = 0;
|
||||
} else {
|
||||
segment.subscribers = subscribers;
|
||||
}
|
||||
campaign.segment = segment;
|
||||
return callback(null, campaign);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
if (!campaign.parent) {
|
||||
return handleSegment();
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
connection.query('SELECT `id`, `cid`, `name` FROM campaigns WHERE id=?', [campaign.parent], (err, rows) => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
if (!rows || !rows.length) {
|
||||
return handleSegment();
|
||||
}
|
||||
|
||||
campaign.parent = tools.convertKeys(rows[0]);
|
||||
return handleSegment();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.getLinks = (id, callback) => {
|
||||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Campaign ID'));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
let query = 'SELECT `id`, `url`, `clicks` FROM links WHERE `campaign`=? LIMIT 1000';
|
||||
connection.query(query, [id], (err, rows) => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
if (!rows || !rows.length) {
|
||||
return callback(null, []);
|
||||
}
|
||||
|
||||
let links = rows.map(
|
||||
row => tools.convertKeys(row)
|
||||
).sort((a, b) => (
|
||||
a.url.replace(/^https?:\/\/(www.)?/, '').toLowerCase()).localeCompare(b.url.replace(/^https?:\/\/(www.)?/, '').toLowerCase()));
|
||||
|
||||
return callback(null, links);
|
||||
});
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.create = (campaign, opts, callback) => {
|
||||
|
||||
campaign = tools.convertKeys(campaign);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue