From e77a2f6963c4015d5885554553cc4d2034ef7b72 Mon Sep 17 00:00:00 2001 From: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> Date: Tue, 8 Oct 2024 10:06:51 -0400 Subject: [PATCH] fix: Salesforce assign event to organizer (#16971) * Refactor get SF user and create event * address code nit --------- Co-authored-by: Benny Joo --- .../app-store/salesforce/lib/CrmService.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/app-store/salesforce/lib/CrmService.ts b/packages/app-store/salesforce/lib/CrmService.ts index 77faef2c7d..34e78fa671 100644 --- a/packages/app-store/salesforce/lib/CrmService.ts +++ b/packages/app-store/salesforce/lib/CrmService.ts @@ -119,9 +119,12 @@ export default class SalesforceCRMService implements CRM { }); }; - private getSalesforceUserFromEmail = async (email: string) => { + private getSalesforceUserIdFromEmail = async (email: string) => { const conn = await this.conn; - return await conn.query(`SELECT Id, Email FROM User WHERE Email = '${email}'`); + const query = await conn.query(`SELECT Id, Email FROM User WHERE Email = '${email}'`); + if (query.records.length > 0) { + return (query.records[0] as { Email: string; Id: string }).Id; + } }; private getSalesforceUserFromOwnerId = async (ownerId: string) => { @@ -142,6 +145,8 @@ export default class SalesforceCRMService implements CRM { options: { [key: string]: unknown } ) => { const conn = await this.conn; + const ownerId = await this.getSalesforceUserIdFromEmail(event.organizer.email); + return await conn.sobject("Event").create({ StartDateTime: new Date(event.startTime).toISOString(), EndDateTime: new Date(event.endTime).toISOString(), @@ -153,6 +158,7 @@ export default class SalesforceCRMService implements CRM { IsRecurrence2: true, Recurrence2PatternText: new RRule(event.recurringEvent).toString(), }), + ...(ownerId && { OwnerId: ownerId }), }); }; @@ -300,13 +306,7 @@ export default class SalesforceCRMService implements CRM { const conn = await this.conn; // See if the organizer exists in the CRM - let organizerId: string; - if (organizerEmail) { - const userQuery = await this.getSalesforceUserFromEmail(organizerEmail); - if (userQuery.records.length > 0) { - organizerId = (userQuery.records[0] as { Email: string; Id: string }).Id; - } - } + const organizerId = organizerEmail ? await this.getSalesforceUserIdFromEmail(organizerEmail) : undefined; const createdContacts = await Promise.all( contactsToCreate.map(async (attendee) => { const [FirstName, LastName] = attendee.name ? attendee.name.split(" ") : [attendee.email, ""];