Sha256: 8c1e532d23140dc2bf317b80c37ca9df18083fbc16a566f9a0e8a1259e3094b7

Contents?: true

Size: 1.58 KB

Versions: 45

Compression:

Stored size: 1.58 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.code
        end

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

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

Version data entries

45 entries across 45 versions & 1 rubygems

Version Path
comee_core-0.1.65 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.64 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.63 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.62 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.61 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.60 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.59 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.58 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.57 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.56 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.55 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.54 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.53 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.52 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.51 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.50 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.49 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.48 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.47 app/services/comee/core/product_lookup_service.rb
comee_core-0.1.46 app/services/comee/core/product_lookup_service.rb