Skip to content

Commit b86de13

Browse files
DTR-2501 Hotfix - Integration of RemoveLand and LandOverView pages (#203)
* Integration of RemoveLand and LandOverView pages * made changes for lookup remove id - landId * addressed review comments
1 parent 75ee152 commit b86de13

File tree

2 files changed

+194
-99
lines changed

2 files changed

+194
-99
lines changed

app/controllers/land/RemoveLandController.scala

Lines changed: 61 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import controllers.actions.*
2121
import forms.land.RemoveLandFormProvider
2222
import models.land.DeleteLandRequest
2323
import models.{Land, ReturnVersionUpdateRequest}
24-
import pages.land.RemoveLandPage
24+
import pages.land.{LandOverviewRemovePage, RemoveLandPage}
2525
import play.api.data.Form
2626
import play.api.i18n.{I18nSupport, MessagesApi}
2727
import play.api.mvc.{Action, AnyContent, MessagesControllerComponents}
@@ -47,75 +47,70 @@ class RemoveLandController @Inject()(
4747
def onPageLoad(): Action[AnyContent] = (identify andThen getData andThen requireData) {
4848
implicit request =>
4949

50-
//TODO update to take removeLandId from user answers overview page DTR-2498.
51-
val removeLandId = "LND-REF-001"
52-
// request.userAnswers.get(LandOverviewRemovePage).map { removeLandId =>
53-
54-
val maybeReturnLandToRemove = request.userAnswers.fullReturn.flatMap(_.land.flatMap(_.find(_.landResourceRef.contains(removeLandId))))
55-
val addressLine1 = maybeReturnLandToRemove.flatMap(_.address1).getOrElse("")
56-
57-
maybeReturnLandToRemove match {
58-
case None =>
59-
Redirect(controllers.routes.JourneyRecoveryController.onPageLoad())
60-
61-
case Some(land) =>
62-
val preparedForm = request.userAnswers.get(RemoveLandPage) match {
63-
case None => form
64-
case Some(value) => form.fill(value)
65-
}
66-
Ok(view(preparedForm, addressLine1))
67-
}//TODO remove bellow comments post overview page DTR-2498 implementation.
68-
/*.getOrElse(
69-
Redirect(controllers.land.routes.LandOverviewController.onPageLoad())
70-
)*/
50+
request.userAnswers.get(LandOverviewRemovePage).map { removeLandId =>
51+
52+
val maybeReturnLandToRemove = request.userAnswers.fullReturn.flatMap(_.land.flatMap(_.find(_.landID.contains(removeLandId))))
53+
54+
val addressLine1 = maybeReturnLandToRemove.flatMap(_.address1).getOrElse("")
55+
56+
maybeReturnLandToRemove match {
57+
case None =>
58+
Redirect(controllers.routes.JourneyRecoveryController.onPageLoad())
59+
60+
case Some(land) =>
61+
val preparedForm = request.userAnswers.get(RemoveLandPage) match {
62+
case None => form
63+
case Some(value) => form.fill(value)
64+
}
65+
Ok(view(preparedForm, addressLine1))
66+
}
67+
}.getOrElse(
68+
Redirect(controllers.land.routes.LandOverviewController.onPageLoad())
69+
)
7170
}
7271

7372
def onSubmit(): Action[AnyContent] = (identify andThen getData andThen requireData).async {
7473
implicit request =>
7574

76-
//TODO update to take ID from user answers overview page DTR-2498
77-
val removeLandId = "LND-REF-001"
78-
// request.userAnswers.get(LandOverviewRemovePage).map { removeLandId =>
79-
val maybeLandToDelete: Option[Land] = for {
80-
fullReturn <- request.userAnswers.fullReturn
81-
allLands <- fullReturn.land
82-
returnLandToDelete <- allLands.find(_.landResourceRef.contains(removeLandId))
83-
} yield returnLandToDelete
84-
85-
maybeLandToDelete match {
86-
case None =>
87-
Future.successful(Redirect(controllers.routes.JourneyRecoveryController.onPageLoad()))
88-
89-
case Some(maybeLandToDelete) =>
90-
val addressLine1 = maybeLandToDelete.address1.getOrElse("")
91-
form.bindFromRequest().fold(
92-
formWithErrors =>
93-
Future.successful(BadRequest(view(formWithErrors, addressLine1))),
94-
95-
value =>
96-
if (value) {
97-
(for {
98-
updateReturnVersionRequest <- ReturnVersionUpdateRequest.from(request.userAnswers)
99-
returnVersion <- backendConnector.updateReturnVersion(updateReturnVersionRequest)
100-
deleteLandRequest <- DeleteLandRequest.from(request.userAnswers, removeLandId) if returnVersion.newVersion.isDefined
101-
deleteLandReturn <- backendConnector.deleteLand(deleteLandRequest) if returnVersion.newVersion.isDefined
102-
} yield {
103-
//Redirect(controllers.land.routes.LandOverviewController.onPageLoad()).flashing("landDeleted" -> addressLine1)
104-
Redirect(controllers.land.routes.RemoveLandController.onPageLoad()).flashing("landDeleted" -> addressLine1) //TODO update to land overview page DTR-2498
105-
}).recover {
106-
case _ =>
107-
// Redirect(controllers.land.routes.LandOverviewController.onPageLoad())
108-
Redirect(controllers.routes.ReturnTaskListController.onPageLoad()) //TODO update to land overview page DTR-2498
109-
110-
}
111-
} else {
112-
//Future.successful(Redirect(controllers.land.routes.LandOverviewController.onPageLoad()))
113-
Future.successful(Redirect(controllers.routes.ReturnTaskListController.onPageLoad())) //TODO update to land overview page DTR-2498
114-
}
115-
)
116-
}//TODO remove bellow comments post overview page DTR-2498 implementation.
117-
/*.getOrElse(
118-
Redirect(controllers.land.routes.LandOverviewController.onPageLoad())
119-
)*/
75+
request.userAnswers.get(LandOverviewRemovePage).map { removeLandId =>
76+
val maybeLandToDelete: Option[Land] = for {
77+
fullReturn <- request.userAnswers.fullReturn
78+
allLands <- fullReturn.land
79+
returnLandToDelete <- allLands.find(_.landID.contains(removeLandId)) if returnLandToDelete.landResourceRef.isDefined
80+
} yield returnLandToDelete
81+
82+
maybeLandToDelete match {
83+
84+
case None =>
85+
Future.successful(Redirect(controllers.routes.JourneyRecoveryController.onPageLoad()))
86+
87+
case Some(maybeLandToDelete) =>
88+
val addressLine1 = maybeLandToDelete.address1.getOrElse("")
89+
form.bindFromRequest().fold(
90+
formWithErrors =>
91+
Future.successful(BadRequest(view(formWithErrors, addressLine1))),
92+
93+
value =>
94+
if (value) {
95+
(for {
96+
updateReturnVersionRequest <- ReturnVersionUpdateRequest.from(request.userAnswers)
97+
returnVersion <- backendConnector.updateReturnVersion(updateReturnVersionRequest)
98+
deleteLandRequest <- DeleteLandRequest.from(request.userAnswers, maybeLandToDelete.landResourceRef.get)
99+
deleteLandReturn <- backendConnector.deleteLand(deleteLandRequest) if returnVersion.newVersion.isDefined
100+
} yield {
101+
Redirect(controllers.land.routes.LandOverviewController.onPageLoad()).flashing("landDeleted" -> addressLine1)
102+
}).recover {
103+
case _ =>
104+
Redirect(controllers.land.routes.LandOverviewController.onPageLoad())
105+
}
106+
107+
} else {
108+
Future.successful(Redirect(controllers.land.routes.LandOverviewController.onPageLoad()))
109+
}
110+
)
111+
}
112+
}.getOrElse(
113+
Future.successful(Redirect(controllers.land.routes.LandOverviewController.onPageLoad()))
114+
)
120115
}
121116
}

0 commit comments

Comments
 (0)