Sha256: 0264155504e11c057c13591b59100d8184f2c92f14df60536a9eb25a33f736ab

Contents?: true

Size: 1.37 KB

Versions: 3

Compression:

Stored size: 1.37 KB

Contents

module Workarea
  module Orderbot
    class FulfillmentImporter
      include Sidekiq::Worker
      sidekiq_options retry: 5

      def perform(options = {})
        return unless Orderbot.api_configured?

        Orderbot::ImportLog.log('fulfillment')  do |last_imported_at|
          from_updated_on = options[:from_updated_on] || last_imported_at

          fulfillment_filters = {
            last_updated_date_min: from_updated_on.iso8601
          }

          fulfillment_response = gateway.get_fulfillments(fulfillment_filters)
          raise 'get fulfillment error' unless  fulfillment_response.success?

          import_fulfillment_records(fulfillment_response.body)

          if fulfillment_response.total_pages.to_i > 1
            count = 2

            while count <= fulfillment_response.total_pages.to_i
              page_filters = fulfillment_filters.merge(page: count)
              response = gateway.get_products(page_filters)

              import_fulfillment_records(response.body)

              count = count + 1
            end
          end
        end
      end

      private

      def gateway
        Workarea::Orderbot.gateway
      end

      def import_fulfillment_records(fulfillment_records)
        fulfillment_records.each do |fulfillment|
          Orderbot::Fulfillment::ImportFulfillments.new.perform(fulfillment)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
workarea-orderbot-1.0.2 app/workers/workarea/orderbot/fulfillment_importer.rb
workarea-orderbot-1.0.1 app/workers/workarea/orderbot/fulfillment_importer.rb
workarea-orderbot-1.0.0 app/workers/workarea/orderbot/fulfillment_importer.rb