Class: SpreeCmCommissioner::Imports::BaseImportOrderService

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

Direct Known Subclasses

CreateOrderService, UpdateOrderService

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(import_order_id:) ⇒ BaseImportOrderService

Returns a new instance of BaseImportOrderService.



6
7
8
9
# File 'app/services/spree_cm_commissioner/imports/base_import_order_service.rb', line 6

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.



4
5
6
# File 'app/services/spree_cm_commissioner/imports/base_import_order_service.rb', line 4

def fail_row_numbers
  @fail_row_numbers
end

#import_order_idObject (readonly)

Returns the value of attribute import_order_id.



4
5
6
# File 'app/services/spree_cm_commissioner/imports/base_import_order_service.rb', line 4

def import_order_id
  @import_order_id
end

Instance Method Details

#callObject



11
12
13
14
15
16
17
18
19
# File 'app/services/spree_cm_commissioner/imports/base_import_order_service.rb', line 11

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



50
51
52
# File 'app/services/spree_cm_commissioner/imports/base_import_order_service.rb', line 50

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

#fetch_contentObject



41
42
43
44
45
46
47
48
# File 'app/services/spree_cm_commissioner/imports/base_import_order_service.rb', line 41

def fetch_content
  url = import_order.imported_file.url
  response = Faraday.get(url)

  raise "Failed to fetch content: #{response.status}" unless response.success?

  response.body
end

#import_orderObject



29
30
31
# File 'app/services/spree_cm_commissioner/imports/base_import_order_service.rb', line 29

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

#record_failure(row_number) ⇒ Object



25
26
27
# File 'app/services/spree_cm_commissioner/imports/base_import_order_service.rb', line 25

def record_failure(row_number)
  @fail_row_numbers << row_number
end

#save_fail_rowsObject



21
22
23
# File 'app/services/spree_cm_commissioner/imports/base_import_order_service.rb', line 21

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



37
38
39
# File 'app/services/spree_cm_commissioner/imports/base_import_order_service.rb', line 37

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



33
34
35
# File 'app/services/spree_cm_commissioner/imports/base_import_order_service.rb', line 33

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