TMP commit
This commit is contained in:
77
app/models/concerns/csv_exportable.rb
Normal file
77
app/models/concerns/csv_exportable.rb
Normal file
@@ -0,0 +1,77 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module CsvExportable
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
COMMON_HEADERS = %i[notes tags signed_at].freeze
|
||||
COMMON_VALUES = %w[clean_notes clean_tags signed_on].freeze
|
||||
|
||||
ACQUIRED_MEDIA_HEADERS = %i[name file_infos_count].freeze + COMMON_HEADERS
|
||||
ACQUIRED_MEDIA_VALUES = %w[name file_count].freeze + COMMON_VALUES
|
||||
|
||||
APPEARANCE_HEADERS = %i[name contact_info].freeze + COMMON_HEADERS
|
||||
APPEARANCE_VALUES = %w[name contact_info].freeze + COMMON_VALUES
|
||||
|
||||
HEADERS = {
|
||||
acquired_media_release: ACQUIRED_MEDIA_HEADERS,
|
||||
appearance_release: APPEARANCE_HEADERS
|
||||
}.freeze
|
||||
|
||||
VALUES = {
|
||||
acquired_media_release: ACQUIRED_MEDIA_VALUES,
|
||||
appearance_release: APPEARANCE_VALUES
|
||||
}.freeze
|
||||
|
||||
included do
|
||||
class << self
|
||||
def csv_headers
|
||||
puts "HEADERS ===="
|
||||
plural_class_name = self.name.underscore.pluralize
|
||||
headers = HEADERS[self.name.underscore.to_sym]
|
||||
|
||||
headers.map do |header|
|
||||
I18n.t("#{plural_class_name}.index.table_headers.#{header}")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def to_csv_row
|
||||
puts "==== = CSV ROW"
|
||||
v = VALUES[self.class.name.underscore.to_sym].map do |function|
|
||||
send(function)
|
||||
end
|
||||
puts v
|
||||
v
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def file_count
|
||||
self.file_infos.any? ? self.file_infos.size : I18n.t('acquired_media_releases.acquired_media_release.no_media')
|
||||
end
|
||||
|
||||
def contact_info
|
||||
contact_info = ''
|
||||
contact_info += "#{person_address}; " if person_address.present?
|
||||
contact_info += "#{person_phone}; " if person_phone.present?
|
||||
contact_info += "#{person_email}" if person_email.present?
|
||||
contact_info.delete_suffix '; '
|
||||
end
|
||||
|
||||
def clean_notes
|
||||
notes = ''
|
||||
self.notes.order_by_recent.each do |note|
|
||||
notes += "#{note.content}(#{note.email}), "
|
||||
end
|
||||
notes.delete_suffix ', '
|
||||
end
|
||||
|
||||
def clean_tags
|
||||
tags = ''
|
||||
self.tags.each do |tag|
|
||||
tags += "#{tag.name}, "
|
||||
end
|
||||
tags.delete_suffix ', '
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user