Class: SpreeCmCommissioner::Imports::CreateOrderService

Inherits:
BaseImportOrderService show all
Defined in:
app/services/spree_cm_commissioner/imports/create_order_service.rb

Instance Attribute Summary collapse

Attributes inherited from BaseImportOrderService

#fail_row_numbers, #import_order_id

Instance Method Summary collapse

Methods inherited from BaseImportOrderService

#call, #cleaned_value, #fetch_content, #import_order, #record_failure, #save_fail_rows, #update_import_status_when_finish, #update_import_status_when_start

Constructor Details

#initialize(import_order_id:, import_by_user_id:) ⇒ CreateOrderService

Returns a new instance of CreateOrderService.



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

def initialize(import_order_id:, import_by_user_id:)
  super(import_order_id: import_order_id)
  @import_by_user_id = import_by_user_id
end

Instance Attribute Details

#import_by_user_idObject (readonly)

Returns the value of attribute import_by_user_id.



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

def import_by_user_id
  @import_by_user_id
end

Instance Method Details

#import_ordersObject



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

def import_orders
  content = fetch_content

  CSV.parse(content, headers: true).each.with_index(2) do |row, index|
    order_data = row.to_hash.symbolize_keys
    process_order(order_data, index)
  end
end

#process_order(order_data, index) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'app/services/spree_cm_commissioner/imports/create_order_service.rb', line 20

def process_order(order_data, index)
  ActiveRecord::Base.transaction do
    params = build_order_params(order_data)
    order = create_order(params, index)
    record_failure(index) if order && !complete_order(order)
  end
rescue StandardError
  record_failure(index)
end