Skip to content

Commit

Permalink
Merge pull request #6736 from guardian/remove-digipack
Browse files Browse the repository at this point in the history
Remove Digital Subscription gifting
  • Loading branch information
rupertbates authored Jan 28, 2025
2 parents c572cb7 + 9ceccbc commit afc9ab8
Show file tree
Hide file tree
Showing 87 changed files with 327 additions and 2,317 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ abstract class DynamoProcessor(
SupporterRatePlanItem(
sub.id,
identityId,
None,
"guardian_patron",
"Guardian Patron",
sub.currentPeriodEnd,
Expand Down
1 change: 0 additions & 1 deletion support-frontend/app/admin/settings/Switches.scala
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ object CampaignSwitches {
}

case class SubscriptionsSwitches(
enableDigitalSubGifting: Option[SwitchState],
useDotcomContactPage: Option[SwitchState],
checkoutPostcodeLookup: Option[SwitchState],
)
Expand Down
5 changes: 2 additions & 3 deletions support-frontend/app/controllers/CanonicalLinks.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@ trait CanonicalLinks {

val supportUrl: String

def buildCanonicalDigitalSubscriptionLink(countryCode: String, orderIsAGift: Boolean): String =
if (orderIsAGift) s"${supportUrl}/${countryCode}/subscribe/digital/gift"
else s"/${countryCode}/subscribe/digital"
def buildCanonicalDigitalSubscriptionLink(countryCode: String): String =
s"/${countryCode}/subscribe/digital"

def buildCanonicalWeeklySubscriptionLink(countryCode: String, orderIsAGift: Boolean): String =
if (orderIsAGift) s"${supportUrl}/${countryCode}/subscribe/weekly/gift"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ class CreateSubscriptionController(
// For Stripe payments, recaptcha validation is done earlier in the flow
val recaptchaToken =
request.body.paymentFields match {
case Left(dd: DirectDebitPaymentFields) => Some(dd.recaptchaToken)
case dd: DirectDebitPaymentFields => Some(dd.recaptchaToken)
case _ => None
}

Expand Down
110 changes: 43 additions & 67 deletions support-frontend/app/controllers/DigitalSubscriptionController.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import com.gu.support.config.{PayPalConfigProvider, Stage, StripePublicConfigPro
import com.gu.support.encoding.CustomCodecs._
import services.pricing.{PriceSummaryServiceProvider, ProductPrices}
import com.gu.support.promotions._
import com.gu.support.zuora.api.ReaderType.{Direct, Gift}
import com.gu.support.zuora.api.ReaderType.Direct
import config.RecaptchaConfigProvider
import services._
import play.api.mvc._
Expand Down Expand Up @@ -45,83 +45,59 @@ class DigitalSubscriptionController(

implicit val a: AssetsResolver = assets

def digitalGeoRedirect(orderIsAGift: Boolean = false): Action[AnyContent] = geoRedirect(
if (orderIsAGift) "subscribe/digital/gift" else "subscribe/digital",
def digitalGeoRedirect(): Action[AnyContent] = geoRedirect(
"subscribe/digital",
)

def digitalEditionGeoRedirect(): Action[AnyContent] = geoRedirect("subscribe/digitaledition")

def digital(countryCode: String, orderIsAGift: Boolean): Action[AnyContent] = {
def digital(countryCode: String): Action[AnyContent] = {
MaybeAuthenticatedAction { implicit request =>
implicit val settings: AllSettings = settingsProvider.getAllSettings()

if (!settings.switches.subscriptionsSwitches.enableDigitalSubGifting.contains(On) && orderIsAGift) {
Redirect(routes.DigitalSubscriptionController.digitalGeoRedirect(false)).withSettingsSurrogateKey
} else {
val title = if (orderIsAGift) {
"Support the Guardian | The Guardian Digital Gift Subscription"
} else {
"Support the Guardian | The Guardian Digital Subscription"
}
val js = "digitalSubscriptionLandingPage.js"
val css = "digitalSubscriptionLandingPage.css"
val csrf = CSRF.getToken.value
val testMode = testUsers.isTestUser(request)
val promoCodes = request.queryString.get("promoCode").map(_.toList).getOrElse(Nil)
val v2recaptchaConfigPublicKey = recaptchaConfigProvider.get(testMode).v2PublicKey
val readerType = if (orderIsAGift) Gift else Direct
val defaultPromos = priceSummaryServiceProvider.forUser(isTestUser = false).getDefaultPromoCodes(DigitalPack)
val maybePromotionCopy = {
landingCopyProvider.promotionCopy(promoCodes ++ defaultPromos, DigitalPack, "uk", orderIsAGift)
}
val mainElement = assets.getSsrCacheContentsAsHtml(
divId = s"digital-subscription-landing-$countryCode",
file = "ssr-holding-content.html",
)
val title = "Support the Guardian | The Guardian Digital Subscription"

val isTestUser = testUserService.isTestUser(request)
val productCatalog = cachedProductCatalogServiceProvider.fromStage(stage, isTestUser).get()

Ok(
views.html.subscriptionCheckout(
title = title,
mainElement = mainElement,
js = js,
css = css,
csrf = Some(csrf),
idUser = request.user,
testMode = testMode,
productPrices =
priceSummaryServiceProvider.forUser(testMode).getPrices(DigitalPack, promoCodes, readerType),
maybePromotionCopy = maybePromotionCopy,
defaultStripeConfig = stripeConfigProvider.get(),
testStripeConfig = stripeConfigProvider.get(true),
defaultPayPalConfig = payPalConfigProvider.get(),
testPayPalConfig = payPalConfigProvider.get(true),
v2recaptchaConfigPublicKey = v2recaptchaConfigPublicKey,
orderIsAGift = orderIsAGift,
homeDeliveryPostcodes = None,
productCatalog = productCatalog,
noIndex = stage != PROD,
),
)
val js = "digitalSubscriptionLandingPage.js"
val css = "digitalSubscriptionLandingPage.css"
val csrf = CSRF.getToken.value
val testMode = testUsers.isTestUser(request)
val promoCodes = request.queryString.get("promoCode").map(_.toList).getOrElse(Nil)
val v2recaptchaConfigPublicKey = recaptchaConfigProvider.get(testMode).v2PublicKey
val readerType = Direct
val defaultPromos = priceSummaryServiceProvider.forUser(isTestUser = false).getDefaultPromoCodes(DigitalPack)
val maybePromotionCopy = {
landingCopyProvider.promotionCopy(promoCodes ++ defaultPromos, DigitalPack, "uk")
}
}
}
val mainElement = assets.getSsrCacheContentsAsHtml(
divId = s"digital-subscription-landing-$countryCode",
file = "ssr-holding-content.html",
)

private def getDigitalHrefLangLinks(orderIsAGift: Boolean): Map[String, String] = {
Map(
"en-us" -> buildCanonicalDigitalSubscriptionLink("us", orderIsAGift),
"en-gb" -> buildCanonicalDigitalSubscriptionLink("uk", orderIsAGift),
"en-au" -> buildCanonicalDigitalSubscriptionLink("au", orderIsAGift),
"en" -> buildCanonicalDigitalSubscriptionLink("int", orderIsAGift),
)
}
val isTestUser = testUserService.isTestUser(request)
val productCatalog = cachedProductCatalogServiceProvider.fromStage(stage, isTestUser).get()

def productPrices(queryPromos: List[String], orderIsAGift: Boolean): ProductPrices = {
val promoCodes: List[PromoCode] = queryPromos ++ DefaultPromotions.DigitalSubscription.all
val readerType = if (orderIsAGift) Gift else Direct
priceSummaryServiceProvider.forUser(false).getPrices(DigitalPack, promoCodes, readerType)
Ok(
views.html.subscriptionCheckout(
title = title,
mainElement = mainElement,
js = js,
css = css,
csrf = Some(csrf),
idUser = request.user,
testMode = testMode,
productPrices = priceSummaryServiceProvider.forUser(testMode).getPrices(DigitalPack, promoCodes, readerType),
maybePromotionCopy = maybePromotionCopy,
defaultStripeConfig = stripeConfigProvider.get(),
testStripeConfig = stripeConfigProvider.get(true),
defaultPayPalConfig = payPalConfigProvider.get(),
testPayPalConfig = payPalConfigProvider.get(true),
v2recaptchaConfigPublicKey = v2recaptchaConfigPublicKey,
homeDeliveryPostcodes = None,
productCatalog = productCatalog,
noIndex = stage != PROD,
),
)
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import com.gu.support.catalog.DigitalPack
import com.gu.support.config.Stages.PROD
import com.gu.support.config.{PayPalConfigProvider, Stage, StripePublicConfigProvider}
import services.pricing.PriceSummaryServiceProvider
import com.gu.support.zuora.api.ReaderType.{Direct, Gift}
import com.gu.support.zuora.api.ReaderType.Direct
import config.RecaptchaConfigProvider
import play.api.mvc._
import play.twirl.api.Html
Expand Down Expand Up @@ -39,22 +39,18 @@ class DigitalSubscriptionFormController(

implicit val a: AssetsResolver = assets

def displayForm(orderIsAGift: Boolean): Action[AnyContent] = {
def displayForm(): Action[AnyContent] = {
implicit val settings: AllSettings = settingsProvider.getAllSettings()
MaybeAuthenticatedAction { implicit request =>
Ok(digitalSubscriptionFormHtml(request.user, orderIsAGift)).withSettingsSurrogateKey
Ok(digitalSubscriptionFormHtml(request.user)).withSettingsSurrogateKey
}
}

private def digitalSubscriptionFormHtml(maybeIdUser: Option[IdUser], orderIsAGift: Boolean)(implicit
private def digitalSubscriptionFormHtml(maybeIdUser: Option[IdUser])(implicit
request: RequestHeader,
settings: AllSettings,
): Html = {
val title = if (orderIsAGift) {
"Support the Guardian | The Guardian Digital Gift Subscription"
} else {
"Support the Guardian | The Guardian Digital Subscription"
}
val title = "Support the Guardian | The Guardian Digital Subscription"
val id = EmptyDiv("digital-subscription-checkout-page")
val js = "digitalSubscriptionCheckoutPage.js"
val css = "digitalSubscriptionCheckoutPage.css"
Expand All @@ -63,7 +59,7 @@ class DigitalSubscriptionFormController(
val testMode = testUsers.isTestUser(request)
val promoCodes = request.queryString.get("promoCode").map(_.toList).getOrElse(Nil)
val v2recaptchaConfigPublicKey = recaptchaConfigProvider.get(testMode).v2PublicKey
val readerType = if (orderIsAGift) Gift else Direct
val readerType = Direct
val isTestUser = testUsers.isTestUser(request)
val productCatalog = cachedProductCatalogServiceProvider.fromStage(stage, isTestUser).get()

Expand All @@ -82,7 +78,6 @@ class DigitalSubscriptionFormController(
defaultPayPalConfig = payPalConfigProvider.get(),
testPayPalConfig = payPalConfigProvider.get(true),
v2recaptchaConfigPublicKey = v2recaptchaConfigPublicKey,
orderIsAGift = orderIsAGift,
homeDeliveryPostcodes = None,
productCatalog = productCatalog,
noIndex = stage != PROD,
Expand Down
2 changes: 1 addition & 1 deletion support-frontend/app/controllers/Promotions.scala
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class Promotions(
maybePromotionTerms.fold(NotFound("Invalid promo code")) { promotionTerms =>
val productLandingPage = promotionTerms.product match {
case GuardianWeekly => routes.WeeklySubscriptionController.weeklyGeoRedirect(promotionTerms.isGift).url
case DigitalPack => routes.DigitalSubscriptionController.digitalGeoRedirect(false).url
case DigitalPack => routes.DigitalSubscriptionController.digitalGeoRedirect().url
case Paper => routes.PaperSubscriptionController.paper().url
case _ => routes.Application.contributeGeoRedirect("").url
}
Expand Down
152 changes: 0 additions & 152 deletions support-frontend/app/controllers/RedemptionController.scala

This file was deleted.

Loading

0 comments on commit afc9ab8

Please sign in to comment.