Submit social housing lettings and sales data (CORE)
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.

85 lines
2.6 KiB

class DataProtectionConfirmationBannerComponent < ViewComponent::Base
include Rails.application.routes.url_helpers
attr_reader :user, :organisation
def initialize(user:, organisation: nil)
@user = user
@organisation = organisation
super
end
def display_banner?
return false if user.support? && organisation.blank?
return true if org_without_dpo?
return false if !org_or_user_org.holds_own_stock? && org_or_user_org.stock_owners.empty? && org_or_user_org.absorbed_organisations.empty?
!org_or_user_org.data_protection_confirmed? || !org_or_user_org.organisation_or_stock_owner_signed_dsa_and_holds_own_stock?
end
def header_text
if org_without_dpo?
"To create logs your organisation must state a data protection officer. They must sign the Data Sharing Agreement."
elsif !org_or_user_org.holds_own_stock? && org_or_user_org.data_protection_confirmed?
"Your organisation does not own stock. To create logs your stock owner(s) must accept the Data Sharing Agreement on CORE."
elsif user.is_dpo?
"Your organisation must accept the Data Sharing Agreement before you can create any logs."
else
"Your data protection officer must accept the Data Sharing Agreement on CORE before you can create any logs."
end
end
def banner_text
if org_without_dpo? || user.is_dpo? || !org_or_user_org.holds_own_stock?
govuk_link_to(
link_text,
link_href,
class: "govuk-notification-banner__link govuk-!-font-weight-bold",
)
else
tag.p data_protection_officers_text
end
end
private
def data_protection_officers_text
if org_or_user_org.data_protection_officers.any?
"You can ask: #{org_or_user_org.data_protection_officers.map(&:name).sort_by(&:downcase).join(', ')}"
end
end
def link_text
if dpo_required?
"Contact helpdesk to assign a data protection officer"
elsif !org_or_user_org.holds_own_stock? && org_or_user_org.data_protection_confirmed?
"View or add stock owners"
else
"Read the Data Sharing Agreement"
end
end
def link_href
if dpo_required?
GlobalConstants::HELPDESK_URL
elsif !org_or_user_org.holds_own_stock? && org_or_user_org.data_protection_confirmed?
stock_owners_organisation_path(org_or_user_org)
else
data_sharing_agreement_organisation_path(org_or_user_org)
end
end
def dpo_required?
org_or_user_org.data_protection_officers.empty?
end
def org_or_user_org
organisation.presence || user.organisation
end
def org_without_dpo?
org_or_user_org.data_protection_officers.empty?
end
end