class OrganisationPolicy attr_reader :user, :organisation def initialize(user, organisation) @user = user @organisation = organisation end def deactivate? user.support? && organisation.status == :active end def reactivate? user.support? && organisation.status == :deactivated end def delete_confirmation? delete? end def delete? return false unless user.support? return false unless organisation.status == :deactivated || organisation.status == :merged !has_any_logs_in_editable_collection_period end def has_any_logs_in_editable_collection_period editable_from_date = FormHandler.instance.earliest_open_for_editing_collection_start_date editable_lettings_logs = organisation.lettings_logs.visible.after_date(editable_from_date) return true if organisation.lettings_logs.visible.where(startdate: nil).any? || editable_lettings_logs.any? editable_sales_logs = organisation.sales_logs.visible.after_date(editable_from_date) organisation.sales_logs.visible.where(saledate: nil).any? || editable_sales_logs.any? end def duplicate_schemes? user.support? || (user.data_coordinator? && user.organisation == organisation) end def confirm_duplicate_schemes? duplicate_schemes? end end