8 changed files with 77 additions and 16 deletions
			
			
		@ -0,0 +1,20 @@ | 
				
			|||||||
 | 
					class SoftValidationsController < ApplicationController | 
				
			||||||
 | 
					  def show | 
				
			||||||
 | 
					    @case_log = CaseLog.find(params[:case_log_id]) | 
				
			||||||
 | 
					    page_key = request.env["PATH_INFO"].split("/")[-2] | 
				
			||||||
 | 
					    form = FormHandler.instance.get_form("2021_2022") | 
				
			||||||
 | 
					    page = form.all_pages[page_key] | 
				
			||||||
 | 
					    if page_requires_soft_validation_override?(page) | 
				
			||||||
 | 
					      errors = @case_log.soft_errors.values.first | 
				
			||||||
 | 
					      render json: { show: true, label: errors.message, hint: errors.hint_text } | 
				
			||||||
 | 
					    else | 
				
			||||||
 | 
					      render json: { show: false } | 
				
			||||||
 | 
					    end | 
				
			||||||
 | 
					  end | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def page_requires_soft_validation_override?(page) | 
				
			||||||
 | 
					    @case_log.soft_errors.present? && @case_log.soft_errors.keys.first == page["soft_validations"]&.keys&.first | 
				
			||||||
 | 
					  end | 
				
			||||||
 | 
					end | 
				
			||||||
@ -0,0 +1,30 @@ | 
				
			|||||||
 | 
					import { Controller } from "@hotwired/stimulus" | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default class extends Controller { | 
				
			||||||
 | 
					  initialize() { | 
				
			||||||
 | 
					    let url = window.location.href + "/soft_validations" | 
				
			||||||
 | 
					    let xhr = new XMLHttpRequest() | 
				
			||||||
 | 
					    let div = document.getElementById("soft-validations") | 
				
			||||||
 | 
					    xhr.open("GET", url, true) | 
				
			||||||
 | 
					    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded") | 
				
			||||||
 | 
					    xhr.onreadystatechange = function () { | 
				
			||||||
 | 
					            if (this.readyState == 4 && this.status == 200) { | 
				
			||||||
 | 
					              let response = JSON.parse(this.response) | 
				
			||||||
 | 
					                if(response["show"]){ | 
				
			||||||
 | 
					                  div.style.display = "block" | 
				
			||||||
 | 
					                  let innerHTML = div.innerHTML | 
				
			||||||
 | 
					                  innerHTML = innerHTML.replace("soft-validations-placeholder-message", response["label"]) | 
				
			||||||
 | 
					                  innerHTML = innerHTML.replace("soft-validations-placeholder-hint-text", response["hint"]) | 
				
			||||||
 | 
					                  div.innerHTML = innerHTML | 
				
			||||||
 | 
					                } else { | 
				
			||||||
 | 
					                  div.style.display = "none" | 
				
			||||||
 | 
					                  let buttons = document.getElementsByName(`case_log[override_net_income_validation][]`) | 
				
			||||||
 | 
					                  Object.entries(buttons).forEach(([idx, button]) => { | 
				
			||||||
 | 
					                    button.checked = false; | 
				
			||||||
 | 
					                  }) | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    xhr.send() | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -1,11 +1,11 @@ | 
				
			|||||||
<div class="govuk-form-group govuk-form-group--error"> | 
					<div id="soft-validations" class="govuk-form-group govuk-form-group--error" style='display:none;'> | 
				
			||||||
  <%= f.govuk_check_boxes_fieldset @case_log.soft_errors.keys.first, | 
					  <%= f.govuk_check_boxes_fieldset page_info["soft_validations"]&.keys&.first, | 
				
			||||||
      legend: { text: @case_log.soft_errors.values.first.message, size: "l" }, | 
					      legend: { text: "soft-validations-placeholder-message", size: "l" }, | 
				
			||||||
      hint: { text: @case_log.soft_errors.values.first.hint_text } do %> | 
					      hint: { text: "soft-validations-placeholder-hint-text" }, | 
				
			||||||
 | 
					      form_group: { "data-controller": "soft-validations" } do %> | 
				
			||||||
 | 
					
 | 
				
			||||||
      <%= f.govuk_check_box @case_log.soft_errors.keys.first, @case_log.soft_errors.keys.first, | 
					      <%= f.govuk_check_box page_info["soft_validations"]&.keys&.first, page_info["soft_validations"]&.keys&.first, | 
				
			||||||
        label: { text: "Yes" }, | 
					        label: { text: "Yes" } | 
				
			||||||
        checked: f.object.send(@case_log.soft_errors.keys.first) | 
					 | 
				
			||||||
      %> | 
					      %> | 
				
			||||||
  <% end %> | 
					  <% end %> | 
				
			||||||
</div> | 
					</div> | 
				
			||||||
 | 
				
			|||||||
					Loading…
					
					
				
		Reference in new issue