def main()

in lambda/src/main/scala/pricemigrationengine/handlers/NotificationHandler.scala [45:71]


  def main(
      cohortSpec: CohortSpec
  ): ZIO[Logging with CohortTable with SalesforceClient with EmailSender with Zuora, Failure, HandlerOutput] = {
    for {
      today <- Clock.currentDateTime.map(_.toLocalDate)
      count <- CohortTable
        .fetch(SalesforcePriceRiseCreationComplete, Some(today.plusDays(maxLeadTime(cohortSpec))))
        .take(batchSize)
        .mapZIO(item =>
          MigrationType(cohortSpec) match {
            case SupporterPlus2024 => {
              for {
                subscription <- Zuora.fetchSubscription(item.subscriptionName)
                _ <-
                  if (SupporterPlus2024Migration.isUnderActiveCancellationSavePolicy(subscription, today)) {
                    updateItemToDoNotProcessUntil(item, subscription)
                  } else {
                    sendNotification(cohortSpec)(item, today)
                  }
              } yield ()
            }
            case _ => sendNotification(cohortSpec)(item, today)
          }
        )
        .runCount
    } yield HandlerOutput(isComplete = count < batchSize)
  }