mirror of
https://github.com/fleetdm/fleet
synced 2026-04-21 21:47:20 +00:00
Closes: https://github.com/fleetdm/confidential/issues/13968 Changes: - Updated the `deliver-gitops-workshop-request` action to create a historical event record - Added a new intent signal to the create historical event helper
117 lines
4.1 KiB
JavaScript
Vendored
117 lines
4.1 KiB
JavaScript
Vendored
module.exports = {
|
|
|
|
|
|
friendlyName: 'Deliver gitops request submission',
|
|
|
|
|
|
description: '',
|
|
|
|
|
|
inputs: {
|
|
firstName: { type: 'string', required: true },
|
|
lastName: { type: 'string', required: true },
|
|
emailAddress: { type: 'string', isEmail: true, required: true },
|
|
location: { type: 'string', required: true },
|
|
numberOfHosts: { type: 'string', required: true },
|
|
managedPlatforms: { type: {}, required: true },
|
|
willingToHost: { type: 'string'},
|
|
},
|
|
|
|
|
|
exits: {
|
|
success: {
|
|
description: 'A gitops workshop request was submitted.'
|
|
},
|
|
invalidEmailDomain: {
|
|
description: 'This email address is on a denylist of domains and was not delivered.',
|
|
responseType: 'badRequest'
|
|
},
|
|
},
|
|
|
|
|
|
fn: async function ({firstName, lastName, location, emailAddress, numberOfHosts, managedPlatforms, willingToHost}) {
|
|
|
|
|
|
let emailDomain = emailAddress.split('@')[1];
|
|
if(_.includes(sails.config.custom.bannedEmailDomainsForWebsiteSubmissions, emailDomain.toLowerCase())){
|
|
throw 'invalidEmailDomain';
|
|
}
|
|
|
|
|
|
// Convert the managedPlatforms object into a string.
|
|
let platformFriendlyNamesByManagedPlatformValues = {
|
|
macos: 'macOS',
|
|
windows: 'Windows',
|
|
linux: 'Linux',
|
|
android: 'Android',
|
|
iosOrIpados: 'iOS/iPadOS',
|
|
chromeos: 'ChromeOS',
|
|
};
|
|
let managedPlatformsString = 'Selected platforms: ';
|
|
for(let selectedPlatform of _.keysIn(managedPlatforms)){
|
|
if(managedPlatforms[selectedPlatform] === true){
|
|
managedPlatformsString += `\n\t- ${platformFriendlyNamesByManagedPlatformValues[selectedPlatform]}`;
|
|
}
|
|
}
|
|
|
|
|
|
// Build a description with information from the form submission to add to the created/found contact record.
|
|
let descriptionForCrmUpdate =
|
|
`
|
|
Submitted the gitops workshop request form.
|
|
Submission information:
|
|
They are ${willingToHost ? '' : 'not '}interested in hosting a workshop at their company's office.
|
|
Location: ${location}
|
|
Email: ${emailAddress}
|
|
Number of hosts: ${numberOfHosts}
|
|
${managedPlatformsString}
|
|
`;
|
|
|
|
let attributionCookieOrUndefined = this.req.cookies.marketingAttribution;
|
|
|
|
await sails.helpers.flow.build(async ()=>{
|
|
let recordIds = await sails.helpers.salesforce.updateOrCreateContactAndAccount.with({
|
|
emailAddress: emailAddress,
|
|
firstName: firstName,
|
|
lastName: lastName,
|
|
contactSource: 'Website - GitOps',
|
|
description: descriptionForCrmUpdate,
|
|
marketingAttributionCookie: attributionCookieOrUndefined
|
|
}).intercept((err)=>{
|
|
return new Error(`Could not create/update a contact or account. Full error: ${require('util').inspect(err)}`);
|
|
});
|
|
|
|
// Add contact to campaign.
|
|
await sails.helpers.salesforce.createCampaignMember.with({
|
|
salesforceContactId: recordIds.salesforceContactId,
|
|
salesforceCampaignId: '701UG00000bLCLpYAO',// 2026_01-FE-GitOps_Workshop_Interest Campaign
|
|
});
|
|
|
|
if(!recordIds.salesforceAccountId) {
|
|
throw new Error(`Could not create historical event. The contact record (ID: ${recordIds.salesforceContactId}) returned by the updateOrCreateContactAndAccount helper is missing a parent account record.`);
|
|
}
|
|
// Create the new historical event record.
|
|
await sails.helpers.salesforce.createHistoricalEvent.with({
|
|
salesforceAccountId: recordIds.salesforceAccountId,
|
|
salesforceContactId: recordIds.salesforceContactId,
|
|
eventType: 'Intent signal',
|
|
intentSignal: 'Submitted the "GitOps workshop request" form',
|
|
eventContent: descriptionForCrmUpdate,
|
|
}).intercept((err)=>{
|
|
return new Error(`Could not create an historical event. Full error: ${require('util').inspect(err)}`);
|
|
});
|
|
|
|
}).tolerate((err)=>{
|
|
sails.log.warn(`When a user (${firstName} ${lastName}, email: ${emailAddress}) submitted the gitops workshop request form, an error occured when updating CRM records for this user.\n Submission information: ${descriptionForCrmUpdate.split('Submission information:')[1]}\n Full error: ${require('util').inspect(err)}`);
|
|
});
|
|
|
|
|
|
|
|
|
|
// All done.
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
};
|