Sha256: 075cc464790ef62066aa041d1f3ed365c33d3ece816d6e3270be2a5637ae5014
Contents?: true
Size: 1.24 KB
Versions: 6
Compression:
Stored size: 1.24 KB
Contents
module SpreeChannable class ReturnImportJob < ApplicationJob queue_as :default def perform(*args) return unless ::SpreeChannable.configuration.active? @client = ::Channable::Client.new channable_returns = get_returns channable_returns.each &method(:persist_return) end 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 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 end end
Version data entries
6 entries across 6 versions & 1 rubygems