TMP commit

This commit is contained in:
Bilal
2020-07-09 19:54:48 +02:00
parent 35303cb570
commit 3918484a84
5 changed files with 118 additions and 2 deletions

View File

@@ -6,8 +6,8 @@ class GenerateContractsZipJob < ApplicationJob
before_perform do |job|
@project = job.arguments.first
@download = job.arguments.second
release_type = job.arguments.third
@folder_name = "#{@project.name.parameterize}_#{get_release_name(release_type).gsub('_', '-')}"
@release_type = job.arguments.third
@folder_name = "#{@project.name.parameterize}_#{get_release_name(@release_type).gsub('_', '-')}"
@download.update!(name: @folder_name, status: :pending)
end
@@ -20,6 +20,10 @@ class GenerateContractsZipJob < ApplicationJob
files.each do |attachment|
zipfile.add(attachment, File.join("#{dir}/", attachment))
end
csv_file = generate_csv releases
puts ">>>>> GENERATED ====="
zipfile.get_output_stream("#{@folder_name}.csv") { |f| f.puts(csv_file) }
end
@download.file.attach(io: File.open(zipfile_name), filename: "#{@folder_name}.zip")
@@ -43,6 +47,21 @@ class GenerateContractsZipJob < ApplicationJob
private
def generate_csv(releases)
puts "==== 1 ====="
release_class = Object.const_get @release_type
puts "==== 2 ====="
headers = release_class.csv_headers
CSV.generate(headers: true) do |csv|
csv << headers
releases.each do |release|
csv_row_data = release.to_csv_row
csv << csv_row_data
end
end
end
def get_release_name(release_type)
release_type.constantize.model_name.plural
end

View File

@@ -9,6 +9,7 @@ class AcquiredMediaRelease < ApplicationRecord
include Signable
include Syncable
include PersonName
include CsvExportable
has_many :file_infos, as: :releasable, dependent: :destroy

View 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

View File

@@ -49,6 +49,7 @@ en:
search: Search
empty: Acquired Media Releases will appear here
table_headers:
name: Name
file_infos_count: No. Files
notes: Notes
signed_at: Date Signed
@@ -151,6 +152,8 @@ en:
empty: Appearance Releases will appear here
imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release
table_headers:
name: Name
contact_info: Contact info
notes: Notes
signed_at: Date Signed
tags: Tags

View File

@@ -41,6 +41,12 @@ es:
heading: Person Photo (ES)
index:
imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release (ES)
table_headers:
name: ""
contact_info: ""
tags: ""
notes: ""
signed_at: ""
shared:
imported_appearance_release_contract_name: Contrato Importado
imported_appearance_release_headshot_name: Retrato Importado
@@ -464,3 +470,13 @@ es:
production_elements_logs: Production Elements Logs, and more (ES)
reduces_labor_cost: Reduces labor costs (ES)
simplifies_cue_sheets: Simplifies Music Cue Sheets, Graphic Cue Sheets (ES)
acquired_media_releases:
index:
table_headers:
name: Name (ES)
file_infos_count: No. Files (ES)
notes: Notes (ES)
signed_at: Date Signed (ES)
tags: Tags (ES)
acquired_media_release:
no_media: No Media (ES)