Sha256: 60d877f87243eb0804ece1ba3d9f1536f639d5df8f0bb07d6ebe29b364a07ad9

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

module Imis
  class Mapper
    FIELD_MAPPING = {
      vessel_examiner: %w[ABC_ASC_Individual_Demog Vol_Vessel_Examiner],
      mm: %w[ABC_ASC_Individual_Demog TotMMS],
      mm_updated: %w[ABC_ASC_Individual_Demog MMS_Updated]
    }.freeze

    attr_reader :api

    def initialize(api)
      @api = api
    end

    # Update a member's data by a single field name
    # Does not require knowing which business object / iMIS-specific field name to use
    #
    # Only available for previously-mapped fields
    #
    def update(field_name, value)
      if FIELD_MAPPING.key?(field_name.to_sym)
        business_object_name, field = FIELD_MAPPING[field_name.to_sym]
        api.put(business_object_name, { field => value })
      else
        missing_mapping(field_name)
      end
    end

  private

    def missing_mapping(field_name)
      unless ENV['TESTING']
        warn(
          "Mapper does not know how to handle field \"#{field_name}\".\n\n" \
          'You can use api.put(business_object_name, { field_name => value })  ' \
          "if you know the business object and iMIS-specific field name.\n\n"
        )
      end

      raise(
        Imis::Error::Mapper,
        "Unrecognized field: \"#{field_name}\". " \
        'Please report what data you are attempting to work with to ITCom leadership.'
      )
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
usps-imis-api-0.1.2 lib/imis/mapper.rb