Class: Ecoportal::API::V1::Person

Inherits:
Common::BaseModel show all
Defined in:
lib/ecoportal/api/v1/person.rb

Direct Known Subclasses

Internal::Person

Instance Attribute Summary

Attributes inherited from Common::BaseModel

#doc

Instance Method Summary collapse

Methods inherited from Common::BaseModel

#as_update, #initialize, passthrough, #print

Constructor Details

This class inherits a constructor from Ecoportal::API::Common::BaseModel

Instance Method Details

#as_jsonObject



17
18
19
# File 'lib/ecoportal/api/v1/person.rb', line 17

def as_json
  super.merge "details" => details&.as_json
end

#detailsObject



21
22
23
24
25
# File 'lib/ecoportal/api/v1/person.rb', line 21

def details
  return @details if defined?(@details)
  return @details = nil if doc["details"].nil?
  @details = person_details_class.new(doc["details"])
end

#details=(value) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/ecoportal/api/v1/person.rb', line 27

def details=(value)
  case value
  when NilClass
    doc["details"] = nil
  when V1::PersonDetails
    doc["details"] = JSON.parse(value.to_json)
  when Hash
    doc["details"] = value.slice("schema_id", "fields")
  else
    raise "Invalid set on details: Need nil, PersonDetails or Hash; got #{value.class}"
  end
  remove_instance_variable("@details")
  return details
end

#supervisor(client) ⇒ Object



7
8
9
10
11
# File 'lib/ecoportal/api/v1/person.rb', line 7

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



13
14
15
# File 'lib/ecoportal/api/v1/person.rb', line 13

def supervisor=(person)
  self.supervisor_id = person.id
end