Browse Source

Refactor

pull/2891/head
Kat 8 months ago
parent
commit
38d48fbe8f
  1. 6
      app/components/check_answers_summary_list_card_component.rb
  2. 4
      app/controllers/check_errors_controller.rb
  3. 52
      app/controllers/form_controller.rb
  4. 8
      app/controllers/locations_controller.rb
  5. 4
      app/controllers/merge_requests_controller.rb
  6. 4
      app/controllers/schemes_controller.rb
  7. 2
      app/helpers/check_answers_helper.rb
  8. 2
      app/helpers/check_errors_helper.rb
  9. 8
      app/helpers/duplicate_logs_helper.rb
  10. 6
      app/helpers/form_page_helper.rb
  11. 2
      app/helpers/guidance_helper.rb
  12. 4
      app/helpers/tasklist_helper.rb
  13. 2
      app/models/form.rb
  14. 2
      app/models/form/lettings/pages/address_matcher.rb
  15. 2
      app/models/form/sales/pages/address_matcher.rb
  16. 2
      app/views/check_errors/confirm_clear_all_answers.html.erb
  17. 2
      app/views/check_errors/confirm_clear_answer.html.erb
  18. 2
      app/views/duplicate_logs/_duplicate_log.html.erb
  19. 4
      app/views/form/check_errors.html.erb
  20. 4
      app/views/logs/delete_duplicates.html.erb

6
app/components/check_answers_summary_list_card_component.rb

@ -31,16 +31,16 @@ class CheckAnswersSummaryListCardComponent < ViewComponent::Base
def action_href(question, log)
referrer = question.displayed_as_answered?(log) ? "check_answers" : "check_answers_new_answer"
send("#{log.model_name.param_key}_#{question.page.id}_path", log, referrer:)
send("#{log.log_type}_#{question.page.id}_path", log, referrer:)
end
def correct_validation_action_href(question, log, _related_question_ids, correcting_hard_validation)
return action_href(question, log) unless correcting_hard_validation
if question.displayed_as_answered?(log)
send("#{log.model_name.param_key}_confirm_clear_answer_path", log, question_id: question.id)
send("#{log.log_type}_confirm_clear_answer_path", log, question_id: question.id)
else
send("#{log.model_name.param_key}_#{question.page.id}_path", log, referrer: "check_errors", related_question_ids: request.query_parameters["related_question_ids"], original_page_id: request.query_parameters["original_page_id"])
send("#{log.log_type}_#{question.page.id}_path", log, referrer: "check_errors", related_question_ids: request.query_parameters["related_question_ids"], original_page_id: request.query_parameters["original_page_id"])
end
end

4
app/controllers/check_errors_controller.rb

@ -7,8 +7,8 @@ class CheckErrorsController < ApplicationController
def confirm_clear_answer
return render_not_found unless @log
@related_question_ids = params[@log.model_name.param_key].keys.reject { |id| id == "page_id" }
@page = @log.form.get_page(params[@log.model_name.param_key]["page_id"])
@related_question_ids = params[@log.log_type].keys.reject { |id| id == "page_id" }
@page = @log.form.get_page(params[@log.log_type]["page_id"])
if params["clear_all"]
@questions_to_clear = @related_question_ids.map { |id|

52
app/controllers/form_controller.rb

@ -9,7 +9,7 @@ class FormController < ApplicationController
def submit_form
if @log
@page = form.get_page(params[@log.model_name.param_key][:page])
@page = form.get_page(params[@log.log_type][:page])
return render_check_errors_page if params["check_errors"]
shown_page_ids_with_unanswered_questions_before_update = @page.subsection.pages
@ -47,7 +47,7 @@ class FormController < ApplicationController
flash[:log_data] = responses_for_page
question_ids = (@log.errors.map(&:attribute) - [:base]).uniq
flash[:pages_with_errors_count] = question_ids.map { |id| @log.form.get_question(id, @log)&.page&.id }.compact.uniq.count
redirect_to send("#{@log.class.name.underscore}_#{@page.id}_path", @log, { referrer: request.params["referrer"], original_page_id: request.params["original_page_id"], related_question_ids: request.params["related_question_ids"] })
redirect_to send("#{@log.log_type}_#{@page.id}_path", @log, { referrer: request.params["referrer"], original_page_id: request.params["original_page_id"], related_question_ids: request.params["related_question_ids"] })
end
else
render_not_found
@ -136,11 +136,9 @@ private
def responses_for_page(page)
page.questions.each_with_object({}) do |question, result|
question_params = params[@log.model_name.param_key][question.id]
question_params = params[@log.log_type][question.id]
if question.type == "date"
day = params[@log.model_name.param_key][question.id].split("/")[0]
month = params[@log.model_name.param_key][question.id].split("/")[1]
year = params[@log.model_name.param_key][question.id].split("/")[2]
day, month, year = params[@log.log_type][question.id].split("/")
next unless [day, month, year].any?(&:present?)
result[question.id] = if Date.valid_date?(year.to_i, month.to_i, day.to_i) && year.to_i.positive?
@ -215,11 +213,11 @@ private
end
def previous_interruption_screen_page_id
params[@log.model_name.param_key]["interruption_page_id"]
params[@log.log_type]["interruption_page_id"]
end
def previous_interruption_screen_referrer
params[@log.model_name.param_key]["interruption_page_referrer_type"].presence
params[@log.log_type]["interruption_page_referrer_type"].presence
end
def page_has_duplicate_check_question
@ -229,7 +227,7 @@ private
def update_duplication_tracking
return unless page_has_duplicate_check_question
class_name = @log.class.name.underscore
class_name = @log.log_type
dynamic_duplicates = current_user.send(class_name.pluralize).duplicate_logs(@log)
if dynamic_duplicates.any?
@ -245,7 +243,7 @@ private
end
def successful_redirect_path(pages_to_check)
class_name = @log.class.name.underscore
class_name = @log.log_type
if is_referrer_type?("duplicate_logs") || is_referrer_type?("duplicate_logs_banner")
original_log = current_user.send(class_name.pluralize).find_by(id: from_referrer_query("original_log_id"))
@ -262,7 +260,7 @@ private
end
unless @log.duplicate_set_id.nil?
return send("#{@log.class.name.underscore}_duplicate_logs_path", @log, original_log_id: @log.id)
return send("#{@log.log_type}_duplicate_logs_path", @log, original_log_id: @log.id)
end
if is_referrer_type?("check_answers")
@ -275,25 +273,25 @@ private
elsif pages_to_check.any?
return redirect_path_to_question(pages_to_check[0], pages_to_check)
else
return send("#{@log.model_name.param_key}_#{form.subsection_for_page(@page).id}_check_answers_path", @log)
return send("#{@log.log_type}_#{form.subsection_for_page(@page).id}_check_answers_path", @log)
end
end
if previous_interruption_screen_page_id.present?
return send("#{@log.class.name.underscore}_#{previous_interruption_screen_page_id}_path", @log, { referrer: previous_interruption_screen_referrer, original_log_id: original_duplicate_log_id_from_query }.compact)
return send("#{@log.log_type}_#{previous_interruption_screen_page_id}_path", @log, { referrer: previous_interruption_screen_referrer, original_log_id: original_duplicate_log_id_from_query }.compact)
end
if params[@log.model_name.param_key]["check_errors"]
@page = form.get_page(params[@log.model_name.param_key]["page"])
if params[@log.log_type]["check_errors"]
@page = form.get_page(params[@log.log_type]["page"])
flash[:notice] = "You have successfully updated #{@page.questions.map(&:check_answer_label).to_sentence}"
original_page_id = params[@log.model_name.param_key]["original_page_id"]
related_question_ids = params[@log.model_name.param_key]["related_question_ids"].split(" ")
return send("#{@log.class.name.underscore}_#{original_page_id}_path", @log, { check_errors: true, related_question_ids: }.compact)
original_page_id = params[@log.log_type]["original_page_id"]
related_question_ids = params[@log.log_type]["related_question_ids"].split(" ")
return send("#{@log.log_type}_#{original_page_id}_path", @log, { check_errors: true, related_question_ids: }.compact)
end
if params["referrer"] == "check_errors"
@page = form.get_page(params[@log.model_name.param_key]["page"])
@page = form.get_page(params[@log.log_type]["page"])
flash[:notice] = "You have successfully updated #{@page.questions.map(&:check_answer_label).to_sentence}"
return send("#{@log.class.name.underscore}_#{params['original_page_id']}_path", @log, { check_errors: true, related_question_ids: params["related_question_ids"] }.compact)
return send("#{@log.log_type}_#{params['original_page_id']}_path", @log, { check_errors: true, related_question_ids: params["related_question_ids"] }.compact)
end
is_new_answer_from_check_answers = is_referrer_type?("check_answers_new_answer")
@ -306,7 +304,7 @@ private
def redirect_path_to_question(page_to_show, unanswered_pages)
remaining_pages = unanswered_pages.excluding(page_to_show)
remaining_page_ids = remaining_pages.any? ? remaining_pages.map(&:id).join(",") : nil
send("#{@log.class.name.underscore}_#{page_to_show.id}_path", @log, { referrer: "check_answers", unanswered_pages: remaining_page_ids })
send("#{@log.log_type}_#{page_to_show.id}_path", @log, { referrer: "check_answers", unanswered_pages: remaining_page_ids })
end
def pages_requiring_update(previously_visible_empty_page_ids)
@ -350,8 +348,8 @@ private
def question_missing_response?(responses_for_page, question)
if %w[checkbox validation_override].include?(question.type)
answered = question.answer_keys_without_dividers.map do |option|
session["fields"][option] = @log[option] = params[@log.model_name.param_key][question.id].include?(option) ? 1 : 0
params[@log.model_name.param_key][question.id].exclude?(option)
session["fields"][option] = @log[option] = params[@log.log_type][question.id].include?(option) ? 1 : 0
params[@log.log_type][question.id].exclude?(option)
end
answered.all?
else
@ -371,7 +369,7 @@ private
CONFIRMATION_PAGE_IDS = %w[uprn_confirmation uprn_selection].freeze
def deduplication_success_banner
deduplicated_log_link = "<a class=\"govuk-notification-banner__link govuk-!-font-weight-bold\" href=\"#{send("#{@log.class.name.underscore}_path", @log)}\">Log #{@log.id}</a>"
deduplicated_log_link = "<a class=\"govuk-notification-banner__link govuk-!-font-weight-bold\" href=\"#{send("#{@log.log_type}_path", @log)}\">Log #{@log.id}</a>"
changed_labels = {
property_postcode: "postcode",
lead_tenant_age: "lead tenant’s age",
@ -430,8 +428,8 @@ private
end
def render_check_errors_page
if params[@log.model_name.param_key]["clear_question_ids"].present?
question_ids = params[@log.model_name.param_key]["clear_question_ids"].split(" ")
if params[@log.log_type]["clear_question_ids"].present?
question_ids = params[@log.log_type]["clear_question_ids"].split(" ")
question_ids.each do |question_id|
question = @log.form.get_question(question_id, @log)
next if question.subsection.id == "setup"
@ -440,7 +438,7 @@ private
@log.previous_la_known = nil if question.id == "ppostcode_full"
end
@log.save!
@questions = params[@log.model_name.param_key].keys.reject { |id| %w[clear_question_ids page].include?(id) }.map { |id| @log.form.get_question(id, @log) }
@questions = params[@log.log_type].keys.reject { |id| %w[clear_question_ids page].include?(id) }.map { |id| @log.form.get_question(id, @log) }
else
responses_for_page = responses_for_page(@page)
@log.assign_attributes(responses_for_page)

8
app/controllers/locations_controller.rb

@ -137,9 +137,7 @@ class LocationsController < ApplicationController
def availability; end
def update_availability
day = location_params["startdate"].split("/")[0]
month = location_params["startdate"].split("/")[1]
year = location_params["startdate"].split("/")[2]
day, month, year = location_params["startdate"].split("/")
@location.startdate = if [day, month, year].none?(&:blank?) && Date.valid_date?(year.to_i, month.to_i, day.to_i)
Time.zone.local(year.to_i, month.to_i, day.to_i)
end
@ -299,9 +297,7 @@ private
return FormHandler.instance.start_date_of_earliest_open_for_editing_collection_period
end
day = params[:location_deactivation_period][key.to_s].split("/")[0]
month = params[:location_deactivation_period][key.to_s].split("/")[1]
year = params[:location_deactivation_period][key.to_s].split("/")[2]
day, month, year = params[:location_deactivation_period][key.to_s].split("/")
return nil if [day, month, year].any?(&:blank?)
Time.zone.local(year.to_i, month.to_i, day.to_i) if Date.valid_date?(year.to_i, month.to_i, day.to_i)

4
app/controllers/merge_requests_controller.rb

@ -137,9 +137,7 @@ private
@merge_request.errors.add(:absorbing_organisation_id, :blank)
end
when "merge_date"
day = merge_request_params["merge_date"].split("/")[0]
month = merge_request_params["merge_date"].split("/")[1]
year = merge_request_params["merge_date"].split("/")[2]
day, month, year = merge_request_params["merge_date"].split("/")
return @merge_request.errors.add(:merge_date, :blank) if [day, month, year].all?(&:blank?)

4
app/controllers/schemes_controller.rb

@ -358,9 +358,7 @@ private
return FormHandler.instance.start_date_of_earliest_open_for_editing_collection_period
end
day = params[:scheme_deactivation_period][key.to_s].split("/")[0]
month = params[:scheme_deactivation_period][key.to_s].split("/")[1]
year = params[:scheme_deactivation_period][key.to_s].split("/")[2]
day, month, year = params[:scheme_deactivation_period][key.to_s].split("/")
return nil if [day, month, year].any?(&:blank?)
Time.zone.local(year.to_i, month.to_i, day.to_i) if Date.valid_date?(year.to_i, month.to_i, day.to_i)

2
app/helpers/check_answers_helper.rb

@ -26,7 +26,7 @@ module CheckAnswersHelper
end
def next_incomplete_section_path(log, redirect_path)
"#{log.class.name.underscore}_#{redirect_path.underscore.tr('/', '_')}_path"
"#{log.log_type}_#{redirect_path.underscore.tr('/', '_')}_path"
end
private

2
app/helpers/check_errors_helper.rb

@ -6,6 +6,6 @@ module CheckErrorsHelper
end
def check_errors_answer_link(log, question, page, applicable_questions)
send("#{log.model_name.param_key}_#{question.page.id}_path", log, referrer: "check_errors", original_page_id: page.id, related_question_ids: applicable_questions.map(&:id))
send("#{log.log_type}_#{question.page.id}_path", log, referrer: "check_errors", original_page_id: page.id, related_question_ids: applicable_questions.map(&:id))
end
end

8
app/helpers/duplicate_logs_helper.rb

@ -7,7 +7,7 @@ module DuplicateLogsHelper
return govuk_button_link_to "Keep this log and delete duplicates", url_for(
controller: "duplicate_logs",
action: "delete_duplicates",
"#{duplicate_log.class.name.underscore}_id": duplicate_log.id,
"#{duplicate_log.log_type}_id": duplicate_log.id,
original_log_id: original_log.id,
referrer: params[:referrer],
organisation_id: params[:organisation_id],
@ -16,7 +16,7 @@ module DuplicateLogsHelper
if params[:referrer] == "duplicate_logs_banner"
current_user.support? ? govuk_button_link_to("Review other duplicates", organisation_duplicates_path(organisation_id: params[:organisation_id], referrer: params[:referrer])) : govuk_button_link_to("Review other duplicates", duplicate_logs_path(referrer: params[:referrer]))
elsif !original_log.deleted?
govuk_button_link_to "Back to Log #{original_log.id}", send("#{original_log.class.name.underscore}_path", original_log)
govuk_button_link_to "Back to Log #{original_log.id}", send("#{original_log.log_type}_path", original_log)
else
type = duplicate_log.lettings? ? "lettings" : "sales"
govuk_button_link_to "Back to #{type} logs", url_for(duplicate_log.class)
@ -24,12 +24,12 @@ module DuplicateLogsHelper
end
def duplicate_logs_action_href(log, page_id, original_log_id)
send("#{log.model_name.param_key}_#{page_id}_path", log, referrer: "interruption_screen", original_log_id:)
send("#{log.log_type}_#{page_id}_path", log, referrer: "interruption_screen", original_log_id:)
end
def change_duplicate_logs_action_href(log, page_id, all_duplicates, original_log_id)
first_remaining_duplicate_id = all_duplicates.map(&:id).reject { |id| id == log.id }.first
send("#{log.model_name.param_key}_#{page_id}_path", log, referrer: params[:referrer] == "duplicate_logs_banner" ? "duplicate_logs_banner" : "duplicate_logs", first_remaining_duplicate_id:, original_log_id:, organisation_id: params[:organisation_id])
send("#{log.log_type}_#{page_id}_path", log, referrer: params[:referrer] == "duplicate_logs_banner" ? "duplicate_logs_banner" : "duplicate_logs", first_remaining_duplicate_id:, original_log_id:, organisation_id: params[:organisation_id])
end
def duplicates_for_user(user)

6
app/helpers/form_page_helper.rb

@ -1,6 +1,6 @@
module FormPageHelper
def action_href(log, page_id, referrer = "check_answers")
send("#{log.model_name.param_key}_#{page_id}_path", log, referrer:)
send("#{log.log_type}_#{page_id}_path", log, referrer:)
end
def returning_to_question_page?(page, referrer)
@ -12,11 +12,11 @@ module FormPageHelper
end
def duplicate_log_set_path(log, original_log_id)
send("#{log.class.name.underscore}_duplicate_logs_path", log, original_log_id:)
send("#{log.log_type}_duplicate_logs_path", log, original_log_id:)
end
def relevant_check_answers_path(log, subsection)
send("#{log.class.name.underscore}_#{subsection.id}_check_answers_path", log)
send("#{log.log_type}_#{subsection.id}_check_answers_path", log)
end
def submit_button_text(page, referrer)

2
app/helpers/guidance_helper.rb

@ -6,6 +6,6 @@ module GuidanceHelper
question = log.form.get_question(question_id, log)
return "" unless question.page.routed_to?(log, user)
"(#{govuk_link_to "Q#{question.question_number}", send("#{log.class.name.underscore}_#{question.page.id}_path", log)})".html_safe
"(#{govuk_link_to "Q#{question.question_number}", send("#{log.log_type}_#{question.page.id}_path", log)})".html_safe
end
end

4
app/helpers/tasklist_helper.rb

@ -78,9 +78,9 @@ private
def next_page_or_check_answers(subsection, log, current_user)
path = if subsection.is_started?(log)
"#{log.class.name.underscore}_#{subsection.id}_check_answers_path"
"#{log.log_type}_#{subsection.id}_check_answers_path"
else
"#{log.class.name.underscore}_#{next_question_page(subsection, log, current_user)}_path"
"#{log.log_type}_#{next_question_page(subsection, log, current_user)}_path"
end
send(path, log)

2
app/models/form.rb

@ -135,7 +135,7 @@ class Form
end
def cancel_path(page, log)
"#{log.class.name.underscore}_#{page.subsection.id}_check_answers_path"
"#{log.log_type}_#{page.subsection.id}_check_answers_path"
end
def unresolved_log_path

2
app/models/form/lettings/pages/address_matcher.rb

@ -24,6 +24,6 @@ class Form::Lettings::Pages::AddressMatcher < ::Form::Page
def skip_href(log = nil)
return unless log
"/#{log.model_name.param_key.dasherize}s/#{log.id}/property-unit-type"
"/#{log.log_type.dasherize}s/#{log.id}/property-unit-type"
end
end

2
app/models/form/sales/pages/address_matcher.rb

@ -24,6 +24,6 @@ class Form::Sales::Pages::AddressMatcher < ::Form::Page
def skip_href(log = nil)
return unless log
"/#{log.model_name.param_key.dasherize}s/#{log.id}/property-number-of-bedrooms"
"/#{log.log_type.dasherize}s/#{log.id}/property-number-of-bedrooms"
end
end

2
app/views/check_errors/confirm_clear_all_answers.html.erb

@ -10,7 +10,7 @@
<p class="govuk-body">You've selected <%= @questions_to_clear.count %> answers to clear</p>
<%= govuk_warning_text(text: "Dependent answers related to this question may also get cleared. You will not be able to undo this action") %>
<%= form_with model: @log, url: send("#{@log.model_name.param_key}_#{@page.id}_path", @log), method: "post", local: true do |f| %>
<%= form_with model: @log, url: send("#{@log.log_type}_#{@page.id}_path", @log), method: "post", local: true do |f| %>
<% @related_question_ids.each do |id| %>
<%= f.hidden_field id, value: @log[id] %>

2
app/views/check_errors/confirm_clear_answer.html.erb

@ -9,7 +9,7 @@
</h1>
<%= govuk_warning_text(text: "Dependent answers related to this question may also get cleared. You will not be able to undo this action.") %>
<%= form_with model: @log, url: send("#{@log.model_name.param_key}_#{@page.id}_path", @log), method: "post", local: true do |f| %>
<%= form_with model: @log, url: send("#{@log.log_type}_#{@page.id}_path", @log), method: "post", local: true do |f| %>
<% @related_question_ids.each do |id| %>
<%= f.hidden_field id, value: @log[id] %>

2
app/views/duplicate_logs/_duplicate_log.html.erb

@ -4,7 +4,7 @@
<div class="govuk-grid-column-one-third">
<header class="app-log-summary__header">
<h2 class="app-log-summary__title">
<%= govuk_link_to "Log #{log.id}", send("#{log.class.name.underscore}_path", log) %>
<%= govuk_link_to "Log #{log.id}", send("#{log.log_type}_path", log) %>
</h2>
</header>
</div>

4
app/views/form/check_errors.html.erb

@ -1,7 +1,7 @@
<div class="govuk-grid-row">
<div class="govuk-grid-column-three-quarters-from-desktop">
<%= form_with model: @log, url: send("#{@log.model_name.param_key}_confirm_clear_answer_path", @log), method: "post", local: true do |f| %>
<%= form_with model: @log, url: send("#{@log.log_type}_confirm_clear_answer_path", @log), method: "post", local: true do |f| %>
<% remove_duplicate_page_errors(@log) %>
<%= f.govuk_error_summary %>
<%= f.hidden_field :page_id, value: @page.id %>
@ -62,6 +62,6 @@
</div>
<% end %>
<%= govuk_button_link_to "Confirm and continue", @original_page_id ? send("#{@log.model_name.param_key}_#{@original_page_id}_path", @log) : send("#{@log.model_name.param_key}_#{@page.id}_path", @log) %>
<%= govuk_button_link_to "Confirm and continue", @original_page_id ? send("#{@log.log_type}_#{@original_page_id}_path", @log) : send("#{@log.log_type}_#{@page.id}_path", @log) %>
</div>
</div>

4
app/views/logs/delete_duplicates.html.erb

@ -19,12 +19,12 @@
<div class="govuk-button-group">
<%= govuk_button_to @duplicate_logs.count == 1 ? "Delete this log" : "Delete these logs",
send("delete_logs_#{@log.class.name.underscore}s_path"),
send("delete_logs_#{@log.log_type}s_path"),
method: "delete",
params: { ids: @duplicate_logs.map(&:id), original_log_id: @original_log.id, remaining_log_id: @log.id, referrer: params[:referrer], organisation_id: params[:organisation_id] } %>
<%= govuk_button_link_to(
"Cancel",
send("#{@log.class.name.underscore}_duplicate_logs_path", @original_log, original_log_id: @original_log.id, referrer: params[:referrer], organisation_id: params[:organisation_id]),
send("#{@log.log_type}_duplicate_logs_path", @original_log, original_log_id: @original_log.id, referrer: params[:referrer], organisation_id: params[:organisation_id]),
secondary: true,
) %>
</div>

Loading…
Cancel
Save