Added initial support for trigger based automation
This commit is contained in:
parent
cc1c70d57f
commit
b16209f23e
36 changed files with 2025 additions and 263 deletions
|
@ -21,7 +21,7 @@ module.exports.list = (start, limit, callback) => {
|
|||
return callback(err);
|
||||
}
|
||||
|
||||
connection.query('SELECT SQL_CALC_FOUND_ROWS * FROM campaigns ORDER BY name LIMIT ? OFFSET ?', [limit, start], (err, rows) => {
|
||||
connection.query('SELECT SQL_CALC_FOUND_ROWS * FROM campaigns ORDER BY scheduled DESC LIMIT ? OFFSET ?', [limit, start], (err, rows) => {
|
||||
if (err) {
|
||||
connection.release();
|
||||
return callback(err);
|
||||
|
@ -122,8 +122,8 @@ module.exports.filter = (request, parent, callback) => {
|
|||
|
||||
processQuery({
|
||||
// only find normal and RSS parent campaigns at this point
|
||||
where: '`type` IN (?,?)',
|
||||
values: [1, 2]
|
||||
where: '`type` IN (?,?,?)',
|
||||
values: [1, 2, 4]
|
||||
});
|
||||
}
|
||||
};
|
||||
|
@ -428,6 +428,9 @@ module.exports.create = (campaign, opts, callback) => {
|
|||
}
|
||||
|
||||
switch ((campaign.type || '').toString().trim().toLowerCase()) {
|
||||
case 'triggered':
|
||||
campaign.type = 4;
|
||||
break;
|
||||
case 'rss':
|
||||
campaign.type = 2;
|
||||
break;
|
||||
|
@ -453,13 +456,26 @@ module.exports.create = (campaign, opts, callback) => {
|
|||
return callback(new Error('RSS URL must be set and needs to be a valid URL'));
|
||||
}
|
||||
|
||||
lists.get(campaign.list, (err, list) => {
|
||||
let getList = (listId, callback) => {
|
||||
if (campaign.type === 4) {
|
||||
return callback(null, false);
|
||||
}
|
||||
|
||||
lists.get(listId, (err, list) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
if (!list) {
|
||||
return callback(new Error('Selected list not found'));
|
||||
}
|
||||
return callback(null, list);
|
||||
});
|
||||
};
|
||||
|
||||
getList(campaign.list, err => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
if (!list) {
|
||||
return callback(new Error('Selected list not found'));
|
||||
}
|
||||
|
||||
let keys = ['name', 'type'];
|
||||
let values = [name, campaign.type];
|
||||
|
@ -474,6 +490,11 @@ module.exports.create = (campaign, opts, callback) => {
|
|||
values.push(2, opts.parent);
|
||||
}
|
||||
|
||||
if (campaign.type === 4) {
|
||||
keys.push('status');
|
||||
values.push(6); // active
|
||||
}
|
||||
|
||||
let create = next => {
|
||||
Object.keys(campaign).forEach(key => {
|
||||
let value = typeof campaign[key] === 'number' ? campaign[key] : (campaign[key] || '').toString().trim();
|
||||
|
@ -623,13 +644,22 @@ module.exports.update = (id, updates, callback) => {
|
|||
campaign.segment = 0;
|
||||
}
|
||||
|
||||
lists.get(campaign.list, (err, list) => {
|
||||
let getList = (listId, callback) => {
|
||||
lists.get(listId, (err, list) => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
if (!list) {
|
||||
return callback(new Error('Selected list not found'));
|
||||
}
|
||||
return callback(null, list);
|
||||
});
|
||||
};
|
||||
|
||||
getList(campaign.list, err => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
if (!list) {
|
||||
return callback(new Error('Selected list not found'));
|
||||
}
|
||||
|
||||
let keys = ['name'];
|
||||
let values = [name];
|
||||
|
@ -728,27 +758,19 @@ module.exports.delete = (id, callback) => {
|
|||
}
|
||||
|
||||
connection.query('DELETE FROM campaigns WHERE id=? LIMIT 1', [id], (err, result) => {
|
||||
connection.release();
|
||||
if (err) {
|
||||
connection.release();
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
let affected = result && result.affectedRows || 0;
|
||||
|
||||
connection.query('DELETE FROM links WHERE campaign=?', [id], err => {
|
||||
connection.release();
|
||||
removeCampaignTables(id, err => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
removeCampaignTables(id, err => {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
caches.cache.delete('sender queue');
|
||||
return callback(null, affected);
|
||||
});
|
||||
caches.cache.delete('sender queue');
|
||||
return callback(null, affected);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -841,7 +863,7 @@ module.exports.reset = (id, callback) => {
|
|||
}
|
||||
|
||||
caches.cache.delete('sender queue');
|
||||
connection.query('DELETE FROM links WHERE campaign=?', [id], err => {
|
||||
connection.query('UPDATE links SET `clicks`=0 WHERE campaign=?', [id], err => {
|
||||
if (err) {
|
||||
connection.release();
|
||||
return callback(err);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue