@@ -21,6 +21,7 @@ import models.purchaser.*
2121import models .requests .DataRequest
2222import models .{Mode , Purchaser , ReturnInfo , ReturnInfoRequest , ReturnVersionUpdateRequest , UserAnswers }
2323import pages .purchaser .{PurchaserOverviewRemovePage , PurchaserRemovePage }
24+ import play .api .Logging
2425import play .api .data .Form
2526import play .api .i18n .Messages
2627import play .api .mvc .Results .Redirect
@@ -37,7 +38,7 @@ class PurchaserRemoveService @Inject()(
3738 view : PurchaserRemoveView ,
3839 backendConnector : StampDutyLandTaxConnector ,
3940 purchaserService : PurchaserService
40- ) {
41+ ) extends Logging {
4142
4243 def isMainPurchaser (purchaserId : String , userAnswers : UserAnswers ): Boolean = {
4344 val mainPurchaserID : Option [String ] = userAnswers.fullReturn
@@ -249,9 +250,14 @@ class PurchaserRemoveService @Inject()(
249250 val removedPurchaser = PurchaserOps .findById(purchasers, purchaserIdSession)
250251 val previousPurchaserInList = PurchaserOps .findByNextId(purchasers, chosenPurchaserId)
251252
253+ logger.info(s " [PurchaserRemoveService][handleRemovePurchaser] chosen purchaser to promote: $chosenPurchaser" )
254+ logger.info(s " [PurchaserRemoveService][handleRemovePurchaser] purchaser to remove: $removedPurchaser" )
255+ logger.info(s " [PurchaserRemoveService][handleRemovePurchaser] previous purchaser in list: $previousPurchaserInList" )
256+
252257 def changeNextIdOfPreviousPurchaser (): Future [Unit ] = {
253258 (previousPurchaserInList, chosenPurchaser) match {
254259 case (Some (changeP), Some (chosenP)) if ! isMainPurchaser && purchaserLength > 1 =>
260+ logger.info(s " [PurchaserRemoveService][changeNextIdOfPreviousPurchaser] " )
255261 PurchaserOps .updatePurchaser(userAnswers, changeP.copy(nextPurchaserID = chosenP.nextPurchaserID))
256262 case _ =>
257263 Future .successful(())
@@ -280,7 +286,11 @@ class PurchaserRemoveService @Inject()(
280286 maybeResult <- updateChosenPurchaserIfNeeded(Some (returnVersion))
281287 } yield maybeResult.getOrElse(PurchaserOps .purchaserOverviewRedirect(removedPurchaser))
282288 }
283- .recover { case _ => PurchaserOps .journeyRecoveryRedirect }
289+ .recover {
290+ case _ =>
291+ logger.info(s " [PurchaserRemoveService][handleRemovePurchaser] failed to delete purchaser. Redirecting to journey recovery " )
292+ PurchaserOps .journeyRecoveryRedirect
293+ }
284294 }
285295
286296 private def handleMultiplePurchasersWithNewMain (
@@ -294,6 +304,9 @@ class PurchaserRemoveService @Inject()(
294304 val purchasers = PurchaserOps .allPurchasers(userAnswers)
295305 val chosenPurchaser = PurchaserOps .findById(purchasers, chosenPurchaserId)
296306
307+ logger.info(s " [PurchaserRemoveService][handleMultiplePurchasersWithNewMain] chosen purchaser to remove: $chosenPurchaser" )
308+ logger.info(s " [PurchaserRemoveService][handleMultiplePurchasersWithNewMain] purchaser ID in session: $purchaserIdSession" )
309+
297310 def doUpdate (newVersion : Long ): Future [Result ] =
298311 updateChosenPurchaserMulti(
299312 chosenPurchaserId = chosenPurchaserId,
@@ -313,7 +326,11 @@ class PurchaserRemoveService @Inject()(
313326 }
314327 } yield r
315328 }
316- .recover { case _ => PurchaserOps .journeyRecoveryRedirect }
329+ .recover {
330+ case _ =>
331+ logger.info(s " [PurchaserRemoveService][handleMultiplePurchasersWithNewMain] redirecting to journey recovery " )
332+ PurchaserOps .journeyRecoveryRedirect
333+ }
317334 }
318335
319336 private def updateChosenPurchaserDouble (
@@ -323,7 +340,7 @@ class PurchaserRemoveService @Inject()(
323340 userAnswers : UserAnswers ,
324341 version : Option [Long ] = None
325342 )(implicit request : DataRequest [AnyContent ], hc : HeaderCarrier , ec : ExecutionContext ): Future [Result ] = {
326-
343+ logger.info( s " [PurchaserRemoveService][updateChosenPurchaserDouble] version: $version " )
327344 PurchaserOps
328345 .withReturnInfo(userAnswers) { returnInfo =>
329346 PurchaserOps .withNewVersion(userAnswers, version) { newReturnVersion =>
@@ -336,7 +353,10 @@ class PurchaserRemoveService @Inject()(
336353 } yield PurchaserOps .purchaserOverviewRedirect(removedPurchaser)
337354 }
338355 }
339- .recover { case _ => PurchaserOps .journeyRecoveryRedirect }
356+ .recover { case _ =>
357+ logger.info(s " [PurchaserRemoveService][updateChosenPurchaserDouble] failed update purchaser. Redirecting to journey recovery " )
358+ PurchaserOps .journeyRecoveryRedirect
359+ }
340360 }
341361
342362 private def updateChosenPurchaserMulti (
@@ -351,6 +371,11 @@ class PurchaserRemoveService @Inject()(
351371 val originalMainPurchaser = purchasers.find(_.purchaserID.contains(purchaserIdSession))
352372 val previousPurchaserInList = purchasers.find(_.nextPurchaserID.contains(chosenPurchaserId))
353373
374+ logger.info(s " [PurchaserRemoveService][updateChosenPurchaserMulti] purchasers: $purchasers" )
375+ logger.info(s " [PurchaserRemoveService][updateChosenPurchaserMulti] newMainPurchaser: $newMainPurchaser" )
376+ logger.info(s " [PurchaserRemoveService][updateChosenPurchaserMulti] originalMainPurchaser: $originalMainPurchaser" )
377+ logger.info(s " [PurchaserRemoveService][updateChosenPurchaserMulti] previousPurchaserInList: $previousPurchaserInList" )
378+
354379 PurchaserOps
355380 .withReturnInfo(userAnswers) { returnInfo =>
356381 (newMainPurchaser, originalMainPurchaser, previousPurchaserInList) match {
@@ -366,7 +391,11 @@ class PurchaserRemoveService @Inject()(
366391 version = Some (newReturnVersion.toString)))
367392 } yield PurchaserOps .purchaserOverviewRedirect(originalMainPurchaser)
368393 }
369- .recover { case _ => PurchaserOps .journeyRecoveryRedirect }
394+ .recover {
395+ case _ =>
396+ logger.info(s " [PurchaserRemoveService][updateChosenPurchaserMulti] updating mainPurchaserID and version in returnInfo failed. Redirecting to journey recovery " )
397+ PurchaserOps .journeyRecoveryRedirect
398+ }
370399
371400 case (Some (nextPId), Some (mainPId)) =>
372401 PurchaserOps
@@ -379,17 +408,26 @@ class PurchaserRemoveService @Inject()(
379408 version = Some (newReturnVersion.toString)))
380409 } yield PurchaserOps .purchaserOverviewRedirect(originalMainPurchaser)
381410 }
382- .recover { case _ => PurchaserOps .journeyRecoveryRedirect }
411+ .recover {
412+ case _ =>
413+ logger.info(s " [PurchaserRemoveService][updateChosenPurchaserMulti] updating nextPurchaserIDs and mainPurchaserID and version in returnInfo failed. Redirecting to journey recovery " )
414+ PurchaserOps .journeyRecoveryRedirect
415+ }
383416
384417 case _ =>
385418 Future .successful(PurchaserOps .purchaserOverviewRedirect())
386419 }
387420
388421 case _ =>
422+ logger.info(s " [PurchaserRemoveService][updateChosenPurchaserMulti] required data missing. Redirecting to journey recovery " )
389423 Future .successful(PurchaserOps .journeyRecoveryRedirect)
390424 }
391425 }
392- .recover { case _ => PurchaserOps .journeyRecoveryRedirect }
426+ .recover {
427+ case _ =>
428+ logger.info(s " [PurchaserRemoveService][updateChosenPurchaserMulti] return info missing. Redirecting to journey recovery " )
429+ PurchaserOps .journeyRecoveryRedirect
430+ }
393431 }
394432
395433
0 commit comments