Module: SpreeCmCommissioner::KycBitwise

Extended by:
ActiveSupport::Concern
Included in:
Guest
Defined in:
app/models/concerns/spree_cm_commissioner/kyc_bitwise.rb

Constant Summary collapse

BIT_FIELDS =
{
  guest_name: 0b1,
  guest_gender: 0b10,
  guest_dob: 0b100,
  guest_occupation: 0b1000,
  guest_id_card: 0b10000,
  guest_nationality: 0b100000,
  guest_age: 0b1000000,
  guest_emergency_contact: 0b10000000,
  guest_organization: 0b100000000,
  guest_expectation: 0b1000000000,
  guest_social_contact: 0b10000000000,
  guest_address: 0b100000000000,
  guest_phone_number: 0b1000000000000,
  guest_contact: 0b10000000000000
}.freeze
ORDERED_BIT_FIELDS =
%i[
  guest_name
  guest_gender
  guest_phone_number
  guest_contact
  guest_dob
  guest_occupation
  guest_nationality
  guest_age
  guest_emergency_contact
  guest_organization
  guest_social_contact
  guest_address
  guest_expectation
  guest_id_card
].freeze
KYC_FIELD_ATTRIBUTES =

Maps each KYC bit field to the actual Guest attribute(s) it stores.

{
  guest_name: %i[first_name last_name],
  guest_gender: %i[gender],
  guest_dob: %i[dob],
  guest_occupation: %i[occupation_id other_occupation],
  guest_nationality: %i[nationality_id],
  guest_age: %i[age],
  guest_emergency_contact: %i[emergency_contact],
  guest_organization: %i[other_organization],
  guest_expectation: %i[expectation],
  guest_social_contact: %i[social_contact_platform social_contact],
  guest_address: %i[address],
  guest_phone_number: %i[phone_number],
  guest_contact: %i[contact]
}.freeze

Instance Method Summary collapse

Instance Method Details

#available_social_contact_platformsObject



80
81
82
83
# File 'app/models/concerns/spree_cm_commissioner/kyc_bitwise.rb', line 80

def available_social_contact_platforms
  platforms = SpreeCmCommissioner::Guest.social_contact_platforms.keys
  platforms.sort_by { |platform| platform == 'other' ? 1 : 0 }
end

#kyc?Boolean

Returns:

  • (Boolean)


56
# File 'app/models/concerns/spree_cm_commissioner/kyc_bitwise.rb', line 56

def kyc? = kyc != 0

#kyc_fieldsObject



70
71
72
# File 'app/models/concerns/spree_cm_commissioner/kyc_bitwise.rb', line 70

def kyc_fields
  unordered_kyc_fields.sort_by { |item| ORDERED_BIT_FIELDS.index(item) }
end

#kyc_value_enabled?(bit_value) ⇒ Boolean

Returns:

  • (Boolean)


74
75
76
77
78
# File 'app/models/concerns/spree_cm_commissioner/kyc_bitwise.rb', line 74

def kyc_value_enabled?(bit_value)
  return false if kyc.nil?

  kyc & bit_value != 0
end

#unordered_kyc_fieldsObject



64
65
66
67
68
# File 'app/models/concerns/spree_cm_commissioner/kyc_bitwise.rb', line 64

def unordered_kyc_fields
  BIT_FIELDS.filter_map do |field, bit_value|
    field if kyc & bit_value != 0
  end
end