Class: Ecoportal::API::V1::Person
- Inherits:
-
Common::BaseModel
- Object
- Common::BaseModel
- Ecoportal::API::V1::Person
- Defined in:
- lib/ecoportal/api/v1/person.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#details ⇒ PersonDetails?
the details of the person or
nilif missing. -
#external_id ⇒ String
the alternative unique id of this person (unique in one organization).
-
#id ⇒ String
the internal unique id of this person (unique in all the system).
-
#name ⇒ String
the name of the person.
-
#subordinates ⇒ Integer
readonly
the number of people this person is supervisor of.
-
#supervisor_id ⇒ String
internal or external id of the supervisor of this person.
Attributes inherited from Common::BaseModel
Instance Method Summary collapse
-
#add_details(schema_or_id) ⇒ nil, PersonDetails
Sets the PersonDetails to the person, depending on the parameter received: -
PersonSchema: initializes thePersonDetailsas per the schema specified (schema_idandfields). - #as_json ⇒ Object
-
#supervisor(client) ⇒ Object
Gets the supervisor (
Person) of this person, with given hissupervisor_id. -
#supervisor=(person) ⇒ Object
Sets the supervisor of a person.
Methods inherited from Common::BaseModel
#as_update, #consolidate!, #dirty?, #doc, embeds_one, #initialize, #original_doc, passthrough, #print, #reset!, #to_json
Methods included from Common::BaseClass
#class_resolver, #resolve_class
Constructor Details
This class inherits a constructor from Ecoportal::API::Common::BaseModel
Instance Attribute Details
#details ⇒ PersonDetails?
the details of the person or nil if missing.
10 11 12 |
# File 'lib/ecoportal/api/v1/person.rb', line 10 def details @details end |
#external_id ⇒ String
the alternative unique id of this person (unique in one organization).
10 11 12 |
# File 'lib/ecoportal/api/v1/person.rb', line 10 def external_id @external_id end |
#id ⇒ String
the internal unique id of this person (unique in all the system).
10 11 12 |
# File 'lib/ecoportal/api/v1/person.rb', line 10 def id @id end |
#name ⇒ String
the name of the person.
10 11 12 |
# File 'lib/ecoportal/api/v1/person.rb', line 10 def name @name end |
#subordinates ⇒ Integer (readonly)
the number of people this person is supervisor of.
10 11 12 |
# File 'lib/ecoportal/api/v1/person.rb', line 10 def subordinates @subordinates end |
#supervisor_id ⇒ String
internal or external id of the supervisor of this person.
10 11 12 |
# File 'lib/ecoportal/api/v1/person.rb', line 10 def supervisor_id @supervisor_id end |
Instance Method Details
#add_details(schema_or_id) ⇒ nil, PersonDetails
- this method alone only sets the internal structure of the details.
- you will not be able to
reset!after using this method.
Sets the PersonDetails to the person, depending on the parameter received:
PersonSchema: initializes thePersonDetailsas per the schema specified (schema_idandfields).String: it just sets theschema_idon thePersonDetails(asfieldsis not include,details[key]=will throw error). (see #details=)
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/ecoportal/api/v1/person.rb', line 76 def add_details(schema_or_id) person_details_class.new.tap do |new_details| case schema_or_id when person_schema_class schema_or_id.initialize_details(new_details) when String new_details.schema_id = schema_or_id else raise "Invalid set on details: Requierd PersonSchema or String; got #{schema_or_id.class}" end self.details = new_details # Patch out static data from as_update original_doc["details"] = { "fields" => JSON.parse(doc["details"]["fields"].to_json) } end end |
#as_json ⇒ Object
42 43 44 |
# File 'lib/ecoportal/api/v1/person.rb', line 42 def as_json super.merge "details" => details&.as_json end |
#supervisor(client) ⇒ Object
Gets the supervisor (Person) of this person, with given his supervisor_id.
Example Usage:
API_KEY = 'some-private-api-key-version'
HOST = "live.ecoportal.com"
api = Ecoportal::API::Internal.new(API_KEY, host: HOST)
person = api.people.get({"id": "my-dummy-user"})
super = person.supervisor(api.client)
pp "#{person.name}'s supervisor is #{super.name}."
30 31 32 33 34 |
# File 'lib/ecoportal/api/v1/person.rb', line 30 def supervisor(client) return @supervisor if defined?(@supervisor) return @supervisor = nil if supervisor_id.nil? @supervisor = client.people.get(supervisor_id).result end |
#supervisor=(person) ⇒ Object
Sets the supervisor of a person.
38 39 40 |
# File 'lib/ecoportal/api/v1/person.rb', line 38 def supervisor=(person) self.supervisor_id = person&.id || person&.external_id end |