Sha256: 35162210cff3ae0bcc3e8931213260fccfa6c1352bf64a06c04b9ff871900929

Contents?: true

Size: 1.29 KB

Versions: 18

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

require "csv"

# ExportCsvDocumentDownloadsService
class ExportCsvDocumentDownloadsService
  def self.short_name
    "Document Downloads"
  end

  def self.call(document_ids)
    ActionCable.server.broadcast("export_channel", {progress: 0})

    document_ids = document_ids.flatten
    total = document_ids.size
    count = 0
    slice_count = 100
    csv_file = []

    Rails.logger.debug { "\n\nExportCsvDocumentDownloadsService: #{document_ids.inspect}\n\n" }

    CSV.generate(headers: true) do |_csv|
      csv_file << DocumentDownload.column_names
      document_ids.each_slice(slice_count) do |slice|
        # Broadcast progress percentage
        count += slice_count
        progress = ((count.to_f / total) * 100).round
        progress = 100 if progress > 100

        ActionCable.server.broadcast("export_channel", {progress: progress})
        slice.each do |doc_id|
          doc = Document.find_by(friendlier_id: doc_id)

          Rails.logger.debug { "\n\nDocDownloads: #{doc.document_downloads.size}\n\n" }

          doc.document_downloads.each do |download|
            csv_file << download.to_csv
          end
        rescue NoMethodError
          Rails.logger.debug { "\n\nExport Failed: #{doc_id.inspect}\n\n" }
        end
      end
    end

    csv_file
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
geoblacklight_admin-0.8.0 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.7.1 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.7.0 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.6.3 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.6.2 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.6.1 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.6.0 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.5.1 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.5.0 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.4.2 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.4.1 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.4.0 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.3.2 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.3.1 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.3.0 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.2.1 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.1.0 app/services/export_csv_document_downloads_service.rb
geoblacklight_admin-0.0.1 app/services/export_csv_document_downloads_service.rb