diff --git a/src/server/api/lib/assemble-numbers.ts b/src/server/api/lib/assemble-numbers.ts index 5a531c4c6..683692d0f 100644 --- a/src/server/api/lib/assemble-numbers.ts +++ b/src/server/api/lib/assemble-numbers.ts @@ -178,12 +178,7 @@ export const sendMessage = async ( ); const profileId = service.messaging_service_sid; const numbers = await numbersClient(service); - - const { zip: contactZipCode, send_after: sendAfter } = await r - .reader("campaign_contact") - .join("campaign", "campaign_contact.campaign_id", "campaign.id") - .where({ "campaign_contact.id": campaignContactId }) - .first("campaign_contact.zip as zip", "campaign.send_after as send_after"); + const { zip: contactZipCode, send_after: sendAfter } = service; const { features } = await r .reader("organization") diff --git a/src/server/api/lib/message-sending.js b/src/server/api/lib/message-sending.js index 095a6779a..90af7603a 100644 --- a/src/server/api/lib/message-sending.js +++ b/src/server/api/lib/message-sending.js @@ -121,7 +121,8 @@ export const getMessagingServiceById = async (messagingServiceId) => * Fetches an existing assigned messaging service for a campaign contact. If no messaging service * has been assigned then assign one and return that. * @param {number} campaignContactId The ID of the target campaign contact - * @returns {object} Assigned messaging service Postgres row + * @returns {object} Assigned messaging service Postgres row, merged with the contact's + * `zip` and the campaign's `send_after` */ export const getContactMessagingService = async ( campaignContactId, @@ -139,10 +140,22 @@ export const getContactMessagingService = async ( "campaign_contact.campaign_id" ) .where({ "campaign_contact.id": campaignContactId }) - .first(); + .first("messaging_service_sid", "send_after", "zip", "cell"); + + const contactFields = { + zip: campaignData.zip, + send_after: campaignData.send_after + }; if (campaignData.messaging_service_sid) { - return getMessagingServiceById(campaignData.messaging_service_sid); + const messagingService = await getMessagingServiceById( + campaignData.messaging_service_sid + ); + + return { + ...messagingService, + ...contactFields + }; } const { @@ -160,21 +173,16 @@ export const getContactMessagingService = async ( existingMessagingService && existingMessagingService.messaging_service_sid ) { - return existingMessagingService; + return { ...existingMessagingService, ...contactFields }; } - const campaignContact = await r - .reader("campaign_contact") - .where({ id: campaignContactId }) - .first("cell"); - // Otherwise select an appropriate messaging service and assign const assignedService = await assignMessagingServiceSID( - campaignContact.cell, + campaignData.cell, parseInt(organizationId, 10) ); - return assignedService; + return { ...assignedService, ...contactFields }; }; /**