Browse Source

Lock sections until about this log is completed

pull/103/head
baarkerlounger 4 years ago
parent
commit
c8f75c12ca
  1. 20
      app/helpers/tasklist_helper.rb
  2. 2
      app/models/form.rb
  3. 3
      app/views/case_logs/_tasklist.html.erb

20
app/helpers/tasklist_helper.rb

@ -14,17 +14,25 @@ module TasklistHelper
}.freeze
def get_subsection_status(subsection_name, case_log, form, questions)
applicable_questions = form.filter_conditional_questions(questions, case_log).keys
if subsection_name == "declaration"
return case_log.completed? ? :not_started : :cannot_start_yet
elsif subsection_name != "about_this_log"
return :cannot_start_yet unless about_this_log_completed?(form, case_log)
end
applicable_questions = form.filter_conditional_questions(questions, case_log).keys
return :not_started if applicable_questions.all? { |question| case_log[question].blank? }
return :completed if applicable_questions.all? { |question| case_log[question].present? }
:in_progress
end
def about_this_log_completed?(form, case_log)
questions = form.questions_for_subsection("about_this_log")
applicable_questions = form.filter_conditional_questions(questions, case_log).keys
applicable_questions.all? { |question| case_log[question].present? }
end
def get_next_incomplete_section(form, case_log)
subsections = form.all_subsections.keys
subsections.find { |subsection| is_incomplete?(subsection, case_log, form, form.questions_for_subsection(subsection)) }
@ -46,6 +54,16 @@ module TasklistHelper
send(path, case_log)
end
def subsection_link(subsection_key, subsection_value, status)
next_page_path = if status != :cannot_start_yet
questions = @form.questions_for_subsection(subsection_key)
get_first_page_or_check_answers(subsection_key, @case_log, @form, questions)
else
"#"
end
link_to(subsection_value["label"], next_page_path, class: "task-name govuk-link")
end
private
def is_incomplete?(subsection, case_log, form, questions)

2
app/models/form.rb

@ -108,7 +108,7 @@ class Form
end
def page_routed_to?(page, case_log)
return true unless (conditions = page_dependencies(page))
return true unless conditions = page_dependencies(page)
conditions.all? do |question, value|
case_log[question].present? && case_log[question] == value

3
app/views/case_logs/_tasklist.html.erb

@ -10,9 +10,8 @@
<% section_value["subsections"].map do |subsection_key, subsection_value| %>
<li class="app-task-list__item" id=<%= subsection_key %>>
<% questions_for_subsection = @form.questions_for_subsection(subsection_key) %>
<% next_page_path = get_first_page_or_check_answers(subsection_key, @case_log, @form, questions_for_subsection) %>
<%= link_to subsection_value["label"], next_page_path, class: "task-name govuk-link" %>
<% subsection_status = get_subsection_status(subsection_key, @case_log, @form, questions_for_subsection) %>
<%= subsection_link(subsection_key, subsection_value, subsection_status) %>
<strong class="govuk-tag app-task-list__tag <%= TasklistHelper::STYLES[subsection_status] %>">
<%= TasklistHelper::STATUSES[subsection_status] %>
</strong>

Loading…
Cancel
Save