From 92ca71a591122af31aaed769b402b6624b5f49f9 Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Fri, 21 Jul 2023 12:06:14 +0100 Subject: [PATCH] feat: be more explicit about org scopes --- app/models/organisation.rb | 15 ++++++++++----- app/models/sales_log.rb | 1 + app/models/user.rb | 4 ---- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/app/models/organisation.rb b/app/models/organisation.rb index 31d557b45..702ca0417 100644 --- a/app/models/organisation.rb +++ b/app/models/organisation.rb @@ -1,9 +1,6 @@ class Organisation < ApplicationRecord has_many :users, dependent: :delete_all has_many :data_protection_officers, -> { where(is_dpo: true) }, class_name: "User" - has_many :owned_lettings_logs, class_name: "LettingsLog", foreign_key: "owning_organisation_id", dependent: :delete_all - has_many :managed_lettings_logs, class_name: "LettingsLog", foreign_key: "managing_organisation_id" - has_many :owned_sales_logs, class_name: "SalesLog", foreign_key: "owning_organisation_id", dependent: :delete_all has_one :data_protection_confirmation has_many :organisation_rent_periods has_many :owned_schemes, class_name: "Scheme", foreign_key: "owning_organisation_id", dependent: :delete_all @@ -67,11 +64,19 @@ class Organisation < ApplicationRecord end def lettings_logs - LettingsLog.filter_by_organisation(self) + LettingsLog.filter_by_organisation(absorbed_organisations << self) end def sales_logs - SalesLog.filter_by_organisation(self) + SalesLog.filter_by_owning_organisation(absorbed_organisations << self) + end + + def owned_lettings_logs + LettingsLog.filter_by_owning_organisation(absorbed_organisations << self) + end + + def managed_lettings_logs + LettingsLog.filter_by_managing_organisation(absorbed_organisations << self) end def address_string diff --git a/app/models/sales_log.rb b/app/models/sales_log.rb index 25d555e77..fc57f3ba3 100644 --- a/app/models/sales_log.rb +++ b/app/models/sales_log.rb @@ -40,6 +40,7 @@ class SalesLog < Log .or(filter_by_postcode(param)) .or(filter_by_id(param)) } + scope :filter_by_organisation, ->(owning_organisation, _user = nil) { where(owning_organisation:) } scope :filter_by_owning_organisation, ->(owning_organisation, _user = nil) { where(owning_organisation:) } scope :duplicate_logs, lambda { |log| visible.where(log.slice(*DUPLICATE_LOG_ATTRIBUTES)) diff --git a/app/models/user.rb b/app/models/user.rb index 05a071f8a..1b56b04de 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -77,10 +77,6 @@ class User < ApplicationRecord LettingsLog.filter_by_managing_organisation(organisation.absorbed_organisations << organisation) end - def owned_sales_logs - SalesLog.filter_by_owning_organisation(organisation.absorbed_organisations << organisation) - end - def is_key_contact? is_key_contact end