in membership-attribute-service/app/services/AccountDetailsFromZuora.scala [106:124]
private def subscriptionsFor(userId: String, contact: Contact, filter: OptionalSubscriptionsFilter)(implicit
logPrefix: LogPrefix,
): SimpleEitherT[List[ContactAndSubscription]] = {
for {
nonGiftContactAndSubscriptions <- SimpleEitherT.rightT(nonGiftContactAndSubscriptionsFor(contact))
contactAndSubscriptions <- checkForGiftSubscription(userId, nonGiftContactAndSubscriptions, contact)
catalog <- SimpleEitherT.rightT(futureCatalog(logPrefix))
subsWithRecognisedProducts = contactAndSubscriptions.filter(_.subscription.plan(catalog).product(catalog) match {
case _: Product.ContentSubscription => true
case Product.UnknownProduct => false
case Product.Membership => true
case Product.GuardianPatron => true
case Product.Contribution => true
case Product.Discounts => false
case Product.AdLite => true
})
filtered = applyFilter(filter, subsWithRecognisedProducts, catalog)
} yield filtered
}