Sha256: a9be97f727a3ec6e705d297aaf56a06b9b77856fa71a32b7fded5506de362130

Contents?: true

Size: 1.42 KB

Versions: 2

Compression:

Stored size: 1.42 KB

Contents

module Tufy
  class BuildNameSegment < BuildSegment
    expects :raw_data
    promises :transformed_data

    REQUIRED_KEYS = [
      :first_name,
      :last_name,
      :civil_status,
      :date_of_birth,
      :gender,
      :ac_holder_type,
    ]

    executed do |ctx|
      validate_presence_of_required_keys(ctx.raw_data, REQUIRED_KEYS)
      ctx.transformed_data = ctx.transformed_data + transform(ctx).upcase
    end

    private

    def self.transform(ctx)
      raw_data = ctx[:raw_data]

      result = with(ctx).reduce(
        Fields::Name::BuildFirstNameField,
        Fields::Name::BuildLastNameField,
        Fields::Name::BuildCivilStatusField,
        Fields::Name::BuildDateOfBirthField,
        Fields::Name::BuildGenderField,
        Fields::Name::BuildAcHolderTypeField,
      )

      Constants::SEGMENT_TAG + result[:transformed_data]
    end

    module Constants
      # tags
      SEGMENT_TAG = "NA03N01"
      FIRST_NAME_TAG = "01"
      LAST_NAME_TAG = "03"
      CIVIL_STATUS_TAG = "05"
      DATE_OF_BIRTH_TAG = "06"
      GENDER_TAG = "07"
      AC_HOLDER_TYPE_TAG = "12"

      # civil status constants
      SINGLE = "S"
      MARRIED = "M"
      DIVORCED = "D"
      WIDOWED = "W"
      CIVIL_STATUS_UNKNOWN = "U"

      # gender constants
      FEMALE = "1"
      MALE = "2"
      GENDER_UNKNOWN = "3"

      # a/c holder type constants
      HI = "HI"
      HPI = "HPI"
      HJ = "HJ"
      G = "G"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tufy-0.0.8 lib/tufy/build_name_segment.rb
tufy-0.0.7 lib/tufy/build_name_segment.rb