From 8200634c9f32fb7cfad39a9d157cde091a82e0c5 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Mon, 20 Nov 2023 17:12:48 +0000 Subject: [PATCH] feat: use scoping to simplify editable set logic --- app/models/form_handler.rb | 16 ++++++++++++++++ app/models/organisation.rb | 6 ++---- app/models/user.rb | 6 ++---- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/app/models/form_handler.rb b/app/models/form_handler.rb index 645efb1b4..83bfb0f8a 100644 --- a/app/models/form_handler.rb +++ b/app/models/form_handler.rb @@ -178,6 +178,22 @@ class FormHandler end end + def lettings_earliest_open_for_editing_collection_start_date(now: Time.zone.now) + if lettings_in_edit_crossover_period?(now:) + collection_start_date(now) - 1.year + else + collection_start_date(now) + end + end + + def sales_earliest_open_for_editing_collection_start_date(now: Time.zone.now) + if sales_in_edit_crossover_period?(now:) + collection_start_date(now) - 1.year + else + collection_start_date(now) + end + end + private def get_all_forms diff --git a/app/models/organisation.rb b/app/models/organisation.rb index 4c9d038c7..1e05bddab 100644 --- a/app/models/organisation.rb +++ b/app/models/organisation.rb @@ -134,13 +134,11 @@ class Organisation < ApplicationRecord end def editable_duplicate_lettings_logs_sets - lettings_logs.duplicate_sets.map { |array_str| array_str ? array_str.map(&:to_i) : [] } - .select { |set| LettingsLog.find(set.first).collection_period_open_for_editing? } + lettings_logs.after_date(FormHandler.instance.lettings_earliest_open_for_editing_collection_start_date).duplicate_sets.map { |array_str| array_str ? array_str.map(&:to_i) : [] } end def editable_duplicate_sales_logs_sets - sales_logs.duplicate_sets.map { |array_str| array_str ? array_str.map(&:to_i) : [] } - .select { |set| SalesLog.find(set.first).collection_period_open_for_editing? } + sales_logs.after_date(FormHandler.instance.sales_earliest_open_for_editing_collection_start_date).duplicate_sets.map { |array_str| array_str ? array_str.map(&:to_i) : [] } end def recently_absorbed_organisations_grouped_by_merge_date diff --git a/app/models/user.rb b/app/models/user.rb index 8f47abebb..067095d70 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -204,13 +204,11 @@ class User < ApplicationRecord end def editable_duplicate_lettings_logs_sets - lettings_logs.duplicate_sets(id).map { |array_str| array_str ? array_str.map(&:to_i) : [] } - .select { |set| LettingsLog.find(set.first).collection_period_open_for_editing? } + lettings_logs.after_date(FormHandler.instance.lettings_earliest_open_for_editing_collection_start_date).duplicate_sets(id).map { |array_str| array_str ? array_str.map(&:to_i) : [] } end def editable_duplicate_sales_logs_sets - sales_logs.duplicate_sets(id).map { |array_str| array_str ? array_str.map(&:to_i) : [] } - .select { |set| SalesLog.find(set.first).collection_period_open_for_editing? } + sales_logs.after_date(FormHandler.instance.sales_earliest_open_for_editing_collection_start_date).duplicate_sets(id).map { |array_str| array_str ? array_str.map(&:to_i) : [] } end protected