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.
86 lines
3.9 KiB
86 lines
3.9 KiB
module CollectionResourcesHelper |
|
include CollectionTimeHelper |
|
include GovukLinkHelper |
|
include GovukVisuallyHiddenHelper |
|
|
|
HUMAN_READABLE_CONTENT_TYPE = { "application/pdf": "PDF", |
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "Microsoft Excel", |
|
"application/vnd.ms-excel": "Microsoft Excel (Old Format)", |
|
"application/msword": "Microsoft Word", |
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": "Microsoft Word (DOCX)", |
|
"image/jpeg": "JPEG Image", |
|
"image/png": "PNG Image", |
|
"text/plain": "Text Document", |
|
"text/html": "HTML Document" }.freeze |
|
|
|
def file_type_size_and_pages(file, number_of_pages: nil) |
|
file_pages = number_of_pages ? pluralize(number_of_pages, "page") : nil |
|
metadata = CollectionResourcesService.new.get_file_metadata(file) |
|
|
|
return [file_pages].compact.join(", ") unless metadata |
|
|
|
file_size = number_to_human_size(metadata["content_length"].to_i) |
|
file_type = HUMAN_READABLE_CONTENT_TYPE[metadata["content_type"].to_sym] || "Unknown File Type" |
|
[file_type, file_size, file_pages].compact.join(", ") |
|
end |
|
|
|
def displayed_collection_resource_years |
|
return [previous_collection_start_year, current_collection_start_year] if FormHandler.instance.in_edit_crossover_period? |
|
return [current_collection_start_year, next_collection_start_year] if CollectionResource.where(year: next_collection_start_year, mandatory: true, released_to_user: true).any? |
|
|
|
[current_collection_start_year] |
|
end |
|
|
|
def editable_collection_resource_years |
|
return [previous_collection_start_year, current_collection_start_year] if FormHandler.instance.in_edit_crossover_period? |
|
return [next_collection_start_year, current_collection_start_year] if (Time.zone.today >= Time.zone.local(Time.zone.today.year, 1, 1) && Time.zone.today < Time.zone.local(Time.zone.today.year, 4, 1)) || FeatureToggle.allow_future_resource_updates? |
|
|
|
[current_collection_start_year] |
|
end |
|
|
|
def year_range_format(year) |
|
"#{year % 100}/#{(year + 1) % 100}" |
|
end |
|
|
|
def text_year_range_format(year) |
|
"#{year} to #{year + 1}" |
|
end |
|
|
|
def document_list_component_items(resources) |
|
resources.map do |resource| |
|
{ |
|
name: "Download the #{resource.display_name.downcase}", |
|
href: resource.download_path, |
|
metadata: file_type_size_and_pages(resource.download_filename), |
|
} |
|
end |
|
end |
|
|
|
def document_list_edit_component_items(resources) |
|
resources.map do |resource| |
|
{ |
|
name: resource.download_filename, |
|
href: resource.download_path, |
|
metadata: file_type_size_and_pages(resource.download_filename), |
|
} |
|
end |
|
end |
|
|
|
def file_exists_on_s3?(file) |
|
CollectionResourcesService.new.file_exists_on_s3?(file) |
|
end |
|
|
|
def display_next_year_banner? |
|
return false if CollectionResource.where(year: next_collection_start_year, mandatory: true, released_to_user: true).any? |
|
|
|
editable_collection_resource_years.include?(next_collection_start_year) |
|
end |
|
|
|
def next_year_banner_text(lettings_resources, sales_resources) |
|
if lettings_resources[next_collection_start_year].map(&:download_filename).all? { |file| file_exists_on_s3?(file) } && sales_resources[next_collection_start_year].map(&:download_filename).all? { |file| file_exists_on_s3?(file) } |
|
govuk_link_to "Release the #{text_year_range_format(next_collection_start_year)} collection resources to users", release_mandatory_collection_resources_path(year: next_collection_start_year), class: "govuk-link" |
|
else |
|
"Once you have uploaded all the required #{text_year_range_format(next_collection_start_year)} collection resources, you will be able to release them to users." |
|
end |
|
end |
|
end
|
|
|