class FileImportProcessorJob

def run_csv_importer(importer, file_import)

All logic are from csv_importer gem
def run_csv_importer(importer, file_import)
  if importer.valid_header?
    importer.run!
    if importer.report.success?
      file_import.update(status: :success, completed_at: DateTime.now)
    else
      identifier = importer.config.identifiers.first
      invalid_items_array = importer.report.invalid_rows.map { |row| [row.line_number, row.model.send(identifier), row.errors] }
      file_import.update(status: :failed, completed_at: DateTime.now, invalid_row_items: invalid_items_array)
    end
  else
    file_import.update(status: :failed, completed_at: DateTime.now, invalid_row_items: [[1, 'invalid_header', {invalid_header: importer.report.message}]])
  end
end