From ab69841f7c2c5cbfc933efa30b73dd52645d815e Mon Sep 17 00:00:00 2001 From: Manny Dinssa <44172848+Dinssa@users.noreply.github.com> Date: Wed, 17 Jul 2024 12:34:52 +0100 Subject: [PATCH] Separate tenancy startdate and scheme validation & fix bug --- app/models/validations/setup_validations.rb | 1 + app/models/validations/shared_validations.rb | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/models/validations/setup_validations.rb b/app/models/validations/setup_validations.rb index 69b04fce4..ee064b748 100644 --- a/app/models/validations/setup_validations.rb +++ b/app/models/validations/setup_validations.rb @@ -82,6 +82,7 @@ module Validations::SetupValidations def validate_scheme(record) scheme_during_startdate_validation(record) + tenancy_startdate_with_scheme_locations(record) end def validate_location(record) diff --git a/app/models/validations/shared_validations.rb b/app/models/validations/shared_validations.rb index 98fce62da..36806d976 100644 --- a/app/models/validations/shared_validations.rb +++ b/app/models/validations/shared_validations.rb @@ -77,17 +77,15 @@ module Validations::SharedValidations def scheme_during_startdate_validation(record) scheme_inactive_status = inactive_status(record.startdate, record.scheme) + if scheme_inactive_status.present? date, scope, deactivation_date = scheme_inactive_status.values_at(:date, :scope, :deactivation_date) record.errors.add :startdate, I18n.t("validations.setup.startdate.scheme.#{scope}.startdate", name: record.scheme.service_name, date:, deactivation_date:) record.errors.add :scheme_id, I18n.t("validations.setup.startdate.scheme.#{scope}.scheme_id", name: record.scheme.service_name, date:, deactivation_date:) end - if record.scheme.present? && !record.scheme.has_active_locations_on_date?(record.startdate) - record.errors.add :startdate, I18n.t("validations.setup.startdate.scheme.locations_inactive.startdate", name: record.scheme.service_name) - record.errors.add :scheme_id, I18n.t("validations.setup.startdate.scheme.locations_inactive.scheme_id", name: record.scheme.service_name) - end end + def inactive_status(date, resource) return if date.blank? || resource.blank? @@ -106,6 +104,15 @@ module Validations::SharedValidations { scope: status, date: date&.to_formatted_s(:govuk_date), deactivation_date: closest_reactivation&.deactivation_date&.to_formatted_s(:govuk_date) } end + def tenancy_startdate_with_scheme_locations(record) + return unless record.respond_to?(:scheme) + return if record.scheme.blank? || record.startdate.blank? + return if record.scheme.has_active_locations_on_date?(record.startdate) + + record.errors.add :startdate, I18n.t("validations.setup.startdate.scheme.locations_inactive.startdate", name: record.scheme.service_name) + record.errors.add :scheme_id, I18n.t("validations.setup.startdate.scheme.locations_inactive.scheme_id", name: record.scheme.service_name) + end + def shared_validate_partner_count(record, max_people) return if record.form.start_year_after_2024?