functions/public/Write-ChurchHouseholds.ps1
function Write-ChurchHouseholds { param ( [Parameter(Mandatory = $true)] [string] $UserName, [Parameter(Mandatory = $true)] [string] $Password, [Parameter(Mandatory = $true)] [int] $UnitNumber ) $session = New-ChurchSession -UserName $UserName -Password $Password; $memberListJSON = Get-ChurchMemberList -Session $session -UnitNumber $UnitNumber; $membersMovedInJSON = Get-ChurchMembersMovedIn -Session $session -UnitNumber $UnitNumber; $memberList = $memberListJSON | ConvertFrom-Json $membersMovedIn = $membersMovedInJSON | ConvertFrom-Json $persons = @(); foreach ($member in $memberList) { $index = $membersMovedIn.id.indexOf($member.legacyCmisId) if ($index -gt -1) { $memberMovedIn = $membersMovedIn[$index]; $member | Add-Member -Type "NoteProperty" -Name "newMoveIn" -Value $true $member | Add-Member -Type "NoteProperty" -Name "newMoveInDate" -Value $memberMovedIn.moveDate } $persons += $member } $households = @(); $householdList = $persons | Group-Object "householdUuid" foreach ($household in $householdList) { $thisHousehold = @{ uuid = $household.Name unitNumber = $household.Group[0].householdMember.household.unit.unitNumber name = $household.Group[0].householdMember.household.directoryPreferredLocal surname = $household.Group[0].householdMember.household.familyNameLocal address = $household.Group[0].householdMember.household.address.addressLines -join (" ") members = @() } if ($household.Group[0].newMoveIn) { $thisHousehold.Add("newMoveIn", $household.Group[0].newMoveIn) $thisHousehold.Add("newMoveInDate", $household.Group[0].newMoveInDate) } foreach ($member in $household.Group | Sort-Object @{Expression = { $_.isHead }; Ascending = $false }, @{Expression = { $_.age }; Ascending = $false }) { $thisHousehold.members += @{ uuid = $member.uuid householdUuid = $member.householdUuid head = $member.isHead name = $member.nameListPreferredLocal displayName = "$($member.nameFormats.givenPreferredLocal) $($member.nameFormats.familyPreferredLocal)" age = $member.age } } $households += $thisHousehold } return $households | ConvertTo-Json -Depth 10 -Compress; } <# [{ uuid: "00000000-0000-0000-0000-000000000000", unitNumber: 000000, name: "Name, Fake1 & Fake2", surname: "Name", address: "1000 W 1000 S Fake City, Fake 00000", newMoveIn: "true", newMoveInDate: "20190101" members: [ { uuid: "00000000-0000-0000-0000-000000000000", householdUuid: "00000000-0000-0000-0000-000000000000", head: true, name: "Name, Fake1", displayName: "Fake1 Name", age: "0" }, { uuid: "00000000-0000-0000-0000-000000000000", householdUuid: "00000000-0000-0000-0000-000000000000", unitNumber: 000000, Name: true, name: "Name, Fake2", displayName: "Fake2 Name", age: "0" } ] }] #> |