in handlers/batch-email-sender/src/main/scala/com/gu/batchemailsender/api/batchemail/BrazeSqsMessage.scala [122:194]
def fromSalesforceMessage(salesforceBatchItem: SalesforceBatchItem): BrazeSqsMessage = {
val salesforcePayload = salesforceBatchItem.payload
val emailPayloadTo = EmailPayloadTo(
Address = salesforceBatchItem.payload.to_address,
SubscriberKey = salesforceBatchItem.payload.to_address,
// Actual Braze fields
ContactAttributes = EmailPayloadContactAttributes(
SubscriberAttributes = BrazeApiTriggerProperties(
atLeastSupporter(salesforceBatchItem.payload.first_name),
atLeastEmptyString(salesforceBatchItem.payload.last_name),
salesforceBatchItem.payload.subscriber_id,
salesforceBatchItem.payload.next_charge_date.map(fromSfDateToDisplayDate),
salesforceBatchItem.payload.product,
salesforceBatchItem.payload.modified_by_customer,
// Holiday stop
salesforcePayload.holiday_stop_request.map(stop => fromSfDateToDisplayDate(stop.holiday_start_date)),
salesforcePayload.holiday_stop_request.map(stop => fromSfDateToDisplayDate(stop.holiday_end_date)),
salesforcePayload.holiday_stop_request.map(_.stopped_credit_sum),
salesforcePayload.holiday_stop_request.map(_.currency_symbol),
salesforcePayload.holiday_stop_request.map(_.stopped_issue_count),
stopped_credit_summaries = for {
stop <- salesforcePayload.holiday_stop_request
summaryList <- stop.stopped_credit_summaries
stoppedCreditSummaries = summaryList.map(detail =>
StoppedCreditSummary(detail.credit_amount, fromSfDateToDisplayDate(detail.credit_date)),
)
} yield stoppedCreditSummaries,
salesforcePayload.holiday_stop_request.flatMap(_.bulk_suspension_reason),
// Digital voucher
digital_voucher = salesforceBatchItem.payload.digital_voucher
.map(wireVoucher => DigitalVoucher(wireVoucher.barcode_url)),
// Delivery Problem
delivery_problem_action = salesforcePayload.delivery_problem.map(_.actionTaken),
delivery_problem_total_affected = salesforcePayload.delivery_problem.map(_.issuesAffected),
delivery_problem_affected_dates = salesforcePayload.delivery_problem.map(
_.deliveries.map(d => fromSfDateToDisplayDate(d.Delivery_Date__c)).mkString(", "),
),
delivery_problem_total_credit = salesforcePayload.delivery_problem.map(_.totalCreditAmount),
delivery_problem_invoice_date = salesforcePayload.delivery_problem.flatMap(
_.deliveries.flatMap(_.Invoice_Date__c).headOption.map(fromSfDateToDisplayDate),
),
delivery_problem_type = salesforcePayload.delivery_problem.map(_.typeOfProblem),
delivery_problem_currency_symbol = salesforcePayload.delivery_problem.map(_.currencySymbol),
delivery_problem_case_number = salesforcePayload.delivery_problem.map(_.caseNumber),
// Delivery Address Change
delivery_address_change_line1 =
salesforcePayload.delivery_address_change.flatMap(_.mailingStreet).flatMap(sfStreetToLine1),
delivery_address_change_line2 =
salesforcePayload.delivery_address_change.flatMap(_.mailingStreet).flatMap(sfStreetToLine2),
delivery_address_change_city = salesforcePayload.delivery_address_change.flatMap(_.mailingCity),
delivery_address_change_state = salesforcePayload.delivery_address_change.flatMap(_.mailingState),
delivery_address_change_postcode = salesforcePayload.delivery_address_change.flatMap(_.mailingPostalCode),
delivery_address_change_country = salesforcePayload.delivery_address_change.flatMap(_.mailingCountry),
delivery_address_change_effective_date_blurb =
salesforcePayload.delivery_address_change.flatMap(_.addressChangeEffectiveDateBlurb),
),
),
)
BrazeSqsMessage(
To = emailPayloadTo,
DataExtensionName = SalesforceToBrazeCampaignMapping(salesforceBatchItem),
SfContactId = Some(salesforcePayload.sf_contact_id),
IdentityUserId = salesforcePayload.identity_id,
recordId = salesforcePayload.record_id,
)
}