Class: Workarea::DataFile::Import

Inherits:
Object
  • Object
show all
Includes:
ApplicationDocument, Operation
Defined in:
app/models/workarea/data_file/import.rb

Direct Known Subclasses

TaxImport

Instance Method Summary collapse

Methods included from Operation

#complete?, #file_type, #format, #mime_type, #model_class, #name, #sample_file_content, #samples, #tempfile

Methods included from ApplicationDocument

#releasable?

Methods included from Sidekiq::Callbacks

add_worker, assert_valid_config!, async, caching_classes?, disable, enable, inline, #run_callbacks, workers, workers_list

Instance Method Details

#error?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'app/models/workarea/data_file/import.rb', line 32

def error?
  error_message.present?
end

#failedObject



36
37
38
# File 'app/models/workarea/data_file/import.rb', line 36

def failed
  total - succeeded
end

#failure?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'app/models/workarea/data_file/import.rb', line 28

def failure?
  !successful?
end

#file_nameObject



20
21
22
# File 'app/models/workarea/data_file/import.rb', line 20

def file_name
  super.presence || file_type&.upcase
end

#log(index, instance) ⇒ Object



55
56
57
58
59
60
61
62
63
64
# File 'app/models/workarea/data_file/import.rb', line 55

def log(index, instance)
  self.total += 1

  if instance.errors.blank? && instance.persisted?
    self.succeeded += 1
  else
    id = instance.new_record? ? index : instance.id
    file_errors[id.to_s] = instance.errors.as_json
  end
end

#process!Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'app/models/workarea/data_file/import.rb', line 40

def process!
  set(started_at: Time.current)
  assert_valid_file_type
  run_callbacks(:process) { format.import! }

rescue Exception => e
  self.error_type = e.class
  self.error_message = e.message
  raise e

ensure
  self.completed_at = Time.current
  save!
end

#successful?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'app/models/workarea/data_file/import.rb', line 24

def successful?
  !error? && total == succeeded
end