43 lines
1.1 KiB
Ruby
43 lines
1.1 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
class ExportedColumnFormatter
|
||
|
def self.format(column:, champ_or_dossier:)
|
||
|
return if champ_or_dossier.nil?
|
||
|
|
||
|
raw_value = column.value(champ_or_dossier)
|
||
|
|
||
|
case column.type
|
||
|
when :attachements
|
||
|
format_attachments(column:, raw_value:)
|
||
|
when :enum
|
||
|
format_enum(column:, raw_value:)
|
||
|
when :enums
|
||
|
format_enums(column:, raw_values: raw_value)
|
||
|
else
|
||
|
raw_value
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def self.format_attachments(column:, raw_value:)
|
||
|
case column.tdc_type
|
||
|
when TypeDeChamp.type_champs[:titre_identite]
|
||
|
raw_value.present? ? 'présent' : 'absent'
|
||
|
when TypeDeChamp.type_champs[:piece_justificative]
|
||
|
raw_value.map { _1.blob.filename }.join(", ")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def self.format_enums(column:, raw_values:)
|
||
|
raw_values.map { format_enum(column:, raw_value: _1) }.join(', ')
|
||
|
end
|
||
|
|
||
|
def self.format_enum(column:, raw_value:)
|
||
|
# options for select store ["trad", :enum_value]
|
||
|
selected_option = column.options_for_select.find { _1[1].to_s == raw_value }
|
||
|
|
||
|
selected_option ? selected_option.first : raw_value
|
||
|
end
|
||
|
end
|