Sha256: 3ef724a9caefa77a428cdb27f42e9e04a720c2ce8b2ae7facbbba8aae10c069b

Contents?: true

Size: 1.55 KB

Versions: 191

Compression:

Stored size: 1.55 KB

Contents

module Comee
  module Core
    class ProductLookupService
      ORGANIZATION = "ORG".freeze
      ##
      # This method returns a translated code for a given +code+. The +code+ can be
      # for a supplier or a client. The source of the +code+ is described using the +from+
      # parameter. The +from+ parameter is a hash which specifies the id of the source
      # supplier/client as `itemable_id`, and the data type of the source as itemable_type.
      # We specify the id and type because the ProductLookup model has a polymorphic relationship
      # with supplier and client.
      #
      # The +to+ parameter uses a similar format to specify the target supplier/client we want to
      # conduct the lookup for.
      def lookup_product(code, from, to)
        error = "The 'from' parameter cannot be assigned any string other than '#{ORGANIZATION}'."
        raise(StandardError, error) if from.instance_of?(String) && from != ORGANIZATION

        error = "The 'to' parameter cannot be assigned any string other than '#{ORGANIZATION}'."
        raise(StandardError, error) if to.instance_of?(String) && to != ORGANIZATION

        if from == ORGANIZATION
          query = ProductLookup.joins(:product).find_by(product: {code: code}, **to)
          return query
        end

        if to == ORGANIZATION
          product = ProductLookup.find_by(code: code, **from).product
          return product.code
        end

        product = ProductLookup.find_by(code: code, **from).product
        ProductLookup.find_by(product: product, **to)
      end
    end
  end
end

Version data entries

191 entries across 191 versions & 1 rubygems

Version Path
comee_core-0.2.81 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.80 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.78 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.77 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.76 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.75 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.70 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.69 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.68 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.67 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.66 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.65 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.64 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.63 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.62 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.61 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.60 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.59 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.58 app/services/comee/core/product_lookup_service.rb
comee_core-0.2.57 app/services/comee/core/product_lookup_service.rb