diff --git a/app/models/form.rb b/app/models/form.rb index 092605bab..1f76e2ac0 100644 --- a/app/models/form.rb +++ b/app/models/form.rb @@ -56,40 +56,31 @@ class Form end def next_page(page, log, current_user) - page_ids = subsection_for_page(page).pages.map(&:id) - page_index = page_ids.index(page.id) - page_id = if page.id.include?("value_check") && log[page.questions[0].id] == 1 && page.routed_to?(log, current_user) - previous_page(page_ids, page_index, log, current_user) - else - page_ids[page_index + 1] - end - nxt_page = get_page(page_id) - - return :check_answers if nxt_page.nil? - return nxt_page.id if nxt_page.routed_to?(log, current_user) - - next_page(nxt_page, log, current_user) + if log.unresolved + page.next_unresolved_page_id || :check_answers + else + page_ids = subsection_for_page(page).pages.map(&:id) + page_index = page_ids.index(page.id) + page_id = if page.id.include?("value_check") && log[page.questions[0].id] == 1 && page.routed_to?(log, current_user) + previous_page(page_ids, page_index, log, current_user) + else + page_ids[page_index + 1] + end + nxt_page = get_page(page_id) + + return :check_answers if nxt_page.nil? + return nxt_page.id if nxt_page.routed_to?(log, current_user) + + next_page(nxt_page, log, current_user) + end end def next_page_redirect_path(page, log, current_user) - if log.unresolved - case page.id - when "tenancy_start_date" - "lettings_log_scheme_path" - when "scheme" - "lettings_log_location_path" - when "location" - "#{type}_log_#{subsection_for_page(page).id}_check_answers_path" - else - "lettings_log_tenancy_start_date_path" - end + nxt_page = next_page(page, log, current_user) + if nxt_page == :check_answers + "#{type}_log_#{subsection_for_page(page).id}_check_answers_path" else - nxt_page = next_page(page, log, current_user) - if nxt_page == :check_answers - "#{type}_log_#{subsection_for_page(page).id}_check_answers_path" - else - "#{type}_log_#{nxt_page}_path" - end + "#{type}_log_#{nxt_page}_path" end end diff --git a/app/models/form/lettings/pages/location.rb b/app/models/form/lettings/pages/location.rb index 982f4c109..d15091cb5 100644 --- a/app/models/form/lettings/pages/location.rb +++ b/app/models/form/lettings/pages/location.rb @@ -7,6 +7,7 @@ class Form::Lettings::Pages::Location < ::Form::Page "needstype" => 2, "scheme_has_multiple_locations?" => true, }] + @next_unresolved_page_id = :check_answers end def questions diff --git a/app/models/form/lettings/pages/scheme.rb b/app/models/form/lettings/pages/scheme.rb index c17eaab04..77828e1cf 100644 --- a/app/models/form/lettings/pages/scheme.rb +++ b/app/models/form/lettings/pages/scheme.rb @@ -6,6 +6,7 @@ class Form::Lettings::Pages::Scheme < ::Form::Page @depends_on = [{ "needstype" => 2, }] + @next_unresolved_page_id = "location" end def questions diff --git a/app/models/form/lettings/pages/tenancy_start_date.rb b/app/models/form/lettings/pages/tenancy_start_date.rb index 562153dc2..fd0810893 100644 --- a/app/models/form/lettings/pages/tenancy_start_date.rb +++ b/app/models/form/lettings/pages/tenancy_start_date.rb @@ -4,6 +4,7 @@ class Form::Lettings::Pages::TenancyStartDate < ::Form::Page @id = "tenancy_start_date" @description = "" @subsection = subsection + @next_unresolved_page_id = "scheme" end def questions diff --git a/app/models/form/page.rb b/app/models/form/page.rb index 5bf1e1618..33e944eed 100644 --- a/app/models/form/page.rb +++ b/app/models/form/page.rb @@ -1,6 +1,6 @@ class Form::Page attr_accessor :id, :header, :header_partial, :description, :questions, :depends_on, :title_text, - :informative_text, :subsection, :hide_subsection_label + :informative_text, :subsection, :hide_subsection_label, :next_unresolved_page_id def initialize(id, hsh, subsection) @id = id @@ -14,6 +14,7 @@ class Form::Page @title_text = hsh["title_text"] @informative_text = hsh["informative_text"] @hide_subsection_label = hsh["hide_subsection_label"] + @next_unresolved_page_id = hsh["next_unresolved_page_id"] end end