diff --git a/app/controllers/form_controller.rb b/app/controllers/form_controller.rb index 6d3af2f75..444be4df8 100644 --- a/app/controllers/form_controller.rb +++ b/app/controllers/form_controller.rb @@ -6,25 +6,31 @@ class FormController < ApplicationController def submit_form if @case_log if is_referrer_review? - @case_log.update!(@case_log.attributes) - redirect_to(send(case_logs_path, @case_log)) + if @case_log.completed? + redirect_to(case_logs_path, flash: { notice: "Log #{@case_log.id} has been submitted" }) + else + @case_log.errors.add :base, "All mandatory fields have not been completed, please refer to section status" + session[:errors][:review] = @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) + @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.form.next_page_redirect_path(@page, @case_log) + redirect_path = "case_log_#{@page.id}_path" + session[:errors] = @case_log.errors.to_json 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 @@ -32,6 +38,7 @@ 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]) @@ -43,6 +50,11 @@ class FormController < ApplicationController def review if @case_log + if session["errors"] + JSON(session["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 @@ -52,6 +64,7 @@ class FormController < ApplicationController FormHandler.instance.forms.each do |_key, form| form.pages.map do |page| define_method(page.id) do |_errors = {}| + session[:review_errors] = nil if @case_log if session["errors"] JSON(session["errors"]).each do |field, messages| diff --git a/app/views/case_logs/index.html.erb b/app/views/case_logs/index.html.erb index db44e88a4..8060f3c99 100644 --- a/app/views/case_logs/index.html.erb +++ b/app/views/case_logs/index.html.erb @@ -1,9 +1,5 @@ <% content_for :title, "Logs" %> -<% if @case_log.present? %> -<%= render partial: "success", locals: { case_log: @case_log } %> -<% end %> -