mirror of
https://github.com/fleetdm/fleet
synced 2026-05-22 16:39:01 +00:00
45 lines
1.7 KiB
JavaScript
45 lines
1.7 KiB
JavaScript
|
|
module.exports = {
|
||
|
|
|
||
|
|
|
||
|
|
friendlyName: 'Migrate lead source to contact source',
|
||
|
|
|
||
|
|
|
||
|
|
description: '',
|
||
|
|
|
||
|
|
|
||
|
|
fn: async function () {
|
||
|
|
|
||
|
|
sails.log('Running custom shell script... (`sails run migrate-lead-source-to-contact-source`)');
|
||
|
|
|
||
|
|
require('assert')(sails.config.custom.salesforceIntegrationUsername);
|
||
|
|
require('assert')(sails.config.custom.salesforceIntegrationPasskey);
|
||
|
|
|
||
|
|
// Log in to Salesforce.
|
||
|
|
let jsforce = require('jsforce');
|
||
|
|
let salesforceConnection = new jsforce.Connection({
|
||
|
|
loginUrl : 'https://fleetdm.my.salesforce.com'
|
||
|
|
});
|
||
|
|
await salesforceConnection.login(sails.config.custom.salesforceIntegrationUsername, sails.config.custom.salesforceIntegrationPasskey);
|
||
|
|
|
||
|
|
let POSSIBLE_CONTACT_SOURCES = ['Dripify', 'Website - Contact forms', 'Website - Sign up', 'Website - Swag request', 'Manual research', 'Initial qualification meeting'];
|
||
|
|
let contacts = (
|
||
|
|
await salesforceConnection.query(`SELECT Id, LeadSource, FirstName FROM Contact WHERE Contact_source__c = NULL AND LeadSource IN (${POSSIBLE_CONTACT_SOURCES.map((src)=>'\''+src+'\'').join(', ')})`)
|
||
|
|
// await salesforceConnection.query(`SELECT Id, LeadSource, FirstName FROM Contact WHERE LastName = 'McNeil' AND FirstName IN (${['Mike'].map((src)=>'\''+src+'\'').join(', ')}) AND LeadSource IN (${POSSIBLE_CONTACT_SOURCES.map((src)=>'\''+src+'\'').join(', ')})`)
|
||
|
|
).records;// « unpack the sausage
|
||
|
|
// console.log(contacts);
|
||
|
|
|
||
|
|
await sails.helpers.flow.simultaneouslyForEach(contacts, async (contact)=>{
|
||
|
|
// console.log(`${contact.FirstName} :: ${contact.LeadSource}`);
|
||
|
|
await salesforceConnection.sobject('Contact').update({
|
||
|
|
Id: contact.Id,
|
||
|
|
Contact_source__c: contact.LeadSource//eslint-disable-line camelcase
|
||
|
|
});
|
||
|
|
});//∞
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
};
|
||
|
|
|