Maintenance::ExportCustomFieldsWithRelationsTask

Source code
# frozen_string_literal: true

class Maintenance::ExportCustomFieldsWithRelationsTask < MaintenanceTasks::Task
  include ArrayHelper

  no_collection

  attribute :emails, :string
  validates :emails, presence: true, fcm_email_format: true

  def process
    CsvGenerator.new.call do |file|
      CustomFields::DataWithRelationsExtractor.new.call do |line|
        file.puts(line)
      end

      CsvReportMailer.send_report(
        recipients: emails_array(emails),
        file_path: file.path,
        report_sender: 'Reporting Fields'
      ).deliver_now
    end
  end
end