From 4bf1f81c79999161e8149e2e7adabcfc6690ad4c Mon Sep 17 00:00:00 2001 From: Arthur Campbell Date: Tue, 25 Apr 2023 14:04:53 +0100 Subject: [PATCH] refactor :ordered_sales_questions_for_all_years --- app/models/form_handler.rb | 24 ++++++++++++++--------- app/services/csv/sales_log_csv_service.rb | 2 +- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/app/models/form_handler.rb b/app/models/form_handler.rb index b327529fc..41ed15742 100644 --- a/app/models/form_handler.rb +++ b/app/models/form_handler.rb @@ -51,19 +51,25 @@ class FormHandler def ordered_sales_questions_for_all_years sales_forms = forms.filter { |name, _form| name.end_with? "sales" }.values ordered_questions = sales_forms.pop.questions.uniq(&:id) - index_of_last_question = 0 - sales_forms.flat_map(&:questions).each do |question| - index = ordered_questions.index { |q| q.id == question.id } - if index - index_of_last_question = index - else - ordered_questions.insert(index_of_last_question + 1, question) - index_of_last_question += 1 - end + question_ids = ordered_questions.map(&:id) + all_questions_from_previous_forms = sales_forms.flat_map(&:questions) + deprecated_questions_by_preceding_question_id(question_ids, all_questions_from_previous_forms).each do |preceding_question_id, deprecated_question| + index_of_preceding_question = ordered_questions.index { |q| q.id == preceding_question_id } + ordered_questions.insert(index_of_preceding_question + 1, deprecated_question) end ordered_questions end + def deprecated_questions_by_preceding_question_id(current_form_question_ids, all_questions_from_previous_forms) + deprecated_questions = {} + all_questions_from_previous_forms.each_cons(2) do |preceding_question, question| + next if current_form_question_ids.include?(question.id) || deprecated_questions.values.map(&:id).include?(question.id) + + deprecated_questions[preceding_question.id] = question + end + deprecated_questions + end + def lettings_forms forms = {} directories.each do |directory| diff --git a/app/services/csv/sales_log_csv_service.rb b/app/services/csv/sales_log_csv_service.rb index 36acf8746..eab6876c3 100644 --- a/app/services/csv/sales_log_csv_service.rb +++ b/app/services/csv/sales_log_csv_service.rb @@ -40,7 +40,7 @@ module Csv DATE_FIELDS = %w[ created_at updated_at - ] + ].freeze def value(attribute, log) if ATTRIBUTES_OF_RELATED_OBJECTS.key? attribute.to_sym