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, #to_json

Constructor Details

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

Instance Method Details

#add_details(schema_or_id) ⇒ Object



42
43
44
45
46
47
48
49
50
51
# File 'lib/ecoportal/api/v1/person.rb', line 42

def add_details(schema_or_id)
  self.details = person_details_class.new
  case schema_or_id
  when person_schema_class
    schema_or_id.initialize_details(self.details)
  when String
    self.details.schema_id = schema_id
  end
  self.details
end

#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 person_details_class
    doc["details"] = value.as_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") if defined?(@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