in membership-attribute-service/app/controllers/AccountController.scala [141:164]
def getCancellationEffectiveDate(subscriptionName: String): Action[AnyContent] =
AuthorizeForScopes(requiredScopes = List(readSelf)).async { implicit request =>
import request.logPrefix
metrics.measureDuration("GET /user-attributes/me/cancellation-date/:subscriptionName") {
val services = request.touchpoint
val userId = request.user.identityId
(for {
cancellationEffectiveDate <- services.subscriptionService
.decideCancellationEffectiveDate(memsub.Subscription.SubscriptionNumber(subscriptionName))
.leftMap(error => ApiError("Failed to determine effectiveCancellationDate", error, 500))
result = cancellationEffectiveDate.getOrElse("now").toString
} yield result).run.map(_.toEither).map {
case Left(apiError) =>
logger.error(scrub"Failed to determine effectiveCancellationDate for $userId and $subscriptionName because $apiError")
apiError
case Right(cancellationEffectiveDate) =>
logger.info(
s"Successfully determined cancellation effective date for $subscriptionName owned by $userId as $cancellationEffectiveDate",
)
Ok(Json.toJson(CancellationEffectiveDate(cancellationEffectiveDate)))
}
}
}