From 83fc52405811a3198bf794fba9f9c47da6d46133 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Fri, 28 Jul 2023 15:42:33 +0100 Subject: [PATCH] feat: update routing and hidden in check answers methods --- app/models/form/lettings/pages/stock_owner.rb | 2 +- .../form/lettings/questions/stock_owner.rb | 2 +- app/models/form/sales/pages/organisation.rb | 23 +++++++++++++++++-- .../sales/questions/owning_organisation_id.rb | 2 +- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/app/models/form/lettings/pages/stock_owner.rb b/app/models/form/lettings/pages/stock_owner.rb index 0ff937582..dee5d5f71 100644 --- a/app/models/form/lettings/pages/stock_owner.rb +++ b/app/models/form/lettings/pages/stock_owner.rb @@ -14,7 +14,7 @@ class Form::Lettings::Pages::StockOwner < ::Form::Page return false unless current_user return true if current_user.support? - stock_owners = current_user.organisation.stock_owners + stock_owners = current_user.organisation.stock_owners + current_user.organisation.absorbed_organisations.where(holds_own_stock: true) if current_user.organisation.holds_own_stock? if current_user.organisation.absorbed_organisations.any?(&:holds_own_stock?) diff --git a/app/models/form/lettings/questions/stock_owner.rb b/app/models/form/lettings/questions/stock_owner.rb index dc6179b21..ef01e6538 100644 --- a/app/models/form/lettings/questions/stock_owner.rb +++ b/app/models/form/lettings/questions/stock_owner.rb @@ -49,7 +49,7 @@ class Form::Lettings::Questions::StockOwner < ::Form::Question def hidden_in_check_answers?(_log, user = nil) return false if user.support? - stock_owners = user.organisation.stock_owners + stock_owners = user.organisation.stock_owners + user.organisation.absorbed_organisations.where(holds_own_stock: true) if user.organisation.holds_own_stock? stock_owners.count.zero? diff --git a/app/models/form/sales/pages/organisation.rb b/app/models/form/sales/pages/organisation.rb index 2a3d1f63b..8f6728821 100644 --- a/app/models/form/sales/pages/organisation.rb +++ b/app/models/form/sales/pages/organisation.rb @@ -10,7 +10,26 @@ class Form::Sales::Pages::Organisation < ::Form::Page ] end - def routed_to?(_log, current_user) - !!current_user&.support? || current_user&.organisation&.absorbed_organisations.present? + def routed_to?(log, current_user) + return false unless current_user + return true if current_user.support? + + stock_owners = current_user.organisation.stock_owners + current_user.organisation.absorbed_organisations.where(holds_own_stock: true) + + if current_user.organisation.holds_own_stock? + if current_user.organisation.absorbed_organisations.any?(&:holds_own_stock?) + return true + end + return true if stock_owners.count >= 1 + + log.update!(owning_organisation: current_user.organisation) + else + return false if stock_owners.count.zero? + return true if stock_owners.count > 1 + + log.update!(owning_organisation: stock_owners.first) + end + + false end end diff --git a/app/models/form/sales/questions/owning_organisation_id.rb b/app/models/form/sales/questions/owning_organisation_id.rb index d2087b50b..cb146a4af 100644 --- a/app/models/form/sales/questions/owning_organisation_id.rb +++ b/app/models/form/sales/questions/owning_organisation_id.rb @@ -48,7 +48,7 @@ class Form::Sales::Questions::OwningOrganisationId < ::Form::Question def hidden_in_check_answers?(_log, user = nil) return false if user.support? - stock_owners = user.organisation.stock_owners + stock_owners = user.organisation.stock_owners + user.organisation.absorbed_organisations.where(holds_own_stock: true) if user.organisation.holds_own_stock? stock_owners.count.zero?