|
|
|
@ -19,8 +19,10 @@ type
|
|
|
|
|
FamilyObj* = object
|
|
|
|
|
id*: string
|
|
|
|
|
name*: string
|
|
|
|
|
headsOfHousehold*: seq[string]
|
|
|
|
|
headOfHouseholdIds*: seq[string]
|
|
|
|
|
primaryAddressId*: seq[string]
|
|
|
|
|
members*: seq[string]
|
|
|
|
|
memberIds*: seq[string]
|
|
|
|
|
createdAt*: Option[DateTime]
|
|
|
|
|
lastUpdatedAt*: Option[DateTime]
|
|
|
|
@ -35,10 +37,14 @@ type
|
|
|
|
|
gender*: string
|
|
|
|
|
primaryPhoneNumber*: string
|
|
|
|
|
primaryEmailAddress*: string
|
|
|
|
|
addresses*: seq[string]
|
|
|
|
|
addressIds*: seq[string]
|
|
|
|
|
marriedToId*: seq[string]
|
|
|
|
|
marriedTo*: string
|
|
|
|
|
marriedToId*: string
|
|
|
|
|
anniversary*: Option[DateTime]
|
|
|
|
|
parents*: seq[string]
|
|
|
|
|
parentIds*: seq[string]
|
|
|
|
|
children*: seq[string]
|
|
|
|
|
childIds*: seq[string]
|
|
|
|
|
relationshipToHff*: seq[string]
|
|
|
|
|
createdAt*: Option[DateTime]
|
|
|
|
@ -91,8 +97,8 @@ func `==`*(a, b: Person): bool =
|
|
|
|
|
a.primaryPhoneNumber == b.primaryPhoneNumber and
|
|
|
|
|
a.primaryEmailAddress == b.primaryEmailAddress and
|
|
|
|
|
a.anniversary == b.anniversary and
|
|
|
|
|
a.marriedToId == b.marriedToId and
|
|
|
|
|
sameContents(a.addressIds, b.addressIds) and
|
|
|
|
|
sameContents(a.marriedToId, b.marriedToId) and
|
|
|
|
|
sameContents(a.parentIds, b.parentIds) and
|
|
|
|
|
sameContents(a.childIds, b.childIds) and
|
|
|
|
|
sameContents(a.relationshipToHff, b.relationshipToHff)
|
|
|
|
@ -147,7 +153,7 @@ func toPage*(p: Person): JsonNode =
|
|
|
|
|
"Email Address": { "email": p.primaryEmailAddress },
|
|
|
|
|
"Relationship to HFF": makeMultiSelectProp(p.relationshipToHff),
|
|
|
|
|
"Address": makeRelationProp(p.addressIds),
|
|
|
|
|
"Married To": makeRelationProp(p.marriedToId),
|
|
|
|
|
"Married To": makeRelationProp(@[p.marriedToId]),
|
|
|
|
|
"Anniversary": makeDateProp(p.anniversary),
|
|
|
|
|
"Parents": makeRelationProp(p.parentIds),
|
|
|
|
|
"Children": makeRelationProp(p.childIds),
|
|
|
|
@ -183,13 +189,17 @@ proc familyFromPage*(page: JsonNode): Family =
|
|
|
|
|
result = Family(
|
|
|
|
|
id: page["id"].getStr,
|
|
|
|
|
name: page.getTitle("Name"),
|
|
|
|
|
headsOfHousehold: page.getRolledupDisplayValues("Head(s) of Household (display)"),
|
|
|
|
|
headOfHouseholdIds: page.getRelationIds("Head(s) of Household"),
|
|
|
|
|
primaryAddressId: page.getRelationIds("Primary Address"),
|
|
|
|
|
members: page.getRolledupDisplayValues("Members (display)"),
|
|
|
|
|
memberIds: page.getRelationIds("Members"),
|
|
|
|
|
createdAt: some(parseIso8601(page["created_time"].getStr)),
|
|
|
|
|
lastUpdatedAt: some(parseIso8601(page["last_edited_time"].getStr)))
|
|
|
|
|
|
|
|
|
|
proc personFromPage*(page: JsonNode): Person =
|
|
|
|
|
let marriedToIds = page.getRelationIds("Married To")
|
|
|
|
|
|
|
|
|
|
result = Person(
|
|
|
|
|
id: page["id"].getStr,
|
|
|
|
|
preferredName: page.getTitle("Preferred Name"),
|
|
|
|
@ -201,10 +211,16 @@ proc personFromPage*(page: JsonNode): Person =
|
|
|
|
|
primaryPhoneNumber: page.getPhone("Primary Phone Number"),
|
|
|
|
|
primaryEmailAddress: page.getEmail("Email Address"),
|
|
|
|
|
relationshipToHff: page.getMultiSelect("Relationship to HFF"),
|
|
|
|
|
addresses: page.getRolledupDisplayValues("Full Address"),
|
|
|
|
|
addressIds: page.getRelationIds("Address"),
|
|
|
|
|
marriedToId: page.getRelationIds("Married To"),
|
|
|
|
|
marriedTo: if marriedToIds.len == 0: ""
|
|
|
|
|
else: page.getRolledupDisplayValues("Married To (display)")[0],
|
|
|
|
|
marriedToId: if marriedToIds.len == 0: ""
|
|
|
|
|
else: marriedToIds[0],
|
|
|
|
|
anniversary: page.getDateTime("Anniversary"),
|
|
|
|
|
parents: page.getRolledupDisplayValues("Parents (display)"),
|
|
|
|
|
parentIds: page.getRelationIds("Parents"),
|
|
|
|
|
children: page.getRolledupDisplayValues("Children (display)"),
|
|
|
|
|
childIds: page.getRelationIds("Children"),
|
|
|
|
|
createdAt: some(parseIso8601(page["created_time"].getStr)),
|
|
|
|
|
lastUpdatedAt: some(parseIso8601(page["last_edited_time"].getStr)),
|
|
|
|
|