Class: SpreeCmCommissioner::Imports::Orders::Base

Inherits:
Object
  • Object
show all
Defined in:
app/services/spree_cm_commissioner/imports/orders/base.rb

Direct Known Subclasses

Create, Update

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(import_order_id:) ⇒ Base

Returns a new instance of Base.



9
10
11
12
# File 'app/services/spree_cm_commissioner/imports/orders/base.rb', line 9

def initialize(import_order_id:)
  @import_order_id = import_order_id
  @fail_row_numbers = []
end

Instance Attribute Details

#fail_row_numbersObject (readonly)

Returns the value of attribute fail_row_numbers.



7
8
9
# File 'app/services/spree_cm_commissioner/imports/orders/base.rb', line 7

def fail_row_numbers
  @fail_row_numbers
end

#import_order_idObject (readonly)

Returns the value of attribute import_order_id.



7
8
9
# File 'app/services/spree_cm_commissioner/imports/orders/base.rb', line 7

def import_order_id
  @import_order_id
end

Instance Method Details

#callObject



14
15
16
17
18
19
20
21
22
# File 'app/services/spree_cm_commissioner/imports/orders/base.rb', line 14

def call
  update_import_status_when_start(:progress)
  import_orders
  save_fail_rows
  update_import_status_when_finish(:done)
rescue StandardError => e
  update_import_status_when_finish(:failed)
  raise e
end

#cleaned_value(value) ⇒ Object



61
62
63
# File 'app/services/spree_cm_commissioner/imports/orders/base.rb', line 61

def cleaned_value(value)
  value.to_s.gsub(/\s+/, '')
end

#fetch_contentObject



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'app/services/spree_cm_commissioner/imports/orders/base.rb', line 44

def fetch_content
  temp_file = Tempfile.new(['import', '.csv'], binmode: true)

  begin
    import_order.imported_file.download do |chunk|
      temp_file.write(chunk)
    end

    temp_file.close
    temp_file.path
  rescue StandardError
    temp_file.close
    temp_file.unlink
    raise
  end
end

#import_orderObject



32
33
34
# File 'app/services/spree_cm_commissioner/imports/orders/base.rb', line 32

def import_order
  @import_order ||= SpreeCmCommissioner::Imports::ImportOrder.find(import_order_id)
end

#record_failure(row_number) ⇒ Object



28
29
30
# File 'app/services/spree_cm_commissioner/imports/orders/base.rb', line 28

def record_failure(row_number)
  @fail_row_numbers << row_number
end

#save_fail_rowsObject



24
25
26
# File 'app/services/spree_cm_commissioner/imports/orders/base.rb', line 24

def save_fail_rows
  import_order.update!(preferred_fail_rows: @fail_row_numbers.join(', ')) unless @fail_row_numbers.empty?
end

#update_import_status_when_finish(status) ⇒ Object



40
41
42
# File 'app/services/spree_cm_commissioner/imports/orders/base.rb', line 40

def update_import_status_when_finish(status)
  import_order.update(status: status, finished_at: Time.zone.now)
end

#update_import_status_when_start(status) ⇒ Object



36
37
38
# File 'app/services/spree_cm_commissioner/imports/orders/base.rb', line 36

def update_import_status_when_start(status)
  import_order.update(status: status, started_at: Time.zone.now)
end