66 lines
2.3 KiB
Ruby
66 lines
2.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class KycService
|
|
# passport front + selfie OR driver license front and back + selfie IR id card front and back + selfie
|
|
REQUIRED_DOC_AMOUNT = { 'Passport': 2, 'Driver license': 3, 'Identity card': 3 }.freeze
|
|
|
|
class << self
|
|
def profile_step(profile)
|
|
user = profile.user
|
|
profile_label = user.labels.find_by(key: :profile)
|
|
if profile_label.nil? # first profile everw
|
|
user.labels.create(key: :profile, value: profile.state, scope: :private)
|
|
else
|
|
profile_label.update(value: profile.state) # re-submitted profile
|
|
end
|
|
return unless profile.state == 'verified'
|
|
|
|
# verify treasury after profile verified
|
|
KYC.const_get(Barong::App.config.kyc_provider.capitalize, false)::TreasuryWorker.perform_async(profile.id)
|
|
end
|
|
|
|
def document_step(document)
|
|
user = document.user
|
|
user_document_label = user.labels.find_by(key: document.doc_type.downcase)
|
|
if user_document_label.nil? # first document ever
|
|
user.labels.create(key: document.doc_type.downcase, value: document.state, scope: :private)
|
|
else
|
|
return if user_document_label.value == 'verified'
|
|
|
|
user_document_label.update(value: document.state) # re-submitted document
|
|
end
|
|
end
|
|
|
|
|
|
def kycaid_callback(params)
|
|
422
|
|
end
|
|
|
|
def treasury_label_update(treasury)
|
|
user = treasury&.user
|
|
return unless user.present?
|
|
|
|
treasury_label = user.labels.find_by(key: treasury.kind)
|
|
if treasury_label.nil? # first profile ever
|
|
user.labels.create(key: treasury.kind, value: treasury.state, scope: :private)
|
|
else
|
|
treasury.ownership! if treasury.state == 'processing' && treasury.result.present?
|
|
# user must have just one kind of treasury and new treasury like card, must not change before verified card
|
|
treasury_label.update(value: treasury.reload.state) unless treasury_label.value == 'verified'
|
|
end
|
|
end
|
|
|
|
def phone_label_update(phone)
|
|
user = phone&.user
|
|
return unless user.present?
|
|
|
|
phone_label = user.labels.find_by(key: phone.step)
|
|
if phone_label.nil?
|
|
user.labels.create(key: phone.step, value: phone.state, scope: :private)
|
|
else
|
|
phone_label.update(value: phone.state)
|
|
end
|
|
end
|
|
end
|
|
end
|