Browse Source

feat: use latest merge date/start date where available for availability text for schemes and locations

pull/2061/head
natdeanlewissoftwire 1 year ago
parent
commit
9bd2463ecf
  1. 4
      app/models/location.rb
  2. 4
      app/models/scheme.rb
  3. 4
      app/services/merge/merge_organisations_service.rb
  4. 5
      db/migrate/20231127120659_add_merge_date_to_schemes.rb
  5. 5
      db/migrate/20231127125729_add_merge_date_to_locations.rb
  6. 4
      db/schema.rb

4
app/models/location.rb

@ -122,9 +122,7 @@ class Location < ApplicationRecord
end
def available_from
return startdate if startdate.present?
FormHandler.instance.earliest_open_collection_start_date(now: created_at)
[merge_date, startdate].compact.max || FormHandler.instance.earliest_open_collection_start_date(now: created_at)
end
def open_deactivation

4
app/models/scheme.rb

@ -243,7 +243,7 @@ class Scheme < ApplicationRecord
end
def validate_confirmed
required_attributes = attribute_names - %w[id created_at updated_at old_id old_visible_id confirmed end_date sensitive secondary_client_group total_units deactivation_date deactivation_date_type]
required_attributes = attribute_names - %w[id created_at updated_at old_id old_visible_id confirmed end_date sensitive secondary_client_group total_units deactivation_date deactivation_date_type merge_date]
if confirmed == true
required_attributes.any? do |attribute|
@ -262,7 +262,7 @@ class Scheme < ApplicationRecord
end
def available_from
FormHandler.instance.earliest_open_collection_start_date(now: created_at)
merge_date || FormHandler.instance.earliest_open_collection_start_date(now: created_at)
end
def open_deactivation

4
app/services/merge/merge_organisations_service.rb

@ -68,9 +68,9 @@ private
merging_organisation.owned_schemes.each do |scheme|
next if scheme.deactivated?
new_scheme = Scheme.create!(scheme.attributes.except("id", "owning_organisation_id", "old_id", "old_visible_id").merge(owning_organisation: @absorbing_organisation))
new_scheme = Scheme.create!(scheme.attributes.except("id", "owning_organisation_id", "old_id", "old_visible_id").merge(owning_organisation: @absorbing_organisation, merge_date: @merge_date))
scheme.locations.each do |location|
new_scheme.locations << Location.new(location.attributes.except("id", "scheme_id", "old_id", "old_visible_id")) unless location.deactivated?
new_scheme.locations << Location.new(location.attributes.except("id", "scheme_id", "old_id", "old_visible_id").merge(merge_date: @merge_date)) unless location.deactivated?
end
@merged_schemes[merging_organisation.name] << { name: new_scheme.service_name, code: new_scheme.id }
SchemeDeactivationPeriod.create!(scheme:, deactivation_date: @merge_date)

5
db/migrate/20231127120659_add_merge_date_to_schemes.rb

@ -0,0 +1,5 @@
class AddMergeDateToSchemes < ActiveRecord::Migration[7.0]
def change
add_column :schemes, :merge_date, :datetime
end
end

5
db/migrate/20231127125729_add_merge_date_to_locations.rb

@ -0,0 +1,5 @@
class AddMergeDateToLocations < ActiveRecord::Migration[7.0]
def change
add_column :locations, :merge_date, :datetime
end
end

4
db/schema.rb

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.0].define(version: 2023_10_23_142854) do
ActiveRecord::Schema[7.0].define(version: 2023_11_27_125729) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -355,6 +355,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_10_23_142854) do
t.datetime "startdate"
t.string "location_admin_district"
t.boolean "confirmed"
t.datetime "merge_date"
t.index ["old_id"], name: "index_locations_on_old_id", unique: true
t.index ["scheme_id"], name: "index_locations_on_scheme_id"
end
@ -659,6 +660,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_10_23_142854) do
t.string "old_visible_id"
t.integer "total_units"
t.boolean "confirmed"
t.datetime "merge_date"
t.index ["owning_organisation_id"], name: "index_schemes_on_owning_organisation_id"
end

Loading…
Cancel
Save