class Creditsafe::Request::FindCompany

Attributes

city[R]

rubocop:enable Metrics/AbcSize rubocop:enable Metrics/MethodLength

company_name[R]

rubocop:enable Metrics/AbcSize rubocop:enable Metrics/MethodLength

country_code[R]

rubocop:enable Metrics/AbcSize rubocop:enable Metrics/MethodLength

postal_code[R]

rubocop:enable Metrics/AbcSize rubocop:enable Metrics/MethodLength

registration_number[R]

rubocop:enable Metrics/AbcSize rubocop:enable Metrics/MethodLength

vat_number[R]

rubocop:enable Metrics/AbcSize rubocop:enable Metrics/MethodLength

Public Class Methods

new(search_criteria) click to toggle source
# File lib/creditsafe/request/find_company.rb, line 10
def initialize(search_criteria)
  check_search_criteria(search_criteria)
  @country_code = search_criteria[:country_code]
  @registration_number = search_criteria[:registration_number]
  @company_name = search_criteria[:company_name]
  @vat_number = search_criteria[:vat_number]
  @city = search_criteria[:city]
  @postal_code = search_criteria[:postal_code]
end

Public Instance Methods

message() click to toggle source

rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize

# File lib/creditsafe/request/find_company.rb, line 22
def message
  search_criteria = {}

  unless company_name.nil?
    search_criteria["#{Creditsafe::Namespace::DAT}:Name"] = {
      "@MatchType" => match_type,
      :content! => company_name,
    }
  end

  unless registration_number.nil?
    search_criteria["#{Creditsafe::Namespace::DAT}:RegistrationNumber"] =
      registration_number
  end

  unless vat_number.nil?
    search_criteria["#{Creditsafe::Namespace::DAT}:VatNumber"] =
      vat_number
  end

  unless city.nil?
    search_criteria["#{Creditsafe::Namespace::DAT}:Address"] = {
      "#{Creditsafe::Namespace::DAT}:City" => city,
    }
  end

  unless postal_code.nil?
    search_criteria["#{Creditsafe::Namespace::DAT}:Address"] = {
      "#{Creditsafe::Namespace::DAT}:PostalCode" => postal_code,
    }
  end

  build_message(search_criteria)
end

Private Instance Methods

build_message(search_criteria) click to toggle source
# File lib/creditsafe/request/find_company.rb, line 69
def build_message(search_criteria)
  {
    "#{Creditsafe::Namespace::OPER}:countries" => {
      "#{Creditsafe::Namespace::CRED}:CountryCode" => country_code,
    },
    "#{Creditsafe::Namespace::OPER}:searchCriteria" => search_criteria,
  }
end
check_search_criteria(search_criteria) click to toggle source

rubocop:disable Metrics/CyclomaticComplexity rubocop:disable Metrics/MethodLength rubocop:disable Metrics/PerceivedComplexity rubocop:disable Metrics/AbcSize

# File lib/creditsafe/request/find_company.rb, line 82
def check_search_criteria(search_criteria)
  if search_criteria[:country_code].nil?
    raise ArgumentError, "country_code is a required search criteria"
  end

  unless only_one_required_criteria?(search_criteria)
    raise ArgumentError, "only one of registration_number, company_name or " \
                         "vat number is required search criteria"
  end

  if search_criteria[:city] && search_criteria[:country_code] != "DE"
    raise ArgumentError, "city is only supported for German searches"
  end

  if search_criteria[:postal_code] && search_criteria[:country_code] != "DE"
    raise ArgumentError, "Postal code is only supported for German searches"
  end

  if search_criteria[:vat_number] && !Constants::Country::VAT_NUMBER_SUPPORTED.
      include?(search_criteria[:country_code])
    raise ArgumentError, "VAT number is not supported in this country"
  end
end
match_type() click to toggle source
# File lib/creditsafe/request/find_company.rb, line 64
def match_type
  Creditsafe::MatchType::ALLOWED[country_code.upcase.to_sym]&.first ||
    Creditsafe::MatchType::MATCH_BLOCK
end
only_one_required_criteria?(search_criteria) click to toggle source

rubocop:enable Metrics/AbcSize rubocop:enable Metrics/PerceivedComplexity rubocop:enable Metrics/MethodLength rubocop:enable Metrics/CyclomaticComplexity

# File lib/creditsafe/request/find_company.rb, line 110
def only_one_required_criteria?(search_criteria)
  by_registration_number = !search_criteria[:registration_number].nil?
  by_company_name = !search_criteria[:company_name].nil?
  by_vat_number = !search_criteria[:vat_number].nil?

  (by_registration_number ^ by_company_name ^ by_vat_number) &&
    !(by_registration_number && by_company_name && by_vat_number)
end