diff --git a/app/models/form/lettings/pages/stock_owner.rb b/app/models/form/lettings/pages/stock_owner.rb index dee5d5f71..07fe01327 100644 --- a/app/models/form/lettings/pages/stock_owner.rb +++ b/app/models/form/lettings/pages/stock_owner.rb @@ -14,10 +14,14 @@ 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 + current_user.organisation.absorbed_organisations.where(holds_own_stock: true) + stock_owners = if FeatureToggle.merge_organisations_enabled? + current_user.organisation.stock_owners + current_user.organisation.absorbed_organisations.where(holds_own_stock: true) + else + current_user.organisation.stock_owners + end if current_user.organisation.holds_own_stock? - if current_user.organisation.absorbed_organisations.any?(&:holds_own_stock?) + if FeatureToggle.merge_organisations_enabled? && current_user.organisation.absorbed_organisations.any?(&:holds_own_stock?) return true end return true if stock_owners.count >= 1 diff --git a/app/models/form/lettings/questions/stock_owner.rb b/app/models/form/lettings/questions/stock_owner.rb index ef01e6538..8fc42e66d 100644 --- a/app/models/form/lettings/questions/stock_owner.rb +++ b/app/models/form/lettings/questions/stock_owner.rb @@ -49,7 +49,11 @@ 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 + user.organisation.absorbed_organisations.where(holds_own_stock: true) + stock_owners = if FeatureToggle.merge_organisations_enabled? + user.organisation.stock_owners + user.organisation.absorbed_organisations.where(holds_own_stock: true) + else + user.organisation.stock_owners + end 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 8f6728821..c5dc22733 100644 --- a/app/models/form/sales/pages/organisation.rb +++ b/app/models/form/sales/pages/organisation.rb @@ -11,25 +11,29 @@ class Form::Sales::Pages::Organisation < ::Form::Page end def routed_to?(log, current_user) - return false unless current_user - return true if current_user.support? + if FeatureToggle.merge_organisations_enabled? + 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) + 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 + 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 - return true if stock_owners.count >= 1 - log.update!(owning_organisation: current_user.organisation) + false else - return false if stock_owners.count.zero? - return true if stock_owners.count > 1 - - log.update!(owning_organisation: stock_owners.first) + !!current_user&.support? 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 0db5ec1a0..1643887d2 100644 --- a/app/models/form/sales/questions/owning_organisation_id.rb +++ b/app/models/form/sales/questions/owning_organisation_id.rb @@ -11,24 +11,32 @@ class Form::Sales::Questions::OwningOrganisationId < ::Form::Question answer_opts = { "" => "Select an option" } return answer_opts unless ActiveRecord::Base.connected? - return answer_opts unless user - return answer_opts unless log - if log.owning_organisation_id.present? - answer_opts = answer_opts.merge({ log.owning_organisation.id => log.owning_organisation.name }) - end + if FeatureToggle.merge_organisations_enabled? + return answer_opts unless user + return answer_opts unless log - if !user.support? && user.organisation.holds_own_stock? - answer_opts[user.organisation.id] = "#{user.organisation.name} (Your organisation)" - end + if log.owning_organisation_id.present? + answer_opts = answer_opts.merge({ log.owning_organisation.id => log.owning_organisation.name }) + end + + if !user.support? && user.organisation.holds_own_stock? + answer_opts[user.organisation.id] = "#{user.organisation.name} (Your organisation)" + end - user_answer_options = if user.support? - Organisation.where(holds_own_stock: true) - else - user.organisation.stock_owners + user.organisation.absorbed_organisations.where(holds_own_stock: true) - end.pluck(:id, :name).to_h + user_answer_options = if user.support? + Organisation.where(holds_own_stock: true) + else + user.organisation.stock_owners + user.organisation.absorbed_organisations.where(holds_own_stock: true) + end.pluck(:id, :name).to_h - answer_opts.merge(user_answer_options) + answer_opts.merge(user_answer_options) + else + Organisation.select(:id, :name).each_with_object(answer_opts) do |organisation, hsh| + hsh[organisation.id] = organisation.name + hsh + end + end end def displayed_answer_options(log, user = nil) @@ -46,14 +54,18 @@ class Form::Sales::Questions::OwningOrganisationId < ::Form::Question end def hidden_in_check_answers?(_log, user = nil) - return false if user.support? + if FeatureToggle.merge_organisations_enabled? + return false if user.support? - stock_owners = user.organisation.stock_owners + user.organisation.absorbed_organisations.where(holds_own_stock: true) + 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? + if user.organisation.holds_own_stock? + stock_owners.count.zero? + else + stock_owners.count <= 1 + end else - stock_owners.count <= 1 + !current_user.support? end end @@ -64,6 +76,6 @@ class Form::Sales::Questions::OwningOrganisationId < ::Form::Question private def selected_answer_option_is_derived?(_log) - true + FeatureToggle.merge_organisations_enabled? ? true : false end end