functions/public/Write-ChurchPersons.ps1
function Write-ChurchPersons { 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; $birthdayListJSON = Get-ChurchBirthdayList -Session $session $membersMovedInJSON = Get-ChurchMembersMovedIn -Session $session -UnitNumber $UnitNumber; $membersWithCallingsJSON = Get-ChurchMembersWithCallings -Session $session -UnitNumber $UnitNumber; $recommendStatusJSON = Get-ChurchRecommendStatus -Session $session -UnitNumber $UnitNumber; $actionInterviewListJSON = Get-ChurchActionInterviewList -Session $session -UnitNumber $UnitNumber; $memberList = $memberListJSON | ConvertFrom-Json $birthdayList = ($birthdayListJSON | ConvertFrom-Json) | Select-Object -ExpandProperty "birthdays" $membersMovedIn = $membersMovedInJSON | ConvertFrom-Json $membersWithCallings = $membersWithCallingsJSON | ConvertFrom-Json $recommendStatus = $recommendStatusJSON | ConvertFrom-Json $actionInterviewList = $actionInterviewListJSON | ConvertFrom-Json $actionInterviews = @(); foreach ($type in $actionInterviewList) { foreach ($person in $type.list) { $action = @{ id = $person.id; type = $type.type; title = "$($type.title)$(if ($type.subTitle) { ' - ' + $type.subTitle })"; description = $type.description; action = $person.action; }; $actionInterviews += $action; } } $persons = @(); foreach ($member in $memberList) { $index = $birthdayList.id.indexOf($member.legacyCmisId) if ($index -gt -1) { $birthday = $birthdayList[$index]; $member | Add-Member -Type "NoteProperty" -Name "mrn" -Value $birthday.mrn $member | Add-Member -Type "NoteProperty" -Name "formattedMrn" -Value $birthday.formattedMrn $member.nameFormats | Add-Member -Type "NoteProperty" -Name "spokenName" -Value $birthday.spokenName } $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.moveDateCalc <#get prior unit detail#> $priorUnitNumber = $memberMovedIn.priorUnitNumber; if ($priorUnitNumber) { $priorUnitDetailJSON = Get-ChurchUnitDetail -Session $session -UnitNumber $priorUnitNumber; $priorUnitDetail = $priorUnitDetailJSON | ConvertFrom-Json if ($priorUnitDetail) { $member | Add-Member -Type "NoteProperty" -Name "priorUnitDetail" -Value $priorUnitDetail } } } $index = $recommendStatus.id.indexOf($member.legacyCmisId) if ($index -gt -1) { $recommend = $recommendStatus[$index]; $member | Add-Member -Type "NoteProperty" -Name "recommendExpirationDate" -Value $recommend.expirationDate $member | Add-Member -Type "NoteProperty" -Name "recommendStatus" -Value $recommend.status $member | Add-Member -Type "NoteProperty" -Name "recommendType" -Value $recommend.type } $indexes = @() $singleIndex = -1 do { $singleIndex = [array]::IndexOf($actionInterviews.id, $member.legacyCmisId, $singleIndex + 1) if ($singleIndex -ge 0) { $indexes += $singleIndex } } while ($singleIndex -ge 0) if ($indexes.Length) { $member | Add-Member -Type "NoteProperty" -Name "actionInterviews" -Value @(); foreach ($index in $indexes) { $actionInterview = $actionInterviews[$index]; $member.actionInterviews += @{ type = $actionInterview.type; title = $actionInterview.title; description = $actionInterview.description; action = $actionInterview.action; } } } $indexes = @() $singleIndex = -1 do { $singleIndex = [array]::IndexOf($membersWithCallings.id, $member.legacyCmisId, $singleIndex + 1) if ($singleIndex -ge 0) { $indexes += $singleIndex } } while ($singleIndex -ge 0) if ($indexes.Length) { $member | Add-Member -Type "NoteProperty" -Name "callings" -Value @(); foreach ($index in $indexes) { $calling = $membersWithCallings[$index]; $member.callings += @{ organization = $calling.organization position = $calling.position activeDate = $calling.activeDate sustainedDate = $calling.sustainedDate setApartDate = $calling.setApartDate setApart = $calling.setApart } } } $persons += $member } return $persons | ConvertTo-Json -Depth 10 -Compress; } |