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.
 
 
 
 

75 lines
3.0 KiB

module CollectionResourcesHelper
include CollectionTimeHelper
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?
[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}",
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)
url = "https://#{Rails.application.config.collection_resources_s3_bucket_name}.s3.amazonaws.com/#{file}"
uri = URI.parse(url)
response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == "https") do |http|
http.request_head(uri)
end
response.is_a?(Net::HTTPSuccess) || response.is_a?(Net::HTTPRedirection)
end
end