private def accountDetailsFromZuoraFor()

in membership-attribute-service/app/services/AccountDetailsFromZuora.scala [44:75]


  private def accountDetailsFromZuoraFor(userId: String, filter: OptionalSubscriptionsFilter)(implicit
      logPrefix: LogPrefix,
  ): ListT[SimpleEitherT, AccountDetails] = {
    for {
      catalog <- ListTEither.singleRightT(futureCatalog(logPrefix))
      contactAndSubscription <- allCurrentSubscriptions(userId, filter)
      detailsResultsTriple <- ListTEither.single(getAccountDetailsParallel(contactAndSubscription))
      (paymentDetails, accountSummary, effectiveCancellationDate) = detailsResultsTriple
      country = accountSummary.billToContact.country
      stripePublicKey = chooseStripe.publicKeyForCountry(country)
      alertText <- ListTEither.singleRightT(alertText(accountSummary, contactAndSubscription.subscription, getPaymentMethod, catalog))
      isAutoRenew = contactAndSubscription.subscription.autoRenew
    } yield {
      AccountDetails(
        contactId = contactAndSubscription.contact.salesforceContactId,
        regNumber = None,
        email = accountSummary.billToContact.email,
        deliveryAddress = Some(DeliveryAddress.fromContact(contactAndSubscription.contact)),
        subscription = contactAndSubscription.subscription,
        paymentDetails = paymentDetails,
        billingCountry = accountSummary.billToContact.country,
        stripePublicKey = stripePublicKey.key,
        accountHasMissedRecentPayments =
          accountHasMissedPayments(contactAndSubscription.subscription.accountId, accountSummary.invoices, accountSummary.payments),
        safeToUpdatePaymentMethod = safeToAllowPaymentUpdate(contactAndSubscription.subscription.accountId, accountSummary.invoices),
        isAutoRenew = isAutoRenew,
        alertText = alertText,
        accountId = accountSummary.id.get,
        cancellationEffectiveDate = effectiveCancellationDate,
      )
    }
  }