functions/public/Write-ChurchMinistering.ps1
function Write-ChurchMinistering { param ( [Parameter(Mandatory = $true)] [string] $UserName, [Parameter(Mandatory = $true)] [string] $Password, [Parameter(Mandatory = $true)] [int] $UnitNumber ) begin { function Get-StringHash([String] $String, $HashName = "MD5") { $StringBuilder = New-Object System.Text.StringBuilder [System.Security.Cryptography.HashAlgorithm]::Create($HashName).ComputeHash([System.Text.Encoding]::UTF8.GetBytes($String)) | % { [Void]$StringBuilder.Append($_.ToString("x2")) } $StringBuilder.ToString() } function F { return "sisters" } function M { return "brothers" } } process { $session = New-ChurchSession -UserName $UserName -Password $Password; $memberListJSON = Get-ChurchMemberList -Session $session -UnitNumber $UnitNumber; $memberList = $memberListJSON | ConvertFrom-Json $output = @{ households = @{ } persons = @{ } companionships = @{ brothers = @{ } sisters = @{ } } }; foreach ($member in $memberList) { $churchMinisteringParams = @{ HohId = $member.householdMember.household.anchorPerson.legacyCmisId Id = $member.legacyCmisId } $ministeringJSON = Get-ChurchMinistering -Session $session -UnitNumber $UnitNumber @churchMinisteringParams; # $ministeringJSON = (Get-Content "C:\Users\spencer.nicol\Desktop\church\test\ministering\$($member.uuid).json" | Out-String) if ($ministeringJSON) { $ministering = $ministeringJSON | ConvertFrom-Json $output.persons."$($member.uuid)" = @{ } if ($ministering.ministeringBrothers) { $output.households."$($member.householdUuid)" = $ministering.ministeringBrothers $output.persons."$($member.uuid)".Add("brothers", $ministering.ministeringBrothers) } if ($ministering.ministeringSisters) { $output.persons."$($member.uuid)".Add("sisters", $ministering.ministeringSisters) } if ($ministering.companions) { $output.persons."$($member.uuid)".Add("companions", $ministering.companions) $companionship = @() $companionship += $member.uuid foreach ($companion in $ministering.companions) { $companionship += $companion.personUuid } $companionshipString = (($companionship | Sort-Object) -join ('|')) $companionshipUuid = Get-StringHash -String $companionshipString $companionshipGroup = & $member.sex if (!$output.companionships.$companionshipGroup.ContainsKey($companionshipUuid)) { $output.companionships.$companionshipGroup.Add($companionshipUuid, @{ companions = @() }) } $thisCompanionship = $output.companionships.$companionshipGroup.$companionshipUuid foreach ($companion in $ministering.companions) { if ($thisCompanionship.companions.personUuid -notcontains $companion.personUuid) { $thisCompanionship.companions += $companion } } } if ($ministering.assignments) { $output.persons."$($member.uuid)".Add("assignments", $ministering.assignments) if (!$output.companionships.$companionshipGroup.$companionshipUuid.ContainsKey("assignments")) { $output.companionships.$companionshipGroup.$companionshipUuid.Add("assignments", $ministering.assignments) } } if ($output.persons."$($member.uuid)".Count -eq 0) { $output.persons.Remove($member.uuid) } } } return $output | ConvertTo-Json -Depth 10 -Compress; } } |