Class: SpreeChannable::ReturnImportJob
- Inherits:
-
ApplicationJob
- Object
- ActiveJob::Base
- ApplicationJob
- SpreeChannable::ReturnImportJob
- Defined in:
- app/jobs/spree_channable/return_import_job.rb
Instance Method Summary collapse
Instance Method Details
#get_returns ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 |
# File 'app/jobs/spree_channable/return_import_job.rb', line 13 def get_returns limit = 100 returns = [] loop do return_data = @client.get_returns(offset: returns.size, limit: limit, start_date: (SpreeChannable.configuration.polling_interval * 2).minutes.ago) return_data.data.returns.each {|return_data| returns << return_data} if return_data.data.returns.any? break if return_data.data.total < limit || (!return_data.success && return_data.response.code != 429) end returns end |
#perform(*args) ⇒ Object
5 6 7 8 9 10 11 |
# File 'app/jobs/spree_channable/return_import_job.rb', line 5 def perform(*args) return unless ::SpreeChannable.configuration.active? @client = ::Channable::Client.new channable_returns = get_returns channable_returns.each &method(:persist_return) end |
#persist_return(channable_return) ⇒ Object
25 26 27 28 29 30 31 32 33 |
# File 'app/jobs/spree_channable/return_import_job.rb', line 25 def persist_return(channable_return) return if Spree::ReturnAuthorization.exists?(channable_return_id: channable_return.channable_id) begin SpreeChannable::ReturnImporter.import(channable_return) rescue StandardError => e Rails.logger.warn "[CHANNABLE] Failed to import return #{channable_return.channable_id}. #{e}" @client.return_update(channable_return.channable_id, {status: 'cancelled'}.to_json) end end |