diff --git a/15-multi-step-form/src/main/resources/templates/step4.html b/15-multi-step-form/src/main/resources/templates/step4.html index 17668a0..f7238a9 100644 --- a/15-multi-step-form/src/main/resources/templates/step4.html +++ b/15-multi-step-form/src/main/resources/templates/step4.html @@ -122,7 +122,14 @@ > $90/y

-

Change

+ Change
-
+

Total (per year)

-

$120

+

+ $120 +

@@ -166,9 +175,11 @@ hx-target="#form-step" href="step3.html" class="ml-6 text-sm font-semibold md:pb-3 md:ml-20 md:text-base text-cool-gray" + hx-params="not form-confirmed" >Go Back
+ this.copy( - step4 = this.step4, + step4 = this.step4.fromFormData(rawData), currentStep = nextStep ) case _ => this @@ -200,7 +191,7 @@ object Models { val addonsStrings = fieldValues .groupMap(_._1)(_._2) .getOrElse("addon-services", Array.empty[String]) - println(s"in step 3 got strings $addonsStrings") + println(s"in step 3 got strings ${addonsStrings.mkString(", ")}") val addons = addonsStrings.map(Addons.valueOf(_)).toSet Step3(addons, submitted = true) @@ -209,7 +200,20 @@ object Models { final case class Step4( override val submitted: Boolean = false ) extends StepAnswers { - override def fromFormData(rawData: String): Step4 = Step4(true) + override def fromFormData(rawData: String): Step4 = + { + val fieldValues = rawData + .split("&").filterNot(_.isEmpty()) + .map { field => + println(s"working with field $field") + val Array(name, value) = field.split("=") + name -> value + } + .toMap + + val isConfirmed = fieldValues.contains("form-confirmed") + Step4(isConfirmed) + } } } }