fleet/website/scripts/migrate-lead-source-to-contact-source.js

45 lines
1.7 KiB
JavaScript
Raw Normal View History

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
});
});//∞
}
};