From 0ba46983477cf26a90da61853f8aedb53b8af92b Mon Sep 17 00:00:00 2001 From: Kat <54268893+kosiakkatrina@users.noreply.github.com> Date: Wed, 12 Feb 2025 16:22:02 +0000 Subject: [PATCH] Add deadline text --- app/frontend/styles/_red-link.scss | 4 +++ app/helpers/collection_deadline_helper.rb | 3 +- app/helpers/tasklist_helper.rb | 15 +++++++++ app/views/logs/edit.html.erb | 1 + spec/helpers/tasklist_helper_spec.rb | 38 +++++++++++++++++++++++ 5 files changed, 60 insertions(+), 1 deletion(-) diff --git a/app/frontend/styles/_red-link.scss b/app/frontend/styles/_red-link.scss index 421f55bcb..c572ba004 100644 --- a/app/frontend/styles/_red-link.scss +++ b/app/frontend/styles/_red-link.scss @@ -9,6 +9,10 @@ color: govuk-colour("red"); } +.app-red-text { + color: govuk-colour("red"); +} + .app-red-link:hover { color: govuk-shade(govuk-colour("red"), 20); } diff --git a/app/helpers/collection_deadline_helper.rb b/app/helpers/collection_deadline_helper.rb index 3c4f7e502..892a3ec22 100644 --- a/app/helpers/collection_deadline_helper.rb +++ b/app/helpers/collection_deadline_helper.rb @@ -61,11 +61,12 @@ module CollectionDeadlineHelper first_quarter(year).merge(quarter: "Q1"), second_quarter(year).merge(quarter: "Q2"), third_quarter(year).merge(quarter: "Q3"), + fourth_quarter(year).merge(quarter: "Q4"), ] end def quarter_for_date(date: Time.zone.now) - quarters = quarter_dates(current_collection_start_year) + quarters = quarter_dates(collection_start_year_for_date(date)) quarter = quarters.find { |q| date.between?(q[:start_date], q[:cutoff_date] + 1.day) } diff --git a/app/helpers/tasklist_helper.rb b/app/helpers/tasklist_helper.rb index ff52f4094..0500c7451 100644 --- a/app/helpers/tasklist_helper.rb +++ b/app/helpers/tasklist_helper.rb @@ -2,6 +2,7 @@ module TasklistHelper include GovukLinkHelper include GovukVisuallyHiddenHelper include CollectionTimeHelper + include CollectionDeadlineHelper def breadcrumb_logs_title(log, current_user) log_type = log.lettings? ? "Lettings" : "Sales" @@ -70,6 +71,20 @@ module TasklistHelper status == :cannot_start_yet ? "" : "govuk-task-list__item--with-link" end + def deadline_text(log) + return if log.completed? + return if log.startdate.nil? + + log_quarter = quarter_for_date(date: log.startdate) + deadline_for_log = log_quarter.cutoff_date + + if deadline_for_log > Time.zone.now + "
Deadline: #{log_quarter.cutoff_date.strftime('%A %-d %B %Y')}.
".html_safe + else + "
Overdue: #{log_quarter.quarter} deadline #{log_quarter.cutoff_date.strftime('%A %-d %B %Y')}.
".html_safe + end + end + private def breadcrumb_organisation(log) diff --git a/app/views/logs/edit.html.erb b/app/views/logs/edit.html.erb index 6d2063577..91d249362 100644 --- a/app/views/logs/edit.html.erb +++ b/app/views/logs/edit.html.erb @@ -37,6 +37,7 @@ <% end %> + <%= deadline_text(@log) %> <%= render "tasklist" %> <%= edit_actions_for_log(@log, bulk_upload_filter_applied) %> diff --git a/spec/helpers/tasklist_helper_spec.rb b/spec/helpers/tasklist_helper_spec.rb index c5e1bd784..6338b1014 100644 --- a/spec/helpers/tasklist_helper_spec.rb +++ b/spec/helpers/tasklist_helper_spec.rb @@ -204,4 +204,42 @@ RSpec.describe TasklistHelper do end end end + + describe "deadline text" do + context "when log does not have a sale/start date" do + let(:log) { build(:sales_log, saledate: nil) } + + it "returns nil" do + expect(deadline_text(log)).to be_nil + end + end + + context "when log is completed" do + let(:log) { build(:sales_log, :completed, status: "completed") } + + it "returns nil" do + expect(deadline_text(log)).to be_nil + end + end + + context "when today is before the deadline for log with sale/start date" do + let(:log) { build(:sales_log, saledate: Time.zone.local(2025, 6, 1)) } + + it "returns the deadline text" do + allow(Time.zone).to receive(:now).and_return(Time.zone.local(2025, 5, 7)) + allow(Time.zone).to receive(:today).and_return(Time.zone.local(2025, 5, 7)) + expect(deadline_text(log)).to include("Deadline: ") + end + end + + context "when today is after the deadline for log with sale/start date" do + let(:log) { build(:sales_log, saledate: Time.zone.local(2025, 2, 1)) } + + it "returns the overdue text" do + allow(Time.zone).to receive(:now).and_return(Time.zone.local(2025, 6, 7)) + allow(Time.zone).to receive(:today).and_return(Time.zone.local(2025, 6, 7)) + expect(deadline_text(log)).to include("Overdue: ") + end + end + end end