class SynapsePayRest::VirtualDocument

Represents virtual documents that can be added to a base document.

@see docs.synapsepay.com/docs/user-resources#section-virtual-document-types

virtual document types

Attributes

question_set[R]

@!attribute [r] question_set @return [SynapsePayRest::Array<SynapsePayRest::Question>] questions/answer choices returned when document status is MFA|PENDING

Public Class Methods

from_response(data) click to toggle source

@note Do not call this method directly.

Calls superclass method SynapsePayRest::Document::from_response
# File lib/synapse_pay_rest/models/user/virtual_document.rb, line 13
def from_response(data)
  virtual_doc = super(data)
  virtual_doc.add_question_set(data['meta']['question_set']) if data['status'] == 'SUBMITTED|MFA_PENDING'
  virtual_doc
end
new(**options) click to toggle source

@note It should not be necessary to call this method directly.

Calls superclass method SynapsePayRest::Document::new
# File lib/synapse_pay_rest/models/user/virtual_document.rb, line 21
def initialize(**options)
  super(**options)
end

Public Instance Methods

add_question_set(question_set_data) click to toggle source

Maps question set from response to Question objects.

@deprecated

# File lib/synapse_pay_rest/models/user/virtual_document.rb, line 42
def add_question_set(question_set_data)
  questions = question_set_data['questions'].map do |question_info|
    # re-map question/answer hash structure
    answers = {}
    question_info['answers'].each do |answer_hash|
      answers[answer_hash['id']] = answer_hash['answer']
    end

    Question.new(
      id:       question_info['id'],
      question: question_info['question'],
      answers:  answers
    )
  end

  @question_set = questions
end
submit_kba() click to toggle source

Submits the question/answer selections to the API to attempt to verify the virtual document.

@return [SynapsePayRest::VirtualDocument] (self)

@deprecated

# File lib/synapse_pay_rest/models/user/virtual_document.rb, line 31
def submit_kba
  user = base_document.user
  response = user.client.users.update(user_id: user.id, payload: payload_for_kba)
  user     = User.from_response(user.client, response)
  base_doc = user.base_documents.find { |doc| doc.id == base_document.id }
  ssn_doc  = base_doc.virtual_documents.find { |doc| doc.id == id }
end

Private Instance Methods

payload_for_kba() click to toggle source

@deprecated

# File lib/synapse_pay_rest/models/user/virtual_document.rb, line 63
def payload_for_kba
  {
    'documents' => [{
      'id' => base_document.id,
      'virtual_docs' => [{
        'id' => id,
        'meta' => {
          'question_set' => {
            'answers' => question_set.map(&:to_hash)
          }
        }
      }]
    }]
  }
end