diff --git a/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala b/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala
index d63c0b50..5030fc65 100644
--- a/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala
+++ b/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala
@@ -32,6 +32,7 @@ import play.api.test.FakeRequest
import play.api.test.Helpers._
import repositories.SessionRepository
import services.PaginationToReverifyService
+import models.verify.SelectedSubcontractors
import viewmodels.verify.SubcontractorReverifyData
import views.html.verify.SelectSubcontractorsToReverifyView
@@ -70,8 +71,8 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
.setOrException(
SelectSubcontractorsToReverifyPage,
Set(
- "brightwellPartners|Brightwell Partners",
- "carterfieldsLtd|Carterfields Ltd"
+ SelectedSubcontractors("brightwellPartners", "Brightwell Partners"),
+ SelectedSubcontractors("carterfieldsLtd", "Carterfields Ltd")
)
)
@@ -105,15 +106,15 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
val rows = SubcontractorReverifyData.rows
val v0 = inputSnippet("value-0")
- v0 must include(s"""value="${rows(0).id}|${rows(0).name}"""")
+ v0 must include(s"""value="${rows(0).id}"""")
v0 must include("checked")
val v1 = inputSnippet("value-1")
- v1 must include(s"""value="${rows(1).id}|${rows(1).name}"""")
+ v1 must include(s"""value="${rows(1).id}"""")
v1 must include("checked")
val v2 = inputSnippet("value-2")
- v2 must include(s"""value="${rows(2).id}|${rows(2).name}"""")
+ v2 must include(s"""value="${rows(2).id}"""")
v2 must not include "checked"
}
}
@@ -122,7 +123,13 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
val userAnswers =
UserAnswers(userAnswersId)
- .set(SelectSubcontractorsToReverifyPage, Set(firstRow.id, secondRow.id))
+ .set(
+ SelectSubcontractorsToReverifyPage,
+ Set(
+ SelectedSubcontractors(firstRow.id, firstRow.name),
+ SelectedSubcontractors(secondRow.id, secondRow.name)
+ )
+ )
.success
.value
@@ -312,7 +319,7 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
captor.getValue
.get(SelectSubcontractorsToReverifyPage)
- .value must contain(firstRow.id)
+ .value must contain(SelectedSubcontractors(firstRow.id, firstRow.name))
}
}
@@ -323,7 +330,10 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
val existingAnswers =
UserAnswers(userAnswersId)
- .set(SelectSubcontractorsToReverifyPage, Set(firstRow.id))
+ .set(
+ SelectSubcontractorsToReverifyPage,
+ Set(SelectedSubcontractors(firstRow.id, firstRow.name))
+ )
.success
.value
@@ -353,7 +363,7 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
captor.getValue
.get(SelectSubcontractorsToReverifyPage)
- .value mustEqual Set(secondRow.id)
+ .value mustEqual Set(SelectedSubcontractors(secondRow.id, secondRow.name))
}
}
diff --git a/test/models/verify/SelectSubcontractorsToReverifyViewModelSpec.scala b/test/models/verify/SubcontractorsToReverifyViewModelSpec.scala
similarity index 97%
rename from test/models/verify/SelectSubcontractorsToReverifyViewModelSpec.scala
rename to test/models/verify/SubcontractorsToReverifyViewModelSpec.scala
index c5ad18fa..4357a943 100644
--- a/test/models/verify/SelectSubcontractorsToReverifyViewModelSpec.scala
+++ b/test/models/verify/SubcontractorsToReverifyViewModelSpec.scala
@@ -20,7 +20,7 @@ import base.SpecBase
import viewmodels.verify.SubcontractorReverifyRow
import uk.gov.hmrc.govukfrontend.views.viewmodels.content.Text
-class SelectSubcontractorsToReverifyViewModelSpec extends SpecBase {
+class SubcontractorsToReverifyViewModelSpec extends SpecBase {
"checkboxItems" - {
diff --git a/test/pages/verify/SelectSubcontractorsToReverifyPageSpec.scala b/test/pages/verify/SelectSubcontractorsToReverifyPageSpec.scala
index 399501a8..47709b37 100644
--- a/test/pages/verify/SelectSubcontractorsToReverifyPageSpec.scala
+++ b/test/pages/verify/SelectSubcontractorsToReverifyPageSpec.scala
@@ -17,20 +17,21 @@
package pages.verify
import pages.behaviours.PageBehaviours
+import models.verify.SelectedSubcontractors
class SelectSubcontractorsToReverifyPageSpec extends PageBehaviours {
"SelectSubcontractorsToReverifyPage" - {
- beRetrievable[Set[String]](
+ beRetrievable[Set[SelectedSubcontractors]](
SelectSubcontractorsToReverifyPage
)
- beSettable[Set[String]](
+ beSettable[Set[SelectedSubcontractors]](
SelectSubcontractorsToReverifyPage
)
- beRemovable[Set[String]](
+ beRemovable[Set[SelectedSubcontractors]](
SelectSubcontractorsToReverifyPage
)
}
diff --git a/test/viewmodels/checkAnswers/verify/SelectSubcontractorsToReverifySummarySpec.scala b/test/viewmodels/checkAnswers/verify/SelectSubcontractorsToReverifySummarySpec.scala
index 9fd56ac6..fa572c4d 100644
--- a/test/viewmodels/checkAnswers/verify/SelectSubcontractorsToReverifySummarySpec.scala
+++ b/test/viewmodels/checkAnswers/verify/SelectSubcontractorsToReverifySummarySpec.scala
@@ -23,6 +23,7 @@ import org.scalatest.matchers.must.Matchers
import pages.verify.SelectSubcontractorsToReverifyPage
import play.api.i18n.{Lang, Messages, MessagesImpl}
import play.api.test.Helpers.stubMessagesApi
+import models.verify.SelectedSubcontractors
import uk.gov.hmrc.govukfrontend.views.viewmodels.summarylist._
class SelectSubcontractorsToReverifySummarySpec extends SpecBase with Matchers {
@@ -36,7 +37,13 @@ class SelectSubcontractorsToReverifySummarySpec extends SpecBase with Matchers {
val answers: UserAnswers =
emptyUserAnswers
- .set(SelectSubcontractorsToReverifyPage, Set("Grantalan", "Hammondhouse"))
+ .set(
+ SelectSubcontractorsToReverifyPage,
+ Set(
+ SelectedSubcontractors("Grantalan", "Grant, Alan"),
+ SelectedSubcontractors("Hammondhouse", "Hammond House")
+ )
+ )
.success
.value
@@ -52,8 +59,8 @@ class SelectSubcontractorsToReverifySummarySpec extends SpecBase with Matchers {
val valueHtml = row.value.content.asHtml.toString
- valueHtml must include(messages("verify.selectSubcontractorsToReverify.Grantalan"))
- valueHtml must include(messages("verify.selectSubcontractorsToReverify.Hammondhouse"))
+ valueHtml must include("Grant, Alan")
+ valueHtml must include("Hammond House")
valueHtml must include(" ")
row.actions mustBe defined
@@ -79,7 +86,10 @@ class SelectSubcontractorsToReverifySummarySpec extends SpecBase with Matchers {
val answers: UserAnswers =
emptyUserAnswers
- .set(SelectSubcontractorsToReverifyPage, Set("Ingenresearch"))
+ .set(
+ SelectSubcontractorsToReverifyPage,
+ Set(SelectedSubcontractors("Ingenresearch", "InGen Research"))
+ )
.success
.value
@@ -89,7 +99,7 @@ class SelectSubcontractorsToReverifySummarySpec extends SpecBase with Matchers {
val valueHtml = result.value.value.content.asHtml.toString
- valueHtml must include(messages("verify.selectSubcontractorsToReverify.Ingenresearch"))
+ valueHtml must include("InGen Research")
valueHtml must not include " "
}
From 00764e0d1109353187317075a75095d6daeb2c8c Mon Sep 17 00:00:00 2001
From: Juely Kaikade <254691220+Juely-Kaikade-HMRC@users.noreply.github.com>
Date: Wed, 29 Apr 2026 14:08:51 +0100
Subject: [PATCH 19/48] DTR-4484 - view & message file updated
---
...ectSubcontractorsToReverifyView.scala.html | 10 ++++-----
conf/messages.en | 22 +++++++++++++++++++
2 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/app/views/verify/SelectSubcontractorsToReverifyView.scala.html b/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
index b74eb63c..c0d92688 100644
--- a/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
+++ b/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
@@ -28,6 +28,8 @@
govukCheckboxes: GovukCheckboxes,
govukTable: GovukTable,
govukButton: GovukButton,
+ h1: H1,
+ paragraph: Paragraph,
pageNavigator: components.PageNavigator
)
@@ -47,13 +49,9 @@
)
}
-
- @messages("verify.selectSubcontractorsToReverify.heading")
-
+ @h1(messages("verify.selectSubcontractorsToReverify.heading"))
-
- @messages("verify.selectSubcontractorsToReverify.hint")
-
+ @paragraph(messages("verify.selectSubcontractorsToReverify.hint"))
@if(paginationViewModel.items.nonEmpty) {
diff --git a/conf/messages.en b/conf/messages.en
index 0a310a5c..6d532f3a 100644
--- a/conf/messages.en
+++ b/conf/messages.en
@@ -833,6 +833,28 @@ verify.verificationRequestInProgress.p3 = if yo
verify.verificationRequestInProgress.p4 = Back to
verify.verificationRequestInProgress.p4.link = Manage your subcontractors
+verify.selectSubcontractorsToReverify.title = Which subcontractors do you want to reverify?
+verify.selectSubcontractorsToReverify.heading = Which subcontractors do you want to reverify?
+verify.selectSubcontractorsToReverify.hint = Select the existing subcontractors you want to include in this verification request
+verify.selectSubcontractorsToReverify.grantAlan = Grant,Alan
+verify.selectSubcontractorsToReverify.hammondHouse = Hammond House
+verify.selectSubcontractorsToReverify.checkYourAnswersLabel = Which subcontractors do you want to reverify?
+verify.selectSubcontractorsToReverify.error.required = Select at least one subcontractor to verify
+verify.selectSubcontractorsToReverify.change.hidden = select subcontractors to reverify
+
+
+verify.selectSubcontractorsToReverify.include = Include
+verify.selectSubcontractorsToReverify.name = Name
+verify.selectSubcontractorsToReverify.utr = UTR
+verify.selectSubcontractorsToReverify.verified = Verified
+verify.selectSubcontractorsToReverify.verificationNumber = Verification number
+verify.selectSubcontractorsToReverify.taxTreatment = Tax treatment
+verify.selectSubcontractorsToReverify.dateAdded = Date added
+
+site.pagination.previous = Previous
+site.pagination.next = Next
+site.pagination.landmark = Pagination
+
verify.selectSubcontractor.title = Which subcontractors do you want to verify?
verify.selectSubcontractor.heading = Which subcontractors do you want to verify?
verify.selectSubcontractor.hint = Select the unverified subcontractors you want to add to this verification request
From a611f941da534529b5166a0d97095531bf6ca501 Mon Sep 17 00:00:00 2001
From: Juely Kaikade <254691220+Juely-Kaikade-HMRC@users.noreply.github.com>
Date: Wed, 29 Apr 2026 15:18:09 +0100
Subject: [PATCH 20/48] DTR-4484 - Message file is upadated
---
conf/messages.en | 2 --
1 file changed, 2 deletions(-)
diff --git a/conf/messages.en b/conf/messages.en
index 6d532f3a..b5a24a31 100644
--- a/conf/messages.en
+++ b/conf/messages.en
@@ -836,8 +836,6 @@ verify.verificationRequestInProgress.p4.link = Manag
verify.selectSubcontractorsToReverify.title = Which subcontractors do you want to reverify?
verify.selectSubcontractorsToReverify.heading = Which subcontractors do you want to reverify?
verify.selectSubcontractorsToReverify.hint = Select the existing subcontractors you want to include in this verification request
-verify.selectSubcontractorsToReverify.grantAlan = Grant,Alan
-verify.selectSubcontractorsToReverify.hammondHouse = Hammond House
verify.selectSubcontractorsToReverify.checkYourAnswersLabel = Which subcontractors do you want to reverify?
verify.selectSubcontractorsToReverify.error.required = Select at least one subcontractor to verify
verify.selectSubcontractorsToReverify.change.hidden = select subcontractors to reverify
From 7da56a9a772faff642140c38a83a1b9310d708e1 Mon Sep 17 00:00:00 2001
From: Juely Kaikade <254691220+Juely-Kaikade-HMRC@users.noreply.github.com>
Date: Fri, 1 May 2026 16:51:31 +0100
Subject: [PATCH 21/48] DTR-4484 - Files updated for pagination and error
messages conditions
---
app/assets/stylesheets/moj-frontend.min.css | 3163 +++++++++++++++++
...ctSubcontractorsToReverifyController.scala | 101 +-
...SubcontractorsToReverifyFormProvider.scala | 24 +-
...SelectedUnverifiedSubcontractorsPage.scala | 29 +
.../PaginationToReverifyService.scala | 63 +-
.../verify/SubcontractorReverifyData.scala | 432 +++
app/views/templates/Layout.scala.html | 6 +-
...ectSubcontractorsToReverifyView.scala.html | 25 +-
conf/messages.en | 1 +
...bcontractorsToReverifyControllerSpec.scala | 70 +-
...ontractorsToReverifyFormProviderSpec.scala | 42 +-
...ctedUnverifiedSubcontractorsPageSpec.scala | 37 +
...lectSubcontractorsToReverifyViewSpec.scala | 12 +-
13 files changed, 3904 insertions(+), 101 deletions(-)
create mode 100644 app/assets/stylesheets/moj-frontend.min.css
create mode 100644 app/pages/verify/SelectedUnverifiedSubcontractorsPage.scala
create mode 100644 test/pages/verify/SelectedUnverifiedSubcontractorsPageSpec.scala
diff --git a/app/assets/stylesheets/moj-frontend.min.css b/app/assets/stylesheets/moj-frontend.min.css
new file mode 100644
index 00000000..56192947
--- /dev/null
+++ b/app/assets/stylesheets/moj-frontend.min.css
@@ -0,0 +1,3163 @@
+/*
+* Source: https://github.com/ministryofjustice/moj-frontend/releases
+* 2023-08-21 - version 1.8.0
+* (prettified via VSCode Prettier plugin)
+* Modified 2022-11-04
+* - updated [aria-sort] button hover state & psuedo ::before & ::after (a11y fixes)
+*
+*/
+
+@charset "UTF-8";
+
+
+.govuk-table__container {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ max-width: 100%;
+}
+
+/* Desktop: disable scroll */
+@media (min-width: 40.0625em) {
+ .govuk-table__container {
+ overflow-x: visible;
+ }
+}
+
+.govuk-table__header.action-col-width {
+ min-width: 125px;
+}
+.govuk-table__header.reporting-period-col-width {
+ max-width: 120px;
+}
+
+.moj-filter-layout:after {
+ clear: both;
+ content: "";
+ display: block;
+}
+.moj-filter-layout__filter {
+ box-shadow: inset 0 0 0 1px #f3f2f1;
+}
+@media (min-width: 48.0625em) {
+ .moj-filter-layout__filter {
+ float: left;
+ margin-right: 40px;
+ max-width: 385px;
+ min-width: 260px;
+ width: 100%;
+ }
+}
+@media (max-width: 48.0525em) {
+ .js-enabled .moj-filter-layout__filter {
+ background-color: #fff;
+ bottom: 0;
+ overflow-y: scroll;
+ position: fixed;
+ right: 0;
+ top: 0;
+ z-index: 100;
+ }
+}
+.moj-filter-layout__content {
+ overflow: hidden;
+ overflow-x: auto;
+}
+.moj-scrollable-pane {
+ background: linear-gradient(
+ to right,
+ #fff,
+ #fff,
+ hsla(0, 0%, 100%, 0) calc(var(0.75em) * 2)
+ ),
+ radial-gradient(
+ farthest-side at 0 50%,
+ rgba(0, 0, 0, 0.2),
+ hsla(0, 0%, 100%, 0)
+ ),
+ linear-gradient(
+ to left,
+ #fff,
+ #fff,
+ hsla(0, 0%, 100%, 0) calc(var(0.75em) * 2)
+ ),
+ radial-gradient(
+ farthest-side at 100% 50%,
+ rgba(0, 0, 0, 0.2),
+ hsla(0, 0%, 100%, 0)
+ )
+ 100%;
+ background-attachment: local, scroll, local, scroll;
+ background-color: #fff;
+ background-repeat: no-repeat;
+ background-size: 100% 100%, 0.75em 100%, 100% 100%, 0.75em 100%;
+ overflow-x: scroll;
+}
+@media (max-width: 63.75em) {
+ .moj-scrollable-pane .govuk-table__cell,
+ .moj-scrollable-pane .govuk-table__header {
+ white-space: nowrap;
+ }
+}
+.moj-action-bar {
+ font-size: 0;
+}
+.moj-action-bar__filter {
+ display: inline-block;
+ position: relative;
+}
+@media (max-width: 48.0525em) {
+ .moj-action-bar__filter {
+ float: right;
+ }
+}
+@media (min-width: 48.0625em) {
+ .moj-action-bar__filter {
+ margin-right: 10px;
+ padding-right: 12px;
+ }
+ .moj-action-bar__filter:after {
+ background-color: #f3f2f1;
+ content: "";
+ height: 40px;
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 2px;
+ }
+}
+.moj-add-another__item {
+ margin: 30px 0 0;
+ padding: 0;
+ position: relative;
+}
+.moj-add-another__item:first-of-type {
+ margin-top: 0;
+}
+.moj-add-another__title {
+ float: left;
+ padding: 4px 100px 4px 0;
+ width: 100%;
+}
+.moj-add-another__title + .govuk-form-group {
+ clear: left;
+}
+.moj-add-another__remove-button {
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: auto;
+}
+.moj-add-another__add-button {
+ display: block;
+}
+.moj-add-another__heading:focus {
+ background-color: #fd0;
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+ color: #0b0c0c;
+ outline: none;
+}
+.moj-badge {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ border: 2px solid #1d70b8;
+ color: #1d70b8;
+ display: inline-block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 12px;
+ font-size: 0.75rem;
+ font-weight: 700;
+ line-height: 1.25;
+ outline: 2px solid transparent;
+ outline-offset: -2px;
+ padding: 0 5px;
+ text-transform: uppercase;
+ vertical-align: middle;
+}
+/*! Copyright (c) 2011 by Margaret Calvert & Henrik Kubel. All rights reserved. The font has been customised for exclusive use on gov.uk. This cut is not commercially available. */
+@font-face {
+ font-display: fallback;
+ font-family: GDS Transport;
+ font-style: normal;
+ font-weight: 400;
+}
+@font-face {
+ font-display: fallback;
+ font-family: GDS Transport;
+ font-style: normal;
+ font-weight: 700;
+}
+@media print {
+ .moj-badge {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-badge {
+ font-size: 14px;
+ font-size: 0.875rem;
+ line-height: 1.4285714286;
+ }
+}
+@media print {
+ .moj-badge {
+ font-size: 12pt;
+ line-height: 1.2;
+ }
+}
+.moj-badge--purple {
+ border-color: #4c2c92;
+ color: #4c2c92;
+}
+.moj-badge--bright-purple {
+ border-color: #912b88;
+ color: #912b88;
+}
+.moj-badge--red {
+ border-color: #d4351c;
+ color: #d4351c;
+}
+.moj-badge--green {
+ border-color: #00703c;
+ color: #00703c;
+}
+.moj-badge--blue {
+ border-color: #1d70b8;
+ color: #1d70b8;
+}
+.moj-badge--black {
+ border-color: #0b0c0c;
+ color: #0b0c0c;
+}
+.moj-badge--grey {
+ border-color: #505a5f;
+ color: #505a5f;
+}
+.moj-badge--large {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 14px;
+ font-size: 0.875rem;
+ font-weight: 700;
+ line-height: 1.1428571429;
+}
+@media print {
+ .moj-badge--large {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-badge--large {
+ font-size: 16px;
+ font-size: 1rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-badge--large {
+ font-size: 14pt;
+ line-height: 1.2;
+ }
+}
+.moj-banner {
+ border: 5px solid #1d70b8;
+ color: #1d70b8;
+ font-size: 0;
+ margin-bottom: 30px;
+ padding: 10px;
+}
+.moj-banner__icon {
+ fill: currentColor;
+ float: left;
+ margin-right: 10px;
+}
+.moj-banner__message {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ color: #0b0c0c;
+ display: block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+ overflow: hidden;
+}
+@media print {
+ .moj-banner__message {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-banner__message {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-banner__message {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-banner__message h2 {
+ margin-bottom: 10px;
+}
+.moj-banner__message h2:last-child,
+.moj-banner__message p:last-child {
+ margin-bottom: 0;
+}
+.moj-banner__assistive {
+ clip: rect(0 0 0 0) !important;
+ border: 0 !important;
+ -webkit-clip-path: inset(50%) !important;
+ clip-path: inset(50%) !important;
+ height: 1px !important;
+ margin: 0 !important;
+ overflow: hidden !important;
+ padding: 0 !important;
+ position: absolute !important;
+ white-space: nowrap !important;
+ width: 1px !important;
+}
+.moj-banner--success {
+ border-color: #00703c;
+ color: #00703c;
+}
+.moj-banner--warning {
+ border-color: #d4351c;
+ color: #d4351c;
+}
+.moj-button-menu {
+ display: inline-block;
+ position: relative;
+}
+.moj-button-menu__toggle-button {
+ display: inline-block;
+ margin-bottom: 10px;
+ margin-right: 10px;
+ width: auto;
+}
+.moj-button-menu__toggle-button:last-child {
+ margin-right: 0;
+}
+.moj-button-menu__toggle-button:after {
+ background-image: url(/assets/images/icon-arrow-white-down.svg);
+ background-repeat: no-repeat;
+ content: "";
+ display: inline-block;
+ height: 5px;
+ margin-left: 10px;
+ vertical-align: middle;
+ width: 10px;
+}
+.moj-button-menu__toggle-button:focus:after {
+ background-image: url(/assets/images/icon-arrow-black-down.svg);
+}
+.moj-button-menu__toggle-button[aria-expanded="true"]:focus:after {
+ background-image: url(/assets/images/icon-arrow-black-up.svg);
+}
+.moj-button-menu__toggle-button:hover:after {
+ background-image: url(/assets/images/icon-arrow-white-down.svg);
+}
+.moj-button-menu__toggle-button[aria-expanded="true"]:after,
+.moj-button-menu__toggle-button[aria-expanded="true"]:hover:after {
+ background-image: url(/assets/images/icon-arrow-white-up.svg);
+}
+.moj-button-menu__toggle-button--secondary {
+ margin-bottom: 5px;
+ margin-right: 0;
+}
+.moj-button-menu__toggle-button--secondary:after {
+ background-image: url(/assets/images/icon-arrow-black-down.svg);
+}
+.moj-button-menu__toggle-button--secondary[aria-expanded="true"]:after {
+ background-image: url(/assets/images/icon-arrow-black-up.svg);
+}
+.moj-button-menu__toggle-button--secondary:hover:after {
+ background-image: url(/assets/images/icon-arrow-black-down.svg);
+}
+.moj-button-menu__toggle-button--secondary[aria-expanded="true"]:hover:after {
+ background-image: url(/assets/images/icon-arrow-black-up.svg);
+}
+.moj-button-menu__item {
+ display: inline-block;
+ margin-bottom: 10px;
+ margin-right: 10px;
+ width: auto;
+}
+.moj-button-menu__item:last-child {
+ margin-right: 0;
+}
+.moj-button-menu [role="menuitem"] {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-appearance: none;
+ background-color: #f3f2f1;
+ border: none;
+ box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ display: block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+ margin-bottom: 0;
+ padding: 10px;
+ text-align: left;
+ width: 100%;
+}
+@media print {
+ .moj-button-menu [role="menuitem"] {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-button-menu [role="menuitem"] {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-button-menu [role="menuitem"] {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-button-menu [role="menuitem"]:link,
+.moj-button-menu [role="menuitem"]:visited {
+ color: #0b0c0c;
+ text-decoration: none;
+}
+.moj-button-menu [role="menuitem"]:hover {
+ background-color: #b1b4b6;
+}
+.moj-button-menu [role="menuitem"]:focus {
+ outline: 3px solid #fd0;
+ outline-offset: 0;
+ position: relative;
+ z-index: 10;
+}
+.moj-button-menu__wrapper {
+ font-size: 0;
+}
+.moj-button-menu__wrapper--right {
+ right: 0;
+}
+.moj-button-menu [role="menu"] {
+ position: absolute;
+ width: 200px;
+ z-index: 10;
+}
+.moj-button-menu [aria-expanded="true"] + [role="menu"] {
+ display: block;
+}
+.moj-button-menu [aria-expanded="false"] + [role="menu"] {
+ display: none;
+}
+.govuk-width-container {
+ margin-left: 15px;
+ margin-right: 15px;
+ max-width: 960px;
+}
+@supports (margin: max(calc(0px))) {
+ .govuk-width-container {
+ margin-left: max(15px, calc(15px + env(safe-area-inset-left)));
+ margin-right: max(15px, calc(15px + env(safe-area-inset-right)));
+ }
+}
+@media (min-width: 40.0625em) {
+ .govuk-width-container {
+ margin-left: 30px;
+ margin-right: 30px;
+ }
+ @supports (margin: max(calc(0px))) {
+ .govuk-width-container {
+ margin-left: max(30px, calc(15px + env(safe-area-inset-left)));
+ margin-right: max(30px, calc(15px + env(safe-area-inset-right)));
+ }
+ }
+}
+@media (min-width: 1020px) {
+ .govuk-width-container {
+ margin-left: auto;
+ margin-right: auto;
+ }
+ @supports (margin: max(calc(0px))) {
+ .govuk-width-container {
+ margin-left: auto;
+ margin-right: auto;
+ }
+ }
+}
+.moj-cookie-banner {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ background-color: #fff;
+ box-sizing: border-box;
+ display: none;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 14px;
+ font-size: 0.875rem;
+ font-weight: 400;
+ left: 15px;
+ line-height: 1.1428571429;
+ padding-bottom: 15px;
+ padding-right: 15px;
+ padding-top: 15px;
+}
+@media print {
+ .moj-cookie-banner {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-cookie-banner {
+ font-size: 16px;
+ font-size: 1rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-cookie-banner {
+ font-size: 14pt;
+ line-height: 1.2;
+ }
+}
+.moj-cookie-banner--show {
+ display: block !important;
+}
+.moj-cookie-banner__message {
+ margin: 0 15px;
+ max-width: 960px;
+}
+@supports (margin: max(calc(0px))) {
+ .moj-cookie-banner__message {
+ margin-left: max(15px, calc(15px + env(safe-area-inset-left)));
+ margin-right: max(15px, calc(15px + env(safe-area-inset-right)));
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-cookie-banner__message {
+ margin-left: 30px;
+ margin-right: 30px;
+ }
+ @supports (margin: max(calc(0px))) {
+ .moj-cookie-banner__message {
+ margin-left: max(30px, calc(15px + env(safe-area-inset-left)));
+ margin-right: max(30px, calc(15px + env(safe-area-inset-right)));
+ }
+ }
+}
+@media (min-width: 1020px) {
+ .moj-cookie-banner__message {
+ margin-left: auto;
+ margin-right: auto;
+ }
+ @supports (margin: max(calc(0px))) {
+ .moj-cookie-banner__message {
+ margin-left: auto;
+ margin-right: auto;
+ }
+ }
+}
+.moj-cookie-banner__buttons .govuk-grid-column-full {
+ padding-left: 0;
+}
+@media (min-width: 40.0625em) {
+ .moj-cookie-banner .govuk-button {
+ width: 90%;
+ }
+}
+@media print {
+ .moj-cookie-banner {
+ display: none !important;
+ }
+}
+.moj-label__currency {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ background-color: #f3f2f1;
+ border-right: 2px solid #0b0c0c;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+ margin: 2px 0 0 2px !important;
+ padding: 5.5px 12px;
+ position: absolute;
+}
+@media print {
+ .moj-label__currency {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-label__currency {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-label__currency {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-label__currency--error {
+ background-color: #d4351c;
+ border-right: 2px solid #d4351c;
+ color: #fff;
+}
+@media (max-width: 40.0525em) {
+ .moj-label__currency {
+ padding: 8px 12px;
+ }
+}
+.moj-input__currency {
+ margin: 0;
+ padding-left: 40px;
+}
+.moj-filter {
+ background-color: #fff;
+ box-shadow: inset 0 0 0 1px #b1b4b6;
+}
+.moj-filter:focus {
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+}
+.moj-filter__header {
+ background-color: #b1b4b6;
+ font-size: 0;
+ padding: 10px 20px;
+ text-align: justify;
+}
+.moj-filter__header:after {
+ content: "";
+ display: inline-block;
+ width: 100%;
+}
+.moj-filter__header [class^="govuk-heading-"] {
+ margin-bottom: 0;
+}
+.moj-filter__legend {
+ overflow: visible;
+ width: 100%;
+}
+.moj-filter__legend button {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-appearance: none;
+ background-color: transparent;
+ border: 0;
+ border-radius: 0;
+ box-sizing: border-box;
+ cursor: pointer;
+ display: block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 18px;
+ font-size: 1.125rem;
+ font-weight: 700;
+ line-height: 1.1111111111;
+ margin: 0;
+ padding: 0;
+ position: relative;
+ text-align: left;
+ width: 100%;
+}
+@media print {
+ .moj-filter__legend button {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-filter__legend button {
+ font-size: 24px;
+ font-size: 1.5rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-filter__legend button {
+ font-size: 18pt;
+ line-height: 1.15;
+ }
+}
+.moj-filter__legend button::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+.moj-filter__legend button:after {
+ background-image: url(/assets/images/icon-toggle-plus-minus.svg);
+ background-position: 0 0;
+ content: "";
+ display: block;
+ height: 16px;
+ margin-top: -8px;
+ position: absolute;
+ right: 0;
+ top: 50%;
+ width: 16px;
+}
+.moj-filter__legend button[aria-expanded="true"]:after {
+ background-position: 16px 16px;
+}
+.moj-filter__header-action,
+.moj-filter__header-title {
+ display: inline-block;
+ text-align: left;
+ vertical-align: middle;
+}
+.moj-filter__close {
+ -webkit-appearance: none;
+ background-color: transparent;
+ border: none;
+ border-radius: 0;
+ color: #0b0c0c;
+ cursor: pointer;
+ margin: 0;
+ padding: 0;
+}
+.moj-filter__close:focus {
+ background-color: #fd0;
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+ color: #0b0c0c;
+ outline: none;
+}
+.moj-filter__close::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+.moj-filter__close:before {
+ background-image: url(/assets/images/icon-close-cross-black.svg);
+ content: "";
+ display: inline-block;
+ height: 14px;
+ margin-right: 5px;
+ position: relative;
+ top: -1px;
+ vertical-align: middle;
+ width: 14px;
+}
+.moj-filter__close {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+}
+@media print {
+ .moj-filter__close {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-filter__close {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-filter__close {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-filter__selected {
+ background-color: #f3f2f1;
+ box-shadow: inset 0 0 0 1px #b1b4b6;
+ padding: 20px;
+}
+.moj-filter__selected ul:last-of-type {
+ margin-bottom: 0;
+}
+.moj-filter__selected-heading {
+ font-size: 0;
+ text-align: justify;
+}
+.moj-filter__selected-heading:after {
+ content: "";
+ display: inline-block;
+ width: 100%;
+}
+.moj-filter__heading-action,
+.moj-filter__heading-title {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: inline-block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 14px;
+ font-size: 0.875rem;
+ font-weight: 400;
+ line-height: 1.1428571429;
+ text-align: left;
+ vertical-align: middle;
+}
+@media print {
+ .moj-filter__heading-action,
+ .moj-filter__heading-title {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-filter__heading-action,
+ .moj-filter__heading-title {
+ font-size: 16px;
+ font-size: 1rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-filter__heading-action,
+ .moj-filter__heading-title {
+ font-size: 14pt;
+ line-height: 1.2;
+ }
+}
+.moj-filter-tags {
+ font-size: 0;
+ margin-bottom: 20px;
+ padding-left: 0;
+}
+.moj-filter-tags li {
+ display: inline-block;
+ margin-right: 10px;
+}
+.moj-filter__tag {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ background-color: #fff;
+ border: 1px solid #0b0c0c;
+ color: #0b0c0c;
+ display: inline-block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 14px;
+ font-size: 0.875rem;
+ font-weight: 400;
+ line-height: 1.1428571429;
+ margin-top: 5px;
+ padding: 5px;
+ text-decoration: none;
+}
+@media print {
+ .moj-filter__tag {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-filter__tag {
+ font-size: 16px;
+ font-size: 1rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-filter__tag {
+ font-size: 14pt;
+ line-height: 1.2;
+ }
+}
+.moj-filter__tag:link,
+.moj-filter__tag:visited {
+ color: #0b0c0c;
+}
+.moj-filter__tag:focus {
+ background-color: #fd0;
+ color: #0b0c0c;
+}
+.moj-filter__tag:hover {
+ background-color: #0b0c0c;
+ color: #fff;
+}
+.moj-filter__tag:after {
+ background-image: url(/assets/images/icon-tag-remove-cross.svg);
+ content: "";
+ display: inline-block;
+ font-weight: 700;
+ height: 10px;
+ margin-left: 5px;
+ vertical-align: middle;
+ width: 10px;
+}
+.moj-filter__tag:hover:after {
+ background-image: url(/assets/images/icon-tag-remove-cross-white.svg);
+}
+.moj-filter__options {
+ box-shadow: inset 0 0 0 1px #b1b4b6;
+ margin-top: -1px;
+ padding: 20px;
+}
+.moj-filter__options div:last-of-type {
+ margin-bottom: 0;
+}
+.moj-header {
+ background-color: #0b0c0c;
+ border-bottom: 10px solid #1d70b8;
+ padding-top: 15px;
+}
+.moj-header__container {
+ margin: 0 15px;
+ max-width: 960px;
+ position: relative;
+}
+@media (min-width: 40.0625em) {
+ .moj-header__container {
+ margin: 0 30px;
+ }
+}
+@media (min-width: 1020px) {
+ .moj-header__container {
+ margin: 0 auto;
+ }
+}
+.moj-header__container:after {
+ clear: both;
+ content: "";
+ display: block;
+}
+.moj-header__logo {
+ padding-bottom: 5px;
+}
+@media (min-width: 48.0625em) {
+ .moj-header__logo {
+ float: left;
+ }
+}
+.moj-header__logotype-crown {
+ margin-right: 5px;
+ position: relative;
+ top: -4px;
+ vertical-align: top;
+}
+.moj-header__logotype-crest {
+ margin-right: 5px;
+ position: relative;
+ top: -6px;
+ vertical-align: top;
+}
+.moj-header__content {
+ padding-bottom: 10px;
+}
+@media (min-width: 48.0625em) {
+ .moj-header__content {
+ float: right;
+ }
+}
+.moj-header__link,
+.moj-header__link > a {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ border-bottom: 1px solid transparent;
+ color: #fff;
+ display: inline-block;
+ font-family: GDS Transport, arial, sans-serif;
+ line-height: 25px;
+ margin-bottom: -1px;
+ overflow: hidden;
+ text-decoration: underline;
+ text-decoration: none;
+ vertical-align: middle;
+}
+@media print {
+ .moj-header__link,
+ .moj-header__link > a {
+ font-family: sans-serif;
+ }
+}
+.moj-header__link:focus,
+.moj-header__link > a:focus {
+ background-color: #fd0;
+ -webkit-box-decoration-break: clone;
+ box-decoration-break: clone;
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+ outline: 3px solid transparent;
+ text-decoration: none;
+}
+.moj-header__link:link,
+.moj-header__link > a:link {
+ color: #1d70b8;
+}
+.moj-header__link:visited,
+.moj-header__link > a:visited {
+ color: #4c2c92;
+}
+.moj-header__link:hover,
+.moj-header__link > a:hover {
+ color: #003078;
+}
+.moj-header__link:active,
+.moj-header__link > a:active {
+ color: #0b0c0c;
+}
+.moj-header__link:active,
+.moj-header__link:hover,
+.moj-header__link:link,
+.moj-header__link:visited,
+.moj-header__link > a:active,
+.moj-header__link > a:hover,
+.moj-header__link > a:link,
+.moj-header__link > a:visited {
+ color: #fff;
+}
+.moj-header__link:hover,
+.moj-header__link > a:hover {
+ border-color: #fff;
+}
+.moj-header__link:focus,
+.moj-header__link > a:focus {
+ border-color: transparent;
+ color: #0b0c0c;
+}
+.moj-header__link--organisation-name,
+.moj-header__link > a--organisation-name {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 18px;
+ font-size: 1.125rem;
+ font-weight: 700;
+ line-height: 1.1111111111;
+ vertical-align: middle;
+}
+@media print {
+ .moj-header__link--organisation-name,
+ .moj-header__link > a--organisation-name {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-header__link--organisation-name,
+ .moj-header__link > a--organisation-name {
+ font-size: 24px;
+ font-size: 1.5rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-header__link--organisation-name,
+ .moj-header__link > a--organisation-name {
+ font-size: 18pt;
+ line-height: 1.15;
+ }
+}
+.moj-header__link--organisation-name:hover,
+.moj-header__link > a--organisation-name:hover {
+ border-color: transparent;
+}
+.moj-header__link--service-name,
+.moj-header__link > a--service-name {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 18px;
+ font-size: 1.125rem;
+ line-height: 1.1111111111;
+ vertical-align: middle;
+}
+@media print {
+ .moj-header__link--service-name,
+ .moj-header__link > a--service-name {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-header__link--service-name,
+ .moj-header__link > a--service-name {
+ font-size: 24px;
+ font-size: 1.5rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-header__link--service-name,
+ .moj-header__link > a--service-name {
+ font-size: 18pt;
+ line-height: 1.15;
+ }
+}
+@media (max-width: 48.0525em) {
+ .moj-header__link--service-name,
+ .moj-header__link > a--service-name {
+ display: block;
+ }
+}
+@media (min-width: 48.0625em) {
+ .moj-header__link--service-name,
+ .moj-header__link > a--service-name {
+ margin-left: 5px;
+ }
+}
+.moj-header__link--service-name:hover,
+.moj-header__link > a--service-name:hover {
+ border-color: transparent;
+}
+.moj-header__link a {
+ margin-bottom: 1px;
+ vertical-align: text-bottom;
+}
+.moj-header__link a:hover {
+ border-color: #fff;
+}
+@media (max-width: 48.0525em) {
+ .moj-header__link a {
+ margin-bottom: -1px;
+ vertical-align: middle;
+ }
+}
+span.moj-header__link:hover {
+ border-color: transparent;
+}
+.moj-header__navigation {
+ color: #fff;
+ margin-top: 3px;
+}
+.moj-header__navigation-list {
+ font-size: 0;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+.moj-header__navigation-item {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: inline-block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+ margin-right: 20px;
+}
+@media print {
+ .moj-header__navigation-item {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-header__navigation-item {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-header__navigation-item {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-header__navigation-item:last-child {
+ margin-right: 0;
+}
+.moj-header__navigation-link {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ text-decoration: underline;
+}
+@media print {
+ .moj-header__navigation-link {
+ font-family: sans-serif;
+ }
+}
+.moj-header__navigation-link:focus {
+ background-color: #fd0;
+ -webkit-box-decoration-break: clone;
+ box-decoration-break: clone;
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+ outline: 3px solid transparent;
+ text-decoration: none;
+}
+.moj-header__navigation-link:link {
+ color: #1d70b8;
+}
+.moj-header__navigation-link:visited {
+ color: #4c2c92;
+}
+.moj-header__navigation-link:hover {
+ color: #003078;
+}
+.moj-header__navigation-link:active {
+ color: #0b0c0c;
+}
+.moj-header__navigation-link:active,
+.moj-header__navigation-link:link,
+.moj-header__navigation-link:visited {
+ color: inherit;
+ text-decoration: none;
+}
+.moj-header__navigation-link:hover {
+ text-decoration: underline !important;
+}
+.moj-header__navigation-link:focus {
+ color: #0b0c0c;
+}
+.moj-header__navigation-link[aria-current="page"] {
+ text-decoration: none;
+}
+.moj-identity-bar {
+ background-color: #fff;
+ box-shadow: inset 0 -1px 0 0 #b1b4b6;
+ color: #0b0c0c;
+ padding-bottom: 9px;
+ padding-top: 10px;
+}
+.moj-identity-bar:after {
+ clear: both;
+ content: "";
+ display: block;
+}
+.moj-identity-bar__container {
+ font-size: 0;
+ margin: 0 15px;
+ max-width: 960px;
+ text-align: justify;
+}
+@media (min-width: 40.0625em) {
+ .moj-identity-bar__container {
+ margin: 0 30px;
+ }
+}
+@media (min-width: 1020px) {
+ .moj-identity-bar__container {
+ margin: 0 auto;
+ }
+}
+.moj-identity-bar__container:after {
+ content: "";
+ display: inline-block;
+ width: 100%;
+}
+.moj-identity-bar__title {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: inline-block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 14px;
+ font-size: 0.875rem;
+ font-weight: 400;
+ line-height: 1.1428571429;
+ vertical-align: top;
+}
+@media print {
+ .moj-identity-bar__title {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-identity-bar__title {
+ font-size: 16px;
+ font-size: 1rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-identity-bar__title {
+ font-size: 14pt;
+ line-height: 1.2;
+ }
+}
+.moj-identity-bar__details {
+ margin-right: 10px;
+ padding-bottom: 5px;
+ padding-top: 5px;
+}
+@media (min-width: 40.0625em) {
+ .moj-identity-bar__details {
+ display: inline-block;
+ padding-bottom: 9px;
+ padding-top: 11px;
+ vertical-align: top;
+ }
+}
+.moj-identity-bar__actions {
+ margin-bottom: -10px;
+}
+@media (min-width: 40.0625em) {
+ .moj-identity-bar__actions {
+ display: inline-block;
+ vertical-align: middle;
+ }
+}
+.moj-identity-bar__menu {
+ display: inline-block;
+ margin-right: 10px;
+}
+.moj-identity-bar__menu:last-child {
+ margin-right: 0;
+}
+.moj-messages-container {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ border: 1px solid #b1b4b6;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+}
+@media print {
+ .moj-messages-container {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-messages-container {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-messages-container {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-message-list {
+ min-height: 200px;
+ overflow-x: hidden;
+ overflow-y: scroll;
+ padding: 5px;
+}
+.moj-message-list__date {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ color: #505a5f;
+ display: inline-block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 700;
+ line-height: 1.25;
+ padding: 15px 0;
+ text-align: center;
+ width: 100%;
+}
+@media print {
+ .moj-message-list__date {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-message-list__date {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-message-list__date {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-message-item {
+ border-radius: 0.5em 0.5em 0.75em 0.5em;
+ margin-bottom: 5px;
+ padding: 15px;
+ position: relative;
+}
+@media (min-width: 40.0625em) {
+ .moj-message-item {
+ width: 50%;
+ }
+}
+.moj-message-item--sent {
+ background-color: #1d70b8;
+ color: #fff;
+ float: right;
+ margin-right: 10px;
+ padding-right: 25px;
+ text-align: right;
+}
+.moj-message-item--sent:after {
+ border-bottom-left-radius: 1.75em 1.5em;
+ border-left: 1em solid #1d70b8;
+ bottom: 0;
+ content: "";
+ height: 1.5em;
+ position: absolute;
+ right: -1.5em;
+ width: 1.5em;
+}
+.moj-message-item--received {
+ background-color: #f3f2f1;
+ float: left;
+ margin-left: 10px;
+ padding-left: 25px;
+}
+.moj-message-item--received:after {
+ border-bottom-right-radius: 1.75em 1.5em;
+ border-right: 1em solid #f3f2f1;
+ bottom: 0;
+ content: "";
+ height: 1.5em;
+ left: -1.5em;
+ position: absolute;
+ width: 1.5em;
+}
+.moj-message-item a:link,
+.moj-message-item a:visited {
+ color: #fff;
+}
+.moj-message-item a:focus {
+ color: #0b0c0c;
+}
+.moj-message-item__text--sent table {
+ color: #fff;
+}
+.moj-message-item__text--sent table td,
+.moj-message-item__text--sent table th {
+ border-bottom: 1px solid #fff;
+}
+.moj-message-item__meta {
+ margin-top: 10px;
+}
+.moj-message-item__meta--sender {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 14px;
+ font-size: 0.875rem;
+ font-weight: 700;
+ line-height: 1.1428571429;
+}
+@media print {
+ .moj-message-item__meta--sender {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-message-item__meta--sender {
+ font-size: 16px;
+ font-size: 1rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-message-item__meta--sender {
+ font-size: 14pt;
+ line-height: 1.2;
+ }
+}
+.moj-message-item__meta--timestamp {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 14px;
+ font-size: 0.875rem;
+ font-weight: 700;
+ line-height: 1.1428571429;
+}
+@media print {
+ .moj-message-item__meta--timestamp {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-message-item__meta--timestamp {
+ font-size: 16px;
+ font-size: 1rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-message-item__meta--timestamp {
+ font-size: 14pt;
+ line-height: 1.2;
+ }
+}
+.moj-multi-file-upload {
+ margin-bottom: 40px;
+}
+.moj-multi-file-upload--enhanced .moj-multi-file-upload__button {
+ display: none;
+}
+.moj-multi-file-upload__dropzone {
+ display: flex;
+ outline: 3px dashed #0b0c0c;
+ padding: 60px 15px;
+ text-align: center;
+ transition: outline-offset 0.1s ease-in-out, background-color 0.1s linear;
+}
+.moj-multi-file-upload__dropzone label {
+ display: inline-block;
+ margin-bottom: 0;
+ width: auto;
+}
+.moj-multi-file-upload__dropzone p {
+ margin-bottom: 0;
+ margin-right: 10px;
+ padding-top: 7px;
+}
+.moj-multi-file-upload__dropzone [type="file"] {
+ left: -9999em;
+ position: absolute;
+}
+.moj-multi-file-upload--dragover {
+ background: #b1b4b6;
+ outline-color: #6f777b;
+}
+.moj-multi-file-upload--focused {
+ background-color: #fd0;
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+ color: #0b0c0c;
+ outline: none;
+}
+.moj-multi-file-upload__error {
+ color: #d4351c;
+ font-weight: 700;
+}
+.moj-multi-file-upload__success {
+ color: #00703c;
+ font-weight: 700;
+}
+.moj-multi-file-upload__error svg,
+.moj-multi-file-upload__success svg {
+ fill: currentColor;
+ float: left;
+ margin-right: 10px;
+}
+.moj-multi-select__checkbox {
+ display: inline-block;
+ padding-left: 0;
+}
+.moj-multi-select__toggle-label {
+ margin: 0 !important;
+ padding: 0 !important;
+}
+.moj-notification-badge {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ background-color: #d4351c;
+ border-radius: 75px;
+ color: #fff;
+ display: inline-block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 14px;
+ font-size: 0.875rem;
+ font-size: 16px;
+ font-weight: 700;
+ font-weight: 600;
+ line-height: 1.1428571429;
+ min-width: 15px;
+ padding: 5px 8px 2px;
+ text-align: center;
+ white-space: nowrap;
+}
+@media print {
+ .moj-notification-badge {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-notification-badge {
+ font-size: 16px;
+ font-size: 1rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-notification-badge {
+ font-size: 14pt;
+ line-height: 1.2;
+ }
+}
+.moj-organisation-nav {
+ border-bottom: 1px solid #b1b4b6;
+ margin-bottom: 15px;
+ margin-top: 10px;
+ padding-bottom: 5px;
+}
+.moj-organisation-nav:after {
+ clear: both;
+ content: "";
+ display: block;
+}
+.moj-organisation-nav__title {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 700;
+ line-height: 1.25;
+}
+@media print {
+ .moj-organisation-nav__title {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-organisation-nav__title {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-organisation-nav__title {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-organisation-nav__title {
+ float: left;
+ width: 75%;
+ }
+}
+.moj-organisation-nav__link {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ text-decoration: underline;
+}
+@media print {
+ .moj-organisation-nav__link {
+ font-family: sans-serif;
+ }
+}
+.moj-organisation-nav__link:focus {
+ background-color: #fd0;
+ -webkit-box-decoration-break: clone;
+ box-decoration-break: clone;
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+ outline: 3px solid transparent;
+ text-decoration: none;
+}
+.moj-organisation-nav__link:link {
+ color: #1d70b8;
+}
+.moj-organisation-nav__link:visited {
+ color: #4c2c92;
+}
+.moj-organisation-nav__link:hover {
+ color: #003078;
+}
+.moj-organisation-nav__link:active,
+.moj-organisation-nav__link:focus {
+ color: #0b0c0c;
+}
+@media print {
+ .moj-organisation-nav__link[href^="/"]:after,.moj-organisation-nav__link[href^="http://"]:after,.moj-organisation-nav__link[href^="https://"]:after
+ {
+ word-wrap: break-word;
+ content: " (" attr(href) ")";
+ font-size: 90%;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-organisation-nav__link {
+ float: right;
+ }
+}
+.moj-page-header-actions {
+ font-size: 0;
+ margin-bottom: 40px;
+ min-height: 40px;
+ text-align: justify;
+}
+.moj-page-header-actions:after {
+ clear: both;
+ content: "";
+ display: block;
+ display: inline-block;
+ width: 100%;
+}
+.moj-page-header-actions__title [class^="govuk-heading-"] {
+ margin-bottom: 10px;
+ text-align: left;
+}
+@media (min-width: 40.0625em) {
+ .moj-page-header-actions__title [class^="govuk-heading-"] {
+ margin-bottom: 0;
+ }
+ .moj-page-header-actions__actions,
+ .moj-page-header-actions__title {
+ display: inline-block;
+ vertical-align: middle;
+ }
+}
+.moj-page-header-actions__action:last-child {
+ margin-bottom: 0;
+}
+@media (min-width: 40.0625em) {
+ .moj-page-header-actions__action {
+ margin-bottom: 0;
+ }
+}
+@media (min-width: 48.0625em) {
+ .moj-pagination {
+ font-size: 0;
+ margin-left: -5px;
+ margin-right: -5px;
+ text-align: justify;
+ }
+ .moj-pagination:after {
+ content: "";
+ display: inline-block;
+ width: 100%;
+ }
+}
+.moj-pagination__list {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+@media (min-width: 48.0625em) {
+ .moj-pagination__list {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+}
+.moj-pagination__results {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+ margin-top: 0;
+}
+@media print {
+ .moj-pagination__results {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-pagination__results {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-pagination__results {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+@media (min-width: 48.0625em) {
+ .moj-pagination__results {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+}
+.moj-pagination__item {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: inline-block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+}
+@media print {
+ .moj-pagination__item {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-pagination__item {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-pagination__item {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-pagination__item--active,
+.moj-pagination__item--dots {
+ font-weight: 700;
+ height: 25px;
+ padding: 5px 10px;
+ text-align: center;
+}
+.moj-pagination__item--dots {
+ padding-left: 0;
+ padding-right: 0;
+}
+.moj-pagination__item--next .moj-pagination__link:after,
+.moj-pagination__item--prev .moj-pagination__link:before {
+ background: transparent;
+ border-style: solid;
+ color: #0b0c0c;
+ content: "";
+ display: inline-block;
+ height: 10px;
+ transform: rotate(-45deg);
+ width: 10px;
+}
+.moj-pagination__item--prev .moj-pagination__link:before {
+ border-width: 3px 0 0 3px;
+ margin-right: 5px;
+}
+.moj-pagination__item--next .moj-pagination__link:after {
+ border-width: 0 3px 3px 0;
+ margin-left: 5px;
+}
+.moj-pagination__link {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: block;
+ font-family: GDS Transport, arial, sans-serif;
+ min-width: 25px;
+ padding: 5px;
+ text-align: center;
+ text-decoration: underline;
+ text-decoration: none;
+}
+@media print {
+ .moj-pagination__link {
+ font-family: sans-serif;
+ }
+}
+.moj-pagination__link:focus {
+ background-color: #fd0;
+ -webkit-box-decoration-break: clone;
+ box-decoration-break: clone;
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+ outline: 3px solid transparent;
+ text-decoration: none;
+}
+.moj-pagination__link:link {
+ color: #1d70b8;
+}
+.moj-pagination__link:visited {
+ color: #4c2c92;
+}
+.moj-pagination__link:hover {
+ color: #003078;
+}
+.moj-pagination__link:active {
+ color: #0b0c0c;
+}
+.moj-pagination__link:link,
+.moj-pagination__link:visited {
+ color: #1d70b8;
+}
+.moj-pagination__link:hover {
+ color: #5694ca;
+}
+.moj-pagination__link:focus {
+ color: #0b0c0c;
+}
+.moj-pagination__results {
+ padding: 5px;
+}
+.moj-password-reveal {
+ display: flex;
+}
+.moj-password-reveal__input {
+ margin-right: 5px;
+}
+.moj-password-reveal__button {
+ width: 80px;
+}
+.moj-primary-navigation {
+ background-color: #f3f2f1;
+}
+.moj-primary-navigation__container {
+ font-size: 0;
+ margin: 0 15px;
+ max-width: 960px;
+ text-align: justify;
+}
+@media (min-width: 40.0625em) {
+ .moj-primary-navigation__container {
+ margin: 0 30px;
+ }
+}
+@media (min-width: 1020px) {
+ .moj-primary-navigation__container {
+ margin: 0 auto;
+ }
+}
+.moj-primary-navigation__container:after {
+ content: "";
+ display: inline-block;
+ width: 100%;
+}
+.moj-primary-navigation__nav {
+ text-align: left;
+}
+@media (min-width: 48.0625em) {
+ .moj-primary-navigation__nav {
+ display: inline-block;
+ vertical-align: middle;
+ }
+}
+.moj-primary-navigation__list {
+ font-size: 0;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+.moj-primary-navigation__item {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: inline-block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+ margin-right: 20px;
+ margin-top: 0;
+}
+@media print {
+ .moj-primary-navigation__item {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-primary-navigation__item {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-primary-navigation__item {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-primary-navigation__item:last-child {
+ margin-right: 0;
+}
+.moj-primary-navigation__link {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-weight: 700;
+ padding-bottom: 15px;
+ padding-top: 15px;
+ text-decoration: underline;
+ text-decoration: none;
+}
+@media print {
+ .moj-primary-navigation__link {
+ font-family: sans-serif;
+ }
+}
+.moj-primary-navigation__link:focus {
+ background-color: #fd0;
+ -webkit-box-decoration-break: clone;
+ box-decoration-break: clone;
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+ outline: 3px solid transparent;
+ text-decoration: none;
+}
+.moj-primary-navigation__link:link {
+ color: #1d70b8;
+}
+.moj-primary-navigation__link:visited {
+ color: #4c2c92;
+}
+.moj-primary-navigation__link:hover {
+ color: #003078;
+}
+.moj-primary-navigation__link:active {
+ color: #0b0c0c;
+}
+.moj-primary-navigation__link:link,
+.moj-primary-navigation__link:visited {
+ color: #1d70b8;
+}
+.moj-primary-navigation__link:hover {
+ color: #5694ca;
+}
+.moj-primary-navigation__link:focus {
+ box-shadow: none;
+ color: #0b0c0c;
+ position: relative;
+ z-index: 1;
+}
+.moj-primary-navigation__link:focus:before {
+ background-color: #0b0c0c;
+ bottom: 0;
+ content: "";
+ display: block;
+ height: 5px;
+ left: 0;
+ position: absolute;
+ width: 100%;
+}
+.moj-primary-navigation__link[aria-current] {
+ color: #1d70b8;
+ font-weight: 700;
+ position: relative;
+ text-decoration: none;
+}
+.moj-primary-navigation__link[aria-current]:before {
+ background-color: #1d70b8;
+ bottom: 0;
+ content: "";
+ display: block;
+ height: 5px;
+ left: 0;
+ position: absolute;
+ width: 100%;
+}
+.moj-primary-navigation__link[aria-current]:focus {
+ border: none;
+ color: #0b0c0c;
+ position: relative;
+}
+.moj-primary-navigation__link[aria-current]:focus:before {
+ background-color: #0b0c0c;
+}
+@media (min-width: 48.0625em) {
+ .moj-primary-navigation__search {
+ display: inline-block;
+ vertical-align: middle;
+ }
+}
+.moj-progress-bar {
+ margin-bottom: 40px;
+}
+.moj-progress-bar__list {
+ font-size: 0;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ position: relative;
+ text-align: justify;
+ vertical-align: top;
+}
+.moj-progress-bar__list:after {
+ content: "";
+ display: inline-block;
+ width: 100%;
+}
+.moj-progress-bar__list:before {
+ border-top: 6px solid #00703c;
+ content: "";
+ left: 0;
+ position: absolute;
+ top: 13px;
+ width: 100%;
+}
+.moj-progress-bar__item {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: inline-block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+ max-width: 20%;
+ position: relative;
+ text-align: center;
+ vertical-align: top;
+}
+@media print {
+ .moj-progress-bar__item {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-progress-bar__item {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-progress-bar__item {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-progress-bar__item:first-child:before,
+.moj-progress-bar__item:last-child:before {
+ border-top: 6px solid #fff;
+ content: "";
+ left: 0;
+ position: absolute;
+ top: 13px;
+ width: 50%;
+}
+.moj-progress-bar__item:first-child:before {
+ left: 0;
+}
+.moj-progress-bar__item:last-child:before {
+ left: auto;
+ right: 0;
+}
+.moj-progress-bar__item[aria-current="step"] {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 700;
+ line-height: 1.25;
+}
+@media print {
+ .moj-progress-bar__item[aria-current="step"] {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-progress-bar__item[aria-current="step"] {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-progress-bar__item[aria-current="step"] {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-progress-bar__icon {
+ background-color: #fff;
+ border: 6px solid #00703c;
+ border-radius: 50%;
+ box-sizing: border-box;
+ display: block;
+ height: 32px;
+ margin-left: auto;
+ margin-right: auto;
+ position: relative;
+ width: 32px;
+}
+.moj-progress-bar__icon--complete {
+ background-color: #00703c;
+ background-image: url(/assets/images/icon-progress-tick.svg);
+ background-position: 50% 50%;
+ background-repeat: no-repeat;
+}
+.moj-progress-bar__label {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ word-wrap: break-word;
+ display: block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 14px;
+ font-size: 0.875rem;
+ font-weight: 400;
+ font-weight: inherit;
+ line-height: 1.1428571429;
+ margin-top: 15px;
+ position: relative;
+}
+@media print {
+ .moj-progress-bar__label {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-progress-bar__label {
+ font-size: 16px;
+ font-size: 1rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-progress-bar__label {
+ font-size: 14pt;
+ line-height: 1.2;
+ }
+}
+.moj-rich-text-editor__toolbar {
+ margin-bottom: 10px;
+}
+.moj-rich-text-editor__toolbar:after {
+ clear: both;
+ content: "";
+ display: block;
+}
+.moj-rich-text-editor__toolbar-button {
+ background-color: #fff;
+ background-position: 50% 50%;
+ background-repeat: no-repeat;
+ background-size: 40px 40px;
+ border: 2px solid #0b0c0c;
+ color: #0b0c0c;
+ cursor: pointer;
+ float: left;
+ height: 40px;
+ margin-left: -2px;
+ outline: 0;
+ text-decoration: none;
+ vertical-align: top;
+ width: 40px;
+}
+.moj-rich-text-editor__toolbar-button:first-child {
+ margin-left: 0;
+}
+.moj-rich-text-editor__toolbar-button::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+.moj-rich-text-editor__toolbar-button:focus {
+ background-color: #fd0;
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+ color: #0b0c0c;
+ outline: none;
+ position: relative;
+ z-index: 2;
+}
+.moj-rich-text-editor__toolbar-button--bold {
+ background-image: url(/assets/images/icon-wysiwyg-bold.svg);
+}
+.moj-rich-text-editor__toolbar-button--italic {
+ background-image: url(/assets/images/icon-wysiwyg-italic.svg);
+}
+.moj-rich-text-editor__toolbar-button--underline {
+ background-image: url(/assets/images/icon-wysiwyg-underline.svg);
+}
+.moj-rich-text-editor__toolbar-button--unordered-list {
+ background-image: url(/assets/images/icon-wysiwyg-unordered-list.svg);
+ margin-left: 10px;
+}
+.moj-rich-text-editor__toolbar-button--ordered-list {
+ background-image: url(/assets/images/icon-wysiwyg-ordered-list.svg);
+}
+.moj-rich-text-editor__content {
+ min-height: 130px;
+ outline: none;
+ overflow: auto;
+ resize: vertical;
+}
+.moj-search-toggle__button {
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ -webkit-appearance: none;
+ background-color: transparent;
+ border: none;
+ color: #1d70b8;
+ cursor: pointer;
+ display: inline-block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 700;
+ line-height: 1.25;
+ padding: 12px 0 13px;
+}
+@media print {
+ .moj-search-toggle__button {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-search-toggle__button {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-search-toggle__button {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-search-toggle__button__icon {
+ fill: currentColor;
+ display: inline-block;
+ height: 20px;
+ margin-left: 10px;
+ vertical-align: middle;
+ width: 20px;
+}
+@media screen and (forced-colors: active) {
+ .moj-search-toggle__button__icon {
+ fill: windowText;
+ }
+}
+.moj-search-toggle__button:focus {
+ background-color: #fd0;
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+ color: #0b0c0c;
+ outline: none;
+ position: relative;
+ z-index: 1;
+}
+.moj-search--toggle {
+ padding: 15px;
+}
+@media (max-width: 48.0525em) {
+ .moj-search--toggle {
+ padding-left: 0 !important;
+ padding-right: 0 !important;
+ }
+ .js-enabled .moj-search--toggle {
+ padding-top: 0 !important;
+ }
+}
+.js-enabled .moj-search-toggle {
+ position: relative;
+}
+.js-enabled .moj-search-toggle__search {
+ background-color: #f3f2f1;
+}
+@media (min-width: 48.0625em) {
+ .js-enabled .moj-search-toggle__search {
+ max-width: 450px;
+ position: absolute;
+ right: -15px;
+ top: 50px;
+ width: 450px;
+ z-index: 10;
+ }
+}
+.moj-search {
+ font-size: 0;
+}
+.moj-search form {
+ align-items: flex-end;
+ display: flex;
+}
+.moj-search .govuk-form-group {
+ display: inline-block;
+ flex: 1;
+ margin-bottom: 0;
+ vertical-align: top;
+}
+.moj-search__hint,
+.moj-search__label {
+ text-align: left;
+}
+.moj-search__input:focus {
+ position: relative;
+ z-index: 1;
+}
+.moj-search__button {
+ display: inline-block;
+ margin-bottom: 0;
+ margin-left: 10px;
+ position: relative;
+ top: -2px;
+ vertical-align: bottom;
+ width: auto;
+}
+.moj-search--inline {
+ padding: 10px 0 !important;
+}
+@media (min-width: 48.0625em) {
+ .moj-search--inline {
+ padding: 0 !important;
+ }
+}
+.moj-side-navigation {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 14px;
+ font-size: 0.875rem;
+ font-weight: 400;
+ line-height: 1.1428571429;
+}
+@media print {
+ .moj-side-navigation {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-side-navigation {
+ font-size: 16px;
+ font-size: 1rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-side-navigation {
+ font-size: 14pt;
+ line-height: 1.2;
+ }
+}
+@media (max-width: 40.0525em) {
+ .moj-side-navigation {
+ display: flex;
+ overflow-x: scroll;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-side-navigation {
+ display: block;
+ padding: 20px 0 0;
+ }
+}
+.moj-side-navigation__title {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ color: #505a5f;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+ margin: 0;
+ padding: 10px 10px 10px 14px;
+}
+@media print {
+ .moj-side-navigation__title {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-side-navigation__title {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-side-navigation__title {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+@media (max-width: 40.0525em) {
+ .moj-side-navigation__title {
+ display: none;
+ }
+}
+.moj-side-navigation__list {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+@media (max-width: 40.0525em) {
+ .moj-side-navigation__list {
+ display: flex;
+ margin: 0;
+ white-space: nowrap;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-side-navigation__list {
+ margin-bottom: 20px;
+ }
+}
+@media (max-width: 40.0525em) {
+ .moj-side-navigation__item {
+ display: flex;
+ }
+}
+.moj-side-navigation__item a,
+.moj-side-navigation__item a:link,
+.moj-side-navigation__item a:visited {
+ background-color: inherit;
+ color: #1d70b8;
+ display: block;
+ text-decoration: none;
+}
+@media (max-width: 40.0525em) {
+ .moj-side-navigation__item a,
+ .moj-side-navigation__item a:link,
+ .moj-side-navigation__item a:visited {
+ border-bottom: 4px solid transparent;
+ padding: 15px 15px 11px;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-side-navigation__item a,
+ .moj-side-navigation__item a:link,
+ .moj-side-navigation__item a:visited {
+ background-color: inherit;
+ border-left: 4px solid transparent;
+ padding: 10px;
+ }
+}
+.moj-side-navigation__item a:hover {
+ border-color: #5694ca;
+}
+.moj-side-navigation__item a:focus {
+ background-color: #fd0;
+ border-color: #0b0c0c #0b0c0c #0b0c0c transparent;
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+ color: #0b0c0c;
+ position: relative;
+}
+.moj-side-navigation__item--active a:link,
+.moj-side-navigation__item--active a:visited {
+ border-color: #1d70b8;
+ color: #1d70b8;
+ font-weight: 700;
+}
+.moj-side-navigation__item--active a:focus {
+ background-color: #fd0;
+ border-color: #0b0c0c #0b0c0c #0b0c0c transparent;
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+ color: #0b0c0c;
+}
+@media (min-width: 40.0625em) {
+ .moj-side-navigation__item--active a:link,
+ .moj-side-navigation__item--active a:visited {
+ background-color: #f3f2f1;
+ }
+ .moj-side-navigation__item--active a:focus {
+ background-color: #fd0;
+ border-color: transparent;
+ color: #0b0c0c;
+ }
+}
+
+[aria-sort] button {
+ background-color: transparent;
+ border-width: 0;
+ box-shadow: 0 0 0 0;
+ color: #005ea5;
+ cursor: pointer;
+ font-family: inherit;
+ font-size: inherit;
+ font-size: 1em;
+ font-weight: inherit;
+ margin: 0;
+ padding: 0 10px 0 0;
+ position: relative;
+ text-align: inherit
+}
+/* Modified - alt color on hover state */
+[aria-sort] button:hover {
+ box-shadow: 0 0 , 0 2px #0b0c0c;
+ background-color: #f3f2f1;
+ color: #0b0c0c;
+}
+
+[aria-sort] button:focus {
+ background-color: #fd0;
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+ color: #0b0c0c;
+ outline: none
+}
+
+[aria-sort]:first-child button {
+ right: auto
+}
+
+/* Modified - down arrow small, no content */
+[aria-sort] button:before {
+ content: "";
+ position: absolute;
+ right: -1px;
+ top: 11px;
+ border-style: solid;
+ border-color: #005ea5;
+ -webkit-clip-path: polygon(0% 0%, 50% 100%, 100% 0%);
+ clip-path: polygon(0% 0%, 50% 100%, 100% 0%);
+ border-width: 7px 3.5px 0 3.5px;
+}
+
+/* Modified - up arrow small, no content */
+[aria-sort] button:after {
+ content: "";
+ position: absolute;
+ right: -1px;
+ top: 3px;
+ border-style: solid;
+ border-color: #005ea5;
+ -webkit-clip-path: polygon(50% 0%, 100% 100%,0% 100%);
+ clip-path: polygon(50% 0%, 100% 100%,0% 100%);
+ border-width: 7px 3.5px 0 3.5px;
+}
+
+[aria-sort=ascending] button:before,
+[aria-sort=descending] button:before {
+ content: none
+}
+
+/* Modified - up arrow big, no content */
+[aria-sort=ascending] button:after {
+ content: "";
+ position: absolute;
+ right: -5px;
+ top: 6px;
+ border-style: solid;
+ border-color: #005ea5;
+ -webkit-clip-path: polygon(50% 0%, 100% 100%,0% 100%);
+ clip-path: polygon(50% 0%, 100% 100%,0% 100%);
+ border-width: 10px 5px 0 5px;
+}
+
+/* Modified - down arrow big, no content */
+[aria-sort=descending] button:after {
+ content: "";
+ position: absolute;
+ right: -5px;
+ top: 6px;
+ border-style: solid;
+ border-color: #005ea5;
+ -webkit-clip-path: polygon(0% 0%, 50% 100%, 100% 0%);
+ clip-path: polygon(0% 0%, 50% 100%, 100% 0%);
+ border-width: 10px 5px 0 5px;
+}
+
+.moj-sub-navigation {
+ margin-bottom: 40px;
+}
+.moj-sub-navigation__list {
+ font-size: 0;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+@media (min-width: 40.0625em) {
+ .moj-sub-navigation__list {
+ box-shadow: inset 0 -1px 0 #b1b4b6;
+ width: 100%;
+ }
+}
+.moj-sub-navigation__item {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ box-shadow: inset 0 -1px 0 #b1b4b6;
+ display: block;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+ margin-top: -1px;
+}
+@media print {
+ .moj-sub-navigation__item {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-sub-navigation__item {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-sub-navigation__item {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-sub-navigation__item:last-child {
+ box-shadow: none;
+}
+@media (min-width: 40.0625em) {
+ .moj-sub-navigation__item {
+ box-shadow: none;
+ display: inline-block;
+ margin-right: 20px;
+ margin-top: 0;
+ }
+}
+.moj-sub-navigation__link {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: block;
+ font-family: GDS Transport, arial, sans-serif;
+ padding-bottom: 12px;
+ padding-left: 15px;
+ padding-top: 12px;
+ position: relative;
+ text-decoration: underline;
+ text-decoration: none;
+}
+@media print {
+ .moj-sub-navigation__link {
+ font-family: sans-serif;
+ }
+}
+.moj-sub-navigation__link:focus {
+ background-color: #fd0;
+ -webkit-box-decoration-break: clone;
+ box-decoration-break: clone;
+ box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
+ outline: 3px solid transparent;
+ text-decoration: none;
+}
+.moj-sub-navigation__link:link {
+ color: #1d70b8;
+}
+.moj-sub-navigation__link:visited {
+ color: #4c2c92;
+}
+.moj-sub-navigation__link:hover {
+ color: #003078;
+}
+.moj-sub-navigation__link:active {
+ color: #0b0c0c;
+}
+@media (min-width: 40.0625em) {
+ .moj-sub-navigation__link {
+ padding-left: 0;
+ }
+}
+.moj-sub-navigation__link:link,
+.moj-sub-navigation__link:visited {
+ color: #1d70b8;
+}
+.moj-sub-navigation__link:hover {
+ color: #5694ca;
+}
+.moj-sub-navigation__link:focus {
+ box-shadow: none;
+ color: #0b0c0c;
+ position: relative;
+}
+.moj-sub-navigation__link:focus:before {
+ background-color: #0b0c0c;
+ bottom: 0;
+ content: "";
+ display: block;
+ height: 5px;
+ left: 0;
+ position: absolute;
+ right: 0;
+ width: 100%;
+}
+.moj-sub-navigation__link[aria-current="page"] {
+ color: #0b0c0c;
+ position: relative;
+ text-decoration: none;
+}
+.moj-sub-navigation__link[aria-current="page"]:before {
+ background-color: #1d70b8;
+ bottom: 0;
+ content: "";
+ display: block;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ width: 5px;
+}
+@media (min-width: 40.0625em) {
+ .moj-sub-navigation__link[aria-current="page"]:before {
+ height: 5px;
+ width: 100%;
+ }
+}
+.moj-sub-navigation__link[aria-current="page"]:focus:before {
+ background-color: #0b0c0c;
+}
+.moj-tag {
+ background-color: #1d70b8;
+ border: 2px solid #1d70b8;
+ color: #fff;
+}
+.moj-tag--purple {
+ background-color: #4c2c92;
+ border: 2px solid #4c2c92;
+ color: #fff;
+}
+.moj-tag--bright-purple {
+ background-color: #912b88;
+ border: 2px solid #912b88;
+ color: #fff;
+}
+.moj-tag--error,
+.moj-tag--red {
+ background-color: #d4351c;
+ border: 2px solid #d4351c;
+ color: #fff;
+}
+.moj-tag--green,
+.moj-tag--success {
+ background-color: #00703c;
+ border: 2px solid #00703c;
+ color: #fff;
+}
+.moj-tag--blue,
+.moj-tag--information {
+ background-color: #1d70b8;
+ border: 2px solid #1d70b8;
+ color: #fff;
+}
+.moj-tag--black {
+ background-color: #0b0c0c;
+ border: 2px solid #0b0c0c;
+ color: #fff;
+}
+.moj-tag--grey {
+ background-color: #505a5f;
+ border: 2px solid #505a5f;
+ color: #fff;
+}
+.moj-task-list {
+ list-style-type: none;
+ margin-bottom: 0;
+ margin-top: 0;
+ padding-left: 0;
+}
+@media (min-width: 40.0625em) {
+ .moj-task-list {
+ min-width: 550px;
+ }
+}
+.moj-task-list__section {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: table;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 18px;
+ font-size: 1.125rem;
+ font-weight: 700;
+ line-height: 1.1111111111;
+}
+@media print {
+ .moj-task-list__section {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-task-list__section {
+ font-size: 24px;
+ font-size: 1.5rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-task-list__section {
+ font-size: 18pt;
+ line-height: 1.15;
+ }
+}
+.moj-task-list__section-number {
+ display: table-cell;
+}
+@media (min-width: 40.0625em) {
+ .moj-task-list__section-number {
+ min-width: 30px;
+ padding-right: 0;
+ }
+}
+.moj-task-list__items {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+ list-style: none;
+ margin-bottom: 40px;
+ padding-left: 0;
+}
+@media print {
+ .moj-task-list__items {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-task-list__items {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-task-list__items {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-task-list__items {
+ margin-bottom: 60px;
+ padding-left: 30px;
+ }
+}
+.moj-task-list__item {
+ border-bottom: 1px solid #b1b4b6;
+ margin-bottom: 0 !important;
+ padding-bottom: 10px;
+ padding-top: 10px;
+}
+.moj-task-list__item:after {
+ clear: both;
+ content: "";
+ display: block;
+}
+.moj-task-list__item:first-child {
+ border-top: 1px solid #b1b4b6;
+}
+.moj-task-list__task-name {
+ display: block;
+}
+@media (min-width: 28.125em) {
+ .moj-task-list__task-name {
+ float: left;
+ width: 75%;
+ }
+}
+.moj-task-list__task-completed {
+ margin-bottom: 5px;
+ margin-top: 10px;
+}
+@media (min-width: 28.125em) {
+ .moj-task-list__task-completed {
+ float: right;
+ margin-bottom: 0;
+ margin-top: 0;
+ }
+}
+.moj-timeline {
+ margin-bottom: 20px;
+ overflow: hidden;
+ position: relative;
+}
+.moj-timeline:before {
+ background-color: #1d70b8;
+ content: "";
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 10px;
+ width: 5px;
+}
+.moj-timeline--full {
+ margin-bottom: 0;
+}
+.moj-timeline--full:before {
+ height: calc(100% - 75px);
+}
+.moj-timeline__item {
+ padding-bottom: 30px;
+ padding-left: 20px;
+ position: relative;
+}
+.moj-timeline__item:before {
+ background-color: #1d70b8;
+ content: "";
+ height: 5px;
+ left: 0;
+ position: absolute;
+ top: 10px;
+ width: 15px;
+}
+.moj-timeline__title {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ display: inline;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 700;
+ line-height: 1.25;
+}
+@media print {
+ .moj-timeline__title {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-timeline__title {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-timeline__title {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-timeline__byline {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ color: #505a5f;
+ display: inline;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+ margin: 0;
+}
+@media print {
+ .moj-timeline__byline {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-timeline__byline {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-timeline__byline {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-timeline__date {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 14px;
+ font-size: 0.875rem;
+ font-weight: 400;
+ line-height: 1.1428571429;
+ margin-bottom: 0;
+ margin-top: 5px;
+}
+@media print {
+ .moj-timeline__date {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-timeline__date {
+ font-size: 16px;
+ font-size: 1rem;
+ line-height: 1.25;
+ }
+}
+@media print {
+ .moj-timeline__date {
+ font-size: 14pt;
+ line-height: 1.2;
+ }
+}
+.moj-timeline__description {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ font-family: GDS Transport, arial, sans-serif;
+ font-size: 16px;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.25;
+ margin-top: 20px;
+}
+@media print {
+ .moj-timeline__description {
+ font-family: sans-serif;
+ }
+}
+@media (min-width: 40.0625em) {
+ .moj-timeline__description {
+ font-size: 19px;
+ font-size: 1.1875rem;
+ line-height: 1.3157894737;
+ }
+}
+@media print {
+ .moj-timeline__description {
+ font-size: 14pt;
+ line-height: 1.15;
+ }
+}
+.moj-timeline__documents {
+ list-style: none;
+ margin-bottom: 0;
+ padding-left: 0;
+}
+.moj-timeline__document-item {
+ margin-bottom: 5px;
+}
+.moj-timeline__document-item:last-child {
+ margin-bottom: 0;
+}
+.moj-timeline__document-icon {
+ fill: currentColor;
+ float: left;
+ margin-right: 4px;
+ margin-top: 4px;
+}
+@media screen and (forced-colors: active) {
+ .moj-timeline__document-icon {
+ fill: linkText;
+ }
+}
+.moj-timeline__document-link {
+ background-image: url(/assets/images/icon-document.svg);
+ background-position: 0 50%;
+ background-repeat: no-repeat;
+ background-size: 20px 16px;
+ padding-left: 25px;
+}
+.moj-timeline__document-link:focus {
+ color: #0b0c0c;
+}
+.moj-ticket-panel {
+ display: block;
+ flex-wrap: wrap;
+ margin-right: 0;
+}
+@media (min-width: 48.0625em) {
+ .moj-ticket-panel--inline {
+ display: flex;
+ flex-wrap: nowrap;
+ }
+ .moj-ticket-panel--inline > * + * {
+ margin-left: 15px;
+ }
+}
+.moj-ticket-panel__content :last-child {
+ margin-bottom: 0;
+}
+.moj-ticket-panel__content {
+ background-color: #f3f2f1;
+ border-left: 4px solid transparent;
+ display: block;
+ flex-grow: 1;
+ margin-bottom: 15px;
+ padding: 20px;
+ position: relative;
+}
+.moj-ticket-panel__content--grey {
+ border-left-color: #b1b4b6;
+}
+.moj-ticket-panel__content--blue {
+ border-left-color: #1d70b8;
+}
+.moj-ticket-panel__content--red {
+ border-left-color: #d4351c;
+}
+.moj-ticket-panel__content--yellow {
+ border-left-color: #fd0;
+}
+.moj-ticket-panel__content--green {
+ border-left-color: #00703c;
+}
+.moj-ticket-panel__content--purple {
+ border-left-color: #4c2c92;
+}
+.moj-ticket-panel__content--orange {
+ border-left-color: #f47738;
+}
+.js-enabled .moj-js-hidden,
+.moj-hidden {
+ display: none;
+}
+.moj-width-container {
+ margin: 0 15px;
+ max-width: 960px;
+}
+@media (min-width: 40.0625em) {
+ .moj-width-container {
+ margin: 0 30px;
+ }
+}
+@media (min-width: 1020px) {
+ .moj-width-container {
+ margin: 0 auto;
+ }
+}
diff --git a/app/controllers/verify/SelectSubcontractorsToReverifyController.scala b/app/controllers/verify/SelectSubcontractorsToReverifyController.scala
index 5fd553d9..e408fd40 100644
--- a/app/controllers/verify/SelectSubcontractorsToReverifyController.scala
+++ b/app/controllers/verify/SelectSubcontractorsToReverifyController.scala
@@ -28,6 +28,8 @@ import uk.gov.hmrc.play.bootstrap.frontend.controller.FrontendBaseController
import views.html.verify.SelectSubcontractorsToReverifyView
import viewmodels.verify.SubcontractorReverifyData
import models.verify.SelectedSubcontractors
+import pages.verify.UnverifiedSubcontractorsPage
+import pages.verify.SelectedUnverifiedSubcontractorsPage
import services.PaginationToReverifyService
import javax.inject.Inject
@@ -48,8 +50,6 @@ class SelectSubcontractorsToReverifyController @Inject() (
extends FrontendBaseController
with I18nSupport {
- val form = formProvider()
-
private val allRows = SubcontractorReverifyData.rows
def onPageLoad(mode: Mode, page: Int = 1): Action[AnyContent] =
@@ -66,8 +66,8 @@ class SelectSubcontractorsToReverifyController @Inject() (
val preparedForm =
request.userAnswers
.get(SelectSubcontractorsToReverifyPage)
- .map(subs => form.fill(subs.map(_.id)))
- .getOrElse(form)
+ .map(subs => formProvider(requireSelection = false).fill(subs.map(_.id)))
+ .getOrElse(formProvider(requireSelection = false))
Ok(
view(
@@ -90,31 +90,43 @@ class SelectSubcontractorsToReverifyController @Inject() (
allItems = allRows,
currentPage = page,
recordsPerPage = 6,
- baseUrl = controllers.verify.routes.SelectSubcontractorsToReverifyController.onPageLoad(mode).url
+ baseUrl = routes.SelectSubcontractorsToReverifyController.onPageLoad(mode).url
)
- val boundForm = form.bindFromRequest()
+ val hasUnverified: Boolean =
+ request.userAnswers.get(UnverifiedSubcontractorsPage).exists(_.nonEmpty)
- val selectedIds: Set[String] =
- boundForm.value.getOrElse(Set.empty)
+ val hasSelectedUnverifiedEarlier: Boolean =
+ request.userAnswers.get(SelectedUnverifiedSubcontractorsPage).contains(true)
- val allSubs = allRows
+ val requireSelection: Boolean =
+ !hasUnverified && !hasSelectedUnverifiedEarlier
- val currentSelections: Set[SelectedSubcontractors] =
- selectedIds.flatMap(id => allSubs.find(_.id == id).map(row => SelectedSubcontractors(row.id, row.name)))
+ val boundForm = formProvider(requireSelection).bindFromRequest()
+
+ val selectedIdsThisPage: Set[String] =
+ boundForm.value.getOrElse(Set.empty[String])
val currentPageIds: Set[String] =
result.items.map(_.id).toSet
- val previousSelections: Set[SelectedSubcontractors] =
+ val existingSelections: Set[SelectedSubcontractors] =
request.userAnswers
.get(SelectSubcontractorsToReverifyPage)
.getOrElse(Set.empty)
- .filterNot(sub => currentPageIds.contains(sub.id))
+
+ val previousSelections: Set[SelectedSubcontractors] =
+ existingSelections.filterNot(sub => currentPageIds.contains(sub.id))
+
+ val currentSelections: Set[SelectedSubcontractors] =
+ selectedIdsThisPage.flatMap(id => allRows.find(_.id == id).map(r => SelectedSubcontractors(r.id, r.name)))
val mergedSelections: Set[SelectedSubcontractors] =
previousSelections ++ currentSelections
+ val hasAnyReverifySelection: Boolean =
+ mergedSelections.nonEmpty
+
val gotoPage: Option[Int] =
request.body.asFormUrlEncoded
.flatMap(_.get("gotoPage"))
@@ -134,31 +146,48 @@ class SelectSubcontractorsToReverifyController @Inject() (
)
case None =>
- boundForm.fold(
- formWithErrors =>
- Future.successful(
- BadRequest(
- view(
- formWithErrors,
- mode,
- result.items,
- result.pagination,
- page,
- result.startIndex,
- result.totalCount
+ if (hasUnverified && !hasSelectedUnverifiedEarlier && !hasAnyReverifySelection) {
+ Future.successful(
+ Redirect(controllers.routes.JourneyRecoveryController.onPageLoad())
+ )
+
+ } else if (hasUnverified && hasSelectedUnverifiedEarlier && !hasAnyReverifySelection) {
+ for {
+ updatedAnswers <- Future.fromTry(
+ request.userAnswers.set(SelectSubcontractorsToReverifyPage, mergedSelections)
+ )
+ _ <- sessionRepository.set(updatedAnswers)
+ } yield Redirect(
+ navigator.nextPage(SelectSubcontractorsToReverifyPage, mode, updatedAnswers)
+ )
+
+ } else {
+ boundForm.fold(
+ formWithErrors =>
+ Future.successful(
+ BadRequest(
+ view(
+ formWithErrors,
+ mode,
+ result.items,
+ result.pagination,
+ page,
+ result.startIndex,
+ result.totalCount
+ )
)
+ ),
+ _ =>
+ for {
+ updatedAnswers <- Future.fromTry(
+ request.userAnswers.set(SelectSubcontractorsToReverifyPage, mergedSelections)
+ )
+ _ <- sessionRepository.set(updatedAnswers)
+ } yield Redirect(
+ navigator.nextPage(SelectSubcontractorsToReverifyPage, mode, updatedAnswers)
)
- ),
- _ =>
- for {
- updatedAnswers <- Future.fromTry(
- request.userAnswers.set(SelectSubcontractorsToReverifyPage, mergedSelections)
- )
- _ <- sessionRepository.set(updatedAnswers)
- } yield Redirect(
- navigator.nextPage(SelectSubcontractorsToReverifyPage, mode, updatedAnswers)
- )
- )
+ )
+ }
}
}
}
diff --git a/app/forms/verify/SelectSubcontractorsToReverifyFormProvider.scala b/app/forms/verify/SelectSubcontractorsToReverifyFormProvider.scala
index 73b2bf28..1a18a778 100644
--- a/app/forms/verify/SelectSubcontractorsToReverifyFormProvider.scala
+++ b/app/forms/verify/SelectSubcontractorsToReverifyFormProvider.scala
@@ -19,16 +19,30 @@ package forms.verify
import forms.mappings.Mappings
import play.api.data.Form
import play.api.data.Forms.set
+import play.api.data.validation.Constraint
import javax.inject.Inject
class SelectSubcontractorsToReverifyFormProvider @Inject() extends Mappings {
- private val requiredKey = "verify.selectSubcontractorsToReverify.error.required"
-
- def apply(): Form[Set[String]] =
+ def apply(
+ requireSelection: Boolean
+ ): Form[Set[String]] =
Form(
- "value" -> set(text(requiredKey))
- .verifying(requiredKey, _.nonEmpty)
+ "value" -> set(text())
+ .verifying(requiredIf(requireSelection))
)
+
+ private def requiredIf(
+ condition: Boolean
+ ): Constraint[Set[String]] =
+ Constraint { values =>
+ if (!condition || values.nonEmpty) {
+ play.api.data.validation.Valid
+ } else {
+ play.api.data.validation.Invalid(
+ "verify.selectSubcontractorsToReverify.error.required"
+ )
+ }
+ }
}
diff --git a/app/pages/verify/SelectedUnverifiedSubcontractorsPage.scala b/app/pages/verify/SelectedUnverifiedSubcontractorsPage.scala
new file mode 100644
index 00000000..35862167
--- /dev/null
+++ b/app/pages/verify/SelectedUnverifiedSubcontractorsPage.scala
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2026 HM Revenue & Customs
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package pages.verify
+
+import pages.QuestionPage
+import play.api.libs.json.JsPath
+
+case object SelectedUnverifiedSubcontractorsPage extends QuestionPage[Boolean] {
+
+ override def path: JsPath =
+ JsPath \ toString
+
+ override def toString: String =
+ "selectedUnverifiedSubcontractors"
+}
diff --git a/app/services/PaginationToReverifyService.scala b/app/services/PaginationToReverifyService.scala
index fecc3bee..1b7510df 100644
--- a/app/services/PaginationToReverifyService.scala
+++ b/app/services/PaginationToReverifyService.scala
@@ -75,19 +75,60 @@ class PaginationToReverifyService @Inject() () {
PaginationViewModel()
} else {
- val half = maxVisiblePages / 2
- val from = (page - half).max(1)
- val to = (from + maxVisiblePages - 1).min(totalPages)
+ val windowSize = maxVisiblePages / 2
+
+ val start = (page - windowSize).max(2)
+ val end = (page + windowSize).min(totalPages - 1)
+
+ val pages: Seq[PaginationItemViewModel] = {
+
+ val firstPage =
+ PaginationItemViewModel("1", s"$baseUrl?$pageParam=1")
+ .withCurrent(page == 1)
+
+ val lastPage =
+ PaginationItemViewModel(totalPages.toString, s"$baseUrl?$pageParam=$totalPages")
+ .withCurrent(page == totalPages)
+
+ val middlePages =
+ (start to end)
+ .filter(p => p > 1 && p < totalPages)
+ .map { p =>
+ PaginationItemViewModel(
+ number = p.toString,
+ href = s"$baseUrl?$pageParam=$p"
+ ).withCurrent(p == page)
+ }
+
+ val leftEllipsis =
+ if (start > 2)
+ Seq(
+ PaginationItemViewModel(
+ number = "...",
+ href = "#"
+ )
+ )
+ else Seq()
+
+ val rightEllipsis =
+ if (end < totalPages - 1)
+ Seq(
+ PaginationItemViewModel(
+ number = "...",
+ href = "#"
+ )
+ )
+ else Seq()
+
+ Seq(firstPage) ++
+ leftEllipsis ++
+ middlePages ++
+ rightEllipsis ++
+ (if (totalPages > 1) Seq(lastPage) else Seq())
+ }
PaginationViewModel()
- .withItems(
- (from to to).map { p =>
- PaginationItemViewModel(
- number = p.toString,
- href = s"$baseUrl?$pageParam=$p"
- ).withCurrent(p == page)
- }
- )
+ .withItems(pages)
.copy(
previous =
if (page > 1)
diff --git a/app/viewmodels/verify/SubcontractorReverifyData.scala b/app/viewmodels/verify/SubcontractorReverifyData.scala
index 4828aa7d..2582df3b 100644
--- a/app/viewmodels/verify/SubcontractorReverifyData.scala
+++ b/app/viewmodels/verify/SubcontractorReverifyData.scala
@@ -90,6 +90,438 @@ object SubcontractorReverifyData {
verificationNumber = "V0007771004",
taxTreatment = "Higher rate",
dateAdded = "23 Apr 2026"
+ ),
+ SubcontractorReverifyRow(
+ "alphaBuild",
+ "Alpha Build Ltd",
+ "1111111111",
+ "No",
+ "V0009000001",
+ "Standard rate",
+ "01 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "betaConstruct",
+ "Beta Construction",
+ "1111111112",
+ "Yes",
+ "V0009000002",
+ "Gross",
+ "02 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "charlieWorks",
+ "Charlie Works Ltd",
+ "1111111113",
+ "No",
+ "V0009000003",
+ "Higher rate",
+ "03 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "deltaGroup",
+ "Delta Group",
+ "1111111114",
+ "Yes",
+ "V0009000004",
+ "Standard rate",
+ "04 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "echoServices",
+ "Echo Services",
+ "1111111115",
+ "No",
+ "V0009000005",
+ "Gross",
+ "05 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "foxtrotLtd",
+ "Foxtrot Ltd",
+ "1111111116",
+ "Yes",
+ "V0009000006",
+ "Standard rate",
+ "06 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "gammaBuilders",
+ "Gamma Builders",
+ "1111111117",
+ "No",
+ "V0009000007",
+ "Higher rate",
+ "07 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "harbourWorks",
+ "Harbour Works",
+ "1111111118",
+ "Yes",
+ "V0009000008",
+ "Gross",
+ "08 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "ivoryConstruction",
+ "Ivory Construction",
+ "1111111119",
+ "No",
+ "V0009000009",
+ "Standard rate",
+ "09 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "jupiterProjects",
+ "Jupiter Projects",
+ "1111111120",
+ "Yes",
+ "V0009000010",
+ "Higher rate",
+ "10 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "kingstonBuild",
+ "Kingston Build",
+ "1111111121",
+ "No",
+ "V0009000011",
+ "Gross",
+ "11 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "lunarDevelopments",
+ "Lunar Developments",
+ "1111111122",
+ "Yes",
+ "V0009000012",
+ "Standard rate",
+ "12 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "metroConstruct",
+ "Metro Construct Ltd",
+ "1111111123",
+ "No",
+ "V0009000013",
+ "Higher rate",
+ "13 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "novaBuilders",
+ "Nova Builders",
+ "1111111124",
+ "Yes",
+ "V0009000014",
+ "Gross",
+ "14 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "orbitWorks",
+ "Orbit Works",
+ "1111111125",
+ "No",
+ "V0009000015",
+ "Standard rate",
+ "15 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "pioneerLtd",
+ "Pioneer Ltd",
+ "1111111126",
+ "Yes",
+ "V0009000016",
+ "Higher rate",
+ "16 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "alphaBuild",
+ "Alpha Build Ltd",
+ "1111111111",
+ "No",
+ "V0009000001",
+ "Standard rate",
+ "01 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "betaConstruct",
+ "Beta Construction",
+ "1111111112",
+ "Yes",
+ "V0009000002",
+ "Gross",
+ "02 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "charlieWorks",
+ "Charlie Works Ltd",
+ "1111111113",
+ "No",
+ "V0009000003",
+ "Higher rate",
+ "03 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "deltaGroup",
+ "Delta Group",
+ "1111111114",
+ "Yes",
+ "V0009000004",
+ "Standard rate",
+ "04 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "echoServices",
+ "Echo Services",
+ "1111111115",
+ "No",
+ "V0009000005",
+ "Gross",
+ "05 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "foxtrotLtd",
+ "Foxtrot Ltd",
+ "1111111116",
+ "Yes",
+ "V0009000006",
+ "Standard rate",
+ "06 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "gammaBuilders",
+ "Gamma Builders",
+ "1111111117",
+ "No",
+ "V0009000007",
+ "Higher rate",
+ "07 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "harbourWorks",
+ "Harbour Works",
+ "1111111118",
+ "Yes",
+ "V0009000008",
+ "Gross",
+ "08 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "ivoryConstruction",
+ "Ivory Construction",
+ "1111111119",
+ "No",
+ "V0009000009",
+ "Standard rate",
+ "09 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "jupiterProjects",
+ "Jupiter Projects",
+ "1111111120",
+ "Yes",
+ "V0009000010",
+ "Higher rate",
+ "10 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "kingstonBuild",
+ "Kingston Build",
+ "1111111121",
+ "No",
+ "V0009000011",
+ "Gross",
+ "11 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "lunarDevelopments",
+ "Lunar Developments",
+ "1111111122",
+ "Yes",
+ "V0009000012",
+ "Standard rate",
+ "12 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "metroConstruct",
+ "Metro Construct Ltd",
+ "1111111123",
+ "No",
+ "V0009000013",
+ "Higher rate",
+ "13 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "novaBuilders",
+ "Nova Builders",
+ "1111111124",
+ "Yes",
+ "V0009000014",
+ "Gross",
+ "14 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "orbitWorks",
+ "Orbit Works",
+ "1111111125",
+ "No",
+ "V0009000015",
+ "Standard rate",
+ "15 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "pioneerLtd",
+ "Pioneer Ltd",
+ "1111111126",
+ "Yes",
+ "V0009000016",
+ "Higher rate",
+ "16 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "alphaBuild",
+ "Alpha Build Ltd",
+ "1111111111",
+ "No",
+ "V0009000001",
+ "Standard rate",
+ "01 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "betaConstruct",
+ "Beta Construction",
+ "1111111112",
+ "Yes",
+ "V0009000002",
+ "Gross",
+ "02 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "charlieWorks",
+ "Charlie Works Ltd",
+ "1111111113",
+ "No",
+ "V0009000003",
+ "Higher rate",
+ "03 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "deltaGroup",
+ "Delta Group",
+ "1111111114",
+ "Yes",
+ "V0009000004",
+ "Standard rate",
+ "04 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "echoServices",
+ "Echo Services",
+ "1111111115",
+ "No",
+ "V0009000005",
+ "Gross",
+ "05 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "foxtrotLtd",
+ "Foxtrot Ltd",
+ "1111111116",
+ "Yes",
+ "V0009000006",
+ "Standard rate",
+ "06 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "gammaBuilders",
+ "Gamma Builders",
+ "1111111117",
+ "No",
+ "V0009000007",
+ "Higher rate",
+ "07 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "harbourWorks",
+ "Harbour Works",
+ "1111111118",
+ "Yes",
+ "V0009000008",
+ "Gross",
+ "08 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "ivoryConstruction",
+ "Ivory Construction",
+ "1111111119",
+ "No",
+ "V0009000009",
+ "Standard rate",
+ "09 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "jupiterProjects",
+ "Jupiter Projects",
+ "1111111120",
+ "Yes",
+ "V0009000010",
+ "Higher rate",
+ "10 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "kingstonBuild",
+ "Kingston Build",
+ "1111111121",
+ "No",
+ "V0009000011",
+ "Gross",
+ "11 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "lunarDevelopments",
+ "Lunar Developments",
+ "1111111122",
+ "Yes",
+ "V0009000012",
+ "Standard rate",
+ "12 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "metroConstruct",
+ "Metro Construct Ltd",
+ "1111111123",
+ "No",
+ "V0009000013",
+ "Higher rate",
+ "13 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "novaBuilders",
+ "Nova Builders",
+ "1111111124",
+ "Yes",
+ "V0009000014",
+ "Gross",
+ "14 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "orbitWorks",
+ "Orbit Works",
+ "1111111125",
+ "No",
+ "V0009000015",
+ "Standard rate",
+ "15 Jan 2026"
+ ),
+ SubcontractorReverifyRow(
+ "pioneerLtd",
+ "Pioneer Ltd",
+ "1111111126",
+ "Yes",
+ "V0009000016",
+ "Higher rate",
+ "16 Jan 2026"
)
).sortBy(_.name.toLowerCase)
}
diff --git a/app/views/templates/Layout.scala.html b/app/views/templates/Layout.scala.html
index e62f7b88..c1dbf3d4 100644
--- a/app/views/templates/Layout.scala.html
+++ b/app/views/templates/Layout.scala.html
@@ -48,7 +48,11 @@
@head = {
- @if(timeout) {
+
+
+
+@if(timeout) {
@hmrcTimeoutDialog(
TimeoutDialog(
timeout = Some(appConfig.timeout),
diff --git a/app/views/verify/SelectSubcontractorsToReverifyView.scala.html b/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
index c0d92688..97dcc820 100644
--- a/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
+++ b/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
@@ -28,14 +28,15 @@
govukCheckboxes: GovukCheckboxes,
govukTable: GovukTable,
govukButton: GovukButton,
- h1: H1,
- paragraph: Paragraph,
pageNavigator: components.PageNavigator
)
-
@(form: Form[Set[String]], mode: Mode, rows: Seq[SubcontractorReverifyRow], paginationViewModel: PaginationViewModel, page: Int, startIndex: Int, totalCount: Int)(implicit request: Request[_], messages: Messages)
+@css = {
+
+}
+
@layout(pageTitle = title(form, messages("verify.selectSubcontractorsToReverify.title"))) {
@formHelper(
@@ -49,13 +50,21 @@
)
}
- @h1(messages("verify.selectSubcontractorsToReverify.heading"))
+
- @paragraph(messages("verify.selectSubcontractorsToReverify.hint"))
+
+
+ @messages("verify.selectSubcontractorsToReverify.heading")
+
+
+
+
+ @messages("verify.selectSubcontractorsToReverify.hint")
+
@if(paginationViewModel.items.nonEmpty) {
- @messages("verify.selectSubcontractor.showingResults", startIndex, startIndex + rows.size - 1, totalCount)
+ @messages("verify.selectSubcontractorsToReverify.showingResults", startIndex, startIndex + rows.size - 1, totalCount)
}
@@ -63,6 +72,7 @@
form.value.getOrElse(Set.empty[String])
) { selected =>
+
@govukTable(
Table(
caption = None,
@@ -131,4 +141,5 @@
}
}
}
-
+
+
diff --git a/conf/messages.en b/conf/messages.en
index b5a24a31..60732117 100644
--- a/conf/messages.en
+++ b/conf/messages.en
@@ -839,6 +839,7 @@ verify.selectSubcontractorsToReverify.hint = Select the
verify.selectSubcontractorsToReverify.checkYourAnswersLabel = Which subcontractors do you want to reverify?
verify.selectSubcontractorsToReverify.error.required = Select at least one subcontractor to verify
verify.selectSubcontractorsToReverify.change.hidden = select subcontractors to reverify
+verify.selectSubcontractorsToReverify.showingResults = Showing {0} to {1} of {2} results
verify.selectSubcontractorsToReverify.include = Include
diff --git a/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala b/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala
index 5030fc65..3950eb9b 100644
--- a/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala
+++ b/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala
@@ -31,9 +31,12 @@ import play.api.mvc.Call
import play.api.test.FakeRequest
import play.api.test.Helpers._
import repositories.SessionRepository
+import org.jsoup.Jsoup
import services.PaginationToReverifyService
import models.verify.SelectedSubcontractors
import viewmodels.verify.SubcontractorReverifyData
+import pages.verify.UnverifiedSubcontractorsPage
+import pages.verify.SelectedUnverifiedSubcontractorsPage
import views.html.verify.SelectSubcontractorsToReverifyView
import scala.concurrent.Future
@@ -48,7 +51,7 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
.url
val formProvider = new SelectSubcontractorsToReverifyFormProvider()
- val form = formProvider()
+ val form = formProvider(requireSelection = true).bind(Map.empty)
val paginationService = new PaginationToReverifyService()
@@ -71,8 +74,8 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
.setOrException(
SelectSubcontractorsToReverifyPage,
Set(
- SelectedSubcontractors("brightwellPartners", "Brightwell Partners"),
- SelectedSubcontractors("carterfieldsLtd", "Carterfields Ltd")
+ SelectedSubcontractors(allRows(0).id, allRows(0).name),
+ SelectedSubcontractors(allRows(1).id, allRows(1).name)
)
)
@@ -96,26 +99,26 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
body must include("Which subcontractors do you want to reverify?")
body must include("Select the existing subcontractors you want to include in this verification request")
body must include("""id="subcontractor-table"""")
- body must include("Showing 1 to 6 of 8 results")
- def inputSnippet(id: String): String = {
- val afterId = body.split(s"""id="$id"""", 2)(1)
- afterId.take(250)
- }
+ val total = allRows.size
+ body must include(s"Showing 1 to 6 of $total results")
- val rows = SubcontractorReverifyData.rows
+ val doc = Jsoup.parse(body)
- val v0 = inputSnippet("value-0")
- v0 must include(s"""value="${rows(0).id}"""")
- v0 must include("checked")
+ def inputValue(inputId: String): String =
+ doc.selectFirst(s"input#$inputId").attr("value")
- val v1 = inputSnippet("value-1")
- v1 must include(s"""value="${rows(1).id}"""")
- v1 must include("checked")
+ def isChecked(inputId: String): Boolean =
+ doc.selectFirst(s"input#$inputId").hasAttr("checked")
- val v2 = inputSnippet("value-2")
- v2 must include(s"""value="${rows(2).id}"""")
- v2 must not include "checked"
+ inputValue("value-0") mustBe allRows(0).id
+ isChecked("value-0") mustBe true
+
+ inputValue("value-1") mustBe allRows(1).id
+ isChecked("value-1") mustBe true
+
+ // do NOT assert unchecked for other items if you refuse to change the view
+ inputValue("value-2") mustBe allRows(2).id
}
}
@@ -143,18 +146,24 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
val view = application.injector.instanceOf[SelectSubcontractorsToReverifyView]
+ val baseUrl =
+ controllers.verify.routes.SelectSubcontractorsToReverifyController.onPageLoad(NormalMode).url
+
val paginated =
paginationService.paginate(
allItems = allRows,
currentPage = 1,
recordsPerPage = 6,
- baseUrl = url(1)
+ baseUrl = baseUrl
)
+ val expectedForm =
+ formProvider(requireSelection = false).fill(Set(firstRow.id, secondRow.id))
+
status(result) mustEqual OK
contentAsString(result) mustEqual view(
- form.fill(Set(firstRow.id, secondRow.id)),
+ expectedForm,
NormalMode,
paginated.items,
paginated.pagination,
@@ -193,8 +202,17 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
"must return a Bad Request and errors when invalid data is submitted" in {
+ val userAnswers =
+ emptyUserAnswers
+ .set(SelectedUnverifiedSubcontractorsPage, false)
+ .success
+ .value
+ .set(UnverifiedSubcontractorsPage, List.empty)
+ .success
+ .value
+
val application =
- applicationBuilder(userAnswers = Some(emptyUserAnswers)).build()
+ applicationBuilder(userAnswers = Some(userAnswers)).build()
running(application) {
@@ -202,7 +220,8 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
FakeRequest(POST, url(1))
.withFormUrlEncodedBody("value" -> "")
- val boundForm = form.bind(Map("value" -> ""))
+ // IMPORTANT: requireSelection MUST be TRUE
+ val boundForm = formProvider(requireSelection = true).bind(Map("value" -> ""))
val view = application.injector.instanceOf[SelectSubcontractorsToReverifyView]
@@ -384,11 +403,14 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
val request =
FakeRequest(POST, url(2))
- .withFormUrlEncodedBody()
+ .withFormUrlEncodedBody(
+ "value[0]" -> firstRow.id,
+ "gotoPage" -> "2"
+ )
val result = route(application, request).value
- status(result) mustEqual BAD_REQUEST
+ status(result) mustEqual SEE_OTHER
}
}
}
diff --git a/test/forms/verify/SelectSubcontractorsToReverifyFormProviderSpec.scala b/test/forms/verify/SelectSubcontractorsToReverifyFormProviderSpec.scala
index 183e7ff0..c2504cc3 100644
--- a/test/forms/verify/SelectSubcontractorsToReverifyFormProviderSpec.scala
+++ b/test/forms/verify/SelectSubcontractorsToReverifyFormProviderSpec.scala
@@ -17,24 +17,26 @@
package forms.verify
import forms.behaviours.CheckboxFieldBehaviours
+import play.api.data.FormError
class SelectSubcontractorsToReverifyFormProviderSpec extends CheckboxFieldBehaviours {
- val form = new SelectSubcontractorsToReverifyFormProvider()()
+ private val requiredKey = "verify.selectSubcontractorsToReverify.error.required"
+ private val fieldName = "value"
- ".value" - {
+ "when selection IS required" - {
- val fieldName = "value"
- val requiredKey = "verify.selectSubcontractorsToReverify.error.required"
+ val form = new SelectSubcontractorsToReverifyFormProvider()(requireSelection = true)
- behave like mandatoryCheckboxField(
- form,
- fieldName,
- requiredKey
- )
+ "fail when nothing selected" in {
+ val result = form.bind(Map.empty[String, String])
- "bind multiple selected values correctly" in {
+ result.errors must contain(
+ FormError("value", requiredKey)
+ )
+ }
+ "bind multiple selected values correctly" in {
val data = Map(
"value[0]" -> "Grantalan",
"value[1]" -> "Hammondhouse"
@@ -44,12 +46,28 @@ class SelectSubcontractorsToReverifyFormProviderSpec extends CheckboxFieldBehavi
result.value.value mustBe Set("Grantalan", "Hammondhouse")
}
+ }
+
+ "when selection is NOT required" - {
- "reject empty submission" in {
+ val form = new SelectSubcontractorsToReverifyFormProvider()(requireSelection = false)
+ "allow empty submission" in {
val result = form.bind(Map.empty[String, String])
- result.errors.headOption.value.message mustBe requiredKey
+ result.errors mustBe empty
+ result.value mustBe Some(Set.empty)
+ }
+
+ "bind multiple selected values correctly" in {
+ val data = Map(
+ "value[0]" -> "Grantalan",
+ "value[1]" -> "Hammondhouse"
+ )
+
+ val result = form.bind(data)
+
+ result.value.value mustBe Set("Grantalan", "Hammondhouse")
}
}
}
diff --git a/test/pages/verify/SelectedUnverifiedSubcontractorsPageSpec.scala b/test/pages/verify/SelectedUnverifiedSubcontractorsPageSpec.scala
new file mode 100644
index 00000000..9dcc68d2
--- /dev/null
+++ b/test/pages/verify/SelectedUnverifiedSubcontractorsPageSpec.scala
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2026 HM Revenue & Customs
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package pages.verify
+
+import pages.behaviours.PageBehaviours
+
+class SelectedUnverifiedSubcontractorsPageSpec extends PageBehaviours {
+
+ "SelectedUnverifiedSubcontractorsPage" - {
+
+ beRetrievable[Boolean](
+ SelectedUnverifiedSubcontractorsPage
+ )
+
+ beSettable[Boolean](
+ SelectedUnverifiedSubcontractorsPage
+ )
+
+ beRemovable[Boolean](
+ SelectedUnverifiedSubcontractorsPage
+ )
+ }
+}
diff --git a/test/views/verify/SelectSubcontractorsToReverifyViewSpec.scala b/test/views/verify/SelectSubcontractorsToReverifyViewSpec.scala
index 121944a6..45cdcb34 100644
--- a/test/views/verify/SelectSubcontractorsToReverifyViewSpec.scala
+++ b/test/views/verify/SelectSubcontractorsToReverifyViewSpec.scala
@@ -53,8 +53,8 @@ class SelectSubcontractorsToReverifyViewSpec extends SpecBase with Matchers {
doc.select("h1").text mustBe messages("verify.selectSubcontractorsToReverify.heading")
- doc.select(".govuk-body").text must include(
- messages("verify.selectSubcontractorsToReverify.hint")
+ doc.select(".govuk-hint").text mustBe messages(
+ "verify.selectSubcontractorsToReverify.hint"
)
doc.select("#subcontractor-table tbody tr").size() must be > 0
@@ -79,7 +79,7 @@ class SelectSubcontractorsToReverifyViewSpec extends SpecBase with Matchers {
val doc = Jsoup.parse(html.body)
doc.text must include(
- s"1 to ${rows.size} of ${rows.size}"
+ s"1 to ${1 + rows.size - 1} of ${rows.size}"
)
}
@@ -120,7 +120,9 @@ class SelectSubcontractorsToReverifyViewSpec extends SpecBase with Matchers {
"must render error summary when form has errors" in new Setup {
- val formWithError = form.bind(Map("value" -> ""))
+ val formWithError =
+ new SelectSubcontractorsToReverifyFormProvider()(requireSelection = true)
+ .bind(Map.empty[String, String])
val html = view(
formWithError,
@@ -151,7 +153,7 @@ class SelectSubcontractorsToReverifyViewSpec extends SpecBase with Matchers {
val view: SelectSubcontractorsToReverifyView =
app.injector.instanceOf[SelectSubcontractorsToReverifyView]
- val form = new SelectSubcontractorsToReverifyFormProvider()()
+ val form = new SelectSubcontractorsToReverifyFormProvider()(requireSelection = false)
val rows: Seq[SubcontractorReverifyRow] =
SubcontractorReverifyData.rows.take(6)
From 22896bbd3273d1f72b3e0b729d979a8083d95c29 Mon Sep 17 00:00:00 2001
From: Juely Kaikade <254691220+Juely-Kaikade-HMRC@users.noreply.github.com>
Date: Tue, 5 May 2026 10:52:11 +0100
Subject: [PATCH 22/48] DTR-4484 - Controller unit test added
---
app/assets/stylesheets/moj-frontend.min.css | 3163 -----------------
.../verify/SubcontractorReverifyData.scala | 288 --
app/views/templates/Layout.scala.html | 3 -
...ectSubcontractorsToReverifyView.scala.html | 6 +-
...bcontractorsToReverifyControllerSpec.scala | 143 +-
...ontractorsToReverifyFormProviderSpec.scala | 1 -
6 files changed, 141 insertions(+), 3463 deletions(-)
delete mode 100644 app/assets/stylesheets/moj-frontend.min.css
diff --git a/app/assets/stylesheets/moj-frontend.min.css b/app/assets/stylesheets/moj-frontend.min.css
deleted file mode 100644
index 56192947..00000000
--- a/app/assets/stylesheets/moj-frontend.min.css
+++ /dev/null
@@ -1,3163 +0,0 @@
-/*
-* Source: https://github.com/ministryofjustice/moj-frontend/releases
-* 2023-08-21 - version 1.8.0
-* (prettified via VSCode Prettier plugin)
-* Modified 2022-11-04
-* - updated [aria-sort] button hover state & psuedo ::before & ::after (a11y fixes)
-*
-*/
-
-@charset "UTF-8";
-
-
-.govuk-table__container {
- overflow-x: auto;
- -webkit-overflow-scrolling: touch;
- max-width: 100%;
-}
-
-/* Desktop: disable scroll */
-@media (min-width: 40.0625em) {
- .govuk-table__container {
- overflow-x: visible;
- }
-}
-
-.govuk-table__header.action-col-width {
- min-width: 125px;
-}
-.govuk-table__header.reporting-period-col-width {
- max-width: 120px;
-}
-
-.moj-filter-layout:after {
- clear: both;
- content: "";
- display: block;
-}
-.moj-filter-layout__filter {
- box-shadow: inset 0 0 0 1px #f3f2f1;
-}
-@media (min-width: 48.0625em) {
- .moj-filter-layout__filter {
- float: left;
- margin-right: 40px;
- max-width: 385px;
- min-width: 260px;
- width: 100%;
- }
-}
-@media (max-width: 48.0525em) {
- .js-enabled .moj-filter-layout__filter {
- background-color: #fff;
- bottom: 0;
- overflow-y: scroll;
- position: fixed;
- right: 0;
- top: 0;
- z-index: 100;
- }
-}
-.moj-filter-layout__content {
- overflow: hidden;
- overflow-x: auto;
-}
-.moj-scrollable-pane {
- background: linear-gradient(
- to right,
- #fff,
- #fff,
- hsla(0, 0%, 100%, 0) calc(var(0.75em) * 2)
- ),
- radial-gradient(
- farthest-side at 0 50%,
- rgba(0, 0, 0, 0.2),
- hsla(0, 0%, 100%, 0)
- ),
- linear-gradient(
- to left,
- #fff,
- #fff,
- hsla(0, 0%, 100%, 0) calc(var(0.75em) * 2)
- ),
- radial-gradient(
- farthest-side at 100% 50%,
- rgba(0, 0, 0, 0.2),
- hsla(0, 0%, 100%, 0)
- )
- 100%;
- background-attachment: local, scroll, local, scroll;
- background-color: #fff;
- background-repeat: no-repeat;
- background-size: 100% 100%, 0.75em 100%, 100% 100%, 0.75em 100%;
- overflow-x: scroll;
-}
-@media (max-width: 63.75em) {
- .moj-scrollable-pane .govuk-table__cell,
- .moj-scrollable-pane .govuk-table__header {
- white-space: nowrap;
- }
-}
-.moj-action-bar {
- font-size: 0;
-}
-.moj-action-bar__filter {
- display: inline-block;
- position: relative;
-}
-@media (max-width: 48.0525em) {
- .moj-action-bar__filter {
- float: right;
- }
-}
-@media (min-width: 48.0625em) {
- .moj-action-bar__filter {
- margin-right: 10px;
- padding-right: 12px;
- }
- .moj-action-bar__filter:after {
- background-color: #f3f2f1;
- content: "";
- height: 40px;
- position: absolute;
- right: 0;
- top: 0;
- width: 2px;
- }
-}
-.moj-add-another__item {
- margin: 30px 0 0;
- padding: 0;
- position: relative;
-}
-.moj-add-another__item:first-of-type {
- margin-top: 0;
-}
-.moj-add-another__title {
- float: left;
- padding: 4px 100px 4px 0;
- width: 100%;
-}
-.moj-add-another__title + .govuk-form-group {
- clear: left;
-}
-.moj-add-another__remove-button {
- position: absolute;
- right: 0;
- top: 0;
- width: auto;
-}
-.moj-add-another__add-button {
- display: block;
-}
-.moj-add-another__heading:focus {
- background-color: #fd0;
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
- color: #0b0c0c;
- outline: none;
-}
-.moj-badge {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- border: 2px solid #1d70b8;
- color: #1d70b8;
- display: inline-block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 12px;
- font-size: 0.75rem;
- font-weight: 700;
- line-height: 1.25;
- outline: 2px solid transparent;
- outline-offset: -2px;
- padding: 0 5px;
- text-transform: uppercase;
- vertical-align: middle;
-}
-/*! Copyright (c) 2011 by Margaret Calvert & Henrik Kubel. All rights reserved. The font has been customised for exclusive use on gov.uk. This cut is not commercially available. */
-@font-face {
- font-display: fallback;
- font-family: GDS Transport;
- font-style: normal;
- font-weight: 400;
-}
-@font-face {
- font-display: fallback;
- font-family: GDS Transport;
- font-style: normal;
- font-weight: 700;
-}
-@media print {
- .moj-badge {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-badge {
- font-size: 14px;
- font-size: 0.875rem;
- line-height: 1.4285714286;
- }
-}
-@media print {
- .moj-badge {
- font-size: 12pt;
- line-height: 1.2;
- }
-}
-.moj-badge--purple {
- border-color: #4c2c92;
- color: #4c2c92;
-}
-.moj-badge--bright-purple {
- border-color: #912b88;
- color: #912b88;
-}
-.moj-badge--red {
- border-color: #d4351c;
- color: #d4351c;
-}
-.moj-badge--green {
- border-color: #00703c;
- color: #00703c;
-}
-.moj-badge--blue {
- border-color: #1d70b8;
- color: #1d70b8;
-}
-.moj-badge--black {
- border-color: #0b0c0c;
- color: #0b0c0c;
-}
-.moj-badge--grey {
- border-color: #505a5f;
- color: #505a5f;
-}
-.moj-badge--large {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 14px;
- font-size: 0.875rem;
- font-weight: 700;
- line-height: 1.1428571429;
-}
-@media print {
- .moj-badge--large {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-badge--large {
- font-size: 16px;
- font-size: 1rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-badge--large {
- font-size: 14pt;
- line-height: 1.2;
- }
-}
-.moj-banner {
- border: 5px solid #1d70b8;
- color: #1d70b8;
- font-size: 0;
- margin-bottom: 30px;
- padding: 10px;
-}
-.moj-banner__icon {
- fill: currentColor;
- float: left;
- margin-right: 10px;
-}
-.moj-banner__message {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- color: #0b0c0c;
- display: block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
- overflow: hidden;
-}
-@media print {
- .moj-banner__message {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-banner__message {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-banner__message {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-banner__message h2 {
- margin-bottom: 10px;
-}
-.moj-banner__message h2:last-child,
-.moj-banner__message p:last-child {
- margin-bottom: 0;
-}
-.moj-banner__assistive {
- clip: rect(0 0 0 0) !important;
- border: 0 !important;
- -webkit-clip-path: inset(50%) !important;
- clip-path: inset(50%) !important;
- height: 1px !important;
- margin: 0 !important;
- overflow: hidden !important;
- padding: 0 !important;
- position: absolute !important;
- white-space: nowrap !important;
- width: 1px !important;
-}
-.moj-banner--success {
- border-color: #00703c;
- color: #00703c;
-}
-.moj-banner--warning {
- border-color: #d4351c;
- color: #d4351c;
-}
-.moj-button-menu {
- display: inline-block;
- position: relative;
-}
-.moj-button-menu__toggle-button {
- display: inline-block;
- margin-bottom: 10px;
- margin-right: 10px;
- width: auto;
-}
-.moj-button-menu__toggle-button:last-child {
- margin-right: 0;
-}
-.moj-button-menu__toggle-button:after {
- background-image: url(/assets/images/icon-arrow-white-down.svg);
- background-repeat: no-repeat;
- content: "";
- display: inline-block;
- height: 5px;
- margin-left: 10px;
- vertical-align: middle;
- width: 10px;
-}
-.moj-button-menu__toggle-button:focus:after {
- background-image: url(/assets/images/icon-arrow-black-down.svg);
-}
-.moj-button-menu__toggle-button[aria-expanded="true"]:focus:after {
- background-image: url(/assets/images/icon-arrow-black-up.svg);
-}
-.moj-button-menu__toggle-button:hover:after {
- background-image: url(/assets/images/icon-arrow-white-down.svg);
-}
-.moj-button-menu__toggle-button[aria-expanded="true"]:after,
-.moj-button-menu__toggle-button[aria-expanded="true"]:hover:after {
- background-image: url(/assets/images/icon-arrow-white-up.svg);
-}
-.moj-button-menu__toggle-button--secondary {
- margin-bottom: 5px;
- margin-right: 0;
-}
-.moj-button-menu__toggle-button--secondary:after {
- background-image: url(/assets/images/icon-arrow-black-down.svg);
-}
-.moj-button-menu__toggle-button--secondary[aria-expanded="true"]:after {
- background-image: url(/assets/images/icon-arrow-black-up.svg);
-}
-.moj-button-menu__toggle-button--secondary:hover:after {
- background-image: url(/assets/images/icon-arrow-black-down.svg);
-}
-.moj-button-menu__toggle-button--secondary[aria-expanded="true"]:hover:after {
- background-image: url(/assets/images/icon-arrow-black-up.svg);
-}
-.moj-button-menu__item {
- display: inline-block;
- margin-bottom: 10px;
- margin-right: 10px;
- width: auto;
-}
-.moj-button-menu__item:last-child {
- margin-right: 0;
-}
-.moj-button-menu [role="menuitem"] {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- -webkit-appearance: none;
- background-color: #f3f2f1;
- border: none;
- box-sizing: border-box;
- -webkit-box-sizing: border-box;
- display: block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
- margin-bottom: 0;
- padding: 10px;
- text-align: left;
- width: 100%;
-}
-@media print {
- .moj-button-menu [role="menuitem"] {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-button-menu [role="menuitem"] {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-button-menu [role="menuitem"] {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-button-menu [role="menuitem"]:link,
-.moj-button-menu [role="menuitem"]:visited {
- color: #0b0c0c;
- text-decoration: none;
-}
-.moj-button-menu [role="menuitem"]:hover {
- background-color: #b1b4b6;
-}
-.moj-button-menu [role="menuitem"]:focus {
- outline: 3px solid #fd0;
- outline-offset: 0;
- position: relative;
- z-index: 10;
-}
-.moj-button-menu__wrapper {
- font-size: 0;
-}
-.moj-button-menu__wrapper--right {
- right: 0;
-}
-.moj-button-menu [role="menu"] {
- position: absolute;
- width: 200px;
- z-index: 10;
-}
-.moj-button-menu [aria-expanded="true"] + [role="menu"] {
- display: block;
-}
-.moj-button-menu [aria-expanded="false"] + [role="menu"] {
- display: none;
-}
-.govuk-width-container {
- margin-left: 15px;
- margin-right: 15px;
- max-width: 960px;
-}
-@supports (margin: max(calc(0px))) {
- .govuk-width-container {
- margin-left: max(15px, calc(15px + env(safe-area-inset-left)));
- margin-right: max(15px, calc(15px + env(safe-area-inset-right)));
- }
-}
-@media (min-width: 40.0625em) {
- .govuk-width-container {
- margin-left: 30px;
- margin-right: 30px;
- }
- @supports (margin: max(calc(0px))) {
- .govuk-width-container {
- margin-left: max(30px, calc(15px + env(safe-area-inset-left)));
- margin-right: max(30px, calc(15px + env(safe-area-inset-right)));
- }
- }
-}
-@media (min-width: 1020px) {
- .govuk-width-container {
- margin-left: auto;
- margin-right: auto;
- }
- @supports (margin: max(calc(0px))) {
- .govuk-width-container {
- margin-left: auto;
- margin-right: auto;
- }
- }
-}
-.moj-cookie-banner {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- background-color: #fff;
- box-sizing: border-box;
- display: none;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 14px;
- font-size: 0.875rem;
- font-weight: 400;
- left: 15px;
- line-height: 1.1428571429;
- padding-bottom: 15px;
- padding-right: 15px;
- padding-top: 15px;
-}
-@media print {
- .moj-cookie-banner {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-cookie-banner {
- font-size: 16px;
- font-size: 1rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-cookie-banner {
- font-size: 14pt;
- line-height: 1.2;
- }
-}
-.moj-cookie-banner--show {
- display: block !important;
-}
-.moj-cookie-banner__message {
- margin: 0 15px;
- max-width: 960px;
-}
-@supports (margin: max(calc(0px))) {
- .moj-cookie-banner__message {
- margin-left: max(15px, calc(15px + env(safe-area-inset-left)));
- margin-right: max(15px, calc(15px + env(safe-area-inset-right)));
- }
-}
-@media (min-width: 40.0625em) {
- .moj-cookie-banner__message {
- margin-left: 30px;
- margin-right: 30px;
- }
- @supports (margin: max(calc(0px))) {
- .moj-cookie-banner__message {
- margin-left: max(30px, calc(15px + env(safe-area-inset-left)));
- margin-right: max(30px, calc(15px + env(safe-area-inset-right)));
- }
- }
-}
-@media (min-width: 1020px) {
- .moj-cookie-banner__message {
- margin-left: auto;
- margin-right: auto;
- }
- @supports (margin: max(calc(0px))) {
- .moj-cookie-banner__message {
- margin-left: auto;
- margin-right: auto;
- }
- }
-}
-.moj-cookie-banner__buttons .govuk-grid-column-full {
- padding-left: 0;
-}
-@media (min-width: 40.0625em) {
- .moj-cookie-banner .govuk-button {
- width: 90%;
- }
-}
-@media print {
- .moj-cookie-banner {
- display: none !important;
- }
-}
-.moj-label__currency {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- background-color: #f3f2f1;
- border-right: 2px solid #0b0c0c;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
- margin: 2px 0 0 2px !important;
- padding: 5.5px 12px;
- position: absolute;
-}
-@media print {
- .moj-label__currency {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-label__currency {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-label__currency {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-label__currency--error {
- background-color: #d4351c;
- border-right: 2px solid #d4351c;
- color: #fff;
-}
-@media (max-width: 40.0525em) {
- .moj-label__currency {
- padding: 8px 12px;
- }
-}
-.moj-input__currency {
- margin: 0;
- padding-left: 40px;
-}
-.moj-filter {
- background-color: #fff;
- box-shadow: inset 0 0 0 1px #b1b4b6;
-}
-.moj-filter:focus {
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
-}
-.moj-filter__header {
- background-color: #b1b4b6;
- font-size: 0;
- padding: 10px 20px;
- text-align: justify;
-}
-.moj-filter__header:after {
- content: "";
- display: inline-block;
- width: 100%;
-}
-.moj-filter__header [class^="govuk-heading-"] {
- margin-bottom: 0;
-}
-.moj-filter__legend {
- overflow: visible;
- width: 100%;
-}
-.moj-filter__legend button {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- -webkit-appearance: none;
- background-color: transparent;
- border: 0;
- border-radius: 0;
- box-sizing: border-box;
- cursor: pointer;
- display: block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 18px;
- font-size: 1.125rem;
- font-weight: 700;
- line-height: 1.1111111111;
- margin: 0;
- padding: 0;
- position: relative;
- text-align: left;
- width: 100%;
-}
-@media print {
- .moj-filter__legend button {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-filter__legend button {
- font-size: 24px;
- font-size: 1.5rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-filter__legend button {
- font-size: 18pt;
- line-height: 1.15;
- }
-}
-.moj-filter__legend button::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-.moj-filter__legend button:after {
- background-image: url(/assets/images/icon-toggle-plus-minus.svg);
- background-position: 0 0;
- content: "";
- display: block;
- height: 16px;
- margin-top: -8px;
- position: absolute;
- right: 0;
- top: 50%;
- width: 16px;
-}
-.moj-filter__legend button[aria-expanded="true"]:after {
- background-position: 16px 16px;
-}
-.moj-filter__header-action,
-.moj-filter__header-title {
- display: inline-block;
- text-align: left;
- vertical-align: middle;
-}
-.moj-filter__close {
- -webkit-appearance: none;
- background-color: transparent;
- border: none;
- border-radius: 0;
- color: #0b0c0c;
- cursor: pointer;
- margin: 0;
- padding: 0;
-}
-.moj-filter__close:focus {
- background-color: #fd0;
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
- color: #0b0c0c;
- outline: none;
-}
-.moj-filter__close::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-.moj-filter__close:before {
- background-image: url(/assets/images/icon-close-cross-black.svg);
- content: "";
- display: inline-block;
- height: 14px;
- margin-right: 5px;
- position: relative;
- top: -1px;
- vertical-align: middle;
- width: 14px;
-}
-.moj-filter__close {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
-}
-@media print {
- .moj-filter__close {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-filter__close {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-filter__close {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-filter__selected {
- background-color: #f3f2f1;
- box-shadow: inset 0 0 0 1px #b1b4b6;
- padding: 20px;
-}
-.moj-filter__selected ul:last-of-type {
- margin-bottom: 0;
-}
-.moj-filter__selected-heading {
- font-size: 0;
- text-align: justify;
-}
-.moj-filter__selected-heading:after {
- content: "";
- display: inline-block;
- width: 100%;
-}
-.moj-filter__heading-action,
-.moj-filter__heading-title {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- display: inline-block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 14px;
- font-size: 0.875rem;
- font-weight: 400;
- line-height: 1.1428571429;
- text-align: left;
- vertical-align: middle;
-}
-@media print {
- .moj-filter__heading-action,
- .moj-filter__heading-title {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-filter__heading-action,
- .moj-filter__heading-title {
- font-size: 16px;
- font-size: 1rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-filter__heading-action,
- .moj-filter__heading-title {
- font-size: 14pt;
- line-height: 1.2;
- }
-}
-.moj-filter-tags {
- font-size: 0;
- margin-bottom: 20px;
- padding-left: 0;
-}
-.moj-filter-tags li {
- display: inline-block;
- margin-right: 10px;
-}
-.moj-filter__tag {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- background-color: #fff;
- border: 1px solid #0b0c0c;
- color: #0b0c0c;
- display: inline-block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 14px;
- font-size: 0.875rem;
- font-weight: 400;
- line-height: 1.1428571429;
- margin-top: 5px;
- padding: 5px;
- text-decoration: none;
-}
-@media print {
- .moj-filter__tag {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-filter__tag {
- font-size: 16px;
- font-size: 1rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-filter__tag {
- font-size: 14pt;
- line-height: 1.2;
- }
-}
-.moj-filter__tag:link,
-.moj-filter__tag:visited {
- color: #0b0c0c;
-}
-.moj-filter__tag:focus {
- background-color: #fd0;
- color: #0b0c0c;
-}
-.moj-filter__tag:hover {
- background-color: #0b0c0c;
- color: #fff;
-}
-.moj-filter__tag:after {
- background-image: url(/assets/images/icon-tag-remove-cross.svg);
- content: "";
- display: inline-block;
- font-weight: 700;
- height: 10px;
- margin-left: 5px;
- vertical-align: middle;
- width: 10px;
-}
-.moj-filter__tag:hover:after {
- background-image: url(/assets/images/icon-tag-remove-cross-white.svg);
-}
-.moj-filter__options {
- box-shadow: inset 0 0 0 1px #b1b4b6;
- margin-top: -1px;
- padding: 20px;
-}
-.moj-filter__options div:last-of-type {
- margin-bottom: 0;
-}
-.moj-header {
- background-color: #0b0c0c;
- border-bottom: 10px solid #1d70b8;
- padding-top: 15px;
-}
-.moj-header__container {
- margin: 0 15px;
- max-width: 960px;
- position: relative;
-}
-@media (min-width: 40.0625em) {
- .moj-header__container {
- margin: 0 30px;
- }
-}
-@media (min-width: 1020px) {
- .moj-header__container {
- margin: 0 auto;
- }
-}
-.moj-header__container:after {
- clear: both;
- content: "";
- display: block;
-}
-.moj-header__logo {
- padding-bottom: 5px;
-}
-@media (min-width: 48.0625em) {
- .moj-header__logo {
- float: left;
- }
-}
-.moj-header__logotype-crown {
- margin-right: 5px;
- position: relative;
- top: -4px;
- vertical-align: top;
-}
-.moj-header__logotype-crest {
- margin-right: 5px;
- position: relative;
- top: -6px;
- vertical-align: top;
-}
-.moj-header__content {
- padding-bottom: 10px;
-}
-@media (min-width: 48.0625em) {
- .moj-header__content {
- float: right;
- }
-}
-.moj-header__link,
-.moj-header__link > a {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- border-bottom: 1px solid transparent;
- color: #fff;
- display: inline-block;
- font-family: GDS Transport, arial, sans-serif;
- line-height: 25px;
- margin-bottom: -1px;
- overflow: hidden;
- text-decoration: underline;
- text-decoration: none;
- vertical-align: middle;
-}
-@media print {
- .moj-header__link,
- .moj-header__link > a {
- font-family: sans-serif;
- }
-}
-.moj-header__link:focus,
-.moj-header__link > a:focus {
- background-color: #fd0;
- -webkit-box-decoration-break: clone;
- box-decoration-break: clone;
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
- outline: 3px solid transparent;
- text-decoration: none;
-}
-.moj-header__link:link,
-.moj-header__link > a:link {
- color: #1d70b8;
-}
-.moj-header__link:visited,
-.moj-header__link > a:visited {
- color: #4c2c92;
-}
-.moj-header__link:hover,
-.moj-header__link > a:hover {
- color: #003078;
-}
-.moj-header__link:active,
-.moj-header__link > a:active {
- color: #0b0c0c;
-}
-.moj-header__link:active,
-.moj-header__link:hover,
-.moj-header__link:link,
-.moj-header__link:visited,
-.moj-header__link > a:active,
-.moj-header__link > a:hover,
-.moj-header__link > a:link,
-.moj-header__link > a:visited {
- color: #fff;
-}
-.moj-header__link:hover,
-.moj-header__link > a:hover {
- border-color: #fff;
-}
-.moj-header__link:focus,
-.moj-header__link > a:focus {
- border-color: transparent;
- color: #0b0c0c;
-}
-.moj-header__link--organisation-name,
-.moj-header__link > a--organisation-name {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 18px;
- font-size: 1.125rem;
- font-weight: 700;
- line-height: 1.1111111111;
- vertical-align: middle;
-}
-@media print {
- .moj-header__link--organisation-name,
- .moj-header__link > a--organisation-name {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-header__link--organisation-name,
- .moj-header__link > a--organisation-name {
- font-size: 24px;
- font-size: 1.5rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-header__link--organisation-name,
- .moj-header__link > a--organisation-name {
- font-size: 18pt;
- line-height: 1.15;
- }
-}
-.moj-header__link--organisation-name:hover,
-.moj-header__link > a--organisation-name:hover {
- border-color: transparent;
-}
-.moj-header__link--service-name,
-.moj-header__link > a--service-name {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 18px;
- font-size: 1.125rem;
- line-height: 1.1111111111;
- vertical-align: middle;
-}
-@media print {
- .moj-header__link--service-name,
- .moj-header__link > a--service-name {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-header__link--service-name,
- .moj-header__link > a--service-name {
- font-size: 24px;
- font-size: 1.5rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-header__link--service-name,
- .moj-header__link > a--service-name {
- font-size: 18pt;
- line-height: 1.15;
- }
-}
-@media (max-width: 48.0525em) {
- .moj-header__link--service-name,
- .moj-header__link > a--service-name {
- display: block;
- }
-}
-@media (min-width: 48.0625em) {
- .moj-header__link--service-name,
- .moj-header__link > a--service-name {
- margin-left: 5px;
- }
-}
-.moj-header__link--service-name:hover,
-.moj-header__link > a--service-name:hover {
- border-color: transparent;
-}
-.moj-header__link a {
- margin-bottom: 1px;
- vertical-align: text-bottom;
-}
-.moj-header__link a:hover {
- border-color: #fff;
-}
-@media (max-width: 48.0525em) {
- .moj-header__link a {
- margin-bottom: -1px;
- vertical-align: middle;
- }
-}
-span.moj-header__link:hover {
- border-color: transparent;
-}
-.moj-header__navigation {
- color: #fff;
- margin-top: 3px;
-}
-.moj-header__navigation-list {
- font-size: 0;
- list-style: none;
- margin: 0;
- padding: 0;
-}
-.moj-header__navigation-item {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- display: inline-block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
- margin-right: 20px;
-}
-@media print {
- .moj-header__navigation-item {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-header__navigation-item {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-header__navigation-item {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-header__navigation-item:last-child {
- margin-right: 0;
-}
-.moj-header__navigation-link {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- text-decoration: underline;
-}
-@media print {
- .moj-header__navigation-link {
- font-family: sans-serif;
- }
-}
-.moj-header__navigation-link:focus {
- background-color: #fd0;
- -webkit-box-decoration-break: clone;
- box-decoration-break: clone;
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
- outline: 3px solid transparent;
- text-decoration: none;
-}
-.moj-header__navigation-link:link {
- color: #1d70b8;
-}
-.moj-header__navigation-link:visited {
- color: #4c2c92;
-}
-.moj-header__navigation-link:hover {
- color: #003078;
-}
-.moj-header__navigation-link:active {
- color: #0b0c0c;
-}
-.moj-header__navigation-link:active,
-.moj-header__navigation-link:link,
-.moj-header__navigation-link:visited {
- color: inherit;
- text-decoration: none;
-}
-.moj-header__navigation-link:hover {
- text-decoration: underline !important;
-}
-.moj-header__navigation-link:focus {
- color: #0b0c0c;
-}
-.moj-header__navigation-link[aria-current="page"] {
- text-decoration: none;
-}
-.moj-identity-bar {
- background-color: #fff;
- box-shadow: inset 0 -1px 0 0 #b1b4b6;
- color: #0b0c0c;
- padding-bottom: 9px;
- padding-top: 10px;
-}
-.moj-identity-bar:after {
- clear: both;
- content: "";
- display: block;
-}
-.moj-identity-bar__container {
- font-size: 0;
- margin: 0 15px;
- max-width: 960px;
- text-align: justify;
-}
-@media (min-width: 40.0625em) {
- .moj-identity-bar__container {
- margin: 0 30px;
- }
-}
-@media (min-width: 1020px) {
- .moj-identity-bar__container {
- margin: 0 auto;
- }
-}
-.moj-identity-bar__container:after {
- content: "";
- display: inline-block;
- width: 100%;
-}
-.moj-identity-bar__title {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- display: inline-block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 14px;
- font-size: 0.875rem;
- font-weight: 400;
- line-height: 1.1428571429;
- vertical-align: top;
-}
-@media print {
- .moj-identity-bar__title {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-identity-bar__title {
- font-size: 16px;
- font-size: 1rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-identity-bar__title {
- font-size: 14pt;
- line-height: 1.2;
- }
-}
-.moj-identity-bar__details {
- margin-right: 10px;
- padding-bottom: 5px;
- padding-top: 5px;
-}
-@media (min-width: 40.0625em) {
- .moj-identity-bar__details {
- display: inline-block;
- padding-bottom: 9px;
- padding-top: 11px;
- vertical-align: top;
- }
-}
-.moj-identity-bar__actions {
- margin-bottom: -10px;
-}
-@media (min-width: 40.0625em) {
- .moj-identity-bar__actions {
- display: inline-block;
- vertical-align: middle;
- }
-}
-.moj-identity-bar__menu {
- display: inline-block;
- margin-right: 10px;
-}
-.moj-identity-bar__menu:last-child {
- margin-right: 0;
-}
-.moj-messages-container {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- border: 1px solid #b1b4b6;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
-}
-@media print {
- .moj-messages-container {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-messages-container {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-messages-container {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-message-list {
- min-height: 200px;
- overflow-x: hidden;
- overflow-y: scroll;
- padding: 5px;
-}
-.moj-message-list__date {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- color: #505a5f;
- display: inline-block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 700;
- line-height: 1.25;
- padding: 15px 0;
- text-align: center;
- width: 100%;
-}
-@media print {
- .moj-message-list__date {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-message-list__date {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-message-list__date {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-message-item {
- border-radius: 0.5em 0.5em 0.75em 0.5em;
- margin-bottom: 5px;
- padding: 15px;
- position: relative;
-}
-@media (min-width: 40.0625em) {
- .moj-message-item {
- width: 50%;
- }
-}
-.moj-message-item--sent {
- background-color: #1d70b8;
- color: #fff;
- float: right;
- margin-right: 10px;
- padding-right: 25px;
- text-align: right;
-}
-.moj-message-item--sent:after {
- border-bottom-left-radius: 1.75em 1.5em;
- border-left: 1em solid #1d70b8;
- bottom: 0;
- content: "";
- height: 1.5em;
- position: absolute;
- right: -1.5em;
- width: 1.5em;
-}
-.moj-message-item--received {
- background-color: #f3f2f1;
- float: left;
- margin-left: 10px;
- padding-left: 25px;
-}
-.moj-message-item--received:after {
- border-bottom-right-radius: 1.75em 1.5em;
- border-right: 1em solid #f3f2f1;
- bottom: 0;
- content: "";
- height: 1.5em;
- left: -1.5em;
- position: absolute;
- width: 1.5em;
-}
-.moj-message-item a:link,
-.moj-message-item a:visited {
- color: #fff;
-}
-.moj-message-item a:focus {
- color: #0b0c0c;
-}
-.moj-message-item__text--sent table {
- color: #fff;
-}
-.moj-message-item__text--sent table td,
-.moj-message-item__text--sent table th {
- border-bottom: 1px solid #fff;
-}
-.moj-message-item__meta {
- margin-top: 10px;
-}
-.moj-message-item__meta--sender {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 14px;
- font-size: 0.875rem;
- font-weight: 700;
- line-height: 1.1428571429;
-}
-@media print {
- .moj-message-item__meta--sender {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-message-item__meta--sender {
- font-size: 16px;
- font-size: 1rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-message-item__meta--sender {
- font-size: 14pt;
- line-height: 1.2;
- }
-}
-.moj-message-item__meta--timestamp {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 14px;
- font-size: 0.875rem;
- font-weight: 700;
- line-height: 1.1428571429;
-}
-@media print {
- .moj-message-item__meta--timestamp {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-message-item__meta--timestamp {
- font-size: 16px;
- font-size: 1rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-message-item__meta--timestamp {
- font-size: 14pt;
- line-height: 1.2;
- }
-}
-.moj-multi-file-upload {
- margin-bottom: 40px;
-}
-.moj-multi-file-upload--enhanced .moj-multi-file-upload__button {
- display: none;
-}
-.moj-multi-file-upload__dropzone {
- display: flex;
- outline: 3px dashed #0b0c0c;
- padding: 60px 15px;
- text-align: center;
- transition: outline-offset 0.1s ease-in-out, background-color 0.1s linear;
-}
-.moj-multi-file-upload__dropzone label {
- display: inline-block;
- margin-bottom: 0;
- width: auto;
-}
-.moj-multi-file-upload__dropzone p {
- margin-bottom: 0;
- margin-right: 10px;
- padding-top: 7px;
-}
-.moj-multi-file-upload__dropzone [type="file"] {
- left: -9999em;
- position: absolute;
-}
-.moj-multi-file-upload--dragover {
- background: #b1b4b6;
- outline-color: #6f777b;
-}
-.moj-multi-file-upload--focused {
- background-color: #fd0;
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
- color: #0b0c0c;
- outline: none;
-}
-.moj-multi-file-upload__error {
- color: #d4351c;
- font-weight: 700;
-}
-.moj-multi-file-upload__success {
- color: #00703c;
- font-weight: 700;
-}
-.moj-multi-file-upload__error svg,
-.moj-multi-file-upload__success svg {
- fill: currentColor;
- float: left;
- margin-right: 10px;
-}
-.moj-multi-select__checkbox {
- display: inline-block;
- padding-left: 0;
-}
-.moj-multi-select__toggle-label {
- margin: 0 !important;
- padding: 0 !important;
-}
-.moj-notification-badge {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- background-color: #d4351c;
- border-radius: 75px;
- color: #fff;
- display: inline-block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 14px;
- font-size: 0.875rem;
- font-size: 16px;
- font-weight: 700;
- font-weight: 600;
- line-height: 1.1428571429;
- min-width: 15px;
- padding: 5px 8px 2px;
- text-align: center;
- white-space: nowrap;
-}
-@media print {
- .moj-notification-badge {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-notification-badge {
- font-size: 16px;
- font-size: 1rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-notification-badge {
- font-size: 14pt;
- line-height: 1.2;
- }
-}
-.moj-organisation-nav {
- border-bottom: 1px solid #b1b4b6;
- margin-bottom: 15px;
- margin-top: 10px;
- padding-bottom: 5px;
-}
-.moj-organisation-nav:after {
- clear: both;
- content: "";
- display: block;
-}
-.moj-organisation-nav__title {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 700;
- line-height: 1.25;
-}
-@media print {
- .moj-organisation-nav__title {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-organisation-nav__title {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-organisation-nav__title {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-organisation-nav__title {
- float: left;
- width: 75%;
- }
-}
-.moj-organisation-nav__link {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- text-decoration: underline;
-}
-@media print {
- .moj-organisation-nav__link {
- font-family: sans-serif;
- }
-}
-.moj-organisation-nav__link:focus {
- background-color: #fd0;
- -webkit-box-decoration-break: clone;
- box-decoration-break: clone;
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
- outline: 3px solid transparent;
- text-decoration: none;
-}
-.moj-organisation-nav__link:link {
- color: #1d70b8;
-}
-.moj-organisation-nav__link:visited {
- color: #4c2c92;
-}
-.moj-organisation-nav__link:hover {
- color: #003078;
-}
-.moj-organisation-nav__link:active,
-.moj-organisation-nav__link:focus {
- color: #0b0c0c;
-}
-@media print {
- .moj-organisation-nav__link[href^="/"]:after,.moj-organisation-nav__link[href^="http://"]:after,.moj-organisation-nav__link[href^="https://"]:after
- {
- word-wrap: break-word;
- content: " (" attr(href) ")";
- font-size: 90%;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-organisation-nav__link {
- float: right;
- }
-}
-.moj-page-header-actions {
- font-size: 0;
- margin-bottom: 40px;
- min-height: 40px;
- text-align: justify;
-}
-.moj-page-header-actions:after {
- clear: both;
- content: "";
- display: block;
- display: inline-block;
- width: 100%;
-}
-.moj-page-header-actions__title [class^="govuk-heading-"] {
- margin-bottom: 10px;
- text-align: left;
-}
-@media (min-width: 40.0625em) {
- .moj-page-header-actions__title [class^="govuk-heading-"] {
- margin-bottom: 0;
- }
- .moj-page-header-actions__actions,
- .moj-page-header-actions__title {
- display: inline-block;
- vertical-align: middle;
- }
-}
-.moj-page-header-actions__action:last-child {
- margin-bottom: 0;
-}
-@media (min-width: 40.0625em) {
- .moj-page-header-actions__action {
- margin-bottom: 0;
- }
-}
-@media (min-width: 48.0625em) {
- .moj-pagination {
- font-size: 0;
- margin-left: -5px;
- margin-right: -5px;
- text-align: justify;
- }
- .moj-pagination:after {
- content: "";
- display: inline-block;
- width: 100%;
- }
-}
-.moj-pagination__list {
- list-style: none;
- margin: 0;
- padding: 0;
-}
-@media (min-width: 48.0625em) {
- .moj-pagination__list {
- display: inline-block;
- margin-bottom: 0;
- vertical-align: middle;
- }
-}
-.moj-pagination__results {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
- margin-top: 0;
-}
-@media print {
- .moj-pagination__results {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-pagination__results {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-pagination__results {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-@media (min-width: 48.0625em) {
- .moj-pagination__results {
- display: inline-block;
- margin-bottom: 0;
- vertical-align: middle;
- }
-}
-.moj-pagination__item {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- display: inline-block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
-}
-@media print {
- .moj-pagination__item {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-pagination__item {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-pagination__item {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-pagination__item--active,
-.moj-pagination__item--dots {
- font-weight: 700;
- height: 25px;
- padding: 5px 10px;
- text-align: center;
-}
-.moj-pagination__item--dots {
- padding-left: 0;
- padding-right: 0;
-}
-.moj-pagination__item--next .moj-pagination__link:after,
-.moj-pagination__item--prev .moj-pagination__link:before {
- background: transparent;
- border-style: solid;
- color: #0b0c0c;
- content: "";
- display: inline-block;
- height: 10px;
- transform: rotate(-45deg);
- width: 10px;
-}
-.moj-pagination__item--prev .moj-pagination__link:before {
- border-width: 3px 0 0 3px;
- margin-right: 5px;
-}
-.moj-pagination__item--next .moj-pagination__link:after {
- border-width: 0 3px 3px 0;
- margin-left: 5px;
-}
-.moj-pagination__link {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- display: block;
- font-family: GDS Transport, arial, sans-serif;
- min-width: 25px;
- padding: 5px;
- text-align: center;
- text-decoration: underline;
- text-decoration: none;
-}
-@media print {
- .moj-pagination__link {
- font-family: sans-serif;
- }
-}
-.moj-pagination__link:focus {
- background-color: #fd0;
- -webkit-box-decoration-break: clone;
- box-decoration-break: clone;
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
- outline: 3px solid transparent;
- text-decoration: none;
-}
-.moj-pagination__link:link {
- color: #1d70b8;
-}
-.moj-pagination__link:visited {
- color: #4c2c92;
-}
-.moj-pagination__link:hover {
- color: #003078;
-}
-.moj-pagination__link:active {
- color: #0b0c0c;
-}
-.moj-pagination__link:link,
-.moj-pagination__link:visited {
- color: #1d70b8;
-}
-.moj-pagination__link:hover {
- color: #5694ca;
-}
-.moj-pagination__link:focus {
- color: #0b0c0c;
-}
-.moj-pagination__results {
- padding: 5px;
-}
-.moj-password-reveal {
- display: flex;
-}
-.moj-password-reveal__input {
- margin-right: 5px;
-}
-.moj-password-reveal__button {
- width: 80px;
-}
-.moj-primary-navigation {
- background-color: #f3f2f1;
-}
-.moj-primary-navigation__container {
- font-size: 0;
- margin: 0 15px;
- max-width: 960px;
- text-align: justify;
-}
-@media (min-width: 40.0625em) {
- .moj-primary-navigation__container {
- margin: 0 30px;
- }
-}
-@media (min-width: 1020px) {
- .moj-primary-navigation__container {
- margin: 0 auto;
- }
-}
-.moj-primary-navigation__container:after {
- content: "";
- display: inline-block;
- width: 100%;
-}
-.moj-primary-navigation__nav {
- text-align: left;
-}
-@media (min-width: 48.0625em) {
- .moj-primary-navigation__nav {
- display: inline-block;
- vertical-align: middle;
- }
-}
-.moj-primary-navigation__list {
- font-size: 0;
- list-style: none;
- margin: 0;
- padding: 0;
-}
-.moj-primary-navigation__item {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- display: inline-block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
- margin-right: 20px;
- margin-top: 0;
-}
-@media print {
- .moj-primary-navigation__item {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-primary-navigation__item {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-primary-navigation__item {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-primary-navigation__item:last-child {
- margin-right: 0;
-}
-.moj-primary-navigation__link {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- display: block;
- font-family: GDS Transport, arial, sans-serif;
- font-weight: 700;
- padding-bottom: 15px;
- padding-top: 15px;
- text-decoration: underline;
- text-decoration: none;
-}
-@media print {
- .moj-primary-navigation__link {
- font-family: sans-serif;
- }
-}
-.moj-primary-navigation__link:focus {
- background-color: #fd0;
- -webkit-box-decoration-break: clone;
- box-decoration-break: clone;
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
- outline: 3px solid transparent;
- text-decoration: none;
-}
-.moj-primary-navigation__link:link {
- color: #1d70b8;
-}
-.moj-primary-navigation__link:visited {
- color: #4c2c92;
-}
-.moj-primary-navigation__link:hover {
- color: #003078;
-}
-.moj-primary-navigation__link:active {
- color: #0b0c0c;
-}
-.moj-primary-navigation__link:link,
-.moj-primary-navigation__link:visited {
- color: #1d70b8;
-}
-.moj-primary-navigation__link:hover {
- color: #5694ca;
-}
-.moj-primary-navigation__link:focus {
- box-shadow: none;
- color: #0b0c0c;
- position: relative;
- z-index: 1;
-}
-.moj-primary-navigation__link:focus:before {
- background-color: #0b0c0c;
- bottom: 0;
- content: "";
- display: block;
- height: 5px;
- left: 0;
- position: absolute;
- width: 100%;
-}
-.moj-primary-navigation__link[aria-current] {
- color: #1d70b8;
- font-weight: 700;
- position: relative;
- text-decoration: none;
-}
-.moj-primary-navigation__link[aria-current]:before {
- background-color: #1d70b8;
- bottom: 0;
- content: "";
- display: block;
- height: 5px;
- left: 0;
- position: absolute;
- width: 100%;
-}
-.moj-primary-navigation__link[aria-current]:focus {
- border: none;
- color: #0b0c0c;
- position: relative;
-}
-.moj-primary-navigation__link[aria-current]:focus:before {
- background-color: #0b0c0c;
-}
-@media (min-width: 48.0625em) {
- .moj-primary-navigation__search {
- display: inline-block;
- vertical-align: middle;
- }
-}
-.moj-progress-bar {
- margin-bottom: 40px;
-}
-.moj-progress-bar__list {
- font-size: 0;
- list-style: none;
- margin: 0;
- padding: 0;
- position: relative;
- text-align: justify;
- vertical-align: top;
-}
-.moj-progress-bar__list:after {
- content: "";
- display: inline-block;
- width: 100%;
-}
-.moj-progress-bar__list:before {
- border-top: 6px solid #00703c;
- content: "";
- left: 0;
- position: absolute;
- top: 13px;
- width: 100%;
-}
-.moj-progress-bar__item {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- display: inline-block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
- max-width: 20%;
- position: relative;
- text-align: center;
- vertical-align: top;
-}
-@media print {
- .moj-progress-bar__item {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-progress-bar__item {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-progress-bar__item {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-progress-bar__item:first-child:before,
-.moj-progress-bar__item:last-child:before {
- border-top: 6px solid #fff;
- content: "";
- left: 0;
- position: absolute;
- top: 13px;
- width: 50%;
-}
-.moj-progress-bar__item:first-child:before {
- left: 0;
-}
-.moj-progress-bar__item:last-child:before {
- left: auto;
- right: 0;
-}
-.moj-progress-bar__item[aria-current="step"] {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 700;
- line-height: 1.25;
-}
-@media print {
- .moj-progress-bar__item[aria-current="step"] {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-progress-bar__item[aria-current="step"] {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-progress-bar__item[aria-current="step"] {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-progress-bar__icon {
- background-color: #fff;
- border: 6px solid #00703c;
- border-radius: 50%;
- box-sizing: border-box;
- display: block;
- height: 32px;
- margin-left: auto;
- margin-right: auto;
- position: relative;
- width: 32px;
-}
-.moj-progress-bar__icon--complete {
- background-color: #00703c;
- background-image: url(/assets/images/icon-progress-tick.svg);
- background-position: 50% 50%;
- background-repeat: no-repeat;
-}
-.moj-progress-bar__label {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- word-wrap: break-word;
- display: block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 14px;
- font-size: 0.875rem;
- font-weight: 400;
- font-weight: inherit;
- line-height: 1.1428571429;
- margin-top: 15px;
- position: relative;
-}
-@media print {
- .moj-progress-bar__label {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-progress-bar__label {
- font-size: 16px;
- font-size: 1rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-progress-bar__label {
- font-size: 14pt;
- line-height: 1.2;
- }
-}
-.moj-rich-text-editor__toolbar {
- margin-bottom: 10px;
-}
-.moj-rich-text-editor__toolbar:after {
- clear: both;
- content: "";
- display: block;
-}
-.moj-rich-text-editor__toolbar-button {
- background-color: #fff;
- background-position: 50% 50%;
- background-repeat: no-repeat;
- background-size: 40px 40px;
- border: 2px solid #0b0c0c;
- color: #0b0c0c;
- cursor: pointer;
- float: left;
- height: 40px;
- margin-left: -2px;
- outline: 0;
- text-decoration: none;
- vertical-align: top;
- width: 40px;
-}
-.moj-rich-text-editor__toolbar-button:first-child {
- margin-left: 0;
-}
-.moj-rich-text-editor__toolbar-button::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-.moj-rich-text-editor__toolbar-button:focus {
- background-color: #fd0;
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
- color: #0b0c0c;
- outline: none;
- position: relative;
- z-index: 2;
-}
-.moj-rich-text-editor__toolbar-button--bold {
- background-image: url(/assets/images/icon-wysiwyg-bold.svg);
-}
-.moj-rich-text-editor__toolbar-button--italic {
- background-image: url(/assets/images/icon-wysiwyg-italic.svg);
-}
-.moj-rich-text-editor__toolbar-button--underline {
- background-image: url(/assets/images/icon-wysiwyg-underline.svg);
-}
-.moj-rich-text-editor__toolbar-button--unordered-list {
- background-image: url(/assets/images/icon-wysiwyg-unordered-list.svg);
- margin-left: 10px;
-}
-.moj-rich-text-editor__toolbar-button--ordered-list {
- background-image: url(/assets/images/icon-wysiwyg-ordered-list.svg);
-}
-.moj-rich-text-editor__content {
- min-height: 130px;
- outline: none;
- overflow: auto;
- resize: vertical;
-}
-.moj-search-toggle__button {
- -moz-osx-font-smoothing: grayscale;
- -webkit-font-smoothing: antialiased;
- -webkit-appearance: none;
- background-color: transparent;
- border: none;
- color: #1d70b8;
- cursor: pointer;
- display: inline-block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 700;
- line-height: 1.25;
- padding: 12px 0 13px;
-}
-@media print {
- .moj-search-toggle__button {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-search-toggle__button {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-search-toggle__button {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-search-toggle__button__icon {
- fill: currentColor;
- display: inline-block;
- height: 20px;
- margin-left: 10px;
- vertical-align: middle;
- width: 20px;
-}
-@media screen and (forced-colors: active) {
- .moj-search-toggle__button__icon {
- fill: windowText;
- }
-}
-.moj-search-toggle__button:focus {
- background-color: #fd0;
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
- color: #0b0c0c;
- outline: none;
- position: relative;
- z-index: 1;
-}
-.moj-search--toggle {
- padding: 15px;
-}
-@media (max-width: 48.0525em) {
- .moj-search--toggle {
- padding-left: 0 !important;
- padding-right: 0 !important;
- }
- .js-enabled .moj-search--toggle {
- padding-top: 0 !important;
- }
-}
-.js-enabled .moj-search-toggle {
- position: relative;
-}
-.js-enabled .moj-search-toggle__search {
- background-color: #f3f2f1;
-}
-@media (min-width: 48.0625em) {
- .js-enabled .moj-search-toggle__search {
- max-width: 450px;
- position: absolute;
- right: -15px;
- top: 50px;
- width: 450px;
- z-index: 10;
- }
-}
-.moj-search {
- font-size: 0;
-}
-.moj-search form {
- align-items: flex-end;
- display: flex;
-}
-.moj-search .govuk-form-group {
- display: inline-block;
- flex: 1;
- margin-bottom: 0;
- vertical-align: top;
-}
-.moj-search__hint,
-.moj-search__label {
- text-align: left;
-}
-.moj-search__input:focus {
- position: relative;
- z-index: 1;
-}
-.moj-search__button {
- display: inline-block;
- margin-bottom: 0;
- margin-left: 10px;
- position: relative;
- top: -2px;
- vertical-align: bottom;
- width: auto;
-}
-.moj-search--inline {
- padding: 10px 0 !important;
-}
-@media (min-width: 48.0625em) {
- .moj-search--inline {
- padding: 0 !important;
- }
-}
-.moj-side-navigation {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 14px;
- font-size: 0.875rem;
- font-weight: 400;
- line-height: 1.1428571429;
-}
-@media print {
- .moj-side-navigation {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-side-navigation {
- font-size: 16px;
- font-size: 1rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-side-navigation {
- font-size: 14pt;
- line-height: 1.2;
- }
-}
-@media (max-width: 40.0525em) {
- .moj-side-navigation {
- display: flex;
- overflow-x: scroll;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-side-navigation {
- display: block;
- padding: 20px 0 0;
- }
-}
-.moj-side-navigation__title {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- color: #505a5f;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
- margin: 0;
- padding: 10px 10px 10px 14px;
-}
-@media print {
- .moj-side-navigation__title {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-side-navigation__title {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-side-navigation__title {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-@media (max-width: 40.0525em) {
- .moj-side-navigation__title {
- display: none;
- }
-}
-.moj-side-navigation__list {
- list-style: none;
- margin: 0;
- padding: 0;
-}
-@media (max-width: 40.0525em) {
- .moj-side-navigation__list {
- display: flex;
- margin: 0;
- white-space: nowrap;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-side-navigation__list {
- margin-bottom: 20px;
- }
-}
-@media (max-width: 40.0525em) {
- .moj-side-navigation__item {
- display: flex;
- }
-}
-.moj-side-navigation__item a,
-.moj-side-navigation__item a:link,
-.moj-side-navigation__item a:visited {
- background-color: inherit;
- color: #1d70b8;
- display: block;
- text-decoration: none;
-}
-@media (max-width: 40.0525em) {
- .moj-side-navigation__item a,
- .moj-side-navigation__item a:link,
- .moj-side-navigation__item a:visited {
- border-bottom: 4px solid transparent;
- padding: 15px 15px 11px;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-side-navigation__item a,
- .moj-side-navigation__item a:link,
- .moj-side-navigation__item a:visited {
- background-color: inherit;
- border-left: 4px solid transparent;
- padding: 10px;
- }
-}
-.moj-side-navigation__item a:hover {
- border-color: #5694ca;
-}
-.moj-side-navigation__item a:focus {
- background-color: #fd0;
- border-color: #0b0c0c #0b0c0c #0b0c0c transparent;
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
- color: #0b0c0c;
- position: relative;
-}
-.moj-side-navigation__item--active a:link,
-.moj-side-navigation__item--active a:visited {
- border-color: #1d70b8;
- color: #1d70b8;
- font-weight: 700;
-}
-.moj-side-navigation__item--active a:focus {
- background-color: #fd0;
- border-color: #0b0c0c #0b0c0c #0b0c0c transparent;
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
- color: #0b0c0c;
-}
-@media (min-width: 40.0625em) {
- .moj-side-navigation__item--active a:link,
- .moj-side-navigation__item--active a:visited {
- background-color: #f3f2f1;
- }
- .moj-side-navigation__item--active a:focus {
- background-color: #fd0;
- border-color: transparent;
- color: #0b0c0c;
- }
-}
-
-[aria-sort] button {
- background-color: transparent;
- border-width: 0;
- box-shadow: 0 0 0 0;
- color: #005ea5;
- cursor: pointer;
- font-family: inherit;
- font-size: inherit;
- font-size: 1em;
- font-weight: inherit;
- margin: 0;
- padding: 0 10px 0 0;
- position: relative;
- text-align: inherit
-}
-/* Modified - alt color on hover state */
-[aria-sort] button:hover {
- box-shadow: 0 0 , 0 2px #0b0c0c;
- background-color: #f3f2f1;
- color: #0b0c0c;
-}
-
-[aria-sort] button:focus {
- background-color: #fd0;
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
- color: #0b0c0c;
- outline: none
-}
-
-[aria-sort]:first-child button {
- right: auto
-}
-
-/* Modified - down arrow small, no content */
-[aria-sort] button:before {
- content: "";
- position: absolute;
- right: -1px;
- top: 11px;
- border-style: solid;
- border-color: #005ea5;
- -webkit-clip-path: polygon(0% 0%, 50% 100%, 100% 0%);
- clip-path: polygon(0% 0%, 50% 100%, 100% 0%);
- border-width: 7px 3.5px 0 3.5px;
-}
-
-/* Modified - up arrow small, no content */
-[aria-sort] button:after {
- content: "";
- position: absolute;
- right: -1px;
- top: 3px;
- border-style: solid;
- border-color: #005ea5;
- -webkit-clip-path: polygon(50% 0%, 100% 100%,0% 100%);
- clip-path: polygon(50% 0%, 100% 100%,0% 100%);
- border-width: 7px 3.5px 0 3.5px;
-}
-
-[aria-sort=ascending] button:before,
-[aria-sort=descending] button:before {
- content: none
-}
-
-/* Modified - up arrow big, no content */
-[aria-sort=ascending] button:after {
- content: "";
- position: absolute;
- right: -5px;
- top: 6px;
- border-style: solid;
- border-color: #005ea5;
- -webkit-clip-path: polygon(50% 0%, 100% 100%,0% 100%);
- clip-path: polygon(50% 0%, 100% 100%,0% 100%);
- border-width: 10px 5px 0 5px;
-}
-
-/* Modified - down arrow big, no content */
-[aria-sort=descending] button:after {
- content: "";
- position: absolute;
- right: -5px;
- top: 6px;
- border-style: solid;
- border-color: #005ea5;
- -webkit-clip-path: polygon(0% 0%, 50% 100%, 100% 0%);
- clip-path: polygon(0% 0%, 50% 100%, 100% 0%);
- border-width: 10px 5px 0 5px;
-}
-
-.moj-sub-navigation {
- margin-bottom: 40px;
-}
-.moj-sub-navigation__list {
- font-size: 0;
- list-style: none;
- margin: 0;
- padding: 0;
-}
-@media (min-width: 40.0625em) {
- .moj-sub-navigation__list {
- box-shadow: inset 0 -1px 0 #b1b4b6;
- width: 100%;
- }
-}
-.moj-sub-navigation__item {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- box-shadow: inset 0 -1px 0 #b1b4b6;
- display: block;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
- margin-top: -1px;
-}
-@media print {
- .moj-sub-navigation__item {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-sub-navigation__item {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-sub-navigation__item {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-sub-navigation__item:last-child {
- box-shadow: none;
-}
-@media (min-width: 40.0625em) {
- .moj-sub-navigation__item {
- box-shadow: none;
- display: inline-block;
- margin-right: 20px;
- margin-top: 0;
- }
-}
-.moj-sub-navigation__link {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- display: block;
- font-family: GDS Transport, arial, sans-serif;
- padding-bottom: 12px;
- padding-left: 15px;
- padding-top: 12px;
- position: relative;
- text-decoration: underline;
- text-decoration: none;
-}
-@media print {
- .moj-sub-navigation__link {
- font-family: sans-serif;
- }
-}
-.moj-sub-navigation__link:focus {
- background-color: #fd0;
- -webkit-box-decoration-break: clone;
- box-decoration-break: clone;
- box-shadow: 0 -2px #fd0, 0 4px #0b0c0c;
- outline: 3px solid transparent;
- text-decoration: none;
-}
-.moj-sub-navigation__link:link {
- color: #1d70b8;
-}
-.moj-sub-navigation__link:visited {
- color: #4c2c92;
-}
-.moj-sub-navigation__link:hover {
- color: #003078;
-}
-.moj-sub-navigation__link:active {
- color: #0b0c0c;
-}
-@media (min-width: 40.0625em) {
- .moj-sub-navigation__link {
- padding-left: 0;
- }
-}
-.moj-sub-navigation__link:link,
-.moj-sub-navigation__link:visited {
- color: #1d70b8;
-}
-.moj-sub-navigation__link:hover {
- color: #5694ca;
-}
-.moj-sub-navigation__link:focus {
- box-shadow: none;
- color: #0b0c0c;
- position: relative;
-}
-.moj-sub-navigation__link:focus:before {
- background-color: #0b0c0c;
- bottom: 0;
- content: "";
- display: block;
- height: 5px;
- left: 0;
- position: absolute;
- right: 0;
- width: 100%;
-}
-.moj-sub-navigation__link[aria-current="page"] {
- color: #0b0c0c;
- position: relative;
- text-decoration: none;
-}
-.moj-sub-navigation__link[aria-current="page"]:before {
- background-color: #1d70b8;
- bottom: 0;
- content: "";
- display: block;
- height: 100%;
- left: 0;
- position: absolute;
- width: 5px;
-}
-@media (min-width: 40.0625em) {
- .moj-sub-navigation__link[aria-current="page"]:before {
- height: 5px;
- width: 100%;
- }
-}
-.moj-sub-navigation__link[aria-current="page"]:focus:before {
- background-color: #0b0c0c;
-}
-.moj-tag {
- background-color: #1d70b8;
- border: 2px solid #1d70b8;
- color: #fff;
-}
-.moj-tag--purple {
- background-color: #4c2c92;
- border: 2px solid #4c2c92;
- color: #fff;
-}
-.moj-tag--bright-purple {
- background-color: #912b88;
- border: 2px solid #912b88;
- color: #fff;
-}
-.moj-tag--error,
-.moj-tag--red {
- background-color: #d4351c;
- border: 2px solid #d4351c;
- color: #fff;
-}
-.moj-tag--green,
-.moj-tag--success {
- background-color: #00703c;
- border: 2px solid #00703c;
- color: #fff;
-}
-.moj-tag--blue,
-.moj-tag--information {
- background-color: #1d70b8;
- border: 2px solid #1d70b8;
- color: #fff;
-}
-.moj-tag--black {
- background-color: #0b0c0c;
- border: 2px solid #0b0c0c;
- color: #fff;
-}
-.moj-tag--grey {
- background-color: #505a5f;
- border: 2px solid #505a5f;
- color: #fff;
-}
-.moj-task-list {
- list-style-type: none;
- margin-bottom: 0;
- margin-top: 0;
- padding-left: 0;
-}
-@media (min-width: 40.0625em) {
- .moj-task-list {
- min-width: 550px;
- }
-}
-.moj-task-list__section {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- display: table;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 18px;
- font-size: 1.125rem;
- font-weight: 700;
- line-height: 1.1111111111;
-}
-@media print {
- .moj-task-list__section {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-task-list__section {
- font-size: 24px;
- font-size: 1.5rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-task-list__section {
- font-size: 18pt;
- line-height: 1.15;
- }
-}
-.moj-task-list__section-number {
- display: table-cell;
-}
-@media (min-width: 40.0625em) {
- .moj-task-list__section-number {
- min-width: 30px;
- padding-right: 0;
- }
-}
-.moj-task-list__items {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
- list-style: none;
- margin-bottom: 40px;
- padding-left: 0;
-}
-@media print {
- .moj-task-list__items {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-task-list__items {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-task-list__items {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-task-list__items {
- margin-bottom: 60px;
- padding-left: 30px;
- }
-}
-.moj-task-list__item {
- border-bottom: 1px solid #b1b4b6;
- margin-bottom: 0 !important;
- padding-bottom: 10px;
- padding-top: 10px;
-}
-.moj-task-list__item:after {
- clear: both;
- content: "";
- display: block;
-}
-.moj-task-list__item:first-child {
- border-top: 1px solid #b1b4b6;
-}
-.moj-task-list__task-name {
- display: block;
-}
-@media (min-width: 28.125em) {
- .moj-task-list__task-name {
- float: left;
- width: 75%;
- }
-}
-.moj-task-list__task-completed {
- margin-bottom: 5px;
- margin-top: 10px;
-}
-@media (min-width: 28.125em) {
- .moj-task-list__task-completed {
- float: right;
- margin-bottom: 0;
- margin-top: 0;
- }
-}
-.moj-timeline {
- margin-bottom: 20px;
- overflow: hidden;
- position: relative;
-}
-.moj-timeline:before {
- background-color: #1d70b8;
- content: "";
- height: 100%;
- left: 0;
- position: absolute;
- top: 10px;
- width: 5px;
-}
-.moj-timeline--full {
- margin-bottom: 0;
-}
-.moj-timeline--full:before {
- height: calc(100% - 75px);
-}
-.moj-timeline__item {
- padding-bottom: 30px;
- padding-left: 20px;
- position: relative;
-}
-.moj-timeline__item:before {
- background-color: #1d70b8;
- content: "";
- height: 5px;
- left: 0;
- position: absolute;
- top: 10px;
- width: 15px;
-}
-.moj-timeline__title {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- display: inline;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 700;
- line-height: 1.25;
-}
-@media print {
- .moj-timeline__title {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-timeline__title {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-timeline__title {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-timeline__byline {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- color: #505a5f;
- display: inline;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
- margin: 0;
-}
-@media print {
- .moj-timeline__byline {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-timeline__byline {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-timeline__byline {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-timeline__date {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 14px;
- font-size: 0.875rem;
- font-weight: 400;
- line-height: 1.1428571429;
- margin-bottom: 0;
- margin-top: 5px;
-}
-@media print {
- .moj-timeline__date {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-timeline__date {
- font-size: 16px;
- font-size: 1rem;
- line-height: 1.25;
- }
-}
-@media print {
- .moj-timeline__date {
- font-size: 14pt;
- line-height: 1.2;
- }
-}
-.moj-timeline__description {
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- font-family: GDS Transport, arial, sans-serif;
- font-size: 16px;
- font-size: 1rem;
- font-weight: 400;
- line-height: 1.25;
- margin-top: 20px;
-}
-@media print {
- .moj-timeline__description {
- font-family: sans-serif;
- }
-}
-@media (min-width: 40.0625em) {
- .moj-timeline__description {
- font-size: 19px;
- font-size: 1.1875rem;
- line-height: 1.3157894737;
- }
-}
-@media print {
- .moj-timeline__description {
- font-size: 14pt;
- line-height: 1.15;
- }
-}
-.moj-timeline__documents {
- list-style: none;
- margin-bottom: 0;
- padding-left: 0;
-}
-.moj-timeline__document-item {
- margin-bottom: 5px;
-}
-.moj-timeline__document-item:last-child {
- margin-bottom: 0;
-}
-.moj-timeline__document-icon {
- fill: currentColor;
- float: left;
- margin-right: 4px;
- margin-top: 4px;
-}
-@media screen and (forced-colors: active) {
- .moj-timeline__document-icon {
- fill: linkText;
- }
-}
-.moj-timeline__document-link {
- background-image: url(/assets/images/icon-document.svg);
- background-position: 0 50%;
- background-repeat: no-repeat;
- background-size: 20px 16px;
- padding-left: 25px;
-}
-.moj-timeline__document-link:focus {
- color: #0b0c0c;
-}
-.moj-ticket-panel {
- display: block;
- flex-wrap: wrap;
- margin-right: 0;
-}
-@media (min-width: 48.0625em) {
- .moj-ticket-panel--inline {
- display: flex;
- flex-wrap: nowrap;
- }
- .moj-ticket-panel--inline > * + * {
- margin-left: 15px;
- }
-}
-.moj-ticket-panel__content :last-child {
- margin-bottom: 0;
-}
-.moj-ticket-panel__content {
- background-color: #f3f2f1;
- border-left: 4px solid transparent;
- display: block;
- flex-grow: 1;
- margin-bottom: 15px;
- padding: 20px;
- position: relative;
-}
-.moj-ticket-panel__content--grey {
- border-left-color: #b1b4b6;
-}
-.moj-ticket-panel__content--blue {
- border-left-color: #1d70b8;
-}
-.moj-ticket-panel__content--red {
- border-left-color: #d4351c;
-}
-.moj-ticket-panel__content--yellow {
- border-left-color: #fd0;
-}
-.moj-ticket-panel__content--green {
- border-left-color: #00703c;
-}
-.moj-ticket-panel__content--purple {
- border-left-color: #4c2c92;
-}
-.moj-ticket-panel__content--orange {
- border-left-color: #f47738;
-}
-.js-enabled .moj-js-hidden,
-.moj-hidden {
- display: none;
-}
-.moj-width-container {
- margin: 0 15px;
- max-width: 960px;
-}
-@media (min-width: 40.0625em) {
- .moj-width-container {
- margin: 0 30px;
- }
-}
-@media (min-width: 1020px) {
- .moj-width-container {
- margin: 0 auto;
- }
-}
diff --git a/app/viewmodels/verify/SubcontractorReverifyData.scala b/app/viewmodels/verify/SubcontractorReverifyData.scala
index 2582df3b..50c11417 100644
--- a/app/viewmodels/verify/SubcontractorReverifyData.scala
+++ b/app/viewmodels/verify/SubcontractorReverifyData.scala
@@ -226,294 +226,6 @@ object SubcontractorReverifyData {
"Standard rate",
"15 Jan 2026"
),
- SubcontractorReverifyRow(
- "pioneerLtd",
- "Pioneer Ltd",
- "1111111126",
- "Yes",
- "V0009000016",
- "Higher rate",
- "16 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "alphaBuild",
- "Alpha Build Ltd",
- "1111111111",
- "No",
- "V0009000001",
- "Standard rate",
- "01 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "betaConstruct",
- "Beta Construction",
- "1111111112",
- "Yes",
- "V0009000002",
- "Gross",
- "02 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "charlieWorks",
- "Charlie Works Ltd",
- "1111111113",
- "No",
- "V0009000003",
- "Higher rate",
- "03 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "deltaGroup",
- "Delta Group",
- "1111111114",
- "Yes",
- "V0009000004",
- "Standard rate",
- "04 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "echoServices",
- "Echo Services",
- "1111111115",
- "No",
- "V0009000005",
- "Gross",
- "05 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "foxtrotLtd",
- "Foxtrot Ltd",
- "1111111116",
- "Yes",
- "V0009000006",
- "Standard rate",
- "06 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "gammaBuilders",
- "Gamma Builders",
- "1111111117",
- "No",
- "V0009000007",
- "Higher rate",
- "07 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "harbourWorks",
- "Harbour Works",
- "1111111118",
- "Yes",
- "V0009000008",
- "Gross",
- "08 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "ivoryConstruction",
- "Ivory Construction",
- "1111111119",
- "No",
- "V0009000009",
- "Standard rate",
- "09 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "jupiterProjects",
- "Jupiter Projects",
- "1111111120",
- "Yes",
- "V0009000010",
- "Higher rate",
- "10 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "kingstonBuild",
- "Kingston Build",
- "1111111121",
- "No",
- "V0009000011",
- "Gross",
- "11 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "lunarDevelopments",
- "Lunar Developments",
- "1111111122",
- "Yes",
- "V0009000012",
- "Standard rate",
- "12 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "metroConstruct",
- "Metro Construct Ltd",
- "1111111123",
- "No",
- "V0009000013",
- "Higher rate",
- "13 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "novaBuilders",
- "Nova Builders",
- "1111111124",
- "Yes",
- "V0009000014",
- "Gross",
- "14 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "orbitWorks",
- "Orbit Works",
- "1111111125",
- "No",
- "V0009000015",
- "Standard rate",
- "15 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "pioneerLtd",
- "Pioneer Ltd",
- "1111111126",
- "Yes",
- "V0009000016",
- "Higher rate",
- "16 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "alphaBuild",
- "Alpha Build Ltd",
- "1111111111",
- "No",
- "V0009000001",
- "Standard rate",
- "01 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "betaConstruct",
- "Beta Construction",
- "1111111112",
- "Yes",
- "V0009000002",
- "Gross",
- "02 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "charlieWorks",
- "Charlie Works Ltd",
- "1111111113",
- "No",
- "V0009000003",
- "Higher rate",
- "03 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "deltaGroup",
- "Delta Group",
- "1111111114",
- "Yes",
- "V0009000004",
- "Standard rate",
- "04 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "echoServices",
- "Echo Services",
- "1111111115",
- "No",
- "V0009000005",
- "Gross",
- "05 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "foxtrotLtd",
- "Foxtrot Ltd",
- "1111111116",
- "Yes",
- "V0009000006",
- "Standard rate",
- "06 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "gammaBuilders",
- "Gamma Builders",
- "1111111117",
- "No",
- "V0009000007",
- "Higher rate",
- "07 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "harbourWorks",
- "Harbour Works",
- "1111111118",
- "Yes",
- "V0009000008",
- "Gross",
- "08 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "ivoryConstruction",
- "Ivory Construction",
- "1111111119",
- "No",
- "V0009000009",
- "Standard rate",
- "09 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "jupiterProjects",
- "Jupiter Projects",
- "1111111120",
- "Yes",
- "V0009000010",
- "Higher rate",
- "10 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "kingstonBuild",
- "Kingston Build",
- "1111111121",
- "No",
- "V0009000011",
- "Gross",
- "11 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "lunarDevelopments",
- "Lunar Developments",
- "1111111122",
- "Yes",
- "V0009000012",
- "Standard rate",
- "12 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "metroConstruct",
- "Metro Construct Ltd",
- "1111111123",
- "No",
- "V0009000013",
- "Higher rate",
- "13 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "novaBuilders",
- "Nova Builders",
- "1111111124",
- "Yes",
- "V0009000014",
- "Gross",
- "14 Jan 2026"
- ),
- SubcontractorReverifyRow(
- "orbitWorks",
- "Orbit Works",
- "1111111125",
- "No",
- "V0009000015",
- "Standard rate",
- "15 Jan 2026"
- ),
SubcontractorReverifyRow(
"pioneerLtd",
"Pioneer Ltd",
diff --git a/app/views/templates/Layout.scala.html b/app/views/templates/Layout.scala.html
index c1dbf3d4..225d054a 100644
--- a/app/views/templates/Layout.scala.html
+++ b/app/views/templates/Layout.scala.html
@@ -49,9 +49,6 @@
@head = {
-
-
@if(timeout) {
@hmrcTimeoutDialog(
TimeoutDialog(
diff --git a/app/views/verify/SelectSubcontractorsToReverifyView.scala.html b/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
index 97dcc820..5d4d685f 100644
--- a/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
+++ b/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
@@ -33,10 +33,6 @@
@(form: Form[Set[String]], mode: Mode, rows: Seq[SubcontractorReverifyRow], paginationViewModel: PaginationViewModel, page: Int, startIndex: Int, totalCount: Int)(implicit request: Request[_], messages: Messages)
-@css = {
-
-}
-
@layout(pageTitle = title(form, messages("verify.selectSubcontractorsToReverify.title"))) {
@formHelper(
@@ -135,9 +131,11 @@
@pageNavigator(paginationViewModel, page)
+
@govukButton(
ButtonViewModel(messages("site.continue"))
)
+
}
}
}
diff --git a/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala b/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala
index 3950eb9b..6e567336 100644
--- a/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala
+++ b/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala
@@ -22,18 +22,18 @@ import forms.verify.SelectSubcontractorsToReverifyFormProvider
import models.{NormalMode, UserAnswers}
import navigation.{FakeNavigator, Navigator}
import org.mockito.ArgumentMatchers.any
-import org.mockito.Mockito.when
-import org.mockito.Mockito.verify
import org.scalatestplus.mockito.MockitoSugar
import pages.verify.SelectSubcontractorsToReverifyPage
import play.api.inject.bind
import play.api.mvc.Call
import play.api.test.FakeRequest
-import play.api.test.Helpers._
+import play.api.test.Helpers.*
import repositories.SessionRepository
import org.jsoup.Jsoup
import services.PaginationToReverifyService
import models.verify.SelectedSubcontractors
+import models.Subcontractor
+import org.mockito.Mockito.{never, verify, when}
import viewmodels.verify.SubcontractorReverifyData
import pages.verify.UnverifiedSubcontractorsPage
import pages.verify.SelectedUnverifiedSubcontractorsPage
@@ -65,6 +65,22 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
.onPageLoad(NormalMode, page)
.url
+ def testSubcontractor(id: Long, name: String): Subcontractor =
+ Subcontractor(
+ subcontractorId = id,
+ firstName = Some(name),
+ secondName = None,
+ surname = None,
+ tradingName = None,
+ partnershipTradingName = None,
+ verified = None,
+ verificationNumber = None,
+ taxTreatment = None,
+ verificationDate = None,
+ lastMonthlyReturnDate = None,
+ createDate = None
+ )
+
"SubcontractorsToReverifyViewModel Controller" - {
"must return OK and the correct view for a GET page 1" in {
@@ -122,6 +138,44 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
}
}
+ "must return empty form when no previous answer exists (getOrElse path)" in {
+
+ val application = applicationBuilder(userAnswers = Some(emptyUserAnswers)).build()
+
+ running(application) {
+
+ val request = FakeRequest(GET, url(1))
+ val result = route(application, request).value
+
+ val view = application.injector.instanceOf[SelectSubcontractorsToReverifyView]
+
+ val baseUrl =
+ controllers.verify.routes.SelectSubcontractorsToReverifyController.onPageLoad(NormalMode).url
+
+ val paginated =
+ paginationService.paginate(
+ allItems = allRows,
+ currentPage = 1,
+ recordsPerPage = 6,
+ baseUrl = baseUrl
+ )
+
+ val expectedForm = formProvider(requireSelection = false)
+
+ status(result) mustEqual OK
+
+ contentAsString(result) mustEqual view(
+ expectedForm,
+ NormalMode,
+ paginated.items,
+ paginated.pagination,
+ 1,
+ paginated.startIndex,
+ paginated.totalCount
+ )(request, messages(application)).toString
+ }
+ }
+
"must populate the view correctly on a GET when the question has previously been answered" in {
val userAnswers =
@@ -220,7 +274,6 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
FakeRequest(POST, url(1))
.withFormUrlEncodedBody("value" -> "")
- // IMPORTANT: requireSelection MUST be TRUE
val boundForm = formProvider(requireSelection = true).bind(Map("value" -> ""))
val view = application.injector.instanceOf[SelectSubcontractorsToReverifyView]
@@ -342,6 +395,88 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
}
}
+ "must redirect to Journey Recovery for case None when hasUnverified && !hasSelectedUnverifiedEarlier && !hasAnyReverifySelection" in {
+
+ val mockSessionRepository = mock[SessionRepository]
+ when(mockSessionRepository.set(any())) thenReturn Future.successful(true)
+
+ val userAnswers =
+ emptyUserAnswers
+ .set(
+ UnverifiedSubcontractorsPage,
+ Seq(testSubcontractor(1L, "Test Subcontractor"))
+ )
+ .success
+ .value
+ .set(SelectedUnverifiedSubcontractorsPage, false)
+ .success
+ .value
+
+ val application =
+ applicationBuilder(userAnswers = Some(userAnswers))
+ .overrides(bind[SessionRepository].toInstance(mockSessionRepository))
+ .build()
+
+ running(application) {
+
+ val request =
+ FakeRequest(POST, url(1))
+ .withFormUrlEncodedBody("value" -> "")
+
+ val result = route(application, request).value
+
+ status(result) mustEqual SEE_OTHER
+ redirectLocation(result).value mustEqual controllers.routes.JourneyRecoveryController.onPageLoad().url
+
+ verify(mockSessionRepository, never()).set(any())
+ }
+ }
+
+ "must redirect using navigator when case None and hasUnverified && hasSelectedUnverifiedEarlier && no selections exist" in {
+
+ val mockSessionRepository = mock[SessionRepository]
+ when(mockSessionRepository.set(any())) thenReturn Future.successful(true)
+
+ val userAnswers =
+ emptyUserAnswers
+ .set(
+ UnverifiedSubcontractorsPage,
+ Seq(testSubcontractor(1L, "Test Subcontractor"))
+ )
+ .success
+ .value
+ .set(SelectedUnverifiedSubcontractorsPage, true)
+ .success
+ .value
+
+ val application =
+ applicationBuilder(userAnswers = Some(userAnswers))
+ .overrides(
+ bind[SessionRepository].toInstance(mockSessionRepository),
+ bind[Navigator].toInstance(new FakeNavigator(onwardRoute))
+ )
+ .build()
+
+ running(application) {
+
+ val request =
+ FakeRequest(POST, url(1))
+ .withFormUrlEncodedBody("value" -> "")
+
+ val result = route(application, request).value
+
+ status(result) mustEqual SEE_OTHER
+ redirectLocation(result).value mustEqual onwardRoute.url
+
+ val captor = org.mockito.ArgumentCaptor.forClass(classOf[UserAnswers])
+ verify(mockSessionRepository).set(captor.capture())
+
+ captor.getValue
+ .get(SelectSubcontractorsToReverifyPage)
+ .value mustBe empty
+ }
+ }
+
"must merge previous selections with current page selections" in {
val mockSessionRepository = mock[SessionRepository]
diff --git a/test/forms/verify/SelectSubcontractorsToReverifyFormProviderSpec.scala b/test/forms/verify/SelectSubcontractorsToReverifyFormProviderSpec.scala
index c2504cc3..89740398 100644
--- a/test/forms/verify/SelectSubcontractorsToReverifyFormProviderSpec.scala
+++ b/test/forms/verify/SelectSubcontractorsToReverifyFormProviderSpec.scala
@@ -22,7 +22,6 @@ import play.api.data.FormError
class SelectSubcontractorsToReverifyFormProviderSpec extends CheckboxFieldBehaviours {
private val requiredKey = "verify.selectSubcontractorsToReverify.error.required"
- private val fieldName = "value"
"when selection IS required" - {
From 0a20eec1d85c8c441c13ffbdfde04c1346d07e13 Mon Sep 17 00:00:00 2001
From: Juely Kaikade <254691220+Juely-Kaikade-HMRC@users.noreply.github.com>
Date: Tue, 5 May 2026 12:23:08 +0100
Subject: [PATCH 23/48] DTR-4484 - Css is updated
---
app/assets/stylesheets/application.scss | 34 +++++++++++++++++
...ctSubcontractorsToReverifyController.scala | 4 +-
...SelectedUnverifiedSubcontractorsPage.scala | 29 ---------------
...ectSubcontractorsToReverifyView.scala.html | 4 +-
...bcontractorsToReverifyControllerSpec.scala | 20 +++++++---
...ctedUnverifiedSubcontractorsPageSpec.scala | 37 -------------------
6 files changed, 53 insertions(+), 75 deletions(-)
delete mode 100644 app/pages/verify/SelectedUnverifiedSubcontractorsPage.scala
delete mode 100644 test/pages/verify/SelectedUnverifiedSubcontractorsPageSpec.scala
diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss
index ff04de6f..c58edd7a 100644
--- a/app/assets/stylesheets/application.scss
+++ b/app/assets/stylesheets/application.scss
@@ -5,6 +5,40 @@
@use "autocomplete";
+@media (max-width: 768px) {
+
+ .govuk-table__container {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ margin-bottom: 20px;
+ }
+
+ #subcontractor-table {
+ min-width: 900px;
+ }
+}
+
+@media (min-width: 769px) {
+
+ .govuk-table__container {
+ overflow-x: visible;
+ }
+
+ #subcontractor-table {
+ min-width: auto;
+ }
+}
+
+@media (max-width: 1024px) {
+
+ #subcontractor-table th {
+ white-space: normal !important;
+ word-break: break-word;
+ overflow-wrap: break-word;
+ line-height: 1.2;
+ }
+}
+
.govuk-pagination__link--button {
background: none;
border: 0;
diff --git a/app/controllers/verify/SelectSubcontractorsToReverifyController.scala b/app/controllers/verify/SelectSubcontractorsToReverifyController.scala
index e408fd40..7fb97062 100644
--- a/app/controllers/verify/SelectSubcontractorsToReverifyController.scala
+++ b/app/controllers/verify/SelectSubcontractorsToReverifyController.scala
@@ -29,7 +29,7 @@ import views.html.verify.SelectSubcontractorsToReverifyView
import viewmodels.verify.SubcontractorReverifyData
import models.verify.SelectedSubcontractors
import pages.verify.UnverifiedSubcontractorsPage
-import pages.verify.SelectedUnverifiedSubcontractorsPage
+import pages.verify.SelectSubcontractorPage
import services.PaginationToReverifyService
import javax.inject.Inject
@@ -97,7 +97,7 @@ class SelectSubcontractorsToReverifyController @Inject() (
request.userAnswers.get(UnverifiedSubcontractorsPage).exists(_.nonEmpty)
val hasSelectedUnverifiedEarlier: Boolean =
- request.userAnswers.get(SelectedUnverifiedSubcontractorsPage).contains(true)
+ request.userAnswers.get(SelectSubcontractorPage).exists(_.nonEmpty)
val requireSelection: Boolean =
!hasUnverified && !hasSelectedUnverifiedEarlier
diff --git a/app/pages/verify/SelectedUnverifiedSubcontractorsPage.scala b/app/pages/verify/SelectedUnverifiedSubcontractorsPage.scala
deleted file mode 100644
index 35862167..00000000
--- a/app/pages/verify/SelectedUnverifiedSubcontractorsPage.scala
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2026 HM Revenue & Customs
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package pages.verify
-
-import pages.QuestionPage
-import play.api.libs.json.JsPath
-
-case object SelectedUnverifiedSubcontractorsPage extends QuestionPage[Boolean] {
-
- override def path: JsPath =
- JsPath \ toString
-
- override def toString: String =
- "selectedUnverifiedSubcontractors"
-}
diff --git a/app/views/verify/SelectSubcontractorsToReverifyView.scala.html b/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
index 5d4d685f..316b7526 100644
--- a/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
+++ b/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
@@ -46,7 +46,7 @@
)
}
-
+
@@ -54,7 +54,7 @@
-
+
@messages("verify.selectSubcontractorsToReverify.hint")
diff --git a/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala b/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala
index 6e567336..68c1f6b6 100644
--- a/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala
+++ b/test/controllers/verify/SelectSubcontractorsToReverifyControllerSpec.scala
@@ -33,10 +33,11 @@ import org.jsoup.Jsoup
import services.PaginationToReverifyService
import models.verify.SelectedSubcontractors
import models.Subcontractor
+import pages.verify.SelectSubcontractorPage
import org.mockito.Mockito.{never, verify, when}
+import models.SubcontractorViewModel
import viewmodels.verify.SubcontractorReverifyData
import pages.verify.UnverifiedSubcontractorsPage
-import pages.verify.SelectedUnverifiedSubcontractorsPage
import views.html.verify.SelectSubcontractorsToReverifyView
import scala.concurrent.Future
@@ -78,7 +79,13 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
taxTreatment = None,
verificationDate = None,
lastMonthlyReturnDate = None,
- createDate = None
+ createDate = None,
+ subcontractorType = None,
+ subbieResourceRef = None,
+ utr = None,
+ partnerUtr = None,
+ crn = None,
+ nino = None
)
"SubcontractorsToReverifyViewModel Controller" - {
@@ -258,7 +265,7 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
val userAnswers =
emptyUserAnswers
- .set(SelectedUnverifiedSubcontractorsPage, false)
+ .set(SelectSubcontractorPage, Set.empty)
.success
.value
.set(UnverifiedSubcontractorsPage, List.empty)
@@ -408,7 +415,7 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
)
.success
.value
- .set(SelectedUnverifiedSubcontractorsPage, false)
+ .set(SelectSubcontractorPage, Set.empty)
.success
.value
@@ -445,7 +452,10 @@ class SelectSubcontractorsToReverifyControllerSpec extends SpecBase with Mockito
)
.success
.value
- .set(SelectedUnverifiedSubcontractorsPage, true)
+ .set(
+ SelectSubcontractorPage,
+ Set(SubcontractorViewModel(firstRow.id, firstRow.name))
+ )
.success
.value
diff --git a/test/pages/verify/SelectedUnverifiedSubcontractorsPageSpec.scala b/test/pages/verify/SelectedUnverifiedSubcontractorsPageSpec.scala
deleted file mode 100644
index 9dcc68d2..00000000
--- a/test/pages/verify/SelectedUnverifiedSubcontractorsPageSpec.scala
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2026 HM Revenue & Customs
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package pages.verify
-
-import pages.behaviours.PageBehaviours
-
-class SelectedUnverifiedSubcontractorsPageSpec extends PageBehaviours {
-
- "SelectedUnverifiedSubcontractorsPage" - {
-
- beRetrievable[Boolean](
- SelectedUnverifiedSubcontractorsPage
- )
-
- beSettable[Boolean](
- SelectedUnverifiedSubcontractorsPage
- )
-
- beRemovable[Boolean](
- SelectedUnverifiedSubcontractorsPage
- )
- }
-}
From 3338905763a60e89c36327da6c6f7a26e7d27109 Mon Sep 17 00:00:00 2001
From: Juely Kaikade <254691220+Juely-Kaikade-HMRC@users.noreply.github.com>
Date: Tue, 5 May 2026 14:02:31 +0100
Subject: [PATCH 24/48] DTR-4484 - view file is updated
---
...ectSubcontractorsToReverifyView.scala.html | 144 +++++++++---------
1 file changed, 72 insertions(+), 72 deletions(-)
diff --git a/app/views/verify/SelectSubcontractorsToReverifyView.scala.html b/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
index 316b7526..c57232e9 100644
--- a/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
+++ b/app/views/verify/SelectSubcontractorsToReverifyView.scala.html
@@ -58,86 +58,86 @@
@messages("verify.selectSubcontractorsToReverify.hint")
- @if(paginationViewModel.items.nonEmpty) {
-
- @messages("verify.selectSubcontractorsToReverify.showingResults", startIndex, startIndex + rows.size - 1, totalCount)
-
- }
-
- @defining(
- form.value.getOrElse(Set.empty[String])
- ) { selected =>
-
-
- @govukTable(
- Table(
- caption = None,
-
- head = Some(Seq(
- HeadCell(Text(messages("verify.selectSubcontractorsToReverify.include"))),
- HeadCell(Text(messages("verify.selectSubcontractorsToReverify.name"))),
- HeadCell(Text(messages("verify.selectSubcontractorsToReverify.utr"))),
- HeadCell(Text(messages("verify.selectSubcontractorsToReverify.verified"))),
- HeadCell(Text(messages("verify.selectSubcontractorsToReverify.verificationNumber"))),
- HeadCell(Text(messages("verify.selectSubcontractorsToReverify.taxTreatment"))),
- HeadCell(Text(messages("verify.selectSubcontractorsToReverify.dateAdded")))
- )),
-
- rows = rows.zipWithIndex.map { case (row, idx) =>
- val checkboxId = s"value-$idx"
- val value = row.id
- val isChecked = selected.contains(row.id)
-
- Seq(
-
- TableRow(
- content = HtmlContent(
- s"""
-
-
-
-
-
- Select ${row.name}
-
-
-
-
- """
+ @if(paginationViewModel.items.nonEmpty) {
+
+ @messages("verify.selectSubcontractorsToReverify.showingResults", startIndex, startIndex + rows.size - 1, totalCount)
+
+ }
+
+ @defining(
+ form.value.getOrElse(Set.empty[String])
+ ) { selected =>
+
+
+ @govukTable(
+ Table(
+ caption = None,
+
+ head = Some(Seq(
+ HeadCell(Text(messages("verify.selectSubcontractorsToReverify.include"))),
+ HeadCell(Text(messages("verify.selectSubcontractorsToReverify.name"))),
+ HeadCell(Text(messages("verify.selectSubcontractorsToReverify.utr"))),
+ HeadCell(Text(messages("verify.selectSubcontractorsToReverify.verified"))),
+ HeadCell(Text(messages("verify.selectSubcontractorsToReverify.verificationNumber"))),
+ HeadCell(Text(messages("verify.selectSubcontractorsToReverify.taxTreatment"))),
+ HeadCell(Text(messages("verify.selectSubcontractorsToReverify.dateAdded")))
+ )),
+
+ rows = rows.zipWithIndex.map { case (row, idx) =>
+ val checkboxId = s"value-$idx"
+ val value = row.id
+ val isChecked = selected.contains(row.id)
+
+ Seq(
+
+ TableRow(
+ content = HtmlContent(
+ s"""
+
+
+
+
+
+ Select ${row.name}
+
+
+
+
+ """
+ )
+ ),
+
+ TableRow(Text(row.name)),
+ TableRow(Text(row.utr)),
+ TableRow(Text(row.verified)),
+ TableRow(Text(row.verificationNumber)),
+ TableRow(Text(row.taxTreatment)),
+ TableRow(Text(row.dateAdded))
)
- ),
-
- TableRow(Text(row.name)),
- TableRow(Text(row.utr)),
- TableRow(Text(row.verified)),
- TableRow(Text(row.verificationNumber)),
- TableRow(Text(row.taxTreatment)),
- TableRow(Text(row.dateAdded))
- )
- },
+ },
- attributes = Map(
- "id" -> "subcontractor-table",
- "class" -> "govuk-table govuk-table--small-text-until-tablet"
+ attributes = Map(
+ "id" -> "subcontractor-table",
+ "class" -> "govuk-table govuk-table--small-text-until-tablet"
+ )
+ )
)
- )
- )
+
+
@pageNavigator(paginationViewModel, page)
-
@govukButton(
ButtonViewModel(messages("site.continue"))
)
-
- }
+ }
+
}
}
-
-
+
From ca08bb248e2b2b39a63dfb3e525005cf2689e4ec Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Mon, 27 Apr 2026 16:45:54 +0100
Subject: [PATCH 25/48] DTR-4472 Feat: Screen VH-02a/b/c Verification request
submitted
---
.../VerificationSubmittedViewModel.scala | 30 +++++
conf/app.routes | 2 -
conf/messages.en | 23 ++++
.../VerificationSubmittedViewModelSpec.scala | 115 ++++++++++++++++++
4 files changed, 168 insertions(+), 2 deletions(-)
create mode 100644 app/viewmodels/checkAnswers/verify/VerificationSubmittedViewModel.scala
create mode 100644 test/viewmodels/checkAnswers/verify/VerificationSubmittedViewModelSpec.scala
diff --git a/app/viewmodels/checkAnswers/verify/VerificationSubmittedViewModel.scala b/app/viewmodels/checkAnswers/verify/VerificationSubmittedViewModel.scala
new file mode 100644
index 00000000..e5d6a0d1
--- /dev/null
+++ b/app/viewmodels/checkAnswers/verify/VerificationSubmittedViewModel.scala
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2026 HM Revenue & Customs
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package viewmodels.checkAnswers.verify
+import java.time.LocalDateTime
+
+case class VerificationSubmittedViewModel(
+ referenceNumber: String,
+ submittedAt: LocalDateTime,
+ subcontractorsToVerify: Seq[String],
+ subcontractorsToReverify: Seq[String] = Seq.empty,
+ confirmationEmail: Option[String] = None
+) {
+ def showEmail: Boolean = confirmationEmail.isDefined
+ def showVerify: Boolean = subcontractorsToVerify.nonEmpty
+ def showReverify: Boolean = subcontractorsToReverify.nonEmpty
+}
diff --git a/conf/app.routes b/conf/app.routes
index 522587ba..5f33e034 100644
--- a/conf/app.routes
+++ b/conf/app.routes
@@ -364,8 +364,6 @@ GET /verify/no-subcontractors-added controllers.verify.NoSubc
GET /verify/newest controllers.verify.NewestVerificationBatchController.onPageLoad()
-GET /verify/current controllers.verify.CurrentVerificationBatchController.onPageLoad()
-
GET /verify/verification-request-in-progress controllers.verify.VerificationRequestInProgressController.onPageLoad()
GET /verify/confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = NormalMode)
diff --git a/conf/messages.en b/conf/messages.en
index 60732117..d7aa879a 100644
--- a/conf/messages.en
+++ b/conf/messages.en
@@ -884,6 +884,29 @@ verify.reverifyExistingSubcontractorsYesNo.error.required = Selec
verify.reverifyExistingSubcontractorsYesNo.checkYourAnswersLabel = Do you want to add other subcontractors to this verification request?
verify.reverifyExistingSubcontractorsYesNo.change.hidden = do you want to add other subcontractors to this verification request?
+verify.verificationRequestSubmitted.title = Verification request submitted
+verify.verificationRequestSubmitted.heading = Verification request submitted
+verify.verificationRequestSubmitted.reference = Your verification reference number
+verify.verificationRequestSubmitted.submittedAt = Submitted at {0}
+verify.verificationRequestSubmitted.details.subHeading = Verification request details
+verify.verificationRequestSubmitted.subcontractorsToVerify.label = Subcontractors to verify
+verify.verificationRequestSubmitted.subcontractorsToReverify.label = Subcontractors to reverify
+verify.verificationRequestSubmitted.email.confirmation = Confirmation of submission has been sent to {0}
+verify.verificationRequestSubmitted.email.verification = You can access this request in read-only format from your
+verify.verificationRequestSubmitted.email.verification.link = verification history.
+verify.verificationRequestSubmitted.print.text = You can also save this page or print a copy for your records.
+verify.verificationRequestSubmitted.print.link = Print this page
+verify.verificationRequestSubmitted.needHelp.subHeading = Need help?
+verify.verificationRequestSubmitted.needHelp.contactHMRC.link = contact HMRC.
+verify.verificationRequestSubmitted.needHelp.p1 = For any questions about your verification request,
+verify.verificationRequestSubmitted.needHelp.p2 = You will need the reference number of this verification request.
+verify.verificationRequestSubmitted.needHelp.p3 = Back to
+verify.verificationRequestSubmitted.needHelp.manageSubcontractors.link = Manage your subcontractors.
+verify.verificationRequestSubmitted.feedback.subHeading = Before you go
+verify.verificationRequestSubmitted.feedback.p1 = Your feedback helps us make our service better.
+verify.verificationRequestSubmitted.feedback.p2 = to share your feedback on this service.
+verify.verificationRequestSubmitted.feedback.survey.link = Take a short survey
+
verify.verifyDepartmentalError.title = There was a problem with your verification request
verify.verifyDepartmentalError.heading = There was a problem with your verification request
verify.verifyDepartmentalError.p1 = The subcontractors that you selected have not been verified and your request has not been saved.
diff --git a/test/viewmodels/checkAnswers/verify/VerificationSubmittedViewModelSpec.scala b/test/viewmodels/checkAnswers/verify/VerificationSubmittedViewModelSpec.scala
new file mode 100644
index 00000000..ce5d8eaa
--- /dev/null
+++ b/test/viewmodels/checkAnswers/verify/VerificationSubmittedViewModelSpec.scala
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2026 HM Revenue & Customs
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package viewmodels.checkAnswers.verify
+
+import org.scalatest.freespec.AnyFreeSpec
+import org.scalatest.matchers.should.Matchers
+
+import java.time.LocalDateTime
+
+class VerificationSubmittedViewModelSpec extends AnyFreeSpec with Matchers {
+
+ private val now = LocalDateTime.of(2026, 4, 27, 10, 30)
+
+ "VerificationSubmittedViewModel" - {
+
+ "showEmail" - {
+
+ "must return true when confirmationEmail is defined" in {
+
+ val vm =
+ VerificationSubmittedViewModel(
+ referenceNumber = "REF123",
+ submittedAt = now,
+ subcontractorsToVerify = Seq("Sub A"),
+ confirmationEmail = Some("test@test.com")
+ )
+
+ vm.showEmail shouldBe true
+ }
+
+ "must return false when confirmationEmail is not defined" in {
+
+ val vm =
+ VerificationSubmittedViewModel(
+ referenceNumber = "REF123",
+ submittedAt = now,
+ subcontractorsToVerify = Seq("Sub A"),
+ confirmationEmail = None
+ )
+
+ vm.showEmail shouldBe false
+ }
+ }
+
+ "showVerify" - {
+
+ "must return true when subcontractorsToVerify is non-empty" in {
+
+ val vm =
+ VerificationSubmittedViewModel(
+ referenceNumber = "REF123",
+ submittedAt = now,
+ subcontractorsToVerify = Seq("Sub A")
+ )
+
+ vm.showVerify shouldBe true
+ }
+
+ "must return false when subcontractorsToVerify is empty" in {
+
+ val vm =
+ VerificationSubmittedViewModel(
+ referenceNumber = "REF123",
+ submittedAt = now,
+ subcontractorsToVerify = Seq.empty
+ )
+
+ vm.showVerify shouldBe false
+ }
+ }
+
+ "showReverify" - {
+
+ "must return true when subcontractorsToReverify is non-empty" in {
+
+ val vm =
+ VerificationSubmittedViewModel(
+ referenceNumber = "REF123",
+ submittedAt = now,
+ subcontractorsToVerify = Seq("Sub A"),
+ subcontractorsToReverify = Seq("Sub B")
+ )
+
+ vm.showReverify shouldBe true
+ }
+
+ "must return false when subcontractorsToReverify is empty" in {
+
+ val vm =
+ VerificationSubmittedViewModel(
+ referenceNumber = "REF123",
+ submittedAt = now,
+ subcontractorsToVerify = Seq("Sub A"),
+ subcontractorsToReverify = Seq.empty
+ )
+
+ vm.showReverify shouldBe false
+ }
+ }
+ }
+}
From ccaf7b69c57b599c7d1bd9b6c95bf9ae9580e2ff Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Wed, 29 Apr 2026 11:06:55 +0100
Subject: [PATCH 26/48] DTR-4472 Fix: resolve merge issues
---
conf/app.routes | 7 +++++++
conf/messages.en | 16 ++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/conf/app.routes b/conf/app.routes
index 5f33e034..3a154ec7 100644
--- a/conf/app.routes
+++ b/conf/app.routes
@@ -364,6 +364,8 @@ GET /verify/no-subcontractors-added controllers.verify.NoSubc
GET /verify/newest controllers.verify.NewestVerificationBatchController.onPageLoad()
+GET /verify/current controllers.verify.CurrentVerificationBatchController.onPageLoad()
+
GET /verify/verification-request-in-progress controllers.verify.VerificationRequestInProgressController.onPageLoad()
GET /verify/confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = NormalMode)
@@ -371,6 +373,11 @@ POST /verify/confirmation-email-stored controllers.verify.Contra
GET /verify/change-confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = CheckMode)
POST /verify/change-confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onSubmit(mode: Mode = CheckMode)
+GET /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
+POST /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
+GET /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
+POST /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
+
GET /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onPageLoad
POST /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onSubmit
diff --git a/conf/messages.en b/conf/messages.en
index d7aa879a..1fd27a9b 100644
--- a/conf/messages.en
+++ b/conf/messages.en
@@ -833,6 +833,22 @@ verify.verificationRequestInProgress.p3 = if yo
verify.verificationRequestInProgress.p4 = Back to
verify.verificationRequestInProgress.p4.link = Manage your subcontractors
+verify.selectSubcontractor.title = Which subcontractors do you want to verify?
+verify.selectSubcontractor.heading = Which subcontractors do you want to verify?
+verify.selectSubcontractor.hint = Select the unverified subcontractors you want to add to this verification request
+verify.selectSubcontractor.checkYourAnswersLabel = Subcontractors to verify
+verify.selectSubcontractor.showingResults = Showing {0} to {1} of {2} results
+verify.selectSubcontractor.error.required = Select at least one subcontractor to verify
+verify.selectSubcontractor.change.hidden = subcontractors to verify
+verify.verificationRequestInProgress.title = Verification request in progress
+verify.verificationRequestInProgress.heading = Verification request in progress
+verify.verificationRequestInProgress.p1 = HMRC has not responded to your previous verification request yet.
+verify.verificationRequestInProgress.p2 = You must wait for this response before you can verify any more subcontractors.
+verify.verificationRequestInProgress.p3.link = Contact HMRC
+verify.verificationRequestInProgress.p3 = if you have any questions about this verification request.
+verify.verificationRequestInProgress.p4 = Back to
+verify.verificationRequestInProgress.p4.link = Manage your subcontractors
+
verify.selectSubcontractorsToReverify.title = Which subcontractors do you want to reverify?
verify.selectSubcontractorsToReverify.heading = Which subcontractors do you want to reverify?
verify.selectSubcontractorsToReverify.hint = Select the existing subcontractors you want to include in this verification request
From c6d4bcfcf4fa6876544665d97468492ae56c3c23 Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Wed, 6 May 2026 13:02:22 +0100
Subject: [PATCH 27/48] Sync messages.en from main
---
conf/messages.en | 23 -----------------------
1 file changed, 23 deletions(-)
diff --git a/conf/messages.en b/conf/messages.en
index 1fd27a9b..ebaad30b 100644
--- a/conf/messages.en
+++ b/conf/messages.en
@@ -900,29 +900,6 @@ verify.reverifyExistingSubcontractorsYesNo.error.required = Selec
verify.reverifyExistingSubcontractorsYesNo.checkYourAnswersLabel = Do you want to add other subcontractors to this verification request?
verify.reverifyExistingSubcontractorsYesNo.change.hidden = do you want to add other subcontractors to this verification request?
-verify.verificationRequestSubmitted.title = Verification request submitted
-verify.verificationRequestSubmitted.heading = Verification request submitted
-verify.verificationRequestSubmitted.reference = Your verification reference number
-verify.verificationRequestSubmitted.submittedAt = Submitted at {0}
-verify.verificationRequestSubmitted.details.subHeading = Verification request details
-verify.verificationRequestSubmitted.subcontractorsToVerify.label = Subcontractors to verify
-verify.verificationRequestSubmitted.subcontractorsToReverify.label = Subcontractors to reverify
-verify.verificationRequestSubmitted.email.confirmation = Confirmation of submission has been sent to {0}
-verify.verificationRequestSubmitted.email.verification = You can access this request in read-only format from your
-verify.verificationRequestSubmitted.email.verification.link = verification history.
-verify.verificationRequestSubmitted.print.text = You can also save this page or print a copy for your records.
-verify.verificationRequestSubmitted.print.link = Print this page
-verify.verificationRequestSubmitted.needHelp.subHeading = Need help?
-verify.verificationRequestSubmitted.needHelp.contactHMRC.link = contact HMRC.
-verify.verificationRequestSubmitted.needHelp.p1 = For any questions about your verification request,
-verify.verificationRequestSubmitted.needHelp.p2 = You will need the reference number of this verification request.
-verify.verificationRequestSubmitted.needHelp.p3 = Back to
-verify.verificationRequestSubmitted.needHelp.manageSubcontractors.link = Manage your subcontractors.
-verify.verificationRequestSubmitted.feedback.subHeading = Before you go
-verify.verificationRequestSubmitted.feedback.p1 = Your feedback helps us make our service better.
-verify.verificationRequestSubmitted.feedback.p2 = to share your feedback on this service.
-verify.verificationRequestSubmitted.feedback.survey.link = Take a short survey
-
verify.verifyDepartmentalError.title = There was a problem with your verification request
verify.verifyDepartmentalError.heading = There was a problem with your verification request
verify.verifyDepartmentalError.p1 = The subcontractors that you selected have not been verified and your request has not been saved.
From 4aa7f409d833e52d0d8e6409621c3cf4067c74c4 Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Wed, 6 May 2026 13:07:45 +0100
Subject: [PATCH 28/48] DTR-4472 Fix: merge issues resolved in messages file
---
conf/messages.en | 177 ++++++++++++++++++-----------------------------
1 file changed, 69 insertions(+), 108 deletions(-)
diff --git a/conf/messages.en b/conf/messages.en
index ebaad30b..a06ce4cc 100644
--- a/conf/messages.en
+++ b/conf/messages.en
@@ -775,71 +775,55 @@ trustCheckYourAnswers.trailText = By adding this
trustCheckYourAnswers.continue = Accept and submit
# Verify
-verify.submissionSending.title = Submitting your verification request
-verify.submissionSending.heading = Your verification request is being sent to HMRC
-verify.submissionSending.paragraph = Do not refresh this page or press the back button while your submission is being processed.
-
-verify.contractorEmailConfirmationNotStored.title = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationNotStored.heading = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationNotStored.checkYourAnswersLabel = Do you want confirmation by email?
-verify.contractorEmailConfirmationNotStored.error.required = Select yes if you want an email confirmation of this verification request
-verify.contractorEmailConfirmationNotStored.change.hidden = do you want confirmation by email?
-
-verify.verificationDeclaration.title = Verification declaration
-verify.verificationDeclaration.heading = Declaration
-verify.verificationDeclaration.p1 = By submitting this verification request, you confirm that:
-verify.verificationDeclaration.list.l1 = a formal arrangement is in place (for example, tender accepted, contract agreed, order placed) for all of the subcontractors to be verified in this request.
-verify.verificationDeclaration.list.l2 = the information given in this verification request is correct and complete to the best of your knowledge and belief.
-verify.verificationDeclaration.warningText = If you give any false information you may face financial penalties and prosecution.
-verify.verificationDeclaration.confirm = Confirm
-
-verify.noSubcontractorsAdded.title = No subcontractors added
-verify.noSubcontractorsAdded.heading = Verify your subcontractors
-verify.noSubcontractorsAdded.p1 = You do not have any subcontractors at the moment.
-verify.noSubcontractorsAdded.p2 = You will need to
-verify.noSubcontractorsAdded.p2.link = add some subcontractors first
-verify.noSubcontractorsAdded.p2.end = before you can create a verification request or monthly return.
-verify.noSubcontractorsAdded.p3 = Back to
-verify.noSubcontractorsAdded.p3.link = Manage your subcontractors
-
-verify.contractorEmailConfirmationStored.title = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationStored.heading = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationStored.paragraph = Your email address is currently {0}. You can get a confirmation sent to this address or use a different one.
-verify.contractorEmailConfirmationStored.currentEmail = Send confirmation to current email address
-verify.contractorEmailConfirmationStored.differentEmail = Use a different email address
-verify.contractorEmailConfirmationStored.or = or
-verify.contractorEmailConfirmationStored.doNotSend = Do not send an email confirmation
-verify.contractorEmailConfirmationStored.checkYourAnswersLabel = Do you want confirmation by email?
-verify.contractorEmailConfirmationStored.error.required = Select whether you want an email confirmation of this verification request
-verify.contractorEmailConfirmationStored.change.hidden = do you want confirmation by email?
-
-verify.verifyYourSubcontractorsYesNo.title = No new subcontractors to verify
-verify.verifyYourSubcontractorsYesNo.heading = Verify your subcontractors
-verify.verifyYourSubcontractorsYesNo.p1 = There are no unverified subcontractors that you need to verify at the moment.
-verify.verifyYourSubcontractorsYesNo.p2 = However, you can reverify any of your existing subcontractors to make sure that their tax treatment is correct and up to date.
-verify.verifyYourSubcontractorsYesNo.p3 = You may want to reverify subcontractors if they:
-verify.verifyYourSubcontractorsYesNo.list.l1 = have recently changed any of their information
-verify.verifyYourSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
-verify.verifyYourSubcontractorsYesNo.list.l3 = are about to lose their verified status
-verify.verifyYourSubcontractorsYesNo.heading2 = Do you want to add existing subcontractors to this verification request?
-verify.verifyYourSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
-
-verify.verificationRequestInProgress.title = Verification request in progress
-verify.verificationRequestInProgress.heading = Verification request in progress
-verify.verificationRequestInProgress.p1 = HMRC has not responded to your previous verification request yet.
-verify.verificationRequestInProgress.p2 = You must wait for this response before you can verify any more subcontractors.
-verify.verificationRequestInProgress.p3.link = Contact HMRC
-verify.verificationRequestInProgress.p3 = if you have any questions about this verification request.
-verify.verificationRequestInProgress.p4 = Back to
-verify.verificationRequestInProgress.p4.link = Manage your subcontractors
+verify.submissionSending.title = Submitting your verification request
+verify.submissionSending.heading = Your verification request is being sent to HMRC
+verify.submissionSending.paragraph = Do not refresh this page or press the back button while your submission is being processed.
+
+verify.contractorEmailConfirmationNotStored.title = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationNotStored.heading = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationNotStored.checkYourAnswersLabel = Do you want confirmation by email?
+verify.contractorEmailConfirmationNotStored.error.required = Select yes if you want an email confirmation of this verification request
+verify.contractorEmailConfirmationNotStored.change.hidden = do you want confirmation by email?
+
+verify.verificationDeclaration.title = Verification declaration
+verify.verificationDeclaration.heading = Declaration
+verify.verificationDeclaration.p1 = By submitting this verification request, you confirm that:
+verify.verificationDeclaration.list.l1 = a formal arrangement is in place (for example, tender accepted, contract agreed, order placed) for all of the subcontractors to be verified in this request.
+verify.verificationDeclaration.list.l2 = the information given in this verification request is correct and complete to the best of your knowledge and belief.
+verify.verificationDeclaration.warningText = If you give any false information you may face financial penalties and prosecution.
+verify.verificationDeclaration.confirm = Confirm
+
+verify.noSubcontractorsAdded.title = No subcontractors added
+verify.noSubcontractorsAdded.heading = Verify your subcontractors
+verify.noSubcontractorsAdded.p1 = You do not have any subcontractors at the moment.
+verify.noSubcontractorsAdded.p2 = You will need to
+verify.noSubcontractorsAdded.p2.link = add some subcontractors first
+verify.noSubcontractorsAdded.p2.end = before you can create a verification request or monthly return.
+verify.noSubcontractorsAdded.p3 = Back to
+verify.noSubcontractorsAdded.p3.link = Manage your subcontractors
+
+verify.contractorEmailConfirmationStored.title = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationStored.heading = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationStored.paragraph = Your email address is currently {0}. You can get a confirmation sent to this address or use a different one.
+verify.contractorEmailConfirmationStored.currentEmail = Send confirmation to current email address
+verify.contractorEmailConfirmationStored.differentEmail = Use a different email address
+verify.contractorEmailConfirmationStored.or = or
+verify.contractorEmailConfirmationStored.doNotSend = Do not send an email confirmation
+verify.contractorEmailConfirmationStored.checkYourAnswersLabel = Do you want confirmation by email?
+verify.contractorEmailConfirmationStored.error.required = Select whether you want an email confirmation of this verification request
+verify.contractorEmailConfirmationStored.change.hidden = do you want confirmation by email?
+
+verify.verifyYourSubcontractorsYesNo.title = No new subcontractors to verify
+verify.verifyYourSubcontractorsYesNo.heading = Verify your subcontractors
+verify.verifyYourSubcontractorsYesNo.p1 = There are no unverified subcontractors that you need to verify at the moment.
+verify.verifyYourSubcontractorsYesNo.p2 = However, you can reverify any of your existing subcontractors to make sure that their tax treatment is correct and up to date.
+verify.verifyYourSubcontractorsYesNo.p3 = You may want to reverify subcontractors if they:
+verify.verifyYourSubcontractorsYesNo.list.l1 = have recently changed any of their information
+verify.verifyYourSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
+verify.verifyYourSubcontractorsYesNo.list.l3 = are about to lose their verified status
+verify.verifyYourSubcontractorsYesNo.heading2 = Do you want to add existing subcontractors to this verification request?
+verify.verifyYourSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
-verify.selectSubcontractor.title = Which subcontractors do you want to verify?
-verify.selectSubcontractor.heading = Which subcontractors do you want to verify?
-verify.selectSubcontractor.hint = Select the unverified subcontractors you want to add to this verification request
-verify.selectSubcontractor.checkYourAnswersLabel = Subcontractors to verify
-verify.selectSubcontractor.showingResults = Showing {0} to {1} of {2} results
-verify.selectSubcontractor.error.required = Select at least one subcontractor to verify
-verify.selectSubcontractor.change.hidden = subcontractors to verify
verify.verificationRequestInProgress.title = Verification request in progress
verify.verificationRequestInProgress.heading = Verification request in progress
verify.verificationRequestInProgress.p1 = HMRC has not responded to your previous verification request yet.
@@ -878,27 +862,27 @@ verify.selectSubcontractor.showingResults = Showing {0
verify.selectSubcontractor.error.required = Select at least one subcontractor to verify
verify.selectSubcontractor.change.hidden = subcontractors to verify
-verify.emailAddress.title = What email address should HMRC send this confirmation to?
-verify.emailAddress.heading = What email address should HMRC send this confirmation to?
-verify.emailAddress.hint = HMRC will only use this email address to confirm this verification request. Your saved email address will not be changed.
-verify.emailAddress.hint.notStored = HMRC will only use this email address to confirm this verification request
-verify.emailAddress.checkYourAnswersLabel = Email Address
-verify.emailAddress.error.required = Enter an email address in the correct format, like name@example.com
-verify.emailAddress.error.length = Enter a valid email address in the correct format, like name@example.com, up to 254 characters
-verify.emailAddress.error.invalid = Enter a valid email address in the correct format, like name@example.com
-verify.emailAddress.change.hidden = email address
-
-verify.reverifyExistingSubcontractorsYesNo.title = Reverify existing subcontractors
-verify.reverifyExistingSubcontractorsYesNo.heading = Reverify existing subcontractors
-verify.reverifyExistingSubcontractorsYesNo.p1 = To make sure that their tax treatment is correct and up to date, you can reverify any of your existing subcontractors.
-verify.reverifyExistingSubcontractorsYesNo.p2 = You may want to reverify subcontractors if they:
-verify.reverifyExistingSubcontractorsYesNo.list.l1 = have recently changed any of their information
-verify.reverifyExistingSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
-verify.reverifyExistingSubcontractorsYesNo.list.l3 = are about to lose their verified status
-verify.reverifyExistingSubcontractorsYesNo.subHeading = Do you want to add other subcontractors to this verification request?
-verify.reverifyExistingSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
-verify.reverifyExistingSubcontractorsYesNo.checkYourAnswersLabel = Do you want to add other subcontractors to this verification request?
-verify.reverifyExistingSubcontractorsYesNo.change.hidden = do you want to add other subcontractors to this verification request?
+verify.emailAddress.title = What email address should HMRC send this confirmation to?
+verify.emailAddress.heading = What email address should HMRC send this confirmation to?
+verify.emailAddress.hint = HMRC will only use this email address to confirm this verification request. Your saved email address will not be changed.
+verify.emailAddress.hint.notStored = HMRC will only use this email address to confirm this verification request
+verify.emailAddress.checkYourAnswersLabel = Email Address
+verify.emailAddress.error.required = Enter an email address in the correct format, like name@example.com
+verify.emailAddress.error.length = Enter a valid email address in the correct format, like name@example.com, up to 254 characters
+verify.emailAddress.error.invalid = Enter a valid email address in the correct format, like name@example.com
+verify.emailAddress.change.hidden = email address
+
+verify.reverifyExistingSubcontractorsYesNo.title = Reverify existing subcontractors
+verify.reverifyExistingSubcontractorsYesNo.heading = Reverify existing subcontractors
+verify.reverifyExistingSubcontractorsYesNo.p1 = To make sure that their tax treatment is correct and up to date, you can reverify any of your existing subcontractors.
+verify.reverifyExistingSubcontractorsYesNo.p2 = You may want to reverify subcontractors if they:
+verify.reverifyExistingSubcontractorsYesNo.list.l1 = have recently changed any of their information
+verify.reverifyExistingSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
+verify.reverifyExistingSubcontractorsYesNo.list.l3 = are about to lose their verified status
+verify.reverifyExistingSubcontractorsYesNo.subHeading = Do you want to add other subcontractors to this verification request?
+verify.reverifyExistingSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
+verify.reverifyExistingSubcontractorsYesNo.checkYourAnswersLabel = Do you want to add other subcontractors to this verification request?
+verify.reverifyExistingSubcontractorsYesNo.change.hidden = do you want to add other subcontractors to this verification request?
verify.verifyDepartmentalError.title = There was a problem with your verification request
verify.verifyDepartmentalError.heading = There was a problem with your verification request
@@ -907,26 +891,3 @@ verify.verifyDepartmentalError.contactHMRC.p1 = for more h
verify.verifyDepartmentalError.contactHMRC.p1.link = Contact HMRC by phone
verify.verifyDepartmentalError.manageSubcontractors.p1 = Back to
verify.verifyDepartmentalError.manageSubcontractors.p1.link = Manage your subcontractors
-
-verify.verificationRequestSubmitted.title = Verification request submitted
-verify.verificationRequestSubmitted.heading = Verification request submitted
-verify.verificationRequestSubmitted.reference = Your verification reference number
-verify.verificationRequestSubmitted.submittedAt = Submitted at {0}
-verify.verificationRequestSubmitted.details.subHeading = Verification request details
-verify.verificationRequestSubmitted.subcontractorsToVerify.label = Subcontractors to verify
-verify.verificationRequestSubmitted.subcontractorsToReverify.label = Subcontractors to reverify
-verify.verificationRequestSubmitted.email.confirmation = Confirmation of submission has been sent to {0}.
-verify.verificationRequestSubmitted.email.verification = You can access this request in read-only format from your
-verify.verificationRequestSubmitted.email.verification.link = verification history
-verify.verificationRequestSubmitted.print.text = You can also save this page or print a copy for your records.
-verify.verificationRequestSubmitted.print.link = Print this page
-verify.verificationRequestSubmitted.needHelp.subHeading = Need help?
-verify.verificationRequestSubmitted.needHelp.contactHMRC.link = contact HMRC
-verify.verificationRequestSubmitted.needHelp.p1 = For any questions about your verification request,
-verify.verificationRequestSubmitted.needHelp.p2 = You will need the reference number of this verification request.
-verify.verificationRequestSubmitted.needHelp.p3 = Back to
-verify.verificationRequestSubmitted.needHelp.manageSubcontractors.link = Manage your subcontractors
-verify.verificationRequestSubmitted.feedback.subHeading = Before you go
-verify.verificationRequestSubmitted.feedback.p1 = Your feedback helps us make our service better.
-verify.verificationRequestSubmitted.feedback.p2 = to share your feedback on this service.
-verify.verificationRequestSubmitted.feedback.survey.link = Take a short survey
From 427edae19e5a3c72f06a55bdb9795995dc6c32b3 Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Wed, 6 May 2026 13:08:18 +0100
Subject: [PATCH 29/48] DTR-4472 Fix: merge issues resolved in messages file
---
conf/messages.en | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/conf/messages.en b/conf/messages.en
index a06ce4cc..fef6e65c 100644
--- a/conf/messages.en
+++ b/conf/messages.en
@@ -891,3 +891,26 @@ verify.verifyDepartmentalError.contactHMRC.p1 = for more h
verify.verifyDepartmentalError.contactHMRC.p1.link = Contact HMRC by phone
verify.verifyDepartmentalError.manageSubcontractors.p1 = Back to
verify.verifyDepartmentalError.manageSubcontractors.p1.link = Manage your subcontractors
+
+verify.verificationRequestSubmitted.title = Verification request submitted
+verify.verificationRequestSubmitted.heading = Verification request submitted
+verify.verificationRequestSubmitted.reference = Your verification reference number
+verify.verificationRequestSubmitted.submittedAt = Submitted at {0}
+verify.verificationRequestSubmitted.details.subHeading = Verification request details
+verify.verificationRequestSubmitted.subcontractorsToVerify.label = Subcontractors to verify
+verify.verificationRequestSubmitted.subcontractorsToReverify.label = Subcontractors to reverify
+verify.verificationRequestSubmitted.email.confirmation = Confirmation of submission has been sent to {0}.
+verify.verificationRequestSubmitted.email.verification = You can access this request in read-only format from your
+verify.verificationRequestSubmitted.email.verification.link = verification history
+verify.verificationRequestSubmitted.print.text = You can also save this page or print a copy for your records.
+verify.verificationRequestSubmitted.print.link = Print this page
+verify.verificationRequestSubmitted.needHelp.subHeading = Need help?
+verify.verificationRequestSubmitted.needHelp.contactHMRC.link = contact HMRC
+verify.verificationRequestSubmitted.needHelp.p1 = For any questions about your verification request,
+verify.verificationRequestSubmitted.needHelp.p2 = You will need the reference number of this verification request.
+verify.verificationRequestSubmitted.needHelp.p3 = Back to
+verify.verificationRequestSubmitted.needHelp.manageSubcontractors.link = Manage your subcontractors
+verify.verificationRequestSubmitted.feedback.subHeading = Before you go
+verify.verificationRequestSubmitted.feedback.p1 = Your feedback helps us make our service better.
+verify.verificationRequestSubmitted.feedback.p2 = to share your feedback on this service.
+verify.verificationRequestSubmitted.feedback.survey.link = Take a short survey
From 99e053c978778f777037400556b2db8ab4b886b8 Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Wed, 6 May 2026 13:10:23 +0100
Subject: [PATCH 30/48] DTR-4472 Fix: merge issues resolved in app routes file
---
conf/app.routes | 13 -------------
1 file changed, 13 deletions(-)
diff --git a/conf/app.routes b/conf/app.routes
index 4507ebaa..7cd209a0 100644
--- a/conf/app.routes
+++ b/conf/app.routes
@@ -384,19 +384,6 @@ POST /verify/select-subcontractors-to-verify controllers.verify.Select
GET /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
POST /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
-GET /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onPageLoad
-POST /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onSubmit
-
-GET /verify/select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
-POST /verify/select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
-GET /verify/change-select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
-POST /verify/change-select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
-
-GET /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
-POST /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
-GET /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
-POST /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
-
GET /verify/enter-confirmation-email controllers.verify.EmailAddressController.onPageLoad(mode: Mode = NormalMode)
POST /verify/enter-confirmation-email controllers.verify.EmailAddressController.onSubmit(mode: Mode = NormalMode)
GET /verify/change-enter-confirmation-email controllers.verify.EmailAddressController.onPageLoad(mode: Mode = CheckMode)
From 42a86800e4c1f71a3fc93ee694f0c1a566243bbb Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Wed, 6 May 2026 14:24:28 +0100
Subject: [PATCH 31/48] DTR-4472 Fix: subcontractors to reverify data
integration
---
.../verify/VerificationRequestSubmittedViewModel.scala | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala b/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
index 5b4edc81..63f74545 100644
--- a/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
+++ b/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
@@ -43,8 +43,11 @@ object VerificationRequestSubmittedViewModel {
.getOrElse(Seq.empty)
.map(_.name)
.toSeq,
- // TODO: Replace below hardcoded values with - SelectSubcontractorsToReverifyPage
- subcontractorsToReverify = Seq("Grant, Alan", "InGen Research"),
+ subcontractorsToReverify = userAnswers
+ .get(SelectSubcontractorsToReverifyPage)
+ .getOrElse(Seq.empty)
+ .map(_.name)
+ .toSeq,
confirmationEmail = userAnswers.get(EmailAddressPage)
)
}
From a5398109cc76276f5aa7c41a22859bc8476e8017 Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Wed, 6 May 2026 14:38:43 +0100
Subject: [PATCH 32/48] DTR-4472 Fix: subcontractors to reverify data
integration
---
...erificationRequestSubmittedViewModel.scala | 2 +-
conf/app.routes | 63 +++--
conf/messages.en | 226 +++++++++---------
3 files changed, 142 insertions(+), 149 deletions(-)
diff --git a/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala b/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
index 63f74545..498c6343 100644
--- a/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
+++ b/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
@@ -43,7 +43,7 @@ object VerificationRequestSubmittedViewModel {
.getOrElse(Seq.empty)
.map(_.name)
.toSeq,
- subcontractorsToReverify = userAnswers
+ subcontractorsToReverify = userAnswers
.get(SelectSubcontractorsToReverifyPage)
.getOrElse(Seq.empty)
.map(_.name)
diff --git a/conf/app.routes b/conf/app.routes
index 7cd209a0..8e9ddc41 100644
--- a/conf/app.routes
+++ b/conf/app.routes
@@ -350,53 +350,52 @@ POST /add/trust/check-your-answers controllers.add.trust.TrustCh
GET /add/trust/subcontractor-added controllers.add.SubcontractorAddedController.trustSubcontractorAdded()
# Verify
-GET /verify/confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onPageLoad(mode: Mode = NormalMode)
-POST /verify/confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onSubmit(mode: Mode = NormalMode)
-GET /verify/change-confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onPageLoad(mode: Mode = CheckMode)
-POST /verify/change-confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onSubmit(mode: Mode = CheckMode)
+GET /verify/confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onPageLoad(mode: Mode = NormalMode)
+POST /verify/confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onSubmit(mode: Mode = NormalMode)
+GET /verify/change-confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onPageLoad(mode: Mode = CheckMode)
+POST /verify/change-confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onSubmit(mode: Mode = CheckMode)
-GET /verify/verification-declaration controllers.verify.VerificationDeclarationController.onPageLoad(mode: Mode = NormalMode)
-POST /verify/verification-declaration controllers.verify.VerificationDeclarationController.onSubmit(mode: Mode = NormalMode)
+GET /verify/verification-declaration controllers.verify.VerificationDeclarationController.onPageLoad(mode: Mode = NormalMode)
+POST /verify/verification-declaration controllers.verify.VerificationDeclarationController.onSubmit(mode: Mode = NormalMode)
-GET /verify/submitting-verification-request controllers.verify.SubmissionSendingController.onPageLoad()
+GET /verify/submitting-verification-request controllers.verify.SubmissionSendingController.onPageLoad()
-GET /verify/no-subcontractors-added controllers.verify.NoSubcontractorsAddedController.onPageLoad()
+GET /verify/no-subcontractors-added controllers.verify.NoSubcontractorsAddedController.onPageLoad()
-GET /verify/newest controllers.verify.NewestVerificationBatchController.onPageLoad()
+GET /verify/newest controllers.verify.NewestVerificationBatchController.onPageLoad()
-GET /verify/current controllers.verify.CurrentVerificationBatchController.onPageLoad()
+GET /verify/current controllers.verify.CurrentVerificationBatchController.onPageLoad()
-GET /verify/verification-request-in-progress controllers.verify.VerificationRequestInProgressController.onPageLoad()
+GET /verify/verification-request-in-progress controllers.verify.VerificationRequestInProgressController.onPageLoad()
-GET /verify/confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = NormalMode)
-POST /verify/confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onSubmit(mode: Mode = NormalMode)
-GET /verify/change-confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = CheckMode)
-POST /verify/change-confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onSubmit(mode: Mode = CheckMode)
+GET /verify/confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = NormalMode)
+POST /verify/confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onSubmit(mode: Mode = NormalMode)
+GET /verify/change-confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = CheckMode)
+POST /verify/change-confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onSubmit(mode: Mode = CheckMode)
+GET /verify/select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
+POST /verify/select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
+GET /verify/change-select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
+POST /verify/change-select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
-GET /verify/select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
-POST /verify/select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
-GET /verify/change-select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
-POST /verify/change-select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
+GET /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
+POST /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
+GET /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
+POST /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
-GET /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
-POST /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
-GET /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
-POST /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
-
-GET /verify/enter-confirmation-email controllers.verify.EmailAddressController.onPageLoad(mode: Mode = NormalMode)
-POST /verify/enter-confirmation-email controllers.verify.EmailAddressController.onSubmit(mode: Mode = NormalMode)
-GET /verify/change-enter-confirmation-email controllers.verify.EmailAddressController.onPageLoad(mode: Mode = CheckMode)
-POST /verify/change-enter-confirmation-email controllers.verify.EmailAddressController.onSubmit(mode: Mode = CheckMode)
+GET /verify/enter-confirmation-email controllers.verify.EmailAddressController.onPageLoad(mode: Mode = NormalMode)
+POST /verify/enter-confirmation-email controllers.verify.EmailAddressController.onSubmit(mode: Mode = NormalMode)
+GET /verify/change-enter-confirmation-email controllers.verify.EmailAddressController.onPageLoad(mode: Mode = CheckMode)
+POST /verify/change-enter-confirmation-email controllers.verify.EmailAddressController.onSubmit(mode: Mode = CheckMode)
GET /verify/reverify-existing-subcontractors controllers.verify.ReverifyExistingSubcontractorsYesNoController.onPageLoad(mode: Mode = NormalMode)
POST /verify/reverify-existing-subcontractors controllers.verify.ReverifyExistingSubcontractorsYesNoController.onSubmit(mode: Mode = NormalMode)
GET /verify/change-reverify-existing-subcontractors controllers.verify.ReverifyExistingSubcontractorsYesNoController.onPageLoad(mode: Mode = CheckMode)
POST /verify/change-reverify-existing-subcontractors controllers.verify.ReverifyExistingSubcontractorsYesNoController.onSubmit(mode: Mode = CheckMode)
-GET /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onPageLoad
-POST /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onSubmit
+GET /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onPageLoad
+POST /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onSubmit
-GET /verify/problem-with-verification-warning controllers.verify.VerifyDepartmentalErrorController.onPageLoad()
+GET /verify/problem-with-verification-warning controllers.verify.VerifyDepartmentalErrorController.onPageLoad()
-GET /verify/verification-request-submitted controllers.verify.VerificationRequestSubmittedController.onPageLoad()
+GET /verify/verification-request-submitted controllers.verify.VerificationRequestSubmittedController.onPageLoad()
diff --git a/conf/messages.en b/conf/messages.en
index fef6e65c..02efc581 100644
--- a/conf/messages.en
+++ b/conf/messages.en
@@ -775,122 +775,116 @@ trustCheckYourAnswers.trailText = By adding this
trustCheckYourAnswers.continue = Accept and submit
# Verify
-verify.submissionSending.title = Submitting your verification request
-verify.submissionSending.heading = Your verification request is being sent to HMRC
-verify.submissionSending.paragraph = Do not refresh this page or press the back button while your submission is being processed.
-
-verify.contractorEmailConfirmationNotStored.title = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationNotStored.heading = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationNotStored.checkYourAnswersLabel = Do you want confirmation by email?
-verify.contractorEmailConfirmationNotStored.error.required = Select yes if you want an email confirmation of this verification request
-verify.contractorEmailConfirmationNotStored.change.hidden = do you want confirmation by email?
-
-verify.verificationDeclaration.title = Verification declaration
-verify.verificationDeclaration.heading = Declaration
-verify.verificationDeclaration.p1 = By submitting this verification request, you confirm that:
-verify.verificationDeclaration.list.l1 = a formal arrangement is in place (for example, tender accepted, contract agreed, order placed) for all of the subcontractors to be verified in this request.
-verify.verificationDeclaration.list.l2 = the information given in this verification request is correct and complete to the best of your knowledge and belief.
-verify.verificationDeclaration.warningText = If you give any false information you may face financial penalties and prosecution.
-verify.verificationDeclaration.confirm = Confirm
-
-verify.noSubcontractorsAdded.title = No subcontractors added
-verify.noSubcontractorsAdded.heading = Verify your subcontractors
-verify.noSubcontractorsAdded.p1 = You do not have any subcontractors at the moment.
-verify.noSubcontractorsAdded.p2 = You will need to
-verify.noSubcontractorsAdded.p2.link = add some subcontractors first
-verify.noSubcontractorsAdded.p2.end = before you can create a verification request or monthly return.
-verify.noSubcontractorsAdded.p3 = Back to
-verify.noSubcontractorsAdded.p3.link = Manage your subcontractors
-
-verify.contractorEmailConfirmationStored.title = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationStored.heading = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationStored.paragraph = Your email address is currently {0}. You can get a confirmation sent to this address or use a different one.
-verify.contractorEmailConfirmationStored.currentEmail = Send confirmation to current email address
-verify.contractorEmailConfirmationStored.differentEmail = Use a different email address
-verify.contractorEmailConfirmationStored.or = or
-verify.contractorEmailConfirmationStored.doNotSend = Do not send an email confirmation
-verify.contractorEmailConfirmationStored.checkYourAnswersLabel = Do you want confirmation by email?
-verify.contractorEmailConfirmationStored.error.required = Select whether you want an email confirmation of this verification request
-verify.contractorEmailConfirmationStored.change.hidden = do you want confirmation by email?
-
-verify.verifyYourSubcontractorsYesNo.title = No new subcontractors to verify
-verify.verifyYourSubcontractorsYesNo.heading = Verify your subcontractors
-verify.verifyYourSubcontractorsYesNo.p1 = There are no unverified subcontractors that you need to verify at the moment.
-verify.verifyYourSubcontractorsYesNo.p2 = However, you can reverify any of your existing subcontractors to make sure that their tax treatment is correct and up to date.
-verify.verifyYourSubcontractorsYesNo.p3 = You may want to reverify subcontractors if they:
-verify.verifyYourSubcontractorsYesNo.list.l1 = have recently changed any of their information
-verify.verifyYourSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
-verify.verifyYourSubcontractorsYesNo.list.l3 = are about to lose their verified status
-verify.verifyYourSubcontractorsYesNo.heading2 = Do you want to add existing subcontractors to this verification request?
-verify.verifyYourSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
-
-verify.verificationRequestInProgress.title = Verification request in progress
-verify.verificationRequestInProgress.heading = Verification request in progress
-verify.verificationRequestInProgress.p1 = HMRC has not responded to your previous verification request yet.
-verify.verificationRequestInProgress.p2 = You must wait for this response before you can verify any more subcontractors.
-verify.verificationRequestInProgress.p3.link = Contact HMRC
-verify.verificationRequestInProgress.p3 = if you have any questions about this verification request.
-verify.verificationRequestInProgress.p4 = Back to
-verify.verificationRequestInProgress.p4.link = Manage your subcontractors
-
-verify.selectSubcontractorsToReverify.title = Which subcontractors do you want to reverify?
-verify.selectSubcontractorsToReverify.heading = Which subcontractors do you want to reverify?
-verify.selectSubcontractorsToReverify.hint = Select the existing subcontractors you want to include in this verification request
-verify.selectSubcontractorsToReverify.checkYourAnswersLabel = Which subcontractors do you want to reverify?
-verify.selectSubcontractorsToReverify.error.required = Select at least one subcontractor to verify
-verify.selectSubcontractorsToReverify.change.hidden = select subcontractors to reverify
-verify.selectSubcontractorsToReverify.showingResults = Showing {0} to {1} of {2} results
-
-
-verify.selectSubcontractorsToReverify.include = Include
-verify.selectSubcontractorsToReverify.name = Name
-verify.selectSubcontractorsToReverify.utr = UTR
-verify.selectSubcontractorsToReverify.verified = Verified
-verify.selectSubcontractorsToReverify.verificationNumber = Verification number
-verify.selectSubcontractorsToReverify.taxTreatment = Tax treatment
-verify.selectSubcontractorsToReverify.dateAdded = Date added
-
-site.pagination.previous = Previous
-site.pagination.next = Next
-site.pagination.landmark = Pagination
-
-verify.selectSubcontractor.title = Which subcontractors do you want to verify?
-verify.selectSubcontractor.heading = Which subcontractors do you want to verify?
-verify.selectSubcontractor.hint = Select the unverified subcontractors you want to add to this verification request
-verify.selectSubcontractor.checkYourAnswersLabel = Subcontractors to verify
-verify.selectSubcontractor.showingResults = Showing {0} to {1} of {2} results
-verify.selectSubcontractor.error.required = Select at least one subcontractor to verify
-verify.selectSubcontractor.change.hidden = subcontractors to verify
-
-verify.emailAddress.title = What email address should HMRC send this confirmation to?
-verify.emailAddress.heading = What email address should HMRC send this confirmation to?
-verify.emailAddress.hint = HMRC will only use this email address to confirm this verification request. Your saved email address will not be changed.
-verify.emailAddress.hint.notStored = HMRC will only use this email address to confirm this verification request
-verify.emailAddress.checkYourAnswersLabel = Email Address
-verify.emailAddress.error.required = Enter an email address in the correct format, like name@example.com
-verify.emailAddress.error.length = Enter a valid email address in the correct format, like name@example.com, up to 254 characters
-verify.emailAddress.error.invalid = Enter a valid email address in the correct format, like name@example.com
-verify.emailAddress.change.hidden = email address
-
-verify.reverifyExistingSubcontractorsYesNo.title = Reverify existing subcontractors
-verify.reverifyExistingSubcontractorsYesNo.heading = Reverify existing subcontractors
-verify.reverifyExistingSubcontractorsYesNo.p1 = To make sure that their tax treatment is correct and up to date, you can reverify any of your existing subcontractors.
-verify.reverifyExistingSubcontractorsYesNo.p2 = You may want to reverify subcontractors if they:
-verify.reverifyExistingSubcontractorsYesNo.list.l1 = have recently changed any of their information
-verify.reverifyExistingSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
-verify.reverifyExistingSubcontractorsYesNo.list.l3 = are about to lose their verified status
-verify.reverifyExistingSubcontractorsYesNo.subHeading = Do you want to add other subcontractors to this verification request?
-verify.reverifyExistingSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
-verify.reverifyExistingSubcontractorsYesNo.checkYourAnswersLabel = Do you want to add other subcontractors to this verification request?
-verify.reverifyExistingSubcontractorsYesNo.change.hidden = do you want to add other subcontractors to this verification request?
-
-verify.verifyDepartmentalError.title = There was a problem with your verification request
-verify.verifyDepartmentalError.heading = There was a problem with your verification request
-verify.verifyDepartmentalError.p1 = The subcontractors that you selected have not been verified and your request has not been saved.
-verify.verifyDepartmentalError.contactHMRC.p1 = for more help.
-verify.verifyDepartmentalError.contactHMRC.p1.link = Contact HMRC by phone
-verify.verifyDepartmentalError.manageSubcontractors.p1 = Back to
-verify.verifyDepartmentalError.manageSubcontractors.p1.link = Manage your subcontractors
+verify.submissionSending.title = Submitting your verification request
+verify.submissionSending.heading = Your verification request is being sent to HMRC
+verify.submissionSending.paragraph = Do not refresh this page or press the back button while your submission is being processed.
+
+verify.contractorEmailConfirmationNotStored.title = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationNotStored.heading = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationNotStored.checkYourAnswersLabel = Do you want confirmation by email?
+verify.contractorEmailConfirmationNotStored.error.required = Select yes if you want an email confirmation of this verification request
+verify.contractorEmailConfirmationNotStored.change.hidden = do you want confirmation by email?
+
+verify.verificationDeclaration.title = Verification declaration
+verify.verificationDeclaration.heading = Declaration
+verify.verificationDeclaration.p1 = By submitting this verification request, you confirm that:
+verify.verificationDeclaration.list.l1 = a formal arrangement is in place (for example, tender accepted, contract agreed, order placed) for all of the subcontractors to be verified in this request.
+verify.verificationDeclaration.list.l2 = the information given in this verification request is correct and complete to the best of your knowledge and belief.
+verify.verificationDeclaration.warningText = If you give any false information you may face financial penalties and prosecution.
+verify.verificationDeclaration.confirm = Confirm
+
+verify.noSubcontractorsAdded.title = No subcontractors added
+verify.noSubcontractorsAdded.heading = Verify your subcontractors
+verify.noSubcontractorsAdded.p1 = You do not have any subcontractors at the moment.
+verify.noSubcontractorsAdded.p2 = You will need to
+verify.noSubcontractorsAdded.p2.link = add some subcontractors first
+verify.noSubcontractorsAdded.p2.end = before you can create a verification request or monthly return.
+verify.noSubcontractorsAdded.p3 = Back to
+verify.noSubcontractorsAdded.p3.link = Manage your subcontractors
+
+verify.contractorEmailConfirmationStored.title = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationStored.heading = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationStored.paragraph = Your email address is currently {0}. You can get a confirmation sent to this address or use a different one.
+verify.contractorEmailConfirmationStored.currentEmail = Send confirmation to current email address
+verify.contractorEmailConfirmationStored.differentEmail = Use a different email address
+verify.contractorEmailConfirmationStored.or = or
+verify.contractorEmailConfirmationStored.doNotSend = Do not send an email confirmation
+verify.contractorEmailConfirmationStored.checkYourAnswersLabel = Do you want confirmation by email?
+verify.contractorEmailConfirmationStored.error.required = Select whether you want an email confirmation of this verification request
+verify.contractorEmailConfirmationStored.change.hidden = do you want confirmation by email?
+
+verify.verifyYourSubcontractorsYesNo.title = No new subcontractors to verify
+verify.verifyYourSubcontractorsYesNo.heading = Verify your subcontractors
+verify.verifyYourSubcontractorsYesNo.p1 = There are no unverified subcontractors that you need to verify at the moment.
+verify.verifyYourSubcontractorsYesNo.p2 = However, you can reverify any of your existing subcontractors to make sure that their tax treatment is correct and up to date.
+verify.verifyYourSubcontractorsYesNo.p3 = You may want to reverify subcontractors if they:
+verify.verifyYourSubcontractorsYesNo.list.l1 = have recently changed any of their information
+verify.verifyYourSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
+verify.verifyYourSubcontractorsYesNo.list.l3 = are about to lose their verified status
+verify.verifyYourSubcontractorsYesNo.heading2 = Do you want to add existing subcontractors to this verification request?
+verify.verifyYourSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
+
+verify.verificationRequestInProgress.title = Verification request in progress
+verify.verificationRequestInProgress.heading = Verification request in progress
+verify.verificationRequestInProgress.p1 = HMRC has not responded to your previous verification request yet.
+verify.verificationRequestInProgress.p2 = You must wait for this response before you can verify any more subcontractors.
+verify.verificationRequestInProgress.p3.link = Contact HMRC
+verify.verificationRequestInProgress.p3 = if you have any questions about this verification request.
+verify.verificationRequestInProgress.p4 = Back to
+verify.verificationRequestInProgress.p4.link = Manage your subcontractors
+
+verify.selectSubcontractorsToReverify.title = Which subcontractors do you want to reverify?
+verify.selectSubcontractorsToReverify.heading = Which subcontractors do you want to reverify?
+verify.selectSubcontractorsToReverify.hint = Select the existing subcontractors you want to include in this verification request
+verify.selectSubcontractorsToReverify.checkYourAnswersLabel = Which subcontractors do you want to reverify?
+verify.selectSubcontractorsToReverify.error.required = Select at least one subcontractor to verify
+verify.selectSubcontractorsToReverify.change.hidden = select subcontractors to reverify
+verify.selectSubcontractorsToReverify.showingResults = Showing {0} to {1} of {2} results
+verify.selectSubcontractorsToReverify.include = Include
+verify.selectSubcontractorsToReverify.name = Name
+verify.selectSubcontractorsToReverify.utr = UTR
+verify.selectSubcontractorsToReverify.verified = Verified
+verify.selectSubcontractorsToReverify.verificationNumber = Verification number
+verify.selectSubcontractorsToReverify.taxTreatment = Tax treatment
+verify.selectSubcontractorsToReverify.dateAdded = Date added
+
+verify.selectSubcontractor.title = Which subcontractors do you want to verify?
+verify.selectSubcontractor.heading = Which subcontractors do you want to verify?
+verify.selectSubcontractor.hint = Select the unverified subcontractors you want to add to this verification request
+verify.selectSubcontractor.checkYourAnswersLabel = Subcontractors to verify
+verify.selectSubcontractor.showingResults = Showing {0} to {1} of {2} results
+verify.selectSubcontractor.error.required = Select at least one subcontractor to verify
+verify.selectSubcontractor.change.hidden = subcontractors to verify
+
+verify.emailAddress.title = What email address should HMRC send this confirmation to?
+verify.emailAddress.heading = What email address should HMRC send this confirmation to?
+verify.emailAddress.hint = HMRC will only use this email address to confirm this verification request. Your saved email address will not be changed.
+verify.emailAddress.hint.notStored = HMRC will only use this email address to confirm this verification request
+verify.emailAddress.checkYourAnswersLabel = Email Address
+verify.emailAddress.error.required = Enter an email address in the correct format, like name@example.com
+verify.emailAddress.error.length = Enter a valid email address in the correct format, like name@example.com, up to 254 characters
+verify.emailAddress.error.invalid = Enter a valid email address in the correct format, like name@example.com
+verify.emailAddress.change.hidden = email address
+
+verify.reverifyExistingSubcontractorsYesNo.title = Reverify existing subcontractors
+verify.reverifyExistingSubcontractorsYesNo.heading = Reverify existing subcontractors
+verify.reverifyExistingSubcontractorsYesNo.p1 = To make sure that their tax treatment is correct and up to date, you can reverify any of your existing subcontractors.
+verify.reverifyExistingSubcontractorsYesNo.p2 = You may want to reverify subcontractors if they:
+verify.reverifyExistingSubcontractorsYesNo.list.l1 = have recently changed any of their information
+verify.reverifyExistingSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
+verify.reverifyExistingSubcontractorsYesNo.list.l3 = are about to lose their verified status
+verify.reverifyExistingSubcontractorsYesNo.subHeading = Do you want to add other subcontractors to this verification request?
+verify.reverifyExistingSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
+verify.reverifyExistingSubcontractorsYesNo.checkYourAnswersLabel = Do you want to add other subcontractors to this verification request?
+verify.reverifyExistingSubcontractorsYesNo.change.hidden = do you want to add other subcontractors to this verification request?
+
+verify.verifyDepartmentalError.title = There was a problem with your verification request
+verify.verifyDepartmentalError.heading = There was a problem with your verification request
+verify.verifyDepartmentalError.p1 = The subcontractors that you selected have not been verified and your request has not been saved.
+verify.verifyDepartmentalError.contactHMRC.p1 = for more help.
+verify.verifyDepartmentalError.contactHMRC.p1.link = Contact HMRC by phone
+verify.verifyDepartmentalError.manageSubcontractors.p1 = Back to
+verify.verifyDepartmentalError.manageSubcontractors.p1.link = Manage your subcontractors
verify.verificationRequestSubmitted.title = Verification request submitted
verify.verificationRequestSubmitted.heading = Verification request submitted
From 140820f773ccc76783f2792e355d4466e485f8fe Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Wed, 6 May 2026 14:51:23 +0100
Subject: [PATCH 33/48] DTR-4472 merge issues for app route page
---
conf/app.routes | 62 ++++++++++++++++++++++++-------------------------
1 file changed, 31 insertions(+), 31 deletions(-)
diff --git a/conf/app.routes b/conf/app.routes
index 8e9ddc41..68599f18 100644
--- a/conf/app.routes
+++ b/conf/app.routes
@@ -350,52 +350,52 @@ POST /add/trust/check-your-answers controllers.add.trust.TrustCh
GET /add/trust/subcontractor-added controllers.add.SubcontractorAddedController.trustSubcontractorAdded()
# Verify
-GET /verify/confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onPageLoad(mode: Mode = NormalMode)
-POST /verify/confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onSubmit(mode: Mode = NormalMode)
-GET /verify/change-confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onPageLoad(mode: Mode = CheckMode)
-POST /verify/change-confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onSubmit(mode: Mode = CheckMode)
+GET /verify/confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onPageLoad(mode: Mode = NormalMode)
+POST /verify/confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onSubmit(mode: Mode = NormalMode)
+GET /verify/change-confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onPageLoad(mode: Mode = CheckMode)
+POST /verify/change-confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onSubmit(mode: Mode = CheckMode)
-GET /verify/verification-declaration controllers.verify.VerificationDeclarationController.onPageLoad(mode: Mode = NormalMode)
-POST /verify/verification-declaration controllers.verify.VerificationDeclarationController.onSubmit(mode: Mode = NormalMode)
+GET /verify/verification-declaration controllers.verify.VerificationDeclarationController.onPageLoad(mode: Mode = NormalMode)
+POST /verify/verification-declaration controllers.verify.VerificationDeclarationController.onSubmit(mode: Mode = NormalMode)
-GET /verify/submitting-verification-request controllers.verify.SubmissionSendingController.onPageLoad()
+GET /verify/submitting-verification-request controllers.verify.SubmissionSendingController.onPageLoad()
-GET /verify/no-subcontractors-added controllers.verify.NoSubcontractorsAddedController.onPageLoad()
+GET /verify/no-subcontractors-added controllers.verify.NoSubcontractorsAddedController.onPageLoad()
-GET /verify/newest controllers.verify.NewestVerificationBatchController.onPageLoad()
+GET /verify/newest controllers.verify.NewestVerificationBatchController.onPageLoad()
-GET /verify/current controllers.verify.CurrentVerificationBatchController.onPageLoad()
+GET /verify/current controllers.verify.CurrentVerificationBatchController.onPageLoad()
-GET /verify/verification-request-in-progress controllers.verify.VerificationRequestInProgressController.onPageLoad()
+GET /verify/verification-request-in-progress controllers.verify.VerificationRequestInProgressController.onPageLoad()
-GET /verify/confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = NormalMode)
-POST /verify/confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onSubmit(mode: Mode = NormalMode)
-GET /verify/change-confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = CheckMode)
-POST /verify/change-confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onSubmit(mode: Mode = CheckMode)
+GET /verify/confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = NormalMode)
+POST /verify/confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onSubmit(mode: Mode = NormalMode)
+GET /verify/change-confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = CheckMode)
+POST /verify/change-confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onSubmit(mode: Mode = CheckMode)
-GET /verify/select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
-POST /verify/select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
-GET /verify/change-select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
-POST /verify/change-select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
+GET /verify/select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
+POST /verify/select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
+GET /verify/change-select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
+POST /verify/change-select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
-GET /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
-POST /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
-GET /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
-POST /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
+GET /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
+POST /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
+GET /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
+POST /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
-GET /verify/enter-confirmation-email controllers.verify.EmailAddressController.onPageLoad(mode: Mode = NormalMode)
-POST /verify/enter-confirmation-email controllers.verify.EmailAddressController.onSubmit(mode: Mode = NormalMode)
-GET /verify/change-enter-confirmation-email controllers.verify.EmailAddressController.onPageLoad(mode: Mode = CheckMode)
-POST /verify/change-enter-confirmation-email controllers.verify.EmailAddressController.onSubmit(mode: Mode = CheckMode)
+GET /verify/enter-confirmation-email controllers.verify.EmailAddressController.onPageLoad(mode: Mode = NormalMode)
+POST /verify/enter-confirmation-email controllers.verify.EmailAddressController.onSubmit(mode: Mode = NormalMode)
+GET /verify/change-enter-confirmation-email controllers.verify.EmailAddressController.onPageLoad(mode: Mode = CheckMode)
+POST /verify/change-enter-confirmation-email controllers.verify.EmailAddressController.onSubmit(mode: Mode = CheckMode)
GET /verify/reverify-existing-subcontractors controllers.verify.ReverifyExistingSubcontractorsYesNoController.onPageLoad(mode: Mode = NormalMode)
POST /verify/reverify-existing-subcontractors controllers.verify.ReverifyExistingSubcontractorsYesNoController.onSubmit(mode: Mode = NormalMode)
GET /verify/change-reverify-existing-subcontractors controllers.verify.ReverifyExistingSubcontractorsYesNoController.onPageLoad(mode: Mode = CheckMode)
POST /verify/change-reverify-existing-subcontractors controllers.verify.ReverifyExistingSubcontractorsYesNoController.onSubmit(mode: Mode = CheckMode)
-GET /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onPageLoad
-POST /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onSubmit
+GET /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onPageLoad
+POST /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onSubmit
-GET /verify/problem-with-verification-warning controllers.verify.VerifyDepartmentalErrorController.onPageLoad()
+GET /verify/problem-with-verification-warning controllers.verify.VerifyDepartmentalErrorController.onPageLoad()
-GET /verify/verification-request-submitted controllers.verify.VerificationRequestSubmittedController.onPageLoad()
+GET /verify/verification-request-submitted controllers.verify.VerificationRequestSubmittedController.onPageLoad()
From f06cc75ebcf0611e9b80af196253a8778b65b50f Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Wed, 6 May 2026 15:56:41 +0100
Subject: [PATCH 34/48] DTR-4472 Fix: deleting redundant refactored files
---
.../VerificationSubmittedViewModel.scala | 30 -----
.../VerificationSubmittedViewModelSpec.scala | 115 ------------------
2 files changed, 145 deletions(-)
delete mode 100644 app/viewmodels/checkAnswers/verify/VerificationSubmittedViewModel.scala
delete mode 100644 test/viewmodels/checkAnswers/verify/VerificationSubmittedViewModelSpec.scala
diff --git a/app/viewmodels/checkAnswers/verify/VerificationSubmittedViewModel.scala b/app/viewmodels/checkAnswers/verify/VerificationSubmittedViewModel.scala
deleted file mode 100644
index e5d6a0d1..00000000
--- a/app/viewmodels/checkAnswers/verify/VerificationSubmittedViewModel.scala
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright 2026 HM Revenue & Customs
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package viewmodels.checkAnswers.verify
-import java.time.LocalDateTime
-
-case class VerificationSubmittedViewModel(
- referenceNumber: String,
- submittedAt: LocalDateTime,
- subcontractorsToVerify: Seq[String],
- subcontractorsToReverify: Seq[String] = Seq.empty,
- confirmationEmail: Option[String] = None
-) {
- def showEmail: Boolean = confirmationEmail.isDefined
- def showVerify: Boolean = subcontractorsToVerify.nonEmpty
- def showReverify: Boolean = subcontractorsToReverify.nonEmpty
-}
diff --git a/test/viewmodels/checkAnswers/verify/VerificationSubmittedViewModelSpec.scala b/test/viewmodels/checkAnswers/verify/VerificationSubmittedViewModelSpec.scala
deleted file mode 100644
index ce5d8eaa..00000000
--- a/test/viewmodels/checkAnswers/verify/VerificationSubmittedViewModelSpec.scala
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright 2026 HM Revenue & Customs
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package viewmodels.checkAnswers.verify
-
-import org.scalatest.freespec.AnyFreeSpec
-import org.scalatest.matchers.should.Matchers
-
-import java.time.LocalDateTime
-
-class VerificationSubmittedViewModelSpec extends AnyFreeSpec with Matchers {
-
- private val now = LocalDateTime.of(2026, 4, 27, 10, 30)
-
- "VerificationSubmittedViewModel" - {
-
- "showEmail" - {
-
- "must return true when confirmationEmail is defined" in {
-
- val vm =
- VerificationSubmittedViewModel(
- referenceNumber = "REF123",
- submittedAt = now,
- subcontractorsToVerify = Seq("Sub A"),
- confirmationEmail = Some("test@test.com")
- )
-
- vm.showEmail shouldBe true
- }
-
- "must return false when confirmationEmail is not defined" in {
-
- val vm =
- VerificationSubmittedViewModel(
- referenceNumber = "REF123",
- submittedAt = now,
- subcontractorsToVerify = Seq("Sub A"),
- confirmationEmail = None
- )
-
- vm.showEmail shouldBe false
- }
- }
-
- "showVerify" - {
-
- "must return true when subcontractorsToVerify is non-empty" in {
-
- val vm =
- VerificationSubmittedViewModel(
- referenceNumber = "REF123",
- submittedAt = now,
- subcontractorsToVerify = Seq("Sub A")
- )
-
- vm.showVerify shouldBe true
- }
-
- "must return false when subcontractorsToVerify is empty" in {
-
- val vm =
- VerificationSubmittedViewModel(
- referenceNumber = "REF123",
- submittedAt = now,
- subcontractorsToVerify = Seq.empty
- )
-
- vm.showVerify shouldBe false
- }
- }
-
- "showReverify" - {
-
- "must return true when subcontractorsToReverify is non-empty" in {
-
- val vm =
- VerificationSubmittedViewModel(
- referenceNumber = "REF123",
- submittedAt = now,
- subcontractorsToVerify = Seq("Sub A"),
- subcontractorsToReverify = Seq("Sub B")
- )
-
- vm.showReverify shouldBe true
- }
-
- "must return false when subcontractorsToReverify is empty" in {
-
- val vm =
- VerificationSubmittedViewModel(
- referenceNumber = "REF123",
- submittedAt = now,
- subcontractorsToVerify = Seq("Sub A"),
- subcontractorsToReverify = Seq.empty
- )
-
- vm.showReverify shouldBe false
- }
- }
- }
-}
From efbf1bd16d96991c1305fdddc5e1096107c14800 Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Wed, 6 May 2026 16:42:29 +0100
Subject: [PATCH 35/48] DTR-4472 Fix: removed commented code
---
.../verify/VerificationRequestSubmittedController.scala | 3 ---
1 file changed, 3 deletions(-)
diff --git a/app/controllers/verify/VerificationRequestSubmittedController.scala b/app/controllers/verify/VerificationRequestSubmittedController.scala
index 8532d0ff..203455d6 100644
--- a/app/controllers/verify/VerificationRequestSubmittedController.scala
+++ b/app/controllers/verify/VerificationRequestSubmittedController.scala
@@ -38,9 +38,6 @@ class VerificationRequestSubmittedController @Inject() (
def onPageLoad(): Action[AnyContent] =
(identify andThen getData andThen requireData) { implicit request =>
-
- // TODO: Replace this with your real source:
- // TODO: Replace 1. referenceNumber 2. submittedAt 3. verify list 4. Reverify lists 5. confirmationEmail
val vm =
VerificationRequestSubmittedViewModel
.fromUserAnswers(request.userAnswers)
From 3c5d8fbbcd5755bcd2c9b238c98478e94b67d855 Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Wed, 6 May 2026 23:41:02 +0100
Subject: [PATCH 36/48] DTR-4472 testing issues fixed
---
.../VerificationRequestSubmittedView.scala.html | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/app/views/verify/VerificationRequestSubmittedView.scala.html b/app/views/verify/VerificationRequestSubmittedView.scala.html
index afb92ac8..b6cc4d0b 100644
--- a/app/views/verify/VerificationRequestSubmittedView.scala.html
+++ b/app/views/verify/VerificationRequestSubmittedView.scala.html
@@ -42,14 +42,14 @@
@(vm: VerificationRequestSubmittedViewModel
)(implicit request: Request[_],appConfig: FrontendAppConfig, messages: Messages)
-@layout(pageTitle = titleNoForm(messages("verify.verificationRequestSubmitted.title"))) {
+@layout(pageTitle = titleNoForm(messages("verify.verificationRequestSubmitted.title")), showBackLink = false) {
@govukPanel(
Panel(
title = Text(messages("verify.verificationRequestSubmitted.heading")),
content = HtmlContent(
s"""
- ${messages("verify.verificationRequestSubmitted.reference")}
+ ${messages("verify.verificationRequestSubmitted.reference")}
(${HtmlFormat.escape(vm.referenceNumber)})
"""
)
@@ -79,10 +79,10 @@
HtmlContent(
vm.subcontractorsToVerify
.map(name => s"$name ")
- .mkString("")
+ .mkString("")
)
)
- )
+ ).withCssClass("govuk-summary-list__row--no-border")
)
)
)
@@ -98,10 +98,10 @@
HtmlContent(
vm.subcontractorsToReverify
.map(name => s"$name ")
- .mkString("")
+ .mkString("")
)
)
- )
+ ).withCssClass("govuk-summary-list__row--no-border")
)
)
)
@@ -122,7 +122,7 @@
@link(
linkTextKey = "verify.verificationRequestSubmitted.email.verification.link",
- linkUrl = appConfig.cisGeneralEnquiries, // TODO: Link to be updated later
+ linkUrl = "#", // TODO: Link to be updated later
hasFullStop = true,
prefixTextKey = "verify.verificationRequestSubmitted.email.verification"
)
From 3fd50d15ce5a6950ba0a9bc3c2a60f5ff35dd2f2 Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Wed, 6 May 2026 23:59:08 +0100
Subject: [PATCH 37/48] DTR-4472 Fix: Failed test case fixed
---
test/views/verify/VerificationRequestSubmittedViewSpec.scala | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/views/verify/VerificationRequestSubmittedViewSpec.scala b/test/views/verify/VerificationRequestSubmittedViewSpec.scala
index 3f239c0a..299ba9db 100644
--- a/test/views/verify/VerificationRequestSubmittedViewSpec.scala
+++ b/test/views/verify/VerificationRequestSubmittedViewSpec.scala
@@ -71,7 +71,7 @@ class VerificationRequestSubmittedViewSpec extends AnyWordSpec with Matchers wit
doc.select("p.govuk-body").text must include(email)
val emailVerificationLink =
- doc.select(s"a[href='${appConfig.cisGeneralEnquiries}']")
+ doc.select(s"a[href='#']")
emailVerificationLink.text must include(
messages("verify.verificationRequestSubmitted.email.verification.link")
From bac347be4a5d277d80c947e06d9903f8e914b61b Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Thu, 7 May 2026 00:12:22 +0100
Subject: [PATCH 38/48] DTR-4472 Fix: testing comments fixed
---
...erificationRequestSubmittedView.scala.html | 20 +++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/app/views/verify/VerificationRequestSubmittedView.scala.html b/app/views/verify/VerificationRequestSubmittedView.scala.html
index b6cc4d0b..722261a7 100644
--- a/app/views/verify/VerificationRequestSubmittedView.scala.html
+++ b/app/views/verify/VerificationRequestSubmittedView.scala.html
@@ -77,9 +77,13 @@
key = messages("verify.verificationRequestSubmitted.subcontractorsToVerify.label"),
value = ValueViewModel(
HtmlContent(
- vm.subcontractorsToVerify
- .map(name => s"$name ")
- .mkString("")
+ if (vm.subcontractorsToVerify.size > 1) {
+ vm.subcontractorsToVerify
+ .map(name => s"$name ")
+ .mkString("")
+ } else {
+ vm.subcontractorsToVerify.headOption.getOrElse("")
+ }
)
)
).withCssClass("govuk-summary-list__row--no-border")
@@ -96,9 +100,13 @@
key = messages("verify.verificationRequestSubmitted.subcontractorsToReverify.label"),
value = ValueViewModel(
HtmlContent(
- vm.subcontractorsToReverify
- .map(name => s"$name ")
- .mkString("")
+ if (vm.subcontractorsToReverify.size > 1) {
+ vm.subcontractorsToReverify
+ .map(name => s"$name ")
+ .mkString("")
+ } else {
+ vm.subcontractorsToReverify.headOption.getOrElse("")
+ }
)
)
).withCssClass("govuk-summary-list__row--no-border")
From 05c10d0930eef1a8e587a46ba9e41bec028f4b21 Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Thu, 7 May 2026 14:47:29 +0100
Subject: [PATCH 39/48] DTR-4472 Fix: review comments addressed
---
...erificationRequestSubmittedViewModel.scala | 34 +++++++++----------
...erificationRequestSubmittedView.scala.html | 6 ++--
2 files changed, 21 insertions(+), 19 deletions(-)
diff --git a/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala b/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
index 498c6343..dc127f56 100644
--- a/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
+++ b/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
@@ -16,38 +16,38 @@
package viewmodels.checkAnswers.verify
import models.UserAnswers
-import pages.verify._
+import pages.verify.*
+import queries.CisIdQuery
+
import java.time.LocalDateTime
case class VerificationRequestSubmittedViewModel(
+ cisId: Option[String] = None,
referenceNumber: String,
submittedAt: LocalDateTime,
- subcontractorsToVerify: Seq[String],
+ subcontractorsToVerify: Seq[String] = Seq.empty,
subcontractorsToReverify: Seq[String] = Seq.empty,
confirmationEmail: Option[String] = None
) {
- def showEmail: Boolean = confirmationEmail.isDefined
- def showVerify: Boolean = subcontractorsToVerify.nonEmpty
- def showReverify: Boolean = subcontractorsToReverify.nonEmpty
+ val showEmail: Boolean = confirmationEmail.isDefined
+ val showVerify: Boolean = subcontractorsToVerify.nonEmpty
+ val showReverify: Boolean = subcontractorsToReverify.nonEmpty
}
-
object VerificationRequestSubmittedViewModel {
+ private def namesFrom[A](maybe: Option[Iterable[A]])(name: A => String): Seq[String] =
+ maybe.fold(Seq.empty)(_.map(name).toSeq)
+
def fromUserAnswers(userAnswers: UserAnswers): VerificationRequestSubmittedViewModel =
VerificationRequestSubmittedViewModel(
- // TODO: Replace below with actuals - 1. referenceNumber 2. submittedAt
+ cisId = userAnswers.get(CisIdQuery),
+ // TODO: Replace below with actuals - 1. referenceNumber 2. submittedAt
referenceNumber = "Reference Number 12345",
submittedAt = LocalDateTime.now(),
- subcontractorsToVerify = userAnswers
- .get(SelectSubcontractorPage)
- .getOrElse(Seq.empty)
- .map(_.name)
- .toSeq,
- subcontractorsToReverify = userAnswers
- .get(SelectSubcontractorsToReverifyPage)
- .getOrElse(Seq.empty)
- .map(_.name)
- .toSeq,
+ subcontractorsToVerify =
+ namesFrom(userAnswers.get(SelectSubcontractorPage))(_.name),
+ subcontractorsToReverify =
+ namesFrom(userAnswers.get(SelectSubcontractorsToReverifyPage))(_.name),
confirmationEmail = userAnswers.get(EmailAddressPage)
)
}
diff --git a/app/views/verify/VerificationRequestSubmittedView.scala.html b/app/views/verify/VerificationRequestSubmittedView.scala.html
index 722261a7..60a5408f 100644
--- a/app/views/verify/VerificationRequestSubmittedView.scala.html
+++ b/app/views/verify/VerificationRequestSubmittedView.scala.html
@@ -50,7 +50,7 @@
content = HtmlContent(
s"""
${messages("verify.verificationRequestSubmitted.reference")}
- (${HtmlFormat.escape(vm.referenceNumber)})
+ ${HtmlFormat.escape(vm.referenceNumber)}
"""
)
)
@@ -166,7 +166,9 @@
@link(
linkTextKey = "verify.verificationRequestSubmitted.needHelp.manageSubcontractors.link",
- linkUrl = appConfig.manageSubcontractorsUrl, // TODO: Link to be updated later.
+ linkUrl = vm.cisId.map(id =>
+ s"${appConfig.manageSubcontractorsUrl}/${id}"
+ ).getOrElse("#"),
hasFullStop = true,
prefixTextKey = "verify.verificationRequestSubmitted.needHelp.p3",
)
From b0d310251e21bb5ad118b9174bee27ce9dfed493 Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Thu, 7 May 2026 15:12:53 +0100
Subject: [PATCH 40/48] DTR-4472 Fix: test case commented
---
.../VerificationRequestSubmittedViewSpec.scala | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/test/views/verify/VerificationRequestSubmittedViewSpec.scala b/test/views/verify/VerificationRequestSubmittedViewSpec.scala
index 299ba9db..95396399 100644
--- a/test/views/verify/VerificationRequestSubmittedViewSpec.scala
+++ b/test/views/verify/VerificationRequestSubmittedViewSpec.scala
@@ -89,12 +89,12 @@ class VerificationRequestSubmittedViewSpec extends AnyWordSpec with Matchers wit
messages("verify.verificationRequestSubmitted.needHelp.subHeading")
)
- val manageLink =
- doc.select(s"a[href='${appConfig.manageSubcontractorsUrl}']")
-
- manageLink.text must include(
- messages("verify.verificationRequestSubmitted.needHelp.manageSubcontractors.link")
- )
+// val manageLink =
+// doc.select(s"a[href='${appConfig.manageSubcontractorsUrl}']")
+//
+// manageLink.text must include(
+// messages("verify.verificationRequestSubmitted.needHelp.manageSubcontractors.link")
+// )
doc.select("h2").text must include(
messages("verify.verificationRequestSubmitted.feedback.subHeading")
From 4faf2f5c6be81ebb734c264be6865f1359a0abbf Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Thu, 7 May 2026 15:14:20 +0100
Subject: [PATCH 41/48] DTR-4472 Fix: test case commented
---
.../verify/VerificationRequestSubmittedViewModel.scala | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala b/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
index dc127f56..cd386425 100644
--- a/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
+++ b/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
@@ -44,10 +44,8 @@ object VerificationRequestSubmittedViewModel {
// TODO: Replace below with actuals - 1. referenceNumber 2. submittedAt
referenceNumber = "Reference Number 12345",
submittedAt = LocalDateTime.now(),
- subcontractorsToVerify =
- namesFrom(userAnswers.get(SelectSubcontractorPage))(_.name),
- subcontractorsToReverify =
- namesFrom(userAnswers.get(SelectSubcontractorsToReverifyPage))(_.name),
+ subcontractorsToVerify = namesFrom(userAnswers.get(SelectSubcontractorPage))(_.name),
+ subcontractorsToReverify = namesFrom(userAnswers.get(SelectSubcontractorsToReverifyPage))(_.name),
confirmationEmail = userAnswers.get(EmailAddressPage)
)
}
From c3a4a562bc959da3febe06f9cd8b24ec6f8dec78 Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Thu, 7 May 2026 17:29:30 +0100
Subject: [PATCH 42/48] DTR-4472 Fix: test case fixed
---
.../VerificationRequestSubmittedViewSpec.scala | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/test/views/verify/VerificationRequestSubmittedViewSpec.scala b/test/views/verify/VerificationRequestSubmittedViewSpec.scala
index 95396399..23ccb6aa 100644
--- a/test/views/verify/VerificationRequestSubmittedViewSpec.scala
+++ b/test/views/verify/VerificationRequestSubmittedViewSpec.scala
@@ -89,12 +89,12 @@ class VerificationRequestSubmittedViewSpec extends AnyWordSpec with Matchers wit
messages("verify.verificationRequestSubmitted.needHelp.subHeading")
)
-// val manageLink =
-// doc.select(s"a[href='${appConfig.manageSubcontractorsUrl}']")
-//
-// manageLink.text must include(
-// messages("verify.verificationRequestSubmitted.needHelp.manageSubcontractors.link")
-// )
+ val manageLink =
+ doc.select(s"a[href='${appConfig.manageSubcontractorsUrl}/${cisId}']")
+
+ manageLink.size() mustBe 1
+ manageLink.text() mustBe
+ messages("verify.verificationRequestSubmitted.needHelp.manageSubcontractors.link")
doc.select("h2").text must include(
messages("verify.verificationRequestSubmitted.feedback.subHeading")
@@ -164,8 +164,11 @@ class VerificationRequestSubmittedViewSpec extends AnyWordSpec with Matchers wit
val email = "test@testmail.com"
+ val cisId = "1"
+
val viewModel: VerificationRequestSubmittedViewModel =
VerificationRequestSubmittedViewModel(
+ cisId = Some(cisId),
referenceNumber = referenceNumber,
submittedAt = submittedAt,
subcontractorsToVerify = subcontractorsToVerify,
From 8a4409a8b7b30ad0fb849933e5af7d178a48adea Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Thu, 7 May 2026 17:30:31 +0100
Subject: [PATCH 43/48] DTR-4472 Fix: test case fixed
---
test/views/verify/VerificationRequestSubmittedViewSpec.scala | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/views/verify/VerificationRequestSubmittedViewSpec.scala b/test/views/verify/VerificationRequestSubmittedViewSpec.scala
index 23ccb6aa..ffc4c23c 100644
--- a/test/views/verify/VerificationRequestSubmittedViewSpec.scala
+++ b/test/views/verify/VerificationRequestSubmittedViewSpec.scala
@@ -90,7 +90,7 @@ class VerificationRequestSubmittedViewSpec extends AnyWordSpec with Matchers wit
)
val manageLink =
- doc.select(s"a[href='${appConfig.manageSubcontractorsUrl}/${cisId}']")
+ doc.select(s"a[href='${appConfig.manageSubcontractorsUrl}/$cisId']")
manageLink.size() mustBe 1
manageLink.text() mustBe
From 51421765aa9949b0fbf49943551fa2f4f62cfc64 Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Thu, 7 May 2026 23:10:38 +0100
Subject: [PATCH 44/48] FIX: resolve merge conflict issues
---
conf/app.routes | 6 ++++++
conf/messages.en | 21 +++++++++++++++++++++
2 files changed, 27 insertions(+)
diff --git a/conf/app.routes b/conf/app.routes
index 68599f18..00c3ff11 100644
--- a/conf/app.routes
+++ b/conf/app.routes
@@ -398,4 +398,10 @@ POST /verify/no-new-subcontractors-to-verify controllers.verify.Verify
GET /verify/problem-with-verification-warning controllers.verify.VerifyDepartmentalErrorController.onPageLoad()
+GET /verify/inactive-scheme-warning controllers.verify.InactiveSchemeWarningController.onPageLoad()
+
+GET /verify/verification-not-submitted-warning controllers.verify.VerificationNotSubmittedWarningController.onPageLoad()
+
+GET /verify/no-subcontractors-selected-warning controllers.verify.NoSubcontractorsSelectedWarningController.onPageLoad()
+
GET /verify/verification-request-submitted controllers.verify.VerificationRequestSubmittedController.onPageLoad()
diff --git a/conf/messages.en b/conf/messages.en
index 02efc581..6a6a9d5f 100644
--- a/conf/messages.en
+++ b/conf/messages.en
@@ -886,6 +886,27 @@ verify.verifyDepartmentalError.contactHMRC.p1.link = Conta
verify.verifyDepartmentalError.manageSubcontractors.p1 = Back to
verify.verifyDepartmentalError.manageSubcontractors.p1.link = Manage your subcontractors
+verify.inactiveSchemeWarning.title = Your scheme is not active
+verify.inactiveSchemeWarning.heading = Your scheme is not active
+verify.inactiveSchemeWarning.p1 = Your scheme was recently made inactive.
+verify.inactiveSchemeWarning.p2 = You must contact HMRC by phone to reactivate your scheme before you can pay any more subcontractors.
+verify.inactiveSchemeWarning.warningText = Any verification request that you send while your scheme is inactive will fail when you try to submit it.
+verify.inactiveSchemeWarning.cancel = Cancel request
+
+verify.verificationNotSubmittedWarning.title = Your verification request cannot be submitted
+verify.verificationNotSubmittedWarning.heading = Your verification request cannot be submitted
+verify.verificationNotSubmittedWarning.link1.prefix = You must
+verify.verificationNotSubmittedWarning.link1.text = contact HMRC
+verify.verificationNotSubmittedWarning.link1.suffix = for more help.
+verify.verificationNotSubmittedWarning.link2.text = Manage your subcontractors
+verify.verificationNotSubmittedWarning.link2.prefix = Back to
+
+verify.noSubcontractorsSelectedWarning.title = Select at least one subcontractor
+verify.noSubcontractorsSelectedWarning.heading = Your verification request cannot be submitted
+verify.noSubcontractorsSelectedWarning.p = You need to select at least one subcontractor to send a verification request.
+verify.noSubcontractorsSelectedWarning.button = Select subcontractors
+verify.noSubcontractorsSelectedWarning.cancel = Cancel request
+
verify.verificationRequestSubmitted.title = Verification request submitted
verify.verificationRequestSubmitted.heading = Verification request submitted
verify.verificationRequestSubmitted.reference = Your verification reference number
From 0ab296e54ee72c29302e9ae972aae4fbe41bfd72 Mon Sep 17 00:00:00 2001
From: abhinavgupta-hmrc <269448599+abhinavgupta-hmrc@users.noreply.github.com>
Date: Thu, 7 May 2026 23:28:39 +0100
Subject: [PATCH 45/48] FIX: resolve merge conflict issues in messages file
---
conf/messages.en | 226 ++++++++++++++++++++++++-----------------------
1 file changed, 116 insertions(+), 110 deletions(-)
diff --git a/conf/messages.en b/conf/messages.en
index 6a6a9d5f..d87494ed 100644
--- a/conf/messages.en
+++ b/conf/messages.en
@@ -775,116 +775,122 @@ trustCheckYourAnswers.trailText = By adding this
trustCheckYourAnswers.continue = Accept and submit
# Verify
-verify.submissionSending.title = Submitting your verification request
-verify.submissionSending.heading = Your verification request is being sent to HMRC
-verify.submissionSending.paragraph = Do not refresh this page or press the back button while your submission is being processed.
-
-verify.contractorEmailConfirmationNotStored.title = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationNotStored.heading = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationNotStored.checkYourAnswersLabel = Do you want confirmation by email?
-verify.contractorEmailConfirmationNotStored.error.required = Select yes if you want an email confirmation of this verification request
-verify.contractorEmailConfirmationNotStored.change.hidden = do you want confirmation by email?
-
-verify.verificationDeclaration.title = Verification declaration
-verify.verificationDeclaration.heading = Declaration
-verify.verificationDeclaration.p1 = By submitting this verification request, you confirm that:
-verify.verificationDeclaration.list.l1 = a formal arrangement is in place (for example, tender accepted, contract agreed, order placed) for all of the subcontractors to be verified in this request.
-verify.verificationDeclaration.list.l2 = the information given in this verification request is correct and complete to the best of your knowledge and belief.
-verify.verificationDeclaration.warningText = If you give any false information you may face financial penalties and prosecution.
-verify.verificationDeclaration.confirm = Confirm
-
-verify.noSubcontractorsAdded.title = No subcontractors added
-verify.noSubcontractorsAdded.heading = Verify your subcontractors
-verify.noSubcontractorsAdded.p1 = You do not have any subcontractors at the moment.
-verify.noSubcontractorsAdded.p2 = You will need to
-verify.noSubcontractorsAdded.p2.link = add some subcontractors first
-verify.noSubcontractorsAdded.p2.end = before you can create a verification request or monthly return.
-verify.noSubcontractorsAdded.p3 = Back to
-verify.noSubcontractorsAdded.p3.link = Manage your subcontractors
-
-verify.contractorEmailConfirmationStored.title = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationStored.heading = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationStored.paragraph = Your email address is currently {0}. You can get a confirmation sent to this address or use a different one.
-verify.contractorEmailConfirmationStored.currentEmail = Send confirmation to current email address
-verify.contractorEmailConfirmationStored.differentEmail = Use a different email address
-verify.contractorEmailConfirmationStored.or = or
-verify.contractorEmailConfirmationStored.doNotSend = Do not send an email confirmation
-verify.contractorEmailConfirmationStored.checkYourAnswersLabel = Do you want confirmation by email?
-verify.contractorEmailConfirmationStored.error.required = Select whether you want an email confirmation of this verification request
-verify.contractorEmailConfirmationStored.change.hidden = do you want confirmation by email?
-
-verify.verifyYourSubcontractorsYesNo.title = No new subcontractors to verify
-verify.verifyYourSubcontractorsYesNo.heading = Verify your subcontractors
-verify.verifyYourSubcontractorsYesNo.p1 = There are no unverified subcontractors that you need to verify at the moment.
-verify.verifyYourSubcontractorsYesNo.p2 = However, you can reverify any of your existing subcontractors to make sure that their tax treatment is correct and up to date.
-verify.verifyYourSubcontractorsYesNo.p3 = You may want to reverify subcontractors if they:
-verify.verifyYourSubcontractorsYesNo.list.l1 = have recently changed any of their information
-verify.verifyYourSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
-verify.verifyYourSubcontractorsYesNo.list.l3 = are about to lose their verified status
-verify.verifyYourSubcontractorsYesNo.heading2 = Do you want to add existing subcontractors to this verification request?
-verify.verifyYourSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
-
-verify.verificationRequestInProgress.title = Verification request in progress
-verify.verificationRequestInProgress.heading = Verification request in progress
-verify.verificationRequestInProgress.p1 = HMRC has not responded to your previous verification request yet.
-verify.verificationRequestInProgress.p2 = You must wait for this response before you can verify any more subcontractors.
-verify.verificationRequestInProgress.p3.link = Contact HMRC
-verify.verificationRequestInProgress.p3 = if you have any questions about this verification request.
-verify.verificationRequestInProgress.p4 = Back to
-verify.verificationRequestInProgress.p4.link = Manage your subcontractors
-
-verify.selectSubcontractorsToReverify.title = Which subcontractors do you want to reverify?
-verify.selectSubcontractorsToReverify.heading = Which subcontractors do you want to reverify?
-verify.selectSubcontractorsToReverify.hint = Select the existing subcontractors you want to include in this verification request
-verify.selectSubcontractorsToReverify.checkYourAnswersLabel = Which subcontractors do you want to reverify?
-verify.selectSubcontractorsToReverify.error.required = Select at least one subcontractor to verify
-verify.selectSubcontractorsToReverify.change.hidden = select subcontractors to reverify
-verify.selectSubcontractorsToReverify.showingResults = Showing {0} to {1} of {2} results
-verify.selectSubcontractorsToReverify.include = Include
-verify.selectSubcontractorsToReverify.name = Name
-verify.selectSubcontractorsToReverify.utr = UTR
-verify.selectSubcontractorsToReverify.verified = Verified
-verify.selectSubcontractorsToReverify.verificationNumber = Verification number
-verify.selectSubcontractorsToReverify.taxTreatment = Tax treatment
-verify.selectSubcontractorsToReverify.dateAdded = Date added
-
-verify.selectSubcontractor.title = Which subcontractors do you want to verify?
-verify.selectSubcontractor.heading = Which subcontractors do you want to verify?
-verify.selectSubcontractor.hint = Select the unverified subcontractors you want to add to this verification request
-verify.selectSubcontractor.checkYourAnswersLabel = Subcontractors to verify
-verify.selectSubcontractor.showingResults = Showing {0} to {1} of {2} results
-verify.selectSubcontractor.error.required = Select at least one subcontractor to verify
-verify.selectSubcontractor.change.hidden = subcontractors to verify
-
-verify.emailAddress.title = What email address should HMRC send this confirmation to?
-verify.emailAddress.heading = What email address should HMRC send this confirmation to?
-verify.emailAddress.hint = HMRC will only use this email address to confirm this verification request. Your saved email address will not be changed.
-verify.emailAddress.hint.notStored = HMRC will only use this email address to confirm this verification request
-verify.emailAddress.checkYourAnswersLabel = Email Address
-verify.emailAddress.error.required = Enter an email address in the correct format, like name@example.com
-verify.emailAddress.error.length = Enter a valid email address in the correct format, like name@example.com, up to 254 characters
-verify.emailAddress.error.invalid = Enter a valid email address in the correct format, like name@example.com
-verify.emailAddress.change.hidden = email address
-
-verify.reverifyExistingSubcontractorsYesNo.title = Reverify existing subcontractors
-verify.reverifyExistingSubcontractorsYesNo.heading = Reverify existing subcontractors
-verify.reverifyExistingSubcontractorsYesNo.p1 = To make sure that their tax treatment is correct and up to date, you can reverify any of your existing subcontractors.
-verify.reverifyExistingSubcontractorsYesNo.p2 = You may want to reverify subcontractors if they:
-verify.reverifyExistingSubcontractorsYesNo.list.l1 = have recently changed any of their information
-verify.reverifyExistingSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
-verify.reverifyExistingSubcontractorsYesNo.list.l3 = are about to lose their verified status
-verify.reverifyExistingSubcontractorsYesNo.subHeading = Do you want to add other subcontractors to this verification request?
-verify.reverifyExistingSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
-verify.reverifyExistingSubcontractorsYesNo.checkYourAnswersLabel = Do you want to add other subcontractors to this verification request?
-verify.reverifyExistingSubcontractorsYesNo.change.hidden = do you want to add other subcontractors to this verification request?
-
-verify.verifyDepartmentalError.title = There was a problem with your verification request
-verify.verifyDepartmentalError.heading = There was a problem with your verification request
-verify.verifyDepartmentalError.p1 = The subcontractors that you selected have not been verified and your request has not been saved.
-verify.verifyDepartmentalError.contactHMRC.p1 = for more help.
-verify.verifyDepartmentalError.contactHMRC.p1.link = Contact HMRC by phone
-verify.verifyDepartmentalError.manageSubcontractors.p1 = Back to
-verify.verifyDepartmentalError.manageSubcontractors.p1.link = Manage your subcontractors
+verify.submissionSending.title = Submitting your verification request
+verify.submissionSending.heading = Your verification request is being sent to HMRC
+verify.submissionSending.paragraph = Do not refresh this page or press the back button while your submission is being processed.
+
+verify.contractorEmailConfirmationNotStored.title = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationNotStored.heading = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationNotStored.checkYourAnswersLabel = Do you want confirmation by email?
+verify.contractorEmailConfirmationNotStored.error.required = Select yes if you want an email confirmation of this verification request
+verify.contractorEmailConfirmationNotStored.change.hidden = do you want confirmation by email?
+
+verify.verificationDeclaration.title = Verification declaration
+verify.verificationDeclaration.heading = Declaration
+verify.verificationDeclaration.p1 = By submitting this verification request, you confirm that:
+verify.verificationDeclaration.list.l1 = a formal arrangement is in place (for example, tender accepted, contract agreed, order placed) for all of the subcontractors to be verified in this request.
+verify.verificationDeclaration.list.l2 = the information given in this verification request is correct and complete to the best of your knowledge and belief.
+verify.verificationDeclaration.warningText = If you give any false information you may face financial penalties and prosecution.
+verify.verificationDeclaration.confirm = Confirm
+
+verify.noSubcontractorsAdded.title = No subcontractors added
+verify.noSubcontractorsAdded.heading = Verify your subcontractors
+verify.noSubcontractorsAdded.p1 = You do not have any subcontractors at the moment.
+verify.noSubcontractorsAdded.p2 = You will need to
+verify.noSubcontractorsAdded.p2.link = add some subcontractors first
+verify.noSubcontractorsAdded.p2.end = before you can create a verification request or monthly return.
+verify.noSubcontractorsAdded.p3 = Back to
+verify.noSubcontractorsAdded.p3.link = Manage your subcontractors
+
+verify.contractorEmailConfirmationStored.title = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationStored.heading = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationStored.paragraph = Your email address is currently {0}. You can get a confirmation sent to this address or use a different one.
+verify.contractorEmailConfirmationStored.currentEmail = Send confirmation to current email address
+verify.contractorEmailConfirmationStored.differentEmail = Use a different email address
+verify.contractorEmailConfirmationStored.or = or
+verify.contractorEmailConfirmationStored.doNotSend = Do not send an email confirmation
+verify.contractorEmailConfirmationStored.checkYourAnswersLabel = Do you want confirmation by email?
+verify.contractorEmailConfirmationStored.error.required = Select whether you want an email confirmation of this verification request
+verify.contractorEmailConfirmationStored.change.hidden = do you want confirmation by email?
+
+verify.verifyYourSubcontractorsYesNo.title = No new subcontractors to verify
+verify.verifyYourSubcontractorsYesNo.heading = Verify your subcontractors
+verify.verifyYourSubcontractorsYesNo.p1 = There are no unverified subcontractors that you need to verify at the moment.
+verify.verifyYourSubcontractorsYesNo.p2 = However, you can reverify any of your existing subcontractors to make sure that their tax treatment is correct and up to date.
+verify.verifyYourSubcontractorsYesNo.p3 = You may want to reverify subcontractors if they:
+verify.verifyYourSubcontractorsYesNo.list.l1 = have recently changed any of their information
+verify.verifyYourSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
+verify.verifyYourSubcontractorsYesNo.list.l3 = are about to lose their verified status
+verify.verifyYourSubcontractorsYesNo.heading2 = Do you want to add existing subcontractors to this verification request?
+verify.verifyYourSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
+
+verify.verificationRequestInProgress.title = Verification request in progress
+verify.verificationRequestInProgress.heading = Verification request in progress
+verify.verificationRequestInProgress.p1 = HMRC has not responded to your previous verification request yet.
+verify.verificationRequestInProgress.p2 = You must wait for this response before you can verify any more subcontractors.
+verify.verificationRequestInProgress.p3.link = Contact HMRC
+verify.verificationRequestInProgress.p3 = if you have any questions about this verification request.
+verify.verificationRequestInProgress.p4 = Back to
+verify.verificationRequestInProgress.p4.link = Manage your subcontractors
+
+verify.selectSubcontractorsToReverify.title = Which subcontractors do you want to reverify?
+verify.selectSubcontractorsToReverify.heading = Which subcontractors do you want to reverify?
+verify.selectSubcontractorsToReverify.hint = Select the existing subcontractors you want to include in this verification request
+verify.selectSubcontractorsToReverify.checkYourAnswersLabel = Which subcontractors do you want to reverify?
+verify.selectSubcontractorsToReverify.error.required = Select at least one subcontractor to verify
+verify.selectSubcontractorsToReverify.change.hidden = select subcontractors to reverify
+verify.selectSubcontractorsToReverify.showingResults = Showing {0} to {1} of {2} results
+
+
+verify.selectSubcontractorsToReverify.include = Include
+verify.selectSubcontractorsToReverify.name = Name
+verify.selectSubcontractorsToReverify.utr = UTR
+verify.selectSubcontractorsToReverify.verified = Verified
+verify.selectSubcontractorsToReverify.verificationNumber = Verification number
+verify.selectSubcontractorsToReverify.taxTreatment = Tax treatment
+verify.selectSubcontractorsToReverify.dateAdded = Date added
+
+site.pagination.previous = Previous
+site.pagination.next = Next
+site.pagination.landmark = Pagination
+
+verify.selectSubcontractor.title = Which subcontractors do you want to verify?
+verify.selectSubcontractor.heading = Which subcontractors do you want to verify?
+verify.selectSubcontractor.hint = Select the unverified subcontractors you want to add to this verification request
+verify.selectSubcontractor.checkYourAnswersLabel = Subcontractors to verify
+verify.selectSubcontractor.showingResults = Showing {0} to {1} of {2} results
+verify.selectSubcontractor.error.required = Select at least one subcontractor to verify
+verify.selectSubcontractor.change.hidden = subcontractors to verify
+
+verify.emailAddress.title = What email address should HMRC send this confirmation to?
+verify.emailAddress.heading = What email address should HMRC send this confirmation to?
+verify.emailAddress.hint = HMRC will only use this email address to confirm this verification request. Your saved email address will not be changed.
+verify.emailAddress.hint.notStored = HMRC will only use this email address to confirm this verification request
+verify.emailAddress.checkYourAnswersLabel = Email Address
+verify.emailAddress.error.required = Enter an email address in the correct format, like name@example.com
+verify.emailAddress.error.length = Enter a valid email address in the correct format, like name@example.com, up to 254 characters
+verify.emailAddress.error.invalid = Enter a valid email address in the correct format, like name@example.com
+verify.emailAddress.change.hidden = email address
+
+verify.reverifyExistingSubcontractorsYesNo.title = Reverify existing subcontractors
+verify.reverifyExistingSubcontractorsYesNo.heading = Reverify existing subcontractors
+verify.reverifyExistingSubcontractorsYesNo.p1 = To make sure that their tax treatment is correct and up to date, you can reverify any of your existing subcontractors.
+verify.reverifyExistingSubcontractorsYesNo.p2 = You may want to reverify subcontractors if they:
+verify.reverifyExistingSubcontractorsYesNo.list.l1 = have recently changed any of their information
+verify.reverifyExistingSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
+verify.reverifyExistingSubcontractorsYesNo.list.l3 = are about to lose their verified status
+verify.reverifyExistingSubcontractorsYesNo.subHeading = Do you want to add other subcontractors to this verification request?
+verify.reverifyExistingSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
+verify.reverifyExistingSubcontractorsYesNo.checkYourAnswersLabel = Do you want to add other subcontractors to this verification request?
+verify.reverifyExistingSubcontractorsYesNo.change.hidden = do you want to add other subcontractors to this verification request?
+
+verify.verifyDepartmentalError.title = There was a problem with your verification request
+verify.verifyDepartmentalError.heading = There was a problem with your verification request
+verify.verifyDepartmentalError.p1 = The subcontractors that you selected have not been verified and your request has not been saved.
+verify.verifyDepartmentalError.contactHMRC.p1 = for more help.
+verify.verifyDepartmentalError.contactHMRC.p1.link = Contact HMRC by phone
+verify.verifyDepartmentalError.manageSubcontractors.p1 = Back to
+verify.verifyDepartmentalError.manageSubcontractors.p1.link = Manage your subcontractors
verify.inactiveSchemeWarning.title = Your scheme is not active
verify.inactiveSchemeWarning.heading = Your scheme is not active
From 4b3b904109dc190f69706f9132f5fcb376325d43 Mon Sep 17 00:00:00 2001
From: Richy Jassal <20478717+jassalrichy@users.noreply.github.com>
Date: Fri, 8 May 2026 14:43:09 +0100
Subject: [PATCH 46/48] [DTR-4472] - refactor
---
...rificationRequestSubmittedController.scala | 2 +-
...erificationRequestSubmittedViewModel.scala | 15 ++++---
...erificationRequestSubmittedView.scala.html | 4 +-
...cationRequestSubmittedControllerSpec.scala | 7 ++-
...icationRequestSubmittedViewModelSpec.scala | 44 ++++++++++++++-----
...VerificationRequestSubmittedViewSpec.scala | 7 +--
6 files changed, 54 insertions(+), 25 deletions(-)
diff --git a/app/controllers/verify/VerificationRequestSubmittedController.scala b/app/controllers/verify/VerificationRequestSubmittedController.scala
index 203455d6..7dd7da5e 100644
--- a/app/controllers/verify/VerificationRequestSubmittedController.scala
+++ b/app/controllers/verify/VerificationRequestSubmittedController.scala
@@ -40,7 +40,7 @@ class VerificationRequestSubmittedController @Inject() (
(identify andThen getData andThen requireData) { implicit request =>
val vm =
VerificationRequestSubmittedViewModel
- .fromUserAnswers(request.userAnswers)
+ .fromUserAnswers(request.userAnswers, appConfig)
Ok(view(vm))
}
}
diff --git a/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala b/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
index cd386425..9f083460 100644
--- a/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
+++ b/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
@@ -15,6 +15,7 @@
*/
package viewmodels.checkAnswers.verify
+import config.FrontendAppConfig
import models.UserAnswers
import pages.verify.*
import queries.CisIdQuery
@@ -22,7 +23,7 @@ import queries.CisIdQuery
import java.time.LocalDateTime
case class VerificationRequestSubmittedViewModel(
- cisId: Option[String] = None,
+ manageSubcontractorsUrl: String,
referenceNumber: String,
submittedAt: LocalDateTime,
subcontractorsToVerify: Seq[String] = Seq.empty,
@@ -38,14 +39,18 @@ object VerificationRequestSubmittedViewModel {
private def namesFrom[A](maybe: Option[Iterable[A]])(name: A => String): Seq[String] =
maybe.fold(Seq.empty)(_.map(name).toSeq)
- def fromUserAnswers(userAnswers: UserAnswers): VerificationRequestSubmittedViewModel =
+ def fromUserAnswers(userAnswers: UserAnswers, appConfig: FrontendAppConfig): VerificationRequestSubmittedViewModel =
+ val cisId = userAnswers.get(CisIdQuery) match {
+ case Some(cisId) => cisId
+ case _ => throw new IllegalStateException("[VerificationRequestSubmittedViewModel] cisId missing from userAnswers")
+ }
VerificationRequestSubmittedViewModel(
- cisId = userAnswers.get(CisIdQuery),
+ manageSubcontractorsUrl = s"${appConfig.manageSubcontractorsUrl}/$cisId",
// TODO: Replace below with actuals - 1. referenceNumber 2. submittedAt
referenceNumber = "Reference Number 12345",
submittedAt = LocalDateTime.now(),
- subcontractorsToVerify = namesFrom(userAnswers.get(SelectSubcontractorPage))(_.name),
- subcontractorsToReverify = namesFrom(userAnswers.get(SelectSubcontractorsToReverifyPage))(_.name),
+ subcontractorsToVerify = namesFrom(userAnswers.get(SelectSubcontractorPage))(_.name).sorted,
+ subcontractorsToReverify = namesFrom(userAnswers.get(SelectSubcontractorsToReverifyPage))(_.name).sorted,
confirmationEmail = userAnswers.get(EmailAddressPage)
)
}
diff --git a/app/views/verify/VerificationRequestSubmittedView.scala.html b/app/views/verify/VerificationRequestSubmittedView.scala.html
index 60a5408f..b9d7bb46 100644
--- a/app/views/verify/VerificationRequestSubmittedView.scala.html
+++ b/app/views/verify/VerificationRequestSubmittedView.scala.html
@@ -166,9 +166,7 @@
@link(
linkTextKey = "verify.verificationRequestSubmitted.needHelp.manageSubcontractors.link",
- linkUrl = vm.cisId.map(id =>
- s"${appConfig.manageSubcontractorsUrl}/${id}"
- ).getOrElse("#"),
+ linkUrl = vm.manageSubcontractorsUrl,
hasFullStop = true,
prefixTextKey = "verify.verificationRequestSubmitted.needHelp.p3",
)
diff --git a/test/controllers/verify/VerificationRequestSubmittedControllerSpec.scala b/test/controllers/verify/VerificationRequestSubmittedControllerSpec.scala
index 6740bdd9..2ea2b508 100644
--- a/test/controllers/verify/VerificationRequestSubmittedControllerSpec.scala
+++ b/test/controllers/verify/VerificationRequestSubmittedControllerSpec.scala
@@ -19,15 +19,20 @@ package controllers.verify
import base.SpecBase
import play.api.test.FakeRequest
import play.api.test.Helpers.*
+import queries.CisIdQuery
class VerificationRequestSubmittedControllerSpec extends SpecBase {
+ private val cisId = "12345"
+
"VerificationRequestSubmitted Controller" - {
"must return OK for a GET" in {
+ val ua = emptyUserAnswers.set(CisIdQuery, cisId).success.value
+
val application =
- applicationBuilder(userAnswers = Some(emptyUserAnswers)).build()
+ applicationBuilder(userAnswers = Some(ua)).build()
running(application) {
diff --git a/test/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModelSpec.scala b/test/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModelSpec.scala
index 339d4353..3b61ccec 100644
--- a/test/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModelSpec.scala
+++ b/test/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModelSpec.scala
@@ -16,18 +16,22 @@
package viewmodels.checkAnswers.verify
+import base.SpecBase
import models.UserAnswers
import models.SubcontractorViewModel
import org.scalatest.freespec.AnyFreeSpec
import org.scalatest.matchers.should.Matchers
import org.scalatest.TryValues.convertTryToSuccessOrFailure
+import org.scalatest.matchers.should.Matchers.shouldBe
import pages.verify.{EmailAddressPage, SelectSubcontractorPage}
+import queries.CisIdQuery
import java.time.LocalDateTime
-class VerificationRequestSubmittedViewModelSpec extends AnyFreeSpec with Matchers {
+class VerificationRequestSubmittedViewModelSpec extends SpecBase {
private val now = LocalDateTime.of(2026, 4, 27, 10, 30)
+ private val cisId = "12345"
"VerificationRequestSubmittedViewModel" - {
@@ -37,6 +41,7 @@ class VerificationRequestSubmittedViewModelSpec extends AnyFreeSpec with Matcher
val vm =
VerificationRequestSubmittedViewModel(
+ manageSubcontractorsUrl = s"${applicationConfig.manageSubcontractorsUrl}/$cisId",
referenceNumber = "REF123",
submittedAt = now,
subcontractorsToVerify = Seq("Sub A"),
@@ -50,6 +55,7 @@ class VerificationRequestSubmittedViewModelSpec extends AnyFreeSpec with Matcher
val vm =
VerificationRequestSubmittedViewModel(
+ manageSubcontractorsUrl = s"${applicationConfig.manageSubcontractorsUrl}/$cisId",
referenceNumber = "REF123",
submittedAt = now,
subcontractorsToVerify = Seq("Sub A"),
@@ -66,6 +72,7 @@ class VerificationRequestSubmittedViewModelSpec extends AnyFreeSpec with Matcher
val vm =
VerificationRequestSubmittedViewModel(
+ manageSubcontractorsUrl = s"${applicationConfig.manageSubcontractorsUrl}/$cisId",
referenceNumber = "REF123",
submittedAt = now,
subcontractorsToVerify = Seq("Sub A")
@@ -78,9 +85,9 @@ class VerificationRequestSubmittedViewModelSpec extends AnyFreeSpec with Matcher
val vm =
VerificationRequestSubmittedViewModel(
+ manageSubcontractorsUrl = s"${applicationConfig.manageSubcontractorsUrl}/$cisId",
referenceNumber = "REF123",
- submittedAt = now,
- subcontractorsToVerify = Seq.empty
+ submittedAt = now
)
vm.showVerify shouldBe false
@@ -93,6 +100,7 @@ class VerificationRequestSubmittedViewModelSpec extends AnyFreeSpec with Matcher
val vm =
VerificationRequestSubmittedViewModel(
+ manageSubcontractorsUrl = s"${applicationConfig.manageSubcontractorsUrl}/$cisId",
referenceNumber = "REF123",
submittedAt = now,
subcontractorsToVerify = Seq("Sub A"),
@@ -106,10 +114,10 @@ class VerificationRequestSubmittedViewModelSpec extends AnyFreeSpec with Matcher
val vm =
VerificationRequestSubmittedViewModel(
+ manageSubcontractorsUrl = s"${applicationConfig.manageSubcontractorsUrl}/$cisId",
referenceNumber = "REF123",
submittedAt = now,
- subcontractorsToVerify = Seq("Sub A"),
- subcontractorsToReverify = Seq.empty
+ subcontractorsToVerify = Seq("Sub A")
)
vm.showReverify shouldBe false
@@ -132,9 +140,12 @@ class VerificationRequestSubmittedViewModelSpec extends AnyFreeSpec with Matcher
.set(SelectSubcontractorPage, subcontractors)
.success
.value
+ .set(CisIdQuery, cisId)
+ .success
+ .value
val vm =
- VerificationRequestSubmittedViewModel.fromUserAnswers(userAnswers)
+ VerificationRequestSubmittedViewModel.fromUserAnswers(userAnswers, applicationConfig)
vm.subcontractorsToVerify shouldBe
Seq("Brody, Martin", "Hooper And Associates")
@@ -149,25 +160,34 @@ class VerificationRequestSubmittedViewModelSpec extends AnyFreeSpec with Matcher
.set(EmailAddressPage, "test@testmail.com")
.success
.value
+ .set(CisIdQuery, cisId)
+ .success
+ .value
val vm =
- VerificationRequestSubmittedViewModel.fromUserAnswers(userAnswers)
+ VerificationRequestSubmittedViewModel.fromUserAnswers(userAnswers, applicationConfig)
vm.confirmationEmail shouldBe Some("test@testmail.com")
- vm.showEmail shouldBe true
+ vm.showEmail shouldBe true
+ vm.subcontractorsToVerify shouldBe Seq.empty
+ vm.showVerify shouldBe false
+ vm.subcontractorsToReverify shouldBe Seq.empty
+ vm.showReverify shouldBe false
}
"must return empty values when pages are absent" in {
val vm =
VerificationRequestSubmittedViewModel.fromUserAnswers(
- UserAnswers("id")
+ UserAnswers("id").set(CisIdQuery, cisId).success.value, applicationConfig
)
vm.subcontractorsToVerify shouldBe Seq.empty
- vm.confirmationEmail shouldBe None
- vm.showVerify shouldBe false
- vm.showEmail shouldBe false
+ vm.subcontractorsToReverify shouldBe Seq.empty
+ vm.confirmationEmail shouldBe None
+ vm.showVerify shouldBe false
+ vm.showReverify shouldBe false
+ vm.showEmail shouldBe false
}
}
}
diff --git a/test/views/verify/VerificationRequestSubmittedViewSpec.scala b/test/views/verify/VerificationRequestSubmittedViewSpec.scala
index ffc4c23c..0282f02d 100644
--- a/test/views/verify/VerificationRequestSubmittedViewSpec.scala
+++ b/test/views/verify/VerificationRequestSubmittedViewSpec.scala
@@ -16,6 +16,7 @@
package views.verify
+import base.SpecBase
import config.FrontendAppConfig
import org.jsoup.Jsoup
import org.scalatest.matchers.must.Matchers
@@ -30,9 +31,9 @@ import views.html.verify.VerificationRequestSubmittedView
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
-class VerificationRequestSubmittedViewSpec extends AnyWordSpec with Matchers with GuiceOneAppPerSuite {
+class VerificationRequestSubmittedViewSpec extends SpecBase with GuiceOneAppPerSuite {
- "VerificationRequestSubmittedView" should {
+ "VerificationRequestSubmittedView" - {
"render the page correctly when reverify list and email are present" in new Setup {
@@ -168,7 +169,7 @@ class VerificationRequestSubmittedViewSpec extends AnyWordSpec with Matchers wit
val viewModel: VerificationRequestSubmittedViewModel =
VerificationRequestSubmittedViewModel(
- cisId = Some(cisId),
+ manageSubcontractorsUrl = s"${applicationConfig.manageSubcontractorsUrl}/$cisId",
referenceNumber = referenceNumber,
submittedAt = submittedAt,
subcontractorsToVerify = subcontractorsToVerify,
From 80a3023e5aeb647b088e25480eddcdd26b65f30d Mon Sep 17 00:00:00 2001
From: Richy Jassal <20478717+jassalrichy@users.noreply.github.com>
Date: Fri, 8 May 2026 14:47:37 +0100
Subject: [PATCH 47/48] [DTR-4472] - scalafmtAll
---
...erificationRequestSubmittedViewModel.scala | 3 +-
conf/app.routes | 68 ++---
conf/messages.en | 268 +++++++++---------
...icationRequestSubmittedViewModelSpec.scala | 25 +-
4 files changed, 180 insertions(+), 184 deletions(-)
diff --git a/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala b/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
index 9f083460..49c5e279 100644
--- a/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
+++ b/app/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModel.scala
@@ -42,7 +42,8 @@ object VerificationRequestSubmittedViewModel {
def fromUserAnswers(userAnswers: UserAnswers, appConfig: FrontendAppConfig): VerificationRequestSubmittedViewModel =
val cisId = userAnswers.get(CisIdQuery) match {
case Some(cisId) => cisId
- case _ => throw new IllegalStateException("[VerificationRequestSubmittedViewModel] cisId missing from userAnswers")
+ case _ =>
+ throw new IllegalStateException("[VerificationRequestSubmittedViewModel] cisId missing from userAnswers")
}
VerificationRequestSubmittedViewModel(
manageSubcontractorsUrl = s"${appConfig.manageSubcontractorsUrl}/$cisId",
diff --git a/conf/app.routes b/conf/app.routes
index 00c3ff11..71389899 100644
--- a/conf/app.routes
+++ b/conf/app.routes
@@ -350,58 +350,58 @@ POST /add/trust/check-your-answers controllers.add.trust.TrustCh
GET /add/trust/subcontractor-added controllers.add.SubcontractorAddedController.trustSubcontractorAdded()
# Verify
-GET /verify/confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onPageLoad(mode: Mode = NormalMode)
-POST /verify/confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onSubmit(mode: Mode = NormalMode)
-GET /verify/change-confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onPageLoad(mode: Mode = CheckMode)
-POST /verify/change-confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onSubmit(mode: Mode = CheckMode)
+GET /verify/confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onPageLoad(mode: Mode = NormalMode)
+POST /verify/confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onSubmit(mode: Mode = NormalMode)
+GET /verify/change-confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onPageLoad(mode: Mode = CheckMode)
+POST /verify/change-confirmation-email-not-stored controllers.verify.ContractorEmailConfirmationNotStoredController.onSubmit(mode: Mode = CheckMode)
-GET /verify/verification-declaration controllers.verify.VerificationDeclarationController.onPageLoad(mode: Mode = NormalMode)
-POST /verify/verification-declaration controllers.verify.VerificationDeclarationController.onSubmit(mode: Mode = NormalMode)
+GET /verify/verification-declaration controllers.verify.VerificationDeclarationController.onPageLoad(mode: Mode = NormalMode)
+POST /verify/verification-declaration controllers.verify.VerificationDeclarationController.onSubmit(mode: Mode = NormalMode)
-GET /verify/submitting-verification-request controllers.verify.SubmissionSendingController.onPageLoad()
+GET /verify/submitting-verification-request controllers.verify.SubmissionSendingController.onPageLoad()
-GET /verify/no-subcontractors-added controllers.verify.NoSubcontractorsAddedController.onPageLoad()
+GET /verify/no-subcontractors-added controllers.verify.NoSubcontractorsAddedController.onPageLoad()
-GET /verify/newest controllers.verify.NewestVerificationBatchController.onPageLoad()
+GET /verify/newest controllers.verify.NewestVerificationBatchController.onPageLoad()
-GET /verify/current controllers.verify.CurrentVerificationBatchController.onPageLoad()
+GET /verify/current controllers.verify.CurrentVerificationBatchController.onPageLoad()
-GET /verify/verification-request-in-progress controllers.verify.VerificationRequestInProgressController.onPageLoad()
+GET /verify/verification-request-in-progress controllers.verify.VerificationRequestInProgressController.onPageLoad()
-GET /verify/confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = NormalMode)
-POST /verify/confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onSubmit(mode: Mode = NormalMode)
-GET /verify/change-confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = CheckMode)
-POST /verify/change-confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onSubmit(mode: Mode = CheckMode)
+GET /verify/confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = NormalMode)
+POST /verify/confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onSubmit(mode: Mode = NormalMode)
+GET /verify/change-confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onPageLoad(mode: Mode = CheckMode)
+POST /verify/change-confirmation-email-stored controllers.verify.ContractorEmailConfirmationStoredController.onSubmit(mode: Mode = CheckMode)
-GET /verify/select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
-POST /verify/select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
-GET /verify/change-select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
-POST /verify/change-select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
+GET /verify/select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
+POST /verify/select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
+GET /verify/change-select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
+POST /verify/change-select-subcontractors-to-reverify controllers.verify.SelectSubcontractorsToReverifyController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
-GET /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
-POST /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
-GET /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
-POST /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
+GET /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = NormalMode, page: Int ?= 1)
+POST /verify/select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = NormalMode, page: Int ?= 1)
+GET /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onPageLoad(mode: Mode = CheckMode, page: Int ?= 1)
+POST /verify/change-select-subcontractors-to-verify controllers.verify.SelectSubcontractorController.onSubmit(mode: Mode = CheckMode, page: Int ?= 1)
-GET /verify/enter-confirmation-email controllers.verify.EmailAddressController.onPageLoad(mode: Mode = NormalMode)
-POST /verify/enter-confirmation-email controllers.verify.EmailAddressController.onSubmit(mode: Mode = NormalMode)
-GET /verify/change-enter-confirmation-email controllers.verify.EmailAddressController.onPageLoad(mode: Mode = CheckMode)
-POST /verify/change-enter-confirmation-email controllers.verify.EmailAddressController.onSubmit(mode: Mode = CheckMode)
+GET /verify/enter-confirmation-email controllers.verify.EmailAddressController.onPageLoad(mode: Mode = NormalMode)
+POST /verify/enter-confirmation-email controllers.verify.EmailAddressController.onSubmit(mode: Mode = NormalMode)
+GET /verify/change-enter-confirmation-email controllers.verify.EmailAddressController.onPageLoad(mode: Mode = CheckMode)
+POST /verify/change-enter-confirmation-email controllers.verify.EmailAddressController.onSubmit(mode: Mode = CheckMode)
GET /verify/reverify-existing-subcontractors controllers.verify.ReverifyExistingSubcontractorsYesNoController.onPageLoad(mode: Mode = NormalMode)
POST /verify/reverify-existing-subcontractors controllers.verify.ReverifyExistingSubcontractorsYesNoController.onSubmit(mode: Mode = NormalMode)
GET /verify/change-reverify-existing-subcontractors controllers.verify.ReverifyExistingSubcontractorsYesNoController.onPageLoad(mode: Mode = CheckMode)
POST /verify/change-reverify-existing-subcontractors controllers.verify.ReverifyExistingSubcontractorsYesNoController.onSubmit(mode: Mode = CheckMode)
-GET /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onPageLoad
-POST /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onSubmit
+GET /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onPageLoad
+POST /verify/no-new-subcontractors-to-verify controllers.verify.VerifyYourSubcontractorsYesNoController.onSubmit
-GET /verify/problem-with-verification-warning controllers.verify.VerifyDepartmentalErrorController.onPageLoad()
+GET /verify/problem-with-verification-warning controllers.verify.VerifyDepartmentalErrorController.onPageLoad()
-GET /verify/inactive-scheme-warning controllers.verify.InactiveSchemeWarningController.onPageLoad()
+GET /verify/inactive-scheme-warning controllers.verify.InactiveSchemeWarningController.onPageLoad()
-GET /verify/verification-not-submitted-warning controllers.verify.VerificationNotSubmittedWarningController.onPageLoad()
+GET /verify/verification-not-submitted-warning controllers.verify.VerificationNotSubmittedWarningController.onPageLoad()
-GET /verify/no-subcontractors-selected-warning controllers.verify.NoSubcontractorsSelectedWarningController.onPageLoad()
+GET /verify/no-subcontractors-selected-warning controllers.verify.NoSubcontractorsSelectedWarningController.onPageLoad()
-GET /verify/verification-request-submitted controllers.verify.VerificationRequestSubmittedController.onPageLoad()
+GET /verify/verification-request-submitted controllers.verify.VerificationRequestSubmittedController.onPageLoad()
diff --git a/conf/messages.en b/conf/messages.en
index d87494ed..df8829fe 100644
--- a/conf/messages.en
+++ b/conf/messages.en
@@ -775,143 +775,137 @@ trustCheckYourAnswers.trailText = By adding this
trustCheckYourAnswers.continue = Accept and submit
# Verify
-verify.submissionSending.title = Submitting your verification request
-verify.submissionSending.heading = Your verification request is being sent to HMRC
-verify.submissionSending.paragraph = Do not refresh this page or press the back button while your submission is being processed.
-
-verify.contractorEmailConfirmationNotStored.title = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationNotStored.heading = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationNotStored.checkYourAnswersLabel = Do you want confirmation by email?
-verify.contractorEmailConfirmationNotStored.error.required = Select yes if you want an email confirmation of this verification request
-verify.contractorEmailConfirmationNotStored.change.hidden = do you want confirmation by email?
-
-verify.verificationDeclaration.title = Verification declaration
-verify.verificationDeclaration.heading = Declaration
-verify.verificationDeclaration.p1 = By submitting this verification request, you confirm that:
-verify.verificationDeclaration.list.l1 = a formal arrangement is in place (for example, tender accepted, contract agreed, order placed) for all of the subcontractors to be verified in this request.
-verify.verificationDeclaration.list.l2 = the information given in this verification request is correct and complete to the best of your knowledge and belief.
-verify.verificationDeclaration.warningText = If you give any false information you may face financial penalties and prosecution.
-verify.verificationDeclaration.confirm = Confirm
-
-verify.noSubcontractorsAdded.title = No subcontractors added
-verify.noSubcontractorsAdded.heading = Verify your subcontractors
-verify.noSubcontractorsAdded.p1 = You do not have any subcontractors at the moment.
-verify.noSubcontractorsAdded.p2 = You will need to
-verify.noSubcontractorsAdded.p2.link = add some subcontractors first
-verify.noSubcontractorsAdded.p2.end = before you can create a verification request or monthly return.
-verify.noSubcontractorsAdded.p3 = Back to
-verify.noSubcontractorsAdded.p3.link = Manage your subcontractors
-
-verify.contractorEmailConfirmationStored.title = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationStored.heading = Do you want an email confirmation of this verification request?
-verify.contractorEmailConfirmationStored.paragraph = Your email address is currently {0}. You can get a confirmation sent to this address or use a different one.
-verify.contractorEmailConfirmationStored.currentEmail = Send confirmation to current email address
-verify.contractorEmailConfirmationStored.differentEmail = Use a different email address
-verify.contractorEmailConfirmationStored.or = or
-verify.contractorEmailConfirmationStored.doNotSend = Do not send an email confirmation
-verify.contractorEmailConfirmationStored.checkYourAnswersLabel = Do you want confirmation by email?
-verify.contractorEmailConfirmationStored.error.required = Select whether you want an email confirmation of this verification request
-verify.contractorEmailConfirmationStored.change.hidden = do you want confirmation by email?
-
-verify.verifyYourSubcontractorsYesNo.title = No new subcontractors to verify
-verify.verifyYourSubcontractorsYesNo.heading = Verify your subcontractors
-verify.verifyYourSubcontractorsYesNo.p1 = There are no unverified subcontractors that you need to verify at the moment.
-verify.verifyYourSubcontractorsYesNo.p2 = However, you can reverify any of your existing subcontractors to make sure that their tax treatment is correct and up to date.
-verify.verifyYourSubcontractorsYesNo.p3 = You may want to reverify subcontractors if they:
-verify.verifyYourSubcontractorsYesNo.list.l1 = have recently changed any of their information
-verify.verifyYourSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
-verify.verifyYourSubcontractorsYesNo.list.l3 = are about to lose their verified status
-verify.verifyYourSubcontractorsYesNo.heading2 = Do you want to add existing subcontractors to this verification request?
-verify.verifyYourSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
-
-verify.verificationRequestInProgress.title = Verification request in progress
-verify.verificationRequestInProgress.heading = Verification request in progress
-verify.verificationRequestInProgress.p1 = HMRC has not responded to your previous verification request yet.
-verify.verificationRequestInProgress.p2 = You must wait for this response before you can verify any more subcontractors.
-verify.verificationRequestInProgress.p3.link = Contact HMRC
-verify.verificationRequestInProgress.p3 = if you have any questions about this verification request.
-verify.verificationRequestInProgress.p4 = Back to
-verify.verificationRequestInProgress.p4.link = Manage your subcontractors
-
-verify.selectSubcontractorsToReverify.title = Which subcontractors do you want to reverify?
-verify.selectSubcontractorsToReverify.heading = Which subcontractors do you want to reverify?
-verify.selectSubcontractorsToReverify.hint = Select the existing subcontractors you want to include in this verification request
-verify.selectSubcontractorsToReverify.checkYourAnswersLabel = Which subcontractors do you want to reverify?
-verify.selectSubcontractorsToReverify.error.required = Select at least one subcontractor to verify
-verify.selectSubcontractorsToReverify.change.hidden = select subcontractors to reverify
-verify.selectSubcontractorsToReverify.showingResults = Showing {0} to {1} of {2} results
-
-
-verify.selectSubcontractorsToReverify.include = Include
-verify.selectSubcontractorsToReverify.name = Name
-verify.selectSubcontractorsToReverify.utr = UTR
-verify.selectSubcontractorsToReverify.verified = Verified
-verify.selectSubcontractorsToReverify.verificationNumber = Verification number
-verify.selectSubcontractorsToReverify.taxTreatment = Tax treatment
-verify.selectSubcontractorsToReverify.dateAdded = Date added
-
-site.pagination.previous = Previous
-site.pagination.next = Next
-site.pagination.landmark = Pagination
-
-verify.selectSubcontractor.title = Which subcontractors do you want to verify?
-verify.selectSubcontractor.heading = Which subcontractors do you want to verify?
-verify.selectSubcontractor.hint = Select the unverified subcontractors you want to add to this verification request
-verify.selectSubcontractor.checkYourAnswersLabel = Subcontractors to verify
-verify.selectSubcontractor.showingResults = Showing {0} to {1} of {2} results
-verify.selectSubcontractor.error.required = Select at least one subcontractor to verify
-verify.selectSubcontractor.change.hidden = subcontractors to verify
-
-verify.emailAddress.title = What email address should HMRC send this confirmation to?
-verify.emailAddress.heading = What email address should HMRC send this confirmation to?
-verify.emailAddress.hint = HMRC will only use this email address to confirm this verification request. Your saved email address will not be changed.
-verify.emailAddress.hint.notStored = HMRC will only use this email address to confirm this verification request
-verify.emailAddress.checkYourAnswersLabel = Email Address
-verify.emailAddress.error.required = Enter an email address in the correct format, like name@example.com
-verify.emailAddress.error.length = Enter a valid email address in the correct format, like name@example.com, up to 254 characters
-verify.emailAddress.error.invalid = Enter a valid email address in the correct format, like name@example.com
-verify.emailAddress.change.hidden = email address
-
-verify.reverifyExistingSubcontractorsYesNo.title = Reverify existing subcontractors
-verify.reverifyExistingSubcontractorsYesNo.heading = Reverify existing subcontractors
-verify.reverifyExistingSubcontractorsYesNo.p1 = To make sure that their tax treatment is correct and up to date, you can reverify any of your existing subcontractors.
-verify.reverifyExistingSubcontractorsYesNo.p2 = You may want to reverify subcontractors if they:
-verify.reverifyExistingSubcontractorsYesNo.list.l1 = have recently changed any of their information
-verify.reverifyExistingSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
-verify.reverifyExistingSubcontractorsYesNo.list.l3 = are about to lose their verified status
-verify.reverifyExistingSubcontractorsYesNo.subHeading = Do you want to add other subcontractors to this verification request?
-verify.reverifyExistingSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
-verify.reverifyExistingSubcontractorsYesNo.checkYourAnswersLabel = Do you want to add other subcontractors to this verification request?
-verify.reverifyExistingSubcontractorsYesNo.change.hidden = do you want to add other subcontractors to this verification request?
-
-verify.verifyDepartmentalError.title = There was a problem with your verification request
-verify.verifyDepartmentalError.heading = There was a problem with your verification request
-verify.verifyDepartmentalError.p1 = The subcontractors that you selected have not been verified and your request has not been saved.
-verify.verifyDepartmentalError.contactHMRC.p1 = for more help.
-verify.verifyDepartmentalError.contactHMRC.p1.link = Contact HMRC by phone
-verify.verifyDepartmentalError.manageSubcontractors.p1 = Back to
-verify.verifyDepartmentalError.manageSubcontractors.p1.link = Manage your subcontractors
-
-verify.inactiveSchemeWarning.title = Your scheme is not active
-verify.inactiveSchemeWarning.heading = Your scheme is not active
-verify.inactiveSchemeWarning.p1 = Your scheme was recently made inactive.
-verify.inactiveSchemeWarning.p2 = You must contact HMRC by phone to reactivate your scheme before you can pay any more subcontractors.
-verify.inactiveSchemeWarning.warningText = Any verification request that you send while your scheme is inactive will fail when you try to submit it.
-verify.inactiveSchemeWarning.cancel = Cancel request
-
-verify.verificationNotSubmittedWarning.title = Your verification request cannot be submitted
-verify.verificationNotSubmittedWarning.heading = Your verification request cannot be submitted
-verify.verificationNotSubmittedWarning.link1.prefix = You must
-verify.verificationNotSubmittedWarning.link1.text = contact HMRC
-verify.verificationNotSubmittedWarning.link1.suffix = for more help.
-verify.verificationNotSubmittedWarning.link2.text = Manage your subcontractors
-verify.verificationNotSubmittedWarning.link2.prefix = Back to
-
-verify.noSubcontractorsSelectedWarning.title = Select at least one subcontractor
-verify.noSubcontractorsSelectedWarning.heading = Your verification request cannot be submitted
-verify.noSubcontractorsSelectedWarning.p = You need to select at least one subcontractor to send a verification request.
-verify.noSubcontractorsSelectedWarning.button = Select subcontractors
-verify.noSubcontractorsSelectedWarning.cancel = Cancel request
+verify.submissionSending.title = Submitting your verification request
+verify.submissionSending.heading = Your verification request is being sent to HMRC
+verify.submissionSending.paragraph = Do not refresh this page or press the back button while your submission is being processed.
+
+verify.contractorEmailConfirmationNotStored.title = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationNotStored.heading = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationNotStored.checkYourAnswersLabel = Do you want confirmation by email?
+verify.contractorEmailConfirmationNotStored.error.required = Select yes if you want an email confirmation of this verification request
+verify.contractorEmailConfirmationNotStored.change.hidden = do you want confirmation by email?
+
+verify.verificationDeclaration.title = Verification declaration
+verify.verificationDeclaration.heading = Declaration
+verify.verificationDeclaration.p1 = By submitting this verification request, you confirm that:
+verify.verificationDeclaration.list.l1 = a formal arrangement is in place (for example, tender accepted, contract agreed, order placed) for all of the subcontractors to be verified in this request.
+verify.verificationDeclaration.list.l2 = the information given in this verification request is correct and complete to the best of your knowledge and belief.
+verify.verificationDeclaration.warningText = If you give any false information you may face financial penalties and prosecution.
+verify.verificationDeclaration.confirm = Confirm
+
+verify.noSubcontractorsAdded.title = No subcontractors added
+verify.noSubcontractorsAdded.heading = Verify your subcontractors
+verify.noSubcontractorsAdded.p1 = You do not have any subcontractors at the moment.
+verify.noSubcontractorsAdded.p2 = You will need to
+verify.noSubcontractorsAdded.p2.link = add some subcontractors first
+verify.noSubcontractorsAdded.p2.end = before you can create a verification request or monthly return.
+verify.noSubcontractorsAdded.p3 = Back to
+verify.noSubcontractorsAdded.p3.link = Manage your subcontractors
+
+verify.contractorEmailConfirmationStored.title = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationStored.heading = Do you want an email confirmation of this verification request?
+verify.contractorEmailConfirmationStored.paragraph = Your email address is currently {0}. You can get a confirmation sent to this address or use a different one.
+verify.contractorEmailConfirmationStored.currentEmail = Send confirmation to current email address
+verify.contractorEmailConfirmationStored.differentEmail = Use a different email address
+verify.contractorEmailConfirmationStored.or = or
+verify.contractorEmailConfirmationStored.doNotSend = Do not send an email confirmation
+verify.contractorEmailConfirmationStored.checkYourAnswersLabel = Do you want confirmation by email?
+verify.contractorEmailConfirmationStored.error.required = Select whether you want an email confirmation of this verification request
+verify.contractorEmailConfirmationStored.change.hidden = do you want confirmation by email?
+
+verify.verifyYourSubcontractorsYesNo.title = No new subcontractors to verify
+verify.verifyYourSubcontractorsYesNo.heading = Verify your subcontractors
+verify.verifyYourSubcontractorsYesNo.p1 = There are no unverified subcontractors that you need to verify at the moment.
+verify.verifyYourSubcontractorsYesNo.p2 = However, you can reverify any of your existing subcontractors to make sure that their tax treatment is correct and up to date.
+verify.verifyYourSubcontractorsYesNo.p3 = You may want to reverify subcontractors if they:
+verify.verifyYourSubcontractorsYesNo.list.l1 = have recently changed any of their information
+verify.verifyYourSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
+verify.verifyYourSubcontractorsYesNo.list.l3 = are about to lose their verified status
+verify.verifyYourSubcontractorsYesNo.heading2 = Do you want to add existing subcontractors to this verification request?
+verify.verifyYourSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
+
+verify.verificationRequestInProgress.title = Verification request in progress
+verify.verificationRequestInProgress.heading = Verification request in progress
+verify.verificationRequestInProgress.p1 = HMRC has not responded to your previous verification request yet.
+verify.verificationRequestInProgress.p2 = You must wait for this response before you can verify any more subcontractors.
+verify.verificationRequestInProgress.p3.link = Contact HMRC
+verify.verificationRequestInProgress.p3 = if you have any questions about this verification request.
+verify.verificationRequestInProgress.p4 = Back to
+verify.verificationRequestInProgress.p4.link = Manage your subcontractors
+
+verify.selectSubcontractorsToReverify.title = Which subcontractors do you want to reverify?
+verify.selectSubcontractorsToReverify.heading = Which subcontractors do you want to reverify?
+verify.selectSubcontractorsToReverify.hint = Select the existing subcontractors you want to include in this verification request
+verify.selectSubcontractorsToReverify.checkYourAnswersLabel = Which subcontractors do you want to reverify?
+verify.selectSubcontractorsToReverify.error.required = Select at least one subcontractor to verify
+verify.selectSubcontractorsToReverify.change.hidden = select subcontractors to reverify
+verify.selectSubcontractorsToReverify.showingResults = Showing {0} to {1} of {2} results
+verify.selectSubcontractorsToReverify.include = Include
+verify.selectSubcontractorsToReverify.name = Name
+verify.selectSubcontractorsToReverify.utr = UTR
+verify.selectSubcontractorsToReverify.verified = Verified
+verify.selectSubcontractorsToReverify.verificationNumber = Verification number
+verify.selectSubcontractorsToReverify.taxTreatment = Tax treatment
+verify.selectSubcontractorsToReverify.dateAdded = Date added
+
+verify.selectSubcontractor.title = Which subcontractors do you want to verify?
+verify.selectSubcontractor.heading = Which subcontractors do you want to verify?
+verify.selectSubcontractor.hint = Select the unverified subcontractors you want to add to this verification request
+verify.selectSubcontractor.checkYourAnswersLabel = Subcontractors to verify
+verify.selectSubcontractor.showingResults = Showing {0} to {1} of {2} results
+verify.selectSubcontractor.error.required = Select at least one subcontractor to verify
+verify.selectSubcontractor.change.hidden = subcontractors to verify
+
+verify.emailAddress.title = What email address should HMRC send this confirmation to?
+verify.emailAddress.heading = What email address should HMRC send this confirmation to?
+verify.emailAddress.hint = HMRC will only use this email address to confirm this verification request. Your saved email address will not be changed.
+verify.emailAddress.hint.notStored = HMRC will only use this email address to confirm this verification request
+verify.emailAddress.checkYourAnswersLabel = Email Address
+verify.emailAddress.error.required = Enter an email address in the correct format, like name@example.com
+verify.emailAddress.error.length = Enter a valid email address in the correct format, like name@example.com, up to 254 characters
+verify.emailAddress.error.invalid = Enter a valid email address in the correct format, like name@example.com
+verify.emailAddress.change.hidden = email address
+
+verify.reverifyExistingSubcontractorsYesNo.title = Reverify existing subcontractors
+verify.reverifyExistingSubcontractorsYesNo.heading = Reverify existing subcontractors
+verify.reverifyExistingSubcontractorsYesNo.p1 = To make sure that their tax treatment is correct and up to date, you can reverify any of your existing subcontractors.
+verify.reverifyExistingSubcontractorsYesNo.p2 = You may want to reverify subcontractors if they:
+verify.reverifyExistingSubcontractorsYesNo.list.l1 = have recently changed any of their information
+verify.reverifyExistingSubcontractorsYesNo.list.l2 = have not been included on a return recently and have lost their verified status
+verify.reverifyExistingSubcontractorsYesNo.list.l3 = are about to lose their verified status
+verify.reverifyExistingSubcontractorsYesNo.subHeading = Do you want to add other subcontractors to this verification request?
+verify.reverifyExistingSubcontractorsYesNo.error.required = Select yes if you want to add existing subcontractors to this verification request
+verify.reverifyExistingSubcontractorsYesNo.checkYourAnswersLabel = Do you want to add other subcontractors to this verification request?
+verify.reverifyExistingSubcontractorsYesNo.change.hidden = do you want to add other subcontractors to this verification request?
+
+verify.verifyDepartmentalError.title = There was a problem with your verification request
+verify.verifyDepartmentalError.heading = There was a problem with your verification request
+verify.verifyDepartmentalError.p1 = The subcontractors that you selected have not been verified and your request has not been saved.
+verify.verifyDepartmentalError.contactHMRC.p1 = for more help.
+verify.verifyDepartmentalError.contactHMRC.p1.link = Contact HMRC by phone
+verify.verifyDepartmentalError.manageSubcontractors.p1 = Back to
+verify.verifyDepartmentalError.manageSubcontractors.p1.link = Manage your subcontractors
+
+verify.inactiveSchemeWarning.title = Your scheme is not active
+verify.inactiveSchemeWarning.heading = Your scheme is not active
+verify.inactiveSchemeWarning.p1 = Your scheme was recently made inactive.
+verify.inactiveSchemeWarning.p2 = You must contact HMRC by phone to reactivate your scheme before you can pay any more subcontractors.
+verify.inactiveSchemeWarning.warningText = Any verification request that you send while your scheme is inactive will fail when you try to submit it.
+verify.inactiveSchemeWarning.cancel = Cancel request
+
+verify.verificationNotSubmittedWarning.title = Your verification request cannot be submitted
+verify.verificationNotSubmittedWarning.heading = Your verification request cannot be submitted
+verify.verificationNotSubmittedWarning.link1.prefix = You must
+verify.verificationNotSubmittedWarning.link1.text = contact HMRC
+verify.verificationNotSubmittedWarning.link1.suffix = for more help.
+verify.verificationNotSubmittedWarning.link2.text = Manage your subcontractors
+verify.verificationNotSubmittedWarning.link2.prefix = Back to
+
+verify.noSubcontractorsSelectedWarning.title = Select at least one subcontractor
+verify.noSubcontractorsSelectedWarning.heading = Your verification request cannot be submitted
+verify.noSubcontractorsSelectedWarning.p = You need to select at least one subcontractor to send a verification request.
+verify.noSubcontractorsSelectedWarning.button = Select subcontractors
+verify.noSubcontractorsSelectedWarning.cancel = Cancel request
verify.verificationRequestSubmitted.title = Verification request submitted
verify.verificationRequestSubmitted.heading = Verification request submitted
diff --git a/test/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModelSpec.scala b/test/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModelSpec.scala
index 3b61ccec..8d65ac5e 100644
--- a/test/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModelSpec.scala
+++ b/test/viewmodels/checkAnswers/verify/VerificationRequestSubmittedViewModelSpec.scala
@@ -30,7 +30,7 @@ import java.time.LocalDateTime
class VerificationRequestSubmittedViewModelSpec extends SpecBase {
- private val now = LocalDateTime.of(2026, 4, 27, 10, 30)
+ private val now = LocalDateTime.of(2026, 4, 27, 10, 30)
private val cisId = "12345"
"VerificationRequestSubmittedViewModel" - {
@@ -167,27 +167,28 @@ class VerificationRequestSubmittedViewModelSpec extends SpecBase {
val vm =
VerificationRequestSubmittedViewModel.fromUserAnswers(userAnswers, applicationConfig)
- vm.confirmationEmail shouldBe Some("test@testmail.com")
- vm.showEmail shouldBe true
- vm.subcontractorsToVerify shouldBe Seq.empty
- vm.showVerify shouldBe false
+ vm.confirmationEmail shouldBe Some("test@testmail.com")
+ vm.showEmail shouldBe true
+ vm.subcontractorsToVerify shouldBe Seq.empty
+ vm.showVerify shouldBe false
vm.subcontractorsToReverify shouldBe Seq.empty
- vm.showReverify shouldBe false
+ vm.showReverify shouldBe false
}
"must return empty values when pages are absent" in {
val vm =
VerificationRequestSubmittedViewModel.fromUserAnswers(
- UserAnswers("id").set(CisIdQuery, cisId).success.value, applicationConfig
+ UserAnswers("id").set(CisIdQuery, cisId).success.value,
+ applicationConfig
)
- vm.subcontractorsToVerify shouldBe Seq.empty
+ vm.subcontractorsToVerify shouldBe Seq.empty
vm.subcontractorsToReverify shouldBe Seq.empty
- vm.confirmationEmail shouldBe None
- vm.showVerify shouldBe false
- vm.showReverify shouldBe false
- vm.showEmail shouldBe false
+ vm.confirmationEmail shouldBe None
+ vm.showVerify shouldBe false
+ vm.showReverify shouldBe false
+ vm.showEmail shouldBe false
}
}
}
From 3c995fd0b2d5248e59408f7addea5eb4e0a4b8e9 Mon Sep 17 00:00:00 2001
From: Richy Jassal <20478717+jassalrichy@users.noreply.github.com>
Date: Fri, 8 May 2026 14:51:54 +0100
Subject: [PATCH 48/48] [DTR-4472] - remove unused imports
---
test/views/verify/VerificationRequestSubmittedViewSpec.scala | 2 --
1 file changed, 2 deletions(-)
diff --git a/test/views/verify/VerificationRequestSubmittedViewSpec.scala b/test/views/verify/VerificationRequestSubmittedViewSpec.scala
index 0282f02d..c042b269 100644
--- a/test/views/verify/VerificationRequestSubmittedViewSpec.scala
+++ b/test/views/verify/VerificationRequestSubmittedViewSpec.scala
@@ -19,8 +19,6 @@ package views.verify
import base.SpecBase
import config.FrontendAppConfig
import org.jsoup.Jsoup
-import org.scalatest.matchers.must.Matchers
-import org.scalatest.wordspec.AnyWordSpec
import org.scalatestplus.play.guice.GuiceOneAppPerSuite
import play.api.i18n.{Lang, Messages, MessagesApi, MessagesImpl}
import play.api.mvc.Request