Class: SpreeChannable::ReturnImportJob

Inherits:
ApplicationJob
  • Object
show all
Defined in:
app/jobs/spree_channable/return_import_job.rb

Instance Method Summary collapse

Instance Method Details

#get_returnsObject



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