pwsh/dev/functions/processDiagramMermaid.ps1 (86 lines of code) (raw):
function processDiagramMermaid() {
if ($ManagementGroupId -ne $azAPICallConf['checkContext'].Tenant.Id) {
$optimizedTableForPathQueryMg = $optimizedTableForPathQueryMg.where({ $_.mgParentId -ne "'upperScopes'" })
}
$mgLevels = ($optimizedTableForPathQueryMg | Sort-Object -Property Level -Unique).Level
foreach ($mgLevel in $mgLevels) {
$mgsInLevel = ($optimizedTableForPathQueryMg.where( { $_.Level -eq $mgLevel } )).MgId | Get-Unique
foreach ($mgInLevel in $mgsInLevel) {
$mgDetails = ($optimizedTableForPathQueryMg.where( { $_.Level -eq $mgLevel -and $_.MgId -eq $mgInLevel } ))
$mgName = $mgDetails.MgName | Get-Unique
$mgParentId = $mgDetails.mgParentId | Get-Unique
$mgParentName = $mgDetails.mgParentName | Get-Unique
if ($mgInLevel -ne $getMgParentId) {
$null = $script:arrayMgs.Add($mgInLevel)
}
if ($mgParentName -eq $mgParentId) {
$mgParentNameId = $mgParentName
}
else {
$mgParentNameId = "$mgParentName<br/>$mgParentId"
}
if ($mgName -eq $mgInLevel) {
$mgNameId = $mgName
}
else {
$mgNameId = "$mgName<br/>$mgInLevel"
}
$script:markdownhierarchyMgs += @"
$mgParentId(`"$mgParentNameId`") --> $mgInLevel(`"$mgNameId`")`n
"@
$subsUnderMg = ($optimizedTableForPathQueryMgAndSub.where( { -not [string]::IsNullOrEmpty($_.SubscriptionId) -and $_.Level -eq $mgLevel -and $_.MgId -eq $mgInLevel } )).SubscriptionId
if (($subsUnderMg | Measure-Object).count -gt 0) {
foreach ($subUnderMg in $subsUnderMg) {
$null = $script:arraySubs.Add("SubsOf$mgInLevel")
$mgDetalsN = ($optimizedTableForPathQueryMg.where( { $_.Level -eq $mgLevel -and $_.MgId -eq $mgInLevel } ))
$mgName = $mgDetalsN.MgName | Get-Unique
$mgParentId = $mgDetalsN.MgParentId | Get-Unique
$mgParentName = $mgDetalsN.MgParentName | Get-Unique
$subName = ($optimizedTableForPathQuery.where( { $_.Level -eq $mgLevel -and $_.MgId -eq $mgInLevel -and $_.SubscriptionId -eq $subUnderMg } )).Subscription | Get-Unique
$script:markdownTable += @"
| $mgLevel | $mgName | $mgInLevel | $mgParentName | $mgParentId | $subName | $($subUnderMg -replace '.*/') |`n
"@
}
$mgName = ($optimizedTableForPathQueryMg.where( { $_.Level -eq $mgLevel -and $_.MgId -eq $mgInLevel } )).MgName | Get-Unique
if ($mgName -eq $mgInLevel) {
$mgNameId = $mgName
}
else {
$mgNameId = "$mgName<br/>$mgInLevel"
}
$script:markdownhierarchySubs += @"
$mgInLevel(`"$mgNameId`") --> SubsOf$mgInLevel(`"$(($subsUnderMg | Measure-Object).count)`")`n
"@
}
else {
$mgDetailsM = ($optimizedTableForPathQueryMg.where( { $_.Level -eq $mgLevel -and $_.MgId -eq $mgInLevel } ))
$mgName = $mgDetailsM.MgName | Get-Unique
$mgParentId = $mgDetailsM.MgParentId | Get-Unique
$mgParentName = $mgDetailsM.MgParentName | Get-Unique
$script:markdownTable += @"
| $mgLevel | $mgName | $mgInLevel | $mgParentName | $mgParentId | none | none |`n
"@
}
if (($script:outOfScopeSubscriptions | Measure-Object).count -gt 0) {
$subsoosUnderMg = ($outOfScopeSubscriptions.where({ $_.Level -eq $mgLevel -and $_.ManagementGroupId -eq $mgInLevel })).SubscriptionId | Get-Unique
if (($subsoosUnderMg | Measure-Object).count -gt 0) {
foreach ($subUnderMg in $subsoosUnderMg) {
$null = $script:arraySubsOos.Add("SubsoosOf$mgInLevel")
$mgDetalsN = ($optimizedTableForPathQueryMg.where( { $_.Level -eq $mgLevel -and $_.ManagementGroupId -eq $mgInLevel } ))
$mgName = $mgDetalsN.MgName | Get-Unique
}
$mgName = ($outOfScopeSubscriptions.where({ $_.Level -eq $mgLevel -and $_.ManagementGroupId -eq $mgInLevel })).ManagementGroupName | Get-Unique
if ($mgName -eq $mgInLevel) {
$mgNameId = $mgName
}
else {
$mgNameId = "$mgName<br/>$mgInLevel"
}
$script:markdownhierarchySubs += @"
$mgInLevel(`"$mgNameId`") --> SubsoosOf$mgInLevel(`"$(($subsoosUnderMg | Measure-Object).count)`")`n
"@
}
}
}
}
}