From 78c6f55de0e1acbae7944a79e837e6e1640c8e2a Mon Sep 17 00:00:00 2001 From: Carolyn Date: Thu, 13 Mar 2025 22:09:00 +0000 Subject: [PATCH] status check all deactivation periods instead of just one --- app/models/location.rb | 2 +- app/models/location_deactivation_period.rb | 5 +++++ app/models/scheme.rb | 2 +- app/models/scheme_deactivation_period.rb | 4 ++++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/models/location.rb b/app/models/location.rb index 0e576afe7..02fad559c 100644 --- a/app/models/location.rb +++ b/app/models/location.rb @@ -235,7 +235,7 @@ class Location < ApplicationRecord open_deactivation&.deactivation_date.present? && date >= open_deactivation.deactivation_date || scheme.status_at(date) == :deactivated return :deactivating_soon if open_deactivation&.deactivation_date.present? && date < open_deactivation.deactivation_date || scheme.status_at(date) == :deactivating_soon return :activating_soon if startdate.present? && date < startdate - return :reactivating_soon if last_deactivation_before(date)&.reactivation_date.present? && date < last_deactivation_before(date).reactivation_date || scheme.status_at(date) == :reactivating_soon + return :reactivating_soon if location_deactivation_periods.deactivations_with_reactivation.any? { |p| p.includes_date?(date) } || scheme.status_at(date) == :reactivating_soon :active end diff --git a/app/models/location_deactivation_period.rb b/app/models/location_deactivation_period.rb index 11296d64e..3c8e533cf 100644 --- a/app/models/location_deactivation_period.rb +++ b/app/models/location_deactivation_period.rb @@ -48,4 +48,9 @@ class LocationDeactivationPeriod < ApplicationRecord attr_accessor :deactivation_date_type, :reactivation_date_type scope :deactivations_without_reactivation, -> { where(reactivation_date: nil) } + scope :deactivations_with_reactivation, -> { where.not(reactivation_date: nil) } + + def includes_date?(date) + deactivation_date <= date && (reactivation_date.nil? or reactivation_date > date) + end end diff --git a/app/models/scheme.rb b/app/models/scheme.rb index f1a2b6907..81bd505ed 100644 --- a/app/models/scheme.rb +++ b/app/models/scheme.rb @@ -333,7 +333,7 @@ class Scheme < ApplicationRecord (open_deactivation&.deactivation_date.present? && date >= open_deactivation.deactivation_date) return :incomplete unless confirmed && locations.confirmed.any? return :deactivating_soon if open_deactivation&.deactivation_date.present? && date < open_deactivation.deactivation_date - return :reactivating_soon if last_deactivation_before(date)&.reactivation_date.present? && date < last_deactivation_before(date).reactivation_date + return :reactivating_soon if scheme_deactivation_periods.deactivations_with_reactivation.any? { |p| p.includes_date?(date) } return :activating_soon if startdate.present? && date < startdate :active diff --git a/app/models/scheme_deactivation_period.rb b/app/models/scheme_deactivation_period.rb index 2c61d59f9..36c355f2c 100644 --- a/app/models/scheme_deactivation_period.rb +++ b/app/models/scheme_deactivation_period.rb @@ -49,4 +49,8 @@ class SchemeDeactivationPeriod < ApplicationRecord scope :deactivations_without_reactivation, -> { where(reactivation_date: nil) } scope :deactivations_with_reactivation, -> { where.not(reactivation_date: nil) } + + def includes_date?(date) + deactivation_date <= date && (reactivation_date.nil? or reactivation_date > date) + end end