require 'active_support/core_ext/array' module Biro module Ph3a class Response < BaseResponse def initialize response @body = response.body end def addresses Array.wrap(person_data_result.dig(:addresses)&.dig(:source)&.dig(:address)).map do |t| { city: t.dig(:city), complement: t.dig(:complement), country: t.dig(:country), is_enabled: t.dig(:is_enabled), match: t.dig(:match), neighboorhood: t.dig(:district), number: t.dig(:number), score: t.dig(:score).to_i, state: t.dig(:state), street: t.dig(:street), type: t.dig(:type), zip_code: t.dig(:zip_code), phone_area_code: t.dig(:area_code), phone: t.dig(:phone) } end end def age person_data_result.dig(:age).to_i end def birthdate person_data_result.dig(:birth_date) end def blood_type person_data_result.dig(:blood_type) end def ccf person_data_result.dig(:ccf) end def ccf_history Array.wrap(person_data_result.dig(:ccf_historico)&.dig(:ccf)).map do |t| { agency: t.dig(:agencia).to_i, bank_code: t.dig(:codigo_banco).to_i, reason: t.dig(:motivo), amount: t.dig(:quantidade), occurrence_date: t.dig(:ultima_ocorrencia), } end end def ccf_total person_data_result.dig(:ccf_total).to_i end def compound_name person_data_result.dig(:compound_name) end def contact_persons person_data_result.dig(:contact_persons) end def contact_persons_history person_data_result.dig(:contact_persons_history) end def death_date person_data_result.dig(:death_date) end def death_year person_data_result.dig(:death_year) end def deficiency person_data_result.dig(:deficiency) end def deficiency_list person_data_result.dig(:deficiencys) end def digital_behavior person_data_result.dig(:digital_behavior) end def cpf person_data_result.dig(:document) end def education { description: person_data_result.dig(:education_level)&.dig(:description), level: person_data_result.dig(:education_level)&.dig(:education_level).to_i } end def emails Array.wrap(person_data_result.dig(:emails)&.dig(:email)).map do |t| { address: t.dig(:email_value), is_enabled: t.dig(:is_enabled), } end end def eye_color person_data_result.dig(:eye_color) end def fathers_document person_data_result.dig(:father_document) end def fathers_name person_data_result.dig(:father_name) end def first_name person_data_result.dig(:first_name) end def gender person_data_result.dig(:genre) end def hair_color person_data_result.dig(:hair_color) end def height person_data_result.dig(:height) end def rg person_data_result.dig(:id_card) end def rg_state person_data_result.dig(:id_card_state) end def last_name person_data_result.dig(:last_name) end def marital_status person_data_result.dig(:marital_status) end def match_name person_data_result.dig(:match_name) end def middle_name person_data_result.dig(:middle_name) end def mothers_document person_data_result.dig(:mother_document) end def mothers_name person_data_result.dig(:mother_name) end def nacionality person_data_result.dig(:nacionality) end def name person_data_result.dig(:name) end def name_cpf_brasil person_data_result.dig(:name_cpf_brasil) end def number_dependents person_data_result.dig(:number_dependents).to_i end def phones Array.wrap(person_data_result.dig(:phones)&.dig(:phone)).map do |t| { area_code: t.dig(:area_code).to_i, at_procon: t.dig(:at_procon), document: t.dig(:document), full_name: t.dig(:full_name), is_enabled: t.dig(:is_enabled), is_household: t.dig(:is_household), is_mobile: t.dig(:is_mobile), number_simple: t.dig(:number_simple), number: t.dig(:phone_number), operator_name: t.dig(:phone_operator_name) } end end def pep person_data_result.dig(:politically_exposed_person) end def person_household Array.wrap(person_data_result.dig(:person_household)&.dig(:person_household)).map do |t| { addresses: person_household_addresses(t.dig(:adresses)), call_name: t.dig(:call_name), complete_name: t.dig(:complete_name), document: t.dig(:document), father_name: t.dig(:father_name), first_name: t.dig(:first_name), genre: t.dig(:genre), iptu: t.dig(:iptu), kinship: t.dig(:kinship), last_name: t.dig(:last_name), match_name: t.dig(:match_name), middle_name: t.dig(:middle_name), mother_name: t.dig(:mother_name), second_name: t.dig(:second_name), suffix_name: t.dig(:suffix_name), vehicles: t.dig(:vehicles) } end end def professional_info Array.wrap(person_data_result.dig(:professional_data)&.dig(:professional_data)).map do |t| { cbo: t.dig(:cbo).to_i, cbo_description: t.dig(:cbo_descricao), company_cnpj: t.dig(:cnpj), company_address: t.dig(:cmpany_address), admission_date: t.dig(:data_admissao), resignation_date: t.dig(:data_demissao), family_salary: t.dig(:family_salary), pis: t.dig(:pis), social_name: t.dig(:razao_social), income_from: t.dig(:renda_de).to_f, income_to: t.dig(:renda_ate).to_f, salary: t.dig(:salario).to_f, admission_type: t.dig(:tipo_admissao).to_i, resignation_type: t.dig(:tipo_demissao).to_i } end end def retired person_data_result.dig(:retired_data) end def second_name person_data_result.dig(:second_name) end def skin_color person_data_result.dig(:skin_color) end def spouses_document person_data_result.dig(:spouse_document) end def spouses_name person_data_result.dig(:spouse_name) end def death person_data_result.dig(:supposed_death) end def vehicles person_data_result.dig(:vehicles) end def voter_id person_data_result.dig(:voter_registration) end def weight person_data_result.dig(:weight).to_f end private def person_data_result @body.dig(:get_person_data_response)&.dig(:get_person_data_result) end def person_household_addresses address_list Array.wrap(address_list.dig(:source)&.dig(:address)).map do |t| { city: t.dig(:city), complement: t.dig(:complement), country: t.dig(:country), is_enabled: t.dig(:is_enabled), match: t.dig(:match), neighboorhood: t.dig(:district), number: t.dig(:number), score: t.dig(:score).to_i, state: t.dig(:state), street: t.dig(:street), type: t.dig(:type), zip_code: t.dig(:zip_code), phone_area_code: t.dig(:area_code), phone: t.dig(:phone), phones: person_household_phones(t.dig(:phones)) } end end def person_household_phones phones return if phones.blank? Array.wrap(phones.dig(:phone)).map do |t| { area_code: t.dig(:area_code).to_i, at_procon: t.dig(:at_procon), document: t.dig(:document), full_name: t.dig(:full_name), is_enabled: t.dig(:is_enabled), is_household: t.dig(:is_household), is_mobile: t.dig(:is_mobile), number_simple: t.dig(:number_simple), number: t.dig(:phone_number), operator_name: t.dig(:phone_operator_name) } end end end end end