in src/main/scala/payment_failure_comms/Handler.scala [49:76]
def program(logger: LambdaLogger): Unit = {
(for {
config <- Config()
sfConnector <- SalesforceConnector(config.salesforce, logger)
records <- sfConnector.getRecordsToProcess()
augmentedRecords = augmentRecordsWithBrazeId(findBrazeId(config.idapi, logger))(records)
brazeRequests <- BrazeTrackRequest(augmentedRecords.withBrazeId, config.braze.zuoraAppId)
brazeResult = processBrazeRequests(brazeRequests, config, logger)
updateRecordsRequest = PaymentFailureRecordUpdateRequest(
augmentedRecords.withBrazeId,
augmentedRecords.withoutBrazeId,
brazeResult
)
recordsOn5Failures = updateRecordsRequest.records.count(_.PF_Comms_Number_of_Attempts__c == 5)
_ = if (recordsOn5Failures != 0) putMetric(config.stage, recordsOn5Failures)
_ <- sfConnector.updateRecords(updateRecordsRequest)
} yield ()) match {
case Left(failure) =>
Log.failure(logger)(failure)
throw new RuntimeException(failure.details)
case Right(_) => Log.completion(logger)
}
}