Files
fleet/website/api/controllers/deliver-gitops-workshop-request.js
T
Eric 58642183c6 Website: update contact source for workshop requests (#50072)
Changes:
- Updated the contact source used for contacts created from workshop
requests

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Bug Fixes**
* Workshop requests are now correctly identified as “Website - Workshop
request” in CRM records, improving source tracking and reporting.
* Workshop request contacts are treated as form-based, ensuring the most
recent campaign member status is set to **Registered**.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-07-30 08:13:01 -05:00

119 lines
4.2 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 recordDetails = await sails.helpers.salesforce.updateOrCreateContactAndAccount.with({
emailAddress: emailAddress,
firstName: firstName,
lastName: lastName,
contactSource: 'Website - Workshop request',
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: recordDetails.salesforceContactId,
salesforceCampaignId: '701UG00000bLCLpYAO',// 2026_01-FE-GitOps_Workshop_Interest Campaign
});
if(!recordDetails.salesforceAccountId) {
throw new Error(`Could not create historical event. The contact record (ID: ${recordDetails.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: recordDetails.salesforceAccountId,
salesforceContactId: recordDetails.salesforceContactId,
eventType: 'Intent signal',
intentSignal: 'Submitted the "GitOps workshop request" form',
eventContent: descriptionForCrmUpdate,
relatedCampaign: recordDetails.mostRecentCampaign,
}).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;
}
};