Family relationship tracking and management in CongregationKit
CongregationKit provides comprehensive family management capabilities, including family CRUD operations, relationship tracking, and family tree building.
let familyId = FamilyID(rawValue: "FAM001")!// Get all members in the familylet members = try await familiesHandler.fetchMembers(familyId: familyId)for member in members { print("Member: \(member.memberName ?? "Unknown")") print("Role: Based on relationships")}
let familyId = FamilyID(rawValue: "FAM001")!// Get comprehensive family info with statisticslet familyInfo = try await familiesHandler.fetchFamilyInfo(familyId: familyId)// Access rich family data (structure depends on FamilyInfo model)print("Family information loaded successfully")
let newFamily = Family( id: FamilyID(rawValue: "FAM_NEW")!, familyName: "Smith Family", headOfFamily: MemberID(rawValue: "TKT123456")!, address: "123 Main Street, City, State 12345", homePhone: "555-0123", notes: "New family joined in 2024")let createdFamily = try await familiesHandler.createFamily(newFamily)print("Created family: \(createdFamily.familyName ?? "Unknown")")print("Family ID: \(createdFamily.id.rawValue)")
// Fetch existing familyvar family = try await familiesHandler.fetch(id: familyId)// Update family informationlet updatedFamily = Family( id: family.id, familyName: "Smith-Johnson Family", headOfFamily: family.headOfFamily, address: "456 Oak Avenue, City, State 12345", homePhone: family.homePhone, notes: "Updated address in 2024")let result = try await familiesHandler.updateFamily(updatedFamily)print("Family updated successfully")
let familyId = FamilyID(rawValue: "FAM001")!try await familiesHandler.deleteFamily(id: familyId)print("Family deleted successfully")
let memberId = MemberID(rawValue: "TKT123456")!let familyId = FamilyID(rawValue: "FAM001")!// Add member with specific rolelet membership = try await familiesHandler.addMemberToFamily( memberId: memberId, familyId: familyId, role: .parent)print("Added member to family with role: \(membership.role.displayName)")
let memberId = MemberID(rawValue: "TKT123456")!// Get all relationships for a memberlet relationships = try await familiesHandler.fetchRelationships(memberId: memberId)for relationship in relationships { print("Type: \(relationship.relationshipType.displayName)") print("Target: \(relationship.targetMemberId.rawValue)") print("Active: \(relationship.isActive)") if let duration = relationship.durationInYears { print("Duration: \(duration) years") }}
let relationship = MemberRelationship( id: RelationshipID(rawValue: "REL001")!, sourceMemberId: MemberID(rawValue: "TKT123456")!, targetMemberId: MemberID(rawValue: "TKT789012")!, relationshipType: .spouse, startDate: Date(), isPrimary: true)// Get inverse relationship typeprint(relationship.relationshipType.inverse) // .spouse (symmetrical)// Check if relationship is symmetricalprint(relationship.relationshipType.isSymmetrical) // true// Get relationship categoryprint(relationship.relationshipType.category) // .marriage// Check if relationship is activeprint(relationship.isActive) // true (no end date)// Get durationif let years = relationship.durationInYears { print("Relationship duration: \(years) years")}
Build a family tree starting from a specific member:
let memberId = MemberID(rawValue: "TKT123456")!// Build tree with member as rootlet familyTree = try await familiesHandler.buildFamilyTree(startingFrom: memberId)// Navigate the tree structureprint("Root: \(familyTree.rootMember.memberName ?? "Unknown")")for parent in familyTree.parents { print("Parent: \(parent.memberName ?? "Unknown")")}for child in familyTree.children { print("Child: \(child.memberName ?? "Unknown")")}for sibling in familyTree.siblings { print("Sibling: \(sibling.memberName ?? "Unknown")")}
let familyId = FamilyID(rawValue: "FAM001")!// Build tree for entire familylet familyTree = try await familiesHandler.buildFamilyTree(forFamily: familyId)// Access family members by relationshipprint("Family tree built successfully")