diff --git a/app/helpers/collection_time_helper.rb b/app/helpers/collection_time_helper.rb index ea7601c70..37430bdd7 100644 --- a/app/helpers/collection_time_helper.rb +++ b/app/helpers/collection_time_helper.rb @@ -45,4 +45,23 @@ module CollectionTimeHelper def previous_collection_start_date current_collection_start_date - 1.year end + + def quarter_for_date(date: Time.zone.now) + quarters = [ + { cutoff_date: Time.zone.local(2024, 1, 12), start_date: Time.zone.local(2023, 10, 1), end_date: Time.zone.local(2023, 12, 31) }, + { cutoff_date: Time.zone.local(2024, 7, 12), start_date: Time.zone.local(2024, 4, 1), end_date: Time.zone.local(2024, 6, 30) }, + { cutoff_date: Time.zone.local(2024, 10, 11), start_date: Time.zone.local(2024, 7, 1), end_date: Time.zone.local(2024, 9, 30) }, + { cutoff_date: Time.zone.local(2025, 1, 10), start_date: Time.zone.local(2024, 10, 1), end_date: Time.zone.local(2024, 12, 31) }, + ] + + quarter = quarters.find { |q| date.between?(q[:start_date], q[:cutoff_date] + 1.day) } + + return unless quarter + + OpenStruct.new( + cutoff_date: quarter[:cutoff_date], + quarter_start_date: quarter[:start_date], + quarter_end_date: quarter[:end_date], + ) + end end diff --git a/app/views/home/_upcoming_deadlines.html.erb b/app/views/home/_upcoming_deadlines.html.erb new file mode 100644 index 000000000..5a2300ea4 --- /dev/null +++ b/app/views/home/_upcoming_deadlines.html.erb @@ -0,0 +1,16 @@ +

Upcoming deadlines

+<% current_quarter = quarter_for_date(date: Time.zone.now) %> +<% if current_quarter.present? %> +

12 January 2024: Quarterly cut off date for tenancies and sales starting between 1 October 2023 and 31 December 2023.

+<% end %> + +<% current_lettings_form = FormHandler.instance.current_lettings_form %> +

<%= current_lettings_form.submission_deadline.to_formatted_s(:govuk_date) %>: Deadline to submit logs for tenancies starting between <%= collection_start_date(Time.zone.now).to_formatted_s(:govuk_date) %> to <%= collection_end_date(Time.zone.now).to_formatted_s(:govuk_date) %>

+<%= govuk_details(summary_text: "Quarterly cut-off dates for 2024 to 2025") do %> + +<% end %> diff --git a/app/views/home/index.html.erb b/app/views/home/index.html.erb index 7469ed18f..e87fde287 100644 --- a/app/views/home/index.html.erb +++ b/app/views/home/index.html.erb @@ -2,5 +2,7 @@
<%= render partial: "layouts/collection_resources" %> +
+ <%= render partial: "home/upcoming_deadlines" %>
diff --git a/spec/helpers/collection_time_helper_spec.rb b/spec/helpers/collection_time_helper_spec.rb index 3eef01b5e..859431c57 100644 --- a/spec/helpers/collection_time_helper_spec.rb +++ b/spec/helpers/collection_time_helper_spec.rb @@ -109,4 +109,34 @@ RSpec.describe CollectionTimeHelper do end end end + + describe "#quarter_for_date" do + it "returns correct cutoff date for curent quarter" do + quarter = quarter_for_date(date: Time.zone.local(2023, 10, 1)) + expect(quarter.cutoff_date).to eq(Time.zone.local(2024, 1, 12)) + expect(quarter.quarter_start_date).to eq(Time.zone.local(2023, 10, 1)) + expect(quarter.quarter_end_date).to eq(Time.zone.local(2023, 12, 31)) + end + + it "returns correct cutoff date for the first quarter of 2024/25" do + quarter = quarter_for_date(date: Time.zone.local(2024, 4, 1)) + expect(quarter.cutoff_date).to eq(Time.zone.local(2024, 7, 12)) + expect(quarter.quarter_start_date).to eq(Time.zone.local(2024, 4, 1)) + expect(quarter.quarter_end_date).to eq(Time.zone.local(2024, 6, 30)) + end + + it "returns correct cutoff date for the second quarter of 2024/25" do + quarter = quarter_for_date(date: Time.zone.local(2024, 9, 30)) + expect(quarter.cutoff_date).to eq(Time.zone.local(2024, 10, 11)) + expect(quarter.quarter_start_date).to eq(Time.zone.local(2024, 7, 1)) + expect(quarter.quarter_end_date).to eq(Time.zone.local(2024, 9, 30)) + end + + it "returns correct cutoff date for the third quarter of 2024/25" do + quarter = quarter_for_date(date: Time.zone.local(2024, 10, 25)) + expect(quarter.cutoff_date).to eq(Time.zone.local(2025, 1, 10)) + expect(quarter.quarter_start_date).to eq(Time.zone.local(2024, 10, 1)) + expect(quarter.quarter_end_date).to eq(Time.zone.local(2024, 12, 31)) + end + end end