Classes/CIEMScanResult.ps1

enum CIEMScanStatus {
    PASS
    FAIL
    MANUAL
    SKIPPED
}

class CIEMScanResult {
    [string]$CheckId
    [CIEMScanStatus]$Status
    [string]$StatusExtended
    [string]$ResourceId
    [string]$ResourceName
    [string]$Location
    [string]$Severity

    CIEMScanResult() {}

    CIEMScanResult(
        [string]$CheckId,
        [CIEMScanStatus]$Status,
        [string]$StatusExtended,
        [string]$ResourceId,
        [string]$ResourceName,
        [string]$Location,
        [string]$Severity
    ) {
        $this.CheckId = $CheckId
        $this.Status = $Status
        $this.StatusExtended = $StatusExtended
        $this.ResourceId = $ResourceId
        $this.ResourceName = $ResourceName
        $this.Location = $Location
        $this.Severity = $Severity
    }

    static [CIEMScanResult] Create([hashtable]$CheckMetadata, [string]$Status, [string]$StatusExtended, [string]$ResourceId, [string]$ResourceName, [string]$Location) {
        return [CIEMScanResult]::new(
            $CheckMetadata.id,
            [CIEMScanStatus]$Status,
            $StatusExtended,
            $ResourceId,
            $ResourceName,
            $Location,
            $CheckMetadata.severity
        )
    }

    static [CIEMScanResult] Create([hashtable]$CheckMetadata, [string]$Status, [string]$StatusExtended, [string]$ResourceId, [string]$ResourceName) {
        return [CIEMScanResult]::Create($CheckMetadata, $Status, $StatusExtended, $ResourceId, $ResourceName, 'Global')
    }
}