Class: SpreeCmCommissioner::Imports::UpdateOrderService

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

Instance Attribute Summary

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, #initialize, #record_failure, #save_fail_rows, #update_import_status_when_finish, #update_import_status_when_start

Constructor Details

This class inherits a constructor from SpreeCmCommissioner::Imports::BaseImportOrderService

Instance Method Details

#import_ordersObject



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/services/spree_cm_commissioner/imports/update_order_service.rb', line 4

def import_orders
  content = fetch_content

  CSV.parse(content, headers: true).each.with_index(2) do |row, index|
    order_number = cleaned_value(row['order_number'])
    order = Spree::Order.find_by(number: order_number)

    unless order
      record_failure(index)
      next
    end

    guest_id = cleaned_value(row['guest_id'])
    seat_number = cleaned_value(row['seat_number'])
    guest = order.guests.find_by(seat_number: seat_number) || order.guests.find_by(id: guest_id)

    unless guest
      record_failure(index)
      next
    end

    guest_data = row.to_hash.symbolize_keys.slice(*SpreeCmCommissioner::Guest.csv_importable_columns)
    guest_data.compact_blank!

    if guest.update(guest_data)
      recalculate_order(order)
    else
      record_failure(index)
    end
  end
end

#recalculate_order(order) ⇒ Object



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

def recalculate_order(order)
  order.update_with_updater!
end