Skip to content

Commit a9a9a30

Browse files
authored
Merge pull request #564 from hmrc/DLSN-186
Dlsn 186 - Align non-UK manual address field labels & indicators with UK version
2 parents 666b6d6 + 056e81f commit a9a9a30

12 files changed

+175
-194
lines changed

app/connectors/addressLookup/AddressLookupConfiguration.scala

Lines changed: 0 additions & 72 deletions
This file was deleted.

app/connectors/addressLookup/AddressLookupConnector.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ package connectors.addressLookup
1919
import config.FrontendAppConfig
2020
import connectors.httpParsers.AddressLookupInitializationHttpParser.{AddressLookupInitializationReads, AddressLookupInitializationResponse}
2121
import connectors.httpParsers.ConfirmedAddressHttpParser.{ConfirmedAddressReads, ConfirmedAddressResponse}
22-
import models.addressLookup.AddressLookupConfigurationModel
22+
import models.addressLookup.AddressLookupConfigurationModel.*
2323
import play.api.i18n.MessagesApi
2424
import play.api.libs.json.Json
2525
import uk.gov.hmrc.http.client.HttpClientV2
@@ -44,11 +44,10 @@ class AddressLookupConnector @Inject() (httpClient: HttpClientV2, implicit val a
4444
messages: MessagesApi
4545
): Future[AddressLookupInitializationResponse] = {
4646

47-
val body = new AddressLookupConfiguration(callbackUrl, messagePrefix, fullName, allowedCountryCodes).apply
48-
47+
val body = toAddressLookupConfigurationModel(callbackUrl, messagePrefix, fullName, allowedCountryCodes)
4948
httpClient
5049
.post(url"$addressLookupInitUrl")
51-
.withBody(Json.toJson(body)(AddressLookupConfigurationModel.writes))
50+
.withBody(Json.toJson(body)(writes))
5251
.execute[AddressLookupInitializationResponse]
5352
}
5453

app/models/addressLookup/AddressLookupConfigurationModel.scala

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package models.addressLookup
1818

19+
import config.FrontendAppConfig
20+
import play.api.i18n.{Lang, MessagesApi}
1921
import play.api.libs.json.{Json, Writes}
2022

2123
case class AddressLookupConfigurationModel(
@@ -26,4 +28,59 @@ case class AddressLookupConfigurationModel(
2628

2729
object AddressLookupConfigurationModel {
2830
implicit val writes: Writes[AddressLookupConfigurationModel] = Json.writes[AddressLookupConfigurationModel]
31+
32+
def toAddressLookupConfigurationModel(
33+
callbackUrl: String,
34+
messagePrefix: String,
35+
fullName: Option[String],
36+
allowedCountryCodes: Option[Set[String]]
37+
)(implicit appConfig: FrontendAppConfig, messages: MessagesApi): AddressLookupConfigurationModel = {
38+
val english = Lang("en")
39+
val welsh = Lang("cy")
40+
41+
val fullCallbackURL = appConfig.host + callbackUrl
42+
val fullSignOutURL = controllers.routes.SignOutController.signOut().url
43+
44+
AddressLookupConfigurationModel(
45+
version = 2,
46+
options = AddressLookupOptionsModel(
47+
continueUrl = fullCallbackURL,
48+
signOutHref = fullSignOutURL,
49+
useNewGovUkServiceNavigation = true,
50+
deskProServiceName = appConfig.contactFormServiceIdentifier,
51+
showBackButtons = true,
52+
includeHMRCBranding = false,
53+
allowedCountryCodes = allowedCountryCodes,
54+
ukMode = false,
55+
selectPageConfig = AddressLookupSelectConfigModel(
56+
showSearchAgainLink = true
57+
),
58+
confirmPageConfig = AddressLookupConfirmConfigModel(
59+
showSubHeadingAndInfo = false
60+
),
61+
timeoutConfig = AddressLookupConfirmTimeoutModel(
62+
timeoutAmount = appConfig.timeout,
63+
timeoutUrl = fullSignOutURL
64+
),
65+
manualAddressEntryConfig = ManualAddressEntryConfigModel(
66+
line1MaxLength = 35,
67+
line2MaxLength = 35,
68+
line3MaxLength = 35,
69+
townMaxLength = 35,
70+
mandatoryFields = MandatoryFields(
71+
addressLine1 = true,
72+
addressLine2 = false,
73+
addressLine3 = false,
74+
town = true,
75+
postcode = false
76+
),
77+
showOrganisationName = false
78+
)
79+
),
80+
labels = AddressMessageLanguageModel(
81+
en = AddressMessagesModel.forLang(english, messagePrefix, fullName),
82+
cy = AddressMessagesModel.forLang(welsh, messagePrefix, fullName)
83+
)
84+
)
85+
}
2986
}

app/models/addressLookup/AddressLookupConfirmConfigModel.scala

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,7 @@ package models.addressLookup
1919
import play.api.libs.json.{Json, Writes}
2020

2121
case class AddressLookupConfirmConfigModel(
22-
showChangeLinkcontinueUrl: Boolean,
23-
showSubHeadingAndInfo: Boolean,
24-
showSearchAgainLink: Boolean,
25-
showConfirmChangeText: Boolean
22+
showSubHeadingAndInfo: Boolean
2623
)
2724

2825
object AddressLookupConfirmConfigModel {

app/models/addressLookup/AddressLookupLanguageModel.scala

Lines changed: 27 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ case class AddressMessagesModel(
3131
lookupPageLabels: LookupPageMessagesModel,
3232
selectPageLabels: SelectPageMessagesModel,
3333
editPageLabels: EditPageMessagesModel,
34-
confirmPageLabels: ConfirmPageMessagesModel
34+
confirmPageLabels: ConfirmPageMessagesModel,
35+
international: InternationalMessagesModel
3536
)
3637

3738
object AddressMessagesModel {
@@ -44,8 +45,9 @@ object AddressMessagesModel {
4445
appLevelLabels = AppLevelMessagesModel.forLang(lang),
4546
lookupPageLabels = LookupPageMessagesModel.forLang(lang, messagePrefix, fullName),
4647
selectPageLabels = SelectPageMessagesModel.forLang(lang, messagePrefix, fullName),
47-
editPageLabels = EditPageMessagesModel.forLang(lang, messagePrefix, fullName),
48-
confirmPageLabels = ConfirmPageMessagesModel.forLang(lang, messagePrefix, fullName)
48+
editPageLabels = EditPageMessagesModel.forLang(lang, messagePrefix, fullName, false),
49+
confirmPageLabels = ConfirmPageMessagesModel.forLang(lang, messagePrefix, fullName),
50+
international = InternationalMessagesModel(EditPageMessagesModel.forLang(lang, messagePrefix, fullName, true))
4951
)
5052
}
5153

@@ -64,12 +66,7 @@ object AppLevelMessagesModel {
6466
case class LookupPageMessagesModel(
6567
title: Option[String],
6668
heading: Option[String],
67-
filterLabel: Option[String],
68-
postcodeLabel: Option[String],
69-
submitLabel: Option[String],
70-
noResultsFoundMessage: Option[String],
71-
resultLimitExceededMessage: Option[String],
72-
manualAddressLinkText: Option[String]
69+
postcodeLabel: Option[String]
7370
)
7471

7572
object LookupPageMessagesModel {
@@ -81,24 +78,15 @@ object LookupPageMessagesModel {
8178
LookupPageMessagesModel(
8279
title = MessageOption(s"$messagePrefix.lookupPage.title", lang),
8380
heading = MessageOption(s"$messagePrefix.lookupPage.heading", lang, fullName.getOrElse("")),
84-
filterLabel = MessageOption("commonAddress.lookupPage.filterLabel", lang),
85-
postcodeLabel = MessageOption("commonAddress.LookupPage.postcodeLabel", lang),
86-
submitLabel = MessageOption("commonAddress.lookupPage.submitLabel", lang),
87-
noResultsFoundMessage = MessageOption("commonAddress.lookupPage.noResultsFoundMessage", lang),
88-
resultLimitExceededMessage = MessageOption("commonAddress.lookupPage.resultLimitExceededMessage", lang),
89-
manualAddressLinkText =
90-
MessageOption(s"$messagePrefix.lookupPage.manualAddressLinkText", lang, fullName.getOrElse(""))
81+
postcodeLabel = MessageOption(s"commonAddress.LookupPage.postcodeLabel", lang)
9182
)
9283
}
9384

9485
case class SelectPageMessagesModel(
9586
title: Option[String],
9687
heading: Option[String],
9788
headingWithPostcode: Option[String],
98-
proposalListLabel: Option[String],
99-
submitLabel: Option[String],
100-
searchAgainLinkText: Option[String],
101-
editAddressLinkText: Option[String]
89+
submitLabel: Option[String]
10290
)
10391

10492
object SelectPageMessagesModel {
@@ -110,54 +98,36 @@ object SelectPageMessagesModel {
11098
SelectPageMessagesModel(
11199
title = MessageOption(s"$messagePrefix.selectPage.title", lang),
112100
heading = MessageOption(s"$messagePrefix.selectPage.heading", lang, fullName.getOrElse("")),
113-
headingWithPostcode = MessageOption("commonAddress.selectPage.headingWithPostcode", lang),
114-
proposalListLabel = MessageOption("commonAddress.selectPage.proposalListLabel", lang),
115-
submitLabel = MessageOption("commonAddress.selectPage.submitLabel", lang),
116-
searchAgainLinkText =
117-
MessageOption(s"$messagePrefix.selectPage.searchAgainLinkText", lang, fullName.getOrElse("")),
118-
editAddressLinkText =
119-
MessageOption(s"$messagePrefix.selectPage.editAddressLinkText", lang, fullName.getOrElse(""))
101+
headingWithPostcode = MessageOption(s"commonAddress.selectPage.headingWithPostcode", lang),
102+
submitLabel = MessageOption(s"commonAddress.selectPage.submitLabel", lang)
120103
)
121104
}
122105

123106
case class EditPageMessagesModel(
124-
title: Option[String],
125-
heading: Option[String],
126-
line1Label: Option[String],
127-
line2Label: Option[String],
107+
title: Option[String],
108+
heading: Option[String],
128109
townLabel: Option[String],
129-
line3Label: Option[String],
130-
postcodeLabel: Option[String],
131-
submitLabel: Option[String]
110+
postcodeLabel: Option[String]
132111
)
133112

134113
object EditPageMessagesModel {
135114
implicit val writes: Writes[EditPageMessagesModel] = Json.writes[EditPageMessagesModel]
136115

137-
def forLang(lang: Lang, messagePrefix: String, fullName: Option[String])(implicit
116+
def forLang(lang: Lang, messagePrefix: String, fullName: Option[String], international: Boolean)(implicit
138117
messagesApi: MessagesApi
139118
): EditPageMessagesModel =
140119
EditPageMessagesModel(
141120
title = MessageOption(s"$messagePrefix.editPage.title", lang),
142-
heading = MessageOption(s"$messagePrefix.editPage.heading", lang, fullName.getOrElse("")),
143-
line1Label = MessageOption("commonAddress.editPage.line1Label", lang),
144-
line2Label = MessageOption("commonAddress.editPage.line2Label", lang),
145-
line3Label = MessageOption("commonAddress.editPage.line3Label", lang),
146-
townLabel = MessageOption("commonAddress.editPage.townLabel", lang),
147-
postcodeLabel = MessageOption("commonAddress.editPage.postcodeLabel", lang),
148-
submitLabel = MessageOption("commonAddress.editPage.submitLabel", lang)
121+
heading = MessageOption(s"$messagePrefix.editPage.heading", lang, fullName.getOrElse("Sample")),
122+
townLabel = MessageOption(s"commonAddress.editPage.townLabel", lang),
123+
postcodeLabel = if (international) MessageOption(s"commonAddress.internationalEditPage.postcodeLabel", lang) else MessageOption(s"commonAddress.editPage.postcodeLabel", lang)
149124
)
150125
}
151126

152127
case class ConfirmPageMessagesModel(
153128
title: Option[String],
154129
heading: Option[String],
155-
infoSubheading: Option[String],
156-
infoMessage: Option[String],
157-
submitLabel: Option[String],
158-
searchAgainLinkText: Option[String],
159-
changeLinkText: Option[String],
160-
confirmChangeText: Option[String]
130+
submitLabel: Option[String]
161131
)
162132

163133
object ConfirmPageMessagesModel {
@@ -169,11 +139,14 @@ object ConfirmPageMessagesModel {
169139
ConfirmPageMessagesModel(
170140
title = MessageOption(s"$messagePrefix.confirmPage.title", lang),
171141
heading = MessageOption(s"$messagePrefix.confirmPage.heading", lang, fullName.getOrElse("")),
172-
infoMessage = Some(""),
173-
infoSubheading = Some(""),
174-
submitLabel = MessageOption("commonAddress.confirmPage.submitLabel", lang),
175-
searchAgainLinkText = MessageOption("commonAddress.confirmPage.searchAgainLinkText", lang),
176-
changeLinkText = MessageOption(s"$messagePrefix.confirmPage.changeLinkText", lang, fullName.getOrElse("")),
177-
confirmChangeText = MessageOption("commonAddress.confirmPage.confirmChangeText", lang)
142+
submitLabel = MessageOption(s"commonAddress.confirmPage.submitLabel", lang)
178143
)
179144
}
145+
146+
case class InternationalMessagesModel(
147+
editPageLabels: EditPageMessagesModel
148+
)
149+
150+
object InternationalMessagesModel {
151+
implicit val writes: Writes[InternationalMessagesModel] = Json.writes[InternationalMessagesModel]
152+
}

app/models/addressLookup/AddressLookupOptionsModel.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ case class AddressLookupOptionsModel(
2727
includeHMRCBranding: Boolean,
2828
allowedCountryCodes: Option[Set[String]],
2929
ukMode: Boolean,
30-
disableTranslations: Boolean,
3130
selectPageConfig: AddressLookupSelectConfigModel,
3231
confirmPageConfig: AddressLookupConfirmConfigModel,
33-
timeoutConfig: AddressLookupConfirmTimeoutModel
32+
timeoutConfig: AddressLookupConfirmTimeoutModel,
33+
manualAddressEntryConfig: ManualAddressEntryConfigModel
3434
)
3535

3636
object AddressLookupOptionsModel {

app/models/addressLookup/AddressModel.scala

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,27 +28,16 @@ object CountryModel {
2828

2929
case class AddressModel(lines: Seq[String], postcode: Option[String], country: CountryModel) {
3030

31-
def toEdit: AmendAddressModel = {
32-
val el = editLines
31+
def toEdit: AmendAddressModel =
3332
AmendAddressModel(
34-
el._1,
35-
el._2,
36-
el._3,
37-
el._4,
33+
lines.headOption.getOrElse(""),
34+
if (lines.length > 2) lines.lift(1) else None,
35+
if (lines.length > 3) lines.lift(2) else None,
36+
lines.lastOption.getOrElse(""),
3837
postcode.getOrElse(""),
3938
country.code
4039
)
41-
}
42-
43-
private def editLines: (String, Option[String], Option[String], String) = {
4440

45-
val l1 = lines.headOption.getOrElse("")
46-
val l2 = if (lines.length > 2) lines.lift(1) else None
47-
val l3 = if (lines.length > 3) lines.lift(2) else None
48-
val l4 = lines.lastOption.getOrElse("")
49-
50-
(l1, l2, l3, l4)
51-
}
5241
}
5342

5443
object AddressModel {

0 commit comments

Comments
 (0)