diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index 5182aeea5..8ddd160d6 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -1,36 +1,26 @@ class FormController < ApplicationController before_action :authenticate_user! - before_action :find_resource, only: [:submit_form, :review] - before_action :find_resource_by_named_id, except: [:submit_form, :review] + before_action :find_resource, only: %i[submit_form review] + before_action :find_resource_by_named_id, except: %i[submit_form review] def submit_form if @case_log - if is_referrer_review? - if @case_log.completed? - redirect_to(case_logs_path, flash: { notice: "Log #{@case_log.id} has been submitted" }) + @page = @case_log.form.get_page(params[:case_log][:page]) + responses_for_page = responses_for_page(@page) + if @case_log.update(responses_for_page) + session[:errors] = nil + if is_referrer_check_answers? && !@case_log.form.next_page(@page, @case_log).to_s.include?("value_check") + redirect_to(send("case_log_#{@case_log.form.subsection_for_page(@page).id}_check_answers_path", @case_log)) + elsif @case_log.form.is_last_question?(@page, @case_log.form.subsection_for_page(@page), @case_log) + redirect_to(case_logs_path) else - @case_log.errors.add :base, "All mandatory fields have not been completed, please refer to section status" - session[:review_errors] = @case_log.errors.to_json - redirect_to(review_case_log_path) - end - else - @page = @case_log.form.get_page(params[:case_log][:page]) - responses_for_page = responses_for_page(@page) - if @case_log.update(responses_for_page) - session[:errors] = nil - if is_referrer_check_answers? && !@case_log.form.next_page(@page, @case_log).to_s.include?("value_check") - redirect_to(send("case_log_#{@case_log.form.subsection_for_page(@page).id}_check_answers_path", @case_log)) - elsif @case_log.form.is_last_question?(@page, @case_log.form.subsection_for_page(@page), @case_log) - redirect_to(case_logs_path) - else - redirect_path = @case_log.form.next_page_redirect_path(@page, @case_log) - redirect_to(send(redirect_path, @case_log)) - end - else - redirect_path = "case_log_#{@page.id}_path" - session[:errors] = @case_log.errors.to_json + redirect_path = @case_log.form.next_page_redirect_path(@page, @case_log) redirect_to(send(redirect_path, @case_log)) end + else + redirect_path = "case_log_#{@page.id}_path" + session[:errors] = @case_log.errors.to_json + redirect_to(send(redirect_path, @case_log)) end else render_not_found @@ -38,7 +28,6 @@ class FormController < ApplicationController end def check_answers - session[:review_errors] = nil if @case_log current_url = request.env["PATH_INFO"] subsection = @case_log.form.get_subsection(current_url.split("/")[-2]) @@ -50,16 +39,11 @@ class FormController < ApplicationController def review if @case_log - if session[:review_errors] - JSON(session[:review_errors]).each do |field, messages| - messages.each { |message| @case_log.errors.add field.to_sym, message } - end - end render "form/review" else render_not_found end - end + end FormHandler.instance.forms.each do |_key, form| form.pages.map do |page| @@ -127,9 +111,4 @@ private referrer = request.headers["HTTP_REFERER"].presence || "" referrer.present? && CGI.parse(referrer.split("?")[-1]).present? && CGI.parse(referrer.split("?")[-1])["referrer"][0] == "check_answers" end - - def is_referrer_review? - referrer = request.headers["HTTP_REFERER"].presence || "" - referrer.present? && referrer.split("/")[-1].present? && referrer.split("/")[-1] == "review" - end end diff --git a/app/models/form/question.rb b/app/models/form/question.rb index d5133cc1a..9cf8d0fa7 100644 --- a/app/models/form/question.rb +++ b/app/models/form/question.rb @@ -175,6 +175,7 @@ private def checkbox_answer_label(case_log) answer = [] return "Yes" if id == "declaration" && value_is_yes?(case_log["declaration"]) + answer_options.each { |key, options| value_is_yes?(case_log[key]) ? answer << options["value"] : nil } answer.join(", ") end diff --git a/app/views/form/review.html.erb b/app/views/form/review.html.erb index b3131a200..c4f058400 100644 --- a/app/views/form/review.html.erb +++ b/app/views/form/review.html.erb @@ -5,34 +5,30 @@ "Review lettings log" => "" }) %> -<%= form_with model: @case_log, url: form_case_log_path(@case_log), method: "post" do |f| %> - <%= f.govuk_error_summary %> -