@@ -22,7 +22,8 @@ def as_csv(user,
2222 unanswered = true ,
2323 selected_phase = nil ,
2424 show_custom_sections = true ,
25- show_coversheet = false )
25+ show_coversheet = false ,
26+ show_research_outputs = false )
2627 hash = prepare ( user , show_coversheet )
2728 CSV . generate do |csv |
2829 prepare_coversheet_for_csv ( csv , headings , hash ) if show_coversheet
@@ -50,6 +51,10 @@ def as_csv(user,
5051 end
5152 end
5253 end
54+ csv << [ ]
55+ csv << [ ]
56+
57+ prepare_research_outputs_for_csv ( csv , headings , hash ) if show_research_outputs
5358 end
5459 end
5560 # rubocop:enable Style/OptionalBooleanParameter
@@ -93,6 +98,9 @@ def prepare(user, coversheet = false)
9398 end
9499 hash [ :phases ] = phases
95100
101+ # include any research outputs
102+ hash [ :research_outputs ] = prepare_research_outputs
103+
96104 record_plan_export ( user , :pdf )
97105
98106 hash
@@ -138,6 +146,29 @@ def prepare_coversheet
138146 end
139147 # rubocop:enable Metrics/AbcSize
140148
149+ # rubocop:disable Metrics/AbcSize
150+ def prepare_research_outputs
151+ research_outputs . map do |research_output |
152+ presenter = ResearchOutputPresenter . new ( research_output : research_output )
153+ size_hash = presenter . converted_file_size ( size : research_output . byte_size )
154+
155+ {
156+ title : research_output . title ,
157+ description : research_output . description ,
158+ type : presenter . display_type ,
159+ anticipated_release_date : presenter . display_release ,
160+ initial_access_level : presenter . display_access ,
161+ intended_repositories : presenter . display_repository &.join ( ', ' ) ,
162+ anticipated_file_size : "#{ size_hash [ :size ] } #{ size_hash [ :unit ] &.upcase } " ,
163+ initial_license : presenter . display_license ,
164+ metadata_standards : presenter . display_metadata_standard &.join ( ', ' ) ,
165+ may_contain_sensitive_data : presenter . display_boolean ( value : research_output . sensitive_data ) ,
166+ may_contain_pii : presenter . display_boolean ( value : research_output . personal_data )
167+ }
168+ end
169+ end
170+ # rubocop:enable Metrics/AbcSize
171+
141172 # rubocop:disable Metrics/AbcSize
142173 def prepare_coversheet_for_csv ( csv , _headings , hash )
143174 csv << [ _ ( 'Title: ' ) , format ( _ ( '%{title}' ) , title : title ) ]
@@ -183,6 +214,21 @@ def prepare_coversheet_for_csv(csv, _headings, hash)
183214 end
184215 # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
185216
217+ # rubocop:disable Metrics/AbcSize
218+ def prepare_research_outputs_for_csv ( csv , _headings , hash )
219+ return false unless hash [ :research_outputs ] . present? && hash [ :research_outputs ] . any?
220+
221+ csv << [ _ ( 'Research Outputs: ' ) ]
222+ # Convert the hash keys to column headers
223+ csv << hash [ :research_outputs ] . first . keys . map { |key | key . to_s . capitalize . gsub ( '_' , ' ' ) }
224+ hash [ :research_outputs ] . each do |research_output |
225+ csv << research_output . values
226+ end
227+ csv << [ ]
228+ csv << [ ]
229+ end
230+ # rubocop:enable Metrics/AbcSize
231+
186232 # rubocop:disable Metrics/AbcSize, Metrics/BlockLength, Metrics/MethodLength
187233 # rubocop:disable Metrics/ParameterLists
188234 def show_section_for_csv ( csv , phase , section , headings , unanswered , hash )
0 commit comments