You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.3 KiB
45 lines
1.3 KiB
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
|
|
|