Skip to content

Commit 7f4bcf7

Browse files
DTR-3149 Company CRN YesNo page (#79)
* DTR-3149 Company CRN YesNo page
1 parent 838a4d3 commit 7f4bcf7

File tree

11 files changed

+476
-48
lines changed

11 files changed

+476
-48
lines changed

app/controllers/add/company/CompanyCrnYesNoController.scala

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import controllers.actions.*
2020
import forms.add.company.CompanyCrnYesNoFormProvider
2121
import models.Mode
2222
import navigation.Navigator
23-
import pages.add.company.CompanyCrnYesNoPage
23+
import pages.add.company.{CompanyCrnYesNoPage, CompanyNamePage}
2424
import play.api.i18n.{I18nSupport, MessagesApi}
2525
import play.api.mvc.{Action, AnyContent, MessagesControllerComponents}
2626
import repositories.SessionRepository
@@ -47,26 +47,35 @@ class CompanyCrnYesNoController @Inject() (
4747
val form = formProvider()
4848

4949
def onPageLoad(mode: Mode): Action[AnyContent] = (identify andThen getData andThen requireData) { implicit request =>
50+
request.userAnswers
51+
.get(CompanyNamePage)
52+
.map { companyName =>
53+
val preparedForm = request.userAnswers.get(CompanyCrnYesNoPage) match {
54+
case None => form
55+
case Some(value) => form.fill(value)
56+
}
5057

51-
val preparedForm = request.userAnswers.get(CompanyCrnYesNoPage) match {
52-
case None => form
53-
case Some(value) => form.fill(value)
54-
}
55-
56-
Ok(view(preparedForm, mode))
58+
Ok(view(preparedForm, mode, companyName))
59+
}
60+
.getOrElse(Redirect(controllers.routes.JourneyRecoveryController.onPageLoad()))
5761
}
5862

5963
def onSubmit(mode: Mode): Action[AnyContent] = (identify andThen getData andThen requireData).async {
6064
implicit request =>
61-
form
62-
.bindFromRequest()
63-
.fold(
64-
formWithErrors => Future.successful(BadRequest(view(formWithErrors, mode))),
65-
value =>
66-
for {
67-
updatedAnswers <- Future.fromTry(request.userAnswers.set(CompanyCrnYesNoPage, value))
68-
_ <- sessionRepository.set(updatedAnswers)
69-
} yield Redirect(navigator.nextPage(CompanyCrnYesNoPage, mode, updatedAnswers))
70-
)
65+
request.userAnswers
66+
.get(CompanyNamePage)
67+
.map { companyName =>
68+
form
69+
.bindFromRequest()
70+
.fold(
71+
formWithErrors => Future.successful(BadRequest(view(formWithErrors, mode, companyName))),
72+
value =>
73+
for {
74+
updatedAnswers <- Future.fromTry(request.userAnswers.set(CompanyCrnYesNoPage, value))
75+
_ <- sessionRepository.set(updatedAnswers)
76+
} yield Redirect(navigator.nextPage(CompanyCrnYesNoPage, mode, updatedAnswers))
77+
)
78+
}
79+
.getOrElse(Future.successful(Redirect(controllers.routes.JourneyRecoveryController.onPageLoad())))
7180
}
7281
}

app/navigation/Navigator.scala

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ class Navigator @Inject() () {
111111
_ => controllers.add.company.routes.CompanyWorksReferenceYesNoController.onPageLoad(NormalMode)
112112
case CompanyUtrPage =>
113113
_ => controllers.add.company.routes.CompanyCrnYesNoController.onPageLoad(NormalMode)
114+
case CompanyCrnYesNoPage =>
115+
userAnswers => navigatorFromCompanyCrnYesNoPage(NormalMode)(userAnswers)
114116
case _ => _ => routes.IndexController.onPageLoad()
115117
}
116118

@@ -128,6 +130,7 @@ class Navigator @Inject() () {
128130
case PartnershipContactDetailsYesNoPage => navigatorFromPartnershipContactDetailsYesNoPage(CheckMode)(_)
129131
case PartnershipChooseContactDetailsPage => navigatorFromChooseContactDetailsPage(CheckMode)(_)
130132
case PartnershipNominatedPartnerCrnYesNoPage => navigatorFromPartnershipNominatedPartnerCrnYesNoPage(CheckMode)(_)
133+
case CompanyCrnYesNoPage => navigatorFromCompanyCrnYesNoPage(CheckMode)(_)
131134
case PartnershipAddressYesNoPage =>
132135
_ => controllers.add.partnership.routes.PartnershipAddressYesNoController.onPageLoad(CheckMode)
133136
case PartnershipAddressPage =>
@@ -409,4 +412,14 @@ class Navigator @Inject() () {
409412
case _ => routes.JourneyRecoveryController.onPageLoad()
410413
}
411414

415+
private def navigatorFromCompanyCrnYesNoPage(mode: Mode)(userAnswers: UserAnswers): Call =
416+
(userAnswers.get(CompanyCrnYesNoPage), mode) match {
417+
case (Some(true), _) =>
418+
controllers.add.company.routes.CompanyCrnYesNoController.onPageLoad(mode)
419+
case (Some(false), NormalMode) =>
420+
controllers.add.company.routes.CompanyCrnYesNoController.onPageLoad(NormalMode)
421+
case (Some(false), CheckMode) => controllers.add.routes.CheckYourAnswersController.onPageLoad()
422+
case (None, _) => routes.JourneyRecoveryController.onPageLoad()
423+
}
424+
412425
}

app/pages/add/company/CompanyCrnYesNoPage.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,24 @@
1616

1717
package pages.add.company
1818

19+
import models.UserAnswers
1920
import pages.QuestionPage
2021
import play.api.libs.json.JsPath
2122

23+
import scala.util.Try
24+
2225
case object CompanyCrnYesNoPage extends QuestionPage[Boolean] {
2326

2427
override def path: JsPath = JsPath \ toString
2528

2629
override def toString: String = "companyCrnYesNo"
30+
31+
override def cleanup(value: Option[Boolean], userAnswers: UserAnswers): Try[UserAnswers] =
32+
if value.contains(false) then {
33+
userAnswers
34+
.remove(CompanyCrnPage)
35+
} else {
36+
super.cleanup(value, userAnswers)
37+
}
38+
2739
}

app/views/add/company/CompanyCrnYesNoView.scala.html

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
* limitations under the License.
1515
*@
1616

17+
@import viewmodels.LegendSize.Large
18+
1719
@this(
1820
layout: templates.Layout,
1921
formHelper: FormWithCSRF,
@@ -22,7 +24,7 @@
2224
govukButton: GovukButton
2325
)
2426

25-
@(form: Form[_], mode: Mode)(implicit request: Request[_], messages: Messages)
27+
@(form: Form[_], mode: Mode, companyName: String)(implicit request: Request[_], messages: Messages)
2628

2729
@layout(pageTitle = title(form, messages("companyCrnYesNo.title"))) {
2830

@@ -35,7 +37,9 @@
3537
@govukRadios(
3638
RadiosViewModel.yesNo(
3739
field = form("value"),
38-
legend = LegendViewModel(messages("companyCrnYesNo.heading")).asPageHeading()
40+
legend = LegendViewModel(messages("companyCrnYesNo.heading", companyName)).asPageHeading(Large)
41+
).withHint(Hint(
42+
content = Messages("companyCrnYesNo.hint"))
3943
)
4044
)
4145

@@ -44,3 +48,4 @@
4448
)
4549
}
4650
}
51+

conf/app.routes

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -245,10 +245,10 @@ POST /add/company/company-utr controllers.add.company.
245245
GET /add/company/change-company-utr controllers.add.company.CompanyUtrController.onPageLoad(mode: Mode = CheckMode)
246246
POST /add/company/change-company-utr controllers.add.company.CompanyUtrController.onSubmit(mode: Mode = CheckMode)
247247

248-
GET /companyCrnYesNo controllers.add.company.CompanyCrnYesNoController.onPageLoad(mode: Mode = NormalMode)
249-
POST /companyCrnYesNo controllers.add.company.CompanyCrnYesNoController.onSubmit(mode: Mode = NormalMode)
250-
GET /changeCompanyCrnYesNo controllers.add.company.CompanyCrnYesNoController.onPageLoad(mode: Mode = CheckMode)
251-
POST /changeCompanyCrnYesNo controllers.add.company.CompanyCrnYesNoController.onSubmit(mode: Mode = CheckMode)
248+
GET /add/company/company-has-registration-number controllers.add.company.CompanyCrnYesNoController.onPageLoad(mode: Mode = NormalMode)
249+
POST /add/company/company-has-registration-number controllers.add.company.CompanyCrnYesNoController.onSubmit(mode: Mode = NormalMode)
250+
GET /add/company/change-company-has-registration-number controllers.add.company.CompanyCrnYesNoController.onPageLoad(mode: Mode = CheckMode)
251+
POST /add/company/change-company-has-registration-number controllers.add.company.CompanyCrnYesNoController.onSubmit(mode: Mode = CheckMode)
252252

253253
GET /add/company/company-registration-number controllers.add.company.CompanyCrnController.onPageLoad(mode: Mode = NormalMode)
254254
POST /add/company/company-registration-number controllers.add.company.CompanyCrnController.onSubmit(mode: Mode = NormalMode)

conf/messages.en

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -572,11 +572,12 @@ companyUtr.error.duplicate = You have already used this Unique Taxpayer Referenc
572572
companyUtr.checkYourAnswersLabel = Corporation Tax UTR
573573
companyUtr.change.hidden = corporation Tax UTR
574574

575-
companyCrnYesNo.title = companyCrnYesNo
576-
companyCrnYesNo.heading = companyCrnYesNo
577-
companyCrnYesNo.checkYourAnswersLabel = companyCrnYesNo
578-
companyCrnYesNo.error.required = Select yes if companyCrnYesNo
579-
companyCrnYesNo.change.hidden = CompanyCrnYesNo
575+
companyCrnYesNo.title = Does this company have a company registration number?
576+
companyCrnYesNo.heading = Does {0} have a company registration number?
577+
companyCrnYesNo.hint = This information will be used to verify the company as a subcontractor
578+
companyCrnYesNo.error.required = Select whether this company has a registration number
579+
companyCrnYesNo.checkYourAnswersLabel = Add company registration number?
580+
companyCrnYesNo.change.hidden = add company registration number
580581

581582
companyCrn.title = What is the company registration number for this company?
582583
companyCrn.heading = What is the company registration number for {0}?

0 commit comments

Comments
 (0)