in membership-attribute-service/app/controllers/PaymentUpdateController.scala [93:129]
private def sendPaymentMethodChangedEmail(
emailAddress: String,
contact: Contact,
paymentMethod: PaymentType,
productType: ProductType,
)(implicit logPrefix: LogPrefix): SimpleEitherT[Unit] =
SimpleEitherT.rightT(sendEmail.send(paymentMethodChangedEmail(emailAddress, contact, paymentMethod, productType)))
private def checkDirectDebitUpdateResult(
freshDefaultPaymentMethodOption: Option[PaymentMethod],
bankAccountName: String,
bankAccountNumber: String,
bankSortCode: String,
)(implicit logPrefix: LogPrefix): Result = freshDefaultPaymentMethodOption match {
case Some(dd: GoCardless)
if bankAccountName == dd.accountName &&
dd.accountNumber.length > 3 && bankAccountNumber.endsWith(dd.accountNumber.substring(dd.accountNumber.length - 3)) &&
bankSortCode == dd.sortCode =>
logger.info(s"Successfully updated direct debit")
Ok(
Json.obj(
"accountName" -> dd.accountName,
"accountNumber" -> dd.accountNumber,
"sortCode" -> dd.sortCode,
),
)
case Some(_) =>
logger.error(
scrub"New payment method $freshDefaultPaymentMethodOption, does not match the posted Direct Debit details $bankSortCode $bankAccountNumber $bankAccountName",
)
InternalServerError("")
case None =>
logger.error(
scrub"default-payment-method-lost: Default payment method was set to nothing, when attempting to update Direct Debit details",
)
InternalServerError("")
}