private def subscriptionsFor()

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
  }