module Ecoportal module API class Internal class Person < V1::Person def as_json super.update("account" => account&.as_json) end def account return @account if defined?(@account) return @account = nil if doc["account"].nil? @account = Internal::Account.new(doc["account"]) end def account=(value) case value when NilClass doc["account"] = nil when Internal::Account doc["account"] = JSON.parse(value.to_json) when Hash # TODO doc["account"] = value.slice(%w[policy_group_ids landing_page_id permissions_preset permissions_custom preferences prefilter filter_tags login_provider_ids starred_ids]) else # TODO raise "Invalid set on account: Need nil, Account or Hash; got #{value.class}" end remove_instance_variable("@account") if defined?(@account) return account end private def person_details_class Internal::PersonDetails end end end end end