Sha256: 5a32c9bb7a5c063ce38d2dbc9a39811f19c5b7a03d3c42958ba29f4eeb4d5c1a

Contents?: true

Size: 1.58 KB

Versions: 3

Compression:

Stored size: 1.58 KB

Contents

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

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

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

          inventory_filters = {
            from_updated_on:  from_updated_on.iso8601,
            distribution_center_id: Workarea.config.inventory_distribution_center_id
          }

          inventory_response = gateway.get_inventory(inventory_filters)
          raise 'get inventory error' unless  inventory_response.success?

          inventory_records = inventory_response.body

          import_inventory_records(inventory_records)

          if inventory_response.total_pages.to_i > 1
            count = 2

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

              import_inventory_records(response.body)

              count = count + 1
            end
          end

          inventory_records.each do |inventory|
            Orderbot::Inventory::ImportInventory.new.perform(inventory)
          end
        end
      end

      private

      def gateway
        Workarea::Orderbot.gateway
      end

      def import_inventory_records(inventory_records)
        inventory_records.each do |inventory|
          Orderbot::Inventory::ImportInventory.new.perform(inventory)
        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/inventory_importer.rb
workarea-orderbot-1.0.1 app/workers/workarea/orderbot/inventory_importer.rb
workarea-orderbot-1.0.0 app/workers/workarea/orderbot/inventory_importer.rb