Class: SpreeChannable::OrderImportJob
- Inherits:
-
ApplicationJob
- Object
- ActiveJob::Base
- ApplicationJob
- SpreeChannable::OrderImportJob
- Defined in:
- app/jobs/spree_channable/order_import_job.rb
Instance Method Summary collapse
Instance Method Details
#get_orders ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 |
# File 'app/jobs/spree_channable/order_import_job.rb', line 13 def get_orders limit = 100 orders = [] loop do order_data = client.get_orders(offset: orders.size, limit: limit, start_date: (SpreeChannable.configuration.polling_interval * 2).minutes.ago) order_data.data.orders.each {|order| orders << order} if order_data.data.orders.any? break if order_data.data.total < limit || (!order_data.success && order_data.response.code != 429) end orders end |
#perform(*args) ⇒ Object
5 6 7 8 9 10 11 |
# File 'app/jobs/spree_channable/order_import_job.rb', line 5 def perform(*args) return unless ::SpreeChannable.configuration.active? @client = ::Channable::Client.new channable_orders = get_orders channable_orders.each &method(:persist_order) end |
#persist_order(channable_order) ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# File 'app/jobs/spree_channable/order_import_job.rb', line 25 def persist_order(channable_order) return if Spree::Order.exists?(channable_order_id: channable_order.id) begin order_attributes = Spree::Order.channable_to_order_params(channable_order) SpreeChannable::OrderImporter.import(nil, order_attributes) rescue StandardError => e Rails.logger.warn "[CHANNABLE] Failed to import order #{channable_order.id}. #{e}" @client.cancellation_update(channable_order.id) end end |