Browse Source

clear invalid answers when the start date of a log is changed

pull/1469/head
Arthur Campbell 3 years ago
parent
commit
5b89a7f727
  1. 15
      app/models/form.rb
  2. 5
      app/models/lettings_log.rb
  3. 8
      app/models/log.rb
  4. 5
      app/models/sales_log.rb

15
app/models/form.rb

@ -230,6 +230,21 @@ class Form
questions.select { |q| q.type == "numeric" }
end
def radio_questions_valid_options
questions.select { |q| q.type == "radio" }
.group_by(:id)
.transform_values! do |q_array|
q_array.flat_map { |q| q.answer_options.keys }
end
end
def previous_page(page_ids, page_index, log, current_user)
prev_page = get_page(page_ids[page_index - 1])
return prev_page.id if prev_page.routed_to?(log, current_user)
previous_page(page_ids, page_index - 1, log, current_user)
end
def send_chain(arr, log)
Array(arr).inject(log) { |o, a| o.public_send(*a) }
end

5
app/models/lettings_log.rb

@ -26,6 +26,7 @@ class LettingsLog < Log
validates_with LettingsLogValidator
before_validation :recalculate_start_year!, if: :startdate_changed?
before_validation :clear_invalid_radio_answers!, if: :startdate_changed?
before_validation :reset_scheme_location!, if: :scheme_changed?, unless: :location_changed?
before_validation :process_postcode_changes!, if: :postcode_full_changed?
before_validation :process_previous_postcode_changes!, if: :ppostcode_full_changed?
@ -80,6 +81,10 @@ class LettingsLog < Log
FormHandler.instance.form_name_from_start_year(collection_start_year, "lettings")
end
def clear_invalid_radio_answers!
super if startdate_was && @start_year != FormHandler.instance.collection_start_year(startdate_was)
end
def self.editable_fields
attribute_names - AUTOGENERATED_FIELDS
end

8
app/models/log.rb

@ -63,6 +63,14 @@ class Log < ApplicationRecord
end
end
def clear_invalid_radio_answers!
form.radio_questions_valid_options.each do |question_id, valid_options|
next unless (value = self[question_id])
self[question_id] = nil unless valid_options.include?(value.to_s)
end
end
def collection_start_year
return @start_year if @start_year

5
app/models/sales_log.rb

@ -26,6 +26,7 @@ class SalesLog < Log
validates_with SalesLogValidator
before_validation :recalculate_start_year!, if: :saledate_changed?
before_validation :clear_invalid_radio_answers!, if: :saledate_changed?
before_validation :reset_invalidated_dependent_fields!
before_validation :process_postcode_changes!, if: :postcode_full_changed?
before_validation :process_previous_postcode_changes!, if: :ppostcode_full_changed?
@ -76,6 +77,10 @@ class SalesLog < Log
OPTIONAL_FIELDS + dynamically_not_required
end
def clear_invalid_radio_answers!
super if saledate_was && @start_year != FormHandler.instance.collection_start_year(saledate_was)
end
def dynamically_not_required
not_required = []
not_required << "proplen" if proplen_optional?

Loading…
Cancel
Save