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.
		
		
		
		
		
			
		
			
				
					
					
						
							73 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							73 lines
						
					
					
						
							1.8 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? | |
|  | |
|     !org_or_user_org.data_protection_confirmed? | |
|   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 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? | |
|       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" | |
|     else | |
|       "Read the Data Sharing Agreement" | |
|     end | |
|   end | |
|  | |
|   def link_href | |
|     dpo_required? ? GlobalConstants::HELPDESK_URL : data_sharing_agreement_organisation_path(org_or_user_org) | |
|   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
 | |
| 
 |