@@ -21,7 +21,7 @@ import controllers.actions.*
2121import forms .land .RemoveLandFormProvider
2222import models .land .DeleteLandRequest
2323import models .{Land , ReturnVersionUpdateRequest }
24- import pages .land .RemoveLandPage
24+ import pages .land .{ LandOverviewRemovePage , RemoveLandPage }
2525import play .api .data .Form
2626import play .api .i18n .{I18nSupport , MessagesApi }
2727import 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