From 000fe4b3695518ed65fa0302f2da4ef2d6d60875 Mon Sep 17 00:00:00 2001 From: Samuel Young Date: Tue, 3 Feb 2026 14:36:04 +0000 Subject: [PATCH] CLDC-1402: Ensure that start date is valid --- app/helpers/collection_time_helper.rb | 9 ++++++--- app/models/form/lettings/questions/tenancy_start_date.rb | 7 +++++++ app/models/form/question.rb | 7 +++++++ app/views/form/_date_question.html.erb | 2 +- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/app/helpers/collection_time_helper.rb b/app/helpers/collection_time_helper.rb index 03fe556a2..d082852f8 100644 --- a/app/helpers/collection_time_helper.rb +++ b/app/helpers/collection_time_helper.rb @@ -16,10 +16,13 @@ module CollectionTimeHelper Time.zone.local(collection_start_year_for_date(date), 4, 1) end - def date_mid_collection_year_formatted(date) + def date_mid_collection_year(date) relevant_year = date.nil? ? current_collection_start_year : collection_start_year_for_date(date) - example_date = Date.new(relevant_year, 9, 13) - example_date.to_formatted_s(:govuk_date_number_month) + Date.new(relevant_year, 9, 13) + end + + def date_mid_collection_year_formatted(date) + date_mid_collection_year(date).to_formatted_s(:govuk_date_number_month) end def current_collection_start_date diff --git a/app/models/form/lettings/questions/tenancy_start_date.rb b/app/models/form/lettings/questions/tenancy_start_date.rb index cf1b556e7..dbc2d5a87 100644 --- a/app/models/form/lettings/questions/tenancy_start_date.rb +++ b/app/models/form/lettings/questions/tenancy_start_date.rb @@ -1,4 +1,6 @@ class Form::Lettings::Questions::TenancyStartDate < ::Form::Question + include CollectionTimeHelper + def initialize(id, hsh, page) super @id = "startdate" @@ -7,5 +9,10 @@ class Form::Lettings::Questions::TenancyStartDate < ::Form::Question @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] if form.start_date.present? end + def example_date_formatted(log) + example_date = [date_mid_collection_year(log.startdate), Time.zone.today + 7].min + example_date.to_formatted_s(:govuk_date_number_month) + end + QUESTION_NUMBER_FROM_YEAR = { 2023 => 5, 2024 => 7 }.freeze end diff --git a/app/models/form/question.rb b/app/models/form/question.rb index c826493a0..45f1b1a78 100644 --- a/app/models/form/question.rb +++ b/app/models/form/question.rb @@ -1,5 +1,6 @@ class Form::Question include FormattingHelper + include CollectionTimeHelper attr_accessor :id, :description, :questions, :disable_clearing_if_not_routed_or_dynamic_answer_options, :type, :min, :max, :step, :width, :fields_to_add, :result_field, @@ -299,6 +300,12 @@ class Form::Question answer_options.keys.reject { |x| x.match(/divider/) } end + def example_date_formatted(log) + if type == "date" + date_mid_collection_year_formatted(log.startdate) + end + end + private def selected_answer_option_is_derived?(log) diff --git a/app/views/form/_date_question.html.erb b/app/views/form/_date_question.html.erb index a1df5f4d5..39286a554 100644 --- a/app/views/form/_date_question.html.erb +++ b/app/views/form/_date_question.html.erb @@ -6,7 +6,7 @@ question_id: question.id, legend: { text: legend[:text], size: legend[:size], caption: caption(caption_text, page_header, conditional) }, resource_type: @log.log_type, - hint: (question.hint_text.blank? ? "" : (question.hint_text.html_safe + "

".html_safe)) + "For example, #{date_mid_collection_year_formatted(@log.startdate).tr(' ', '/')}", + hint: (question.hint_text.blank? ? "" : (question.hint_text.html_safe + "

".html_safe)) + "For example, #{question.example_date_formatted(@log).tr(' ', '/')}", f:, } %>