Exception: Eco::API::Organization::People::MultipleSearchResults

Inherits:
StandardError
  • Object
show all
Defined in:
lib/eco/api/organization/people.rb

Overview

Note:

its main purpose to prevent the creation of duplicates or override information between different people.

Error class that allows to handle cases where multiple people were found for the same criterion.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(msg, candidates: [], property: "email") ⇒ MultipleSearchResults

Returns a new instance of MultipleSearchResults.

Parameters:

  • msg (String)

    the basic message error.

  • candiates (Array<Person>)

    the people that match the same search criterion.

  • property (String) (defaults to: "email")

    the property of the person model that triggered the error (base of the search criterion).



12
13
14
15
16
# File 'lib/eco/api/organization/people.rb', line 12

def initialize(msg, candidates: [], property: "email")
  @candidates = candidates
  @property   = property
  super(msg + " " + candidates_summary)
end

Instance Attribute Details

#candidatesObject (readonly)

Returns the value of attribute candidates.



8
9
10
# File 'lib/eco/api/organization/people.rb', line 8

def candidates
  @candidates
end

#propertyObject (readonly)

Returns the value of attribute property.



8
9
10
# File 'lib/eco/api/organization/people.rb', line 8

def property
  @property
end

Instance Method Details

#candidate(index) ⇒ Person

Returns the candidate in the index position.

Returns:

  • (Person)

    the candidate in the index position



29
30
31
# File 'lib/eco/api/organization/people.rb', line 29

def candidate(index)
  candidates[index]
end

#identify_candidates(with_index: false) ⇒ Array<String>

Returns the candidates identified.

Parameters:

  • with_index (Boolean) (defaults to: false)

    to add an index to each candidate description.

Returns:

  • (Array<String>)

    the candidates identified



20
21
22
23
24
25
26
# File 'lib/eco/api/organization/people.rb', line 20

def identify_candidates(with_index: false)
  candidates.map.each_with_index do |person, i|
    index = with_index     ? "#{i}. " : ""
    msg   = person. ? (person. ? "(new user)" : "(user)") :  "(no account)"
    "#{index}#{msg} #{person.identify}"
  end
end