Class: FirmResult

Inherits:
Object
  • Object
show all
Defined in:
lib/mas/firm_result.rb

Constant Summary collapse

ADVICE_TYPE_NOT_SELECTED_VALUE =
0
LESS_THAN_FIFTY_K_ID =
1
DIRECTLY_MAPPED_FIELDS =
[
  :address_line_one,
  :address_line_two,
  :address_town,
  :address_county,
  :address_postcode,
  :website_address,
  :email_address,
  :free_initial_meeting,
  :minimum_fixed_fee,
  :other_advice_methods,
  :in_person_advice_methods,
  :investment_sizes,
  :adviser_accreditation_ids,
  :adviser_qualification_ids,
  :ethical_investing_flag,
  :sharia_investing_flag,
  :languages
]
TYPES_OF_ADVICE_FIELDS =
[
  :retirement_income_products,
  :pension_transfer,
  :options_when_paying_for_care,
  :equity_release,
  :inheritance_tax_planning,
  :wills_and_probate
]

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ FirmResult

Returns a new instance of FirmResult.



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/mas/firm_result.rb', line 45

def initialize(data)
  source = data['_source']
  @id    = source['_id']
  @name  = source['registered_name']
  @advisers         = source['advisers']
  @total_advisers   = source['advisers'].count
  @closest_adviser  = data['sort'].first
  @telephone_number = source['telephone_number']
  @offices = source['offices']
  @total_offices = source['offices'].count

  (DIRECTLY_MAPPED_FIELDS + TYPES_OF_ADVICE_FIELDS).each do |field|
    instance_variable_set("@#{field}", source[field.to_s])
  end
end

Instance Method Details

#advisersObject



61
62
63
# File 'lib/mas/firm_result.rb', line 61

def advisers
  @advisers.map { |adviser_data| AdviserResult.new(adviser_data) }
end

#includes_advice_type?(advice_type) ⇒ Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/mas/firm_result.rb', line 71

def includes_advice_type?(advice_type)
  public_send(advice_type) > ADVICE_TYPE_NOT_SELECTED_VALUE
end

#minimum_fixed_fee?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/mas/firm_result.rb', line 79

def minimum_fixed_fee?
  minimum_fixed_fee && minimum_fixed_fee.nonzero?
end

#minimum_pot_size?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/mas/firm_result.rb', line 87

def minimum_pot_size?
  minimum_pot_size_id > LESS_THAN_FIFTY_K_ID
end

#minimum_pot_size_idObject



83
84
85
# File 'lib/mas/firm_result.rb', line 83

def minimum_pot_size_id
  investment_sizes.first
end

#officesObject



65
66
67
68
69
# File 'lib/mas/firm_result.rb', line 65

def offices
  @offices
    .map  { |office_data| OfficeResult.new(office_data) }
    .sort { |a, b| a.address_town <=> b.address_town }
end

#telephone_numberObject



91
92
93
94
95
# File 'lib/mas/firm_result.rb', line 91

def telephone_number
  return nil unless @telephone_number

  UKPhoneNumbers.format(@telephone_number)
end

#types_of_adviceObject



75
76
77
# File 'lib/mas/firm_result.rb', line 75

def types_of_advice
  TYPES_OF_ADVICE_FIELDS.select { |field| public_send(field).nonzero? }
end