Framework/Models/FixControl/FixControlModel.ps1

Set-StrictMode -Version Latest 

class FixControlConfig
{
    [TenantContext] $TenantContext;
    [ResourceGroupConfig[]] $ResourceGroups = @();
    [ControlParam[]] $SubscriptionControls = @();
}

class ResourceGroupConfig
{
    [string] $ResourceGroupName = "" 
    [ResourceConfig[]] $Resources = @();
}

class ResourceConfig
{
    [string] $ResourceName = "" 
    [string] $ResourceType = ""  
    [string] $ResourceTypeName = ""  
    [ControlParam[]] $Controls = @();
    hidden [ResourceTypeMapping] $ResourceTypeMapping = $null;
}

class ControlParam
{
    [string] $ControlID = ""
    [string] $Id = ""
    [string] $ControlSeverity = [ControlSeverity]::High
    [FixControlImpact] $FixControlImpact = [FixControlImpact]::High;
    [string] $Description = "";
    [bool] $Enabled = $true;

    [ChildResourceParam[]] $ChildResourceParams = @();
}

class ChildResourceParam
{
    [string] $ChildResourceName = "" 
    [PSObject] $Parameters = $null;
}


class ArrayWrapper 
{ 
    [PSObject[]] $Values = @(); 
    ArrayWrapper([PSObject[]] $values)
    {
        $this.Values = @();
        if($values)
        {
            $this.Values += $values;
        }
    }
}