require 'active_support/core_ext/array' module Biro module Bacen class Response < BaseResponse def initialize(response) @body = response.body end def cnpj_if result.dig(:cnpj_da_if_solicitante) end def cpf result.dig(:codigo_do_cliente) end def assumed_co_obligation result.dig(:coobrigacao_assumida)&.to_f&.round(2) end def received_co_obligation result.dig(:coobrigacao_recebida)&.to_f&.round(2) end def base_date result.dig(:data_base_consultada) end def relationship_initial_date result.dig(:data_inicio_relacionamento)&.to_date end def invoice_list return if operation_list.blank? result.dig(:lista_de_resumo_das_operacoes).each do |item| { :variacao_cambial => item[:variacao_cambial], :modalidade => item[:modalidade], :lista_de_vencimentos => item[:lista_de_vencimentos] #TODO: Translate the invoice codes } end end def exchange_rate_variation operation_list&.dig(:variacao_cambial) end def processed_documents_percentage result.dig(:percentual_documentos_processados)&.to_f&.round(2) end def processed_volume_percentage result.dig(:percentual_volume_processado)&.to_f&.round(2) end def institutions_amount result.dig(:quantidade_de_instituicoes).to_i end def operation_amount result.dig(:quantidade_de_operacoes).to_i end def unconformity_operation_amount result.dig(:quantidade_operacoes_discordancia).to_i end def sub_judice_operation_amount result.dig(:quantidade_operacoes_sub_judice).to_i end def unconformity_total_responsibility result.dig(:responsabilidade_total_discordancia).to_i end def sub_judice_total_responsibility result.dig(:responsabilidade_total_sub_judice).to_i end def indirect_risk result.dig(:risco_indireto_vendor).to_i end def customer_type result.dig(:tipo_do_cliente).to_i end def result_validation validation_content = result.dig(:lista_de_mensagens_de_validacao) return { } if validation_content.blank? validation_content end private def result @body.dig(:get_resumo_do_cliente_response, :return) end def operation_list result.dig(:lista_de_resumo_das_operacoes) end end end end