Sha256: 3f25e39385eaeaddf1c92b03ff8be10ffebd30ee41f6a568c27c00e485361a8f

Contents?: true

Size: 1.26 KB

Versions: 4

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

module Imis
  class Mapper
    FIELD_MAPPING = {
      vessel_examiner: ['ABC_ASC_Individual_Demog', 'Vol_Vessel_Examiner'],
      mm: ['ABC_ASC_Individual_Demog', 'TotMMS'],
      mm_updated: ['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
        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"
        ) unless ENV['TESTING']

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
usps-imis-api-0.1.1 lib/imis/mapper.rb
usps-imis-api-0.1.1.pre.2 lib/imis/mapper.rb
usps-imis-api-0.1.1.pre.1 lib/imis/mapper.rb
usps-imis-api-0.1.0 lib/imis/mapper.rb