Initial commit
This commit is contained in:
65
app/services/kyc_service.rb
Normal file
65
app/services/kyc_service.rb
Normal file
@@ -0,0 +1,65 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user