src/Private/Report/PPT/Build-MCSCriticalImpactSlide.ps1

function Build-MCSCriticalImpactSlide {
    Param($Presentation,$CriticalRecommendation,$FoundryEndpoint,$MetroAgent,$ExtraRequest,$Debug)

    if ($Debug.IsPresent) {
        $DebugPreference = "Continue"
    } else {
        $DebugPreference = "SilentlyContinue"
    }

    $Loop = 1
    $CurrentSlide = 13
    $Counter = 1

    if($FoundryEndpoint)
        {
            $Conversation = New-MCSSfMCConversation -MetroAgent $MetroAgent -ExtraRequest $ExtraRequest -Debug $Debug
        }

    # Prevents the script from creating the Critical Recommendation slide if there are no critical recommendations
    if (![string]::IsNullOrEmpty($CriticalRecommendation.'Recommendation')) {
        Write-Debug ((get-date -Format 'yyyy-MM-dd HH:mm:ss') + ' - Editing Critical Recommendation Slides - Critical Recommendations found..')

        foreach ($Recommendation in $CriticalRecommendation) {
            $RecommendationTitle = $Recommendation.'Recommendation'
            $RecommendationDescription = $Recommendation.'Description'

            if ($Loop -eq 1) {

                Write-Debug ((get-date -Format 'yyyy-MM-dd HH:mm:ss') + ' - Editing Critical Recommendation Slides - Adding Recommendation: ' + $RecommendationTitle)

                $SlideCriticalRecommendation = $Presentation.Slides | Where-Object { $_.SlideIndex -eq $CurrentSlide }

                ($SlideCriticalRecommendation.Shapes | Where-Object { $_.Id -eq 6 }).TextFrame.TextRange.Text = "C - $Counter"

                ($SlideCriticalRecommendation.Shapes | Where-Object { $_.Id -eq 8 }).TextFrame.TextRange.Text = $RecommendationTitle

                if ($FoundryEndpoint) {

                        $Description = Get-MCSMetroAIRecommendationDescription -RecommendationTitle $RecommendationTitle -RecommendationDescription $RecommendationDescription -ExtraRequest $ExtraRequest -MetroAgent $MetroAgent -Conversation $Conversation -Debug:$Debug

                        $Risk = Get-MCSMetroAIRiskImplications -RecommendationTitle $RecommendationTitle -RecommendationDescription $RecommendationDescription -ExtraRequest $ExtraRequest -MetroAgent $MetroAgent -Conversation $Conversation -Debug:$Debug

                        $Action = Get-MCSMetroAIRecommendedActions -RecommendationTitle $RecommendationTitle -RecommendationDescription $RecommendationDescription -ExtraRequest $ExtraRequest -MetroAgent $MetroAgent -Conversation $Conversation -Debug:$Debug

                        ($SlideCriticalRecommendation.Shapes | Where-Object { $_.Id -eq 24 }).TextFrame.TextRange.Text = $Risk
                        $Risk = $null

                        ($SlideCriticalRecommendation.Shapes | Where-Object { $_.Id -eq 25 }).TextFrame.TextRange.Text = $Action
                        $Action = $null
                    }
                else
                    {
                        $Description = $RecommendationDescription
                    }

                ($SlideCriticalRecommendation.Shapes | Where-Object { $_.Id -eq 23 }).TextFrame.TextRange.Text = $Description

                $Loop ++
                $Counter ++

                start-sleep -Milliseconds 500
            }
            else {
                    Write-Debug ((get-date -Format 'yyyy-MM-dd HH:mm:ss') + ' - Editing Critical Recommendation Slides - Adding new Slide..')

                    Write-Debug ((get-date -Format 'yyyy-MM-dd HH:mm:ss') + ' - Editing Critical Recommendation Slides - Adding Recommendation: ' + $RecommendationTitle)

                    $Presentation.slides[$CurrentSlide].Duplicate() | Out-Null

                    $CurrentSlide ++

                    $NextSlide = $Presentation.Slides | Where-Object { $_.SlideIndex -eq $CurrentSlide }

                    ($NextSlide.Shapes | Where-Object { $_.Id -eq 6 }).TextFrame.TextRange.Text = "C - $Counter"

                    ($NextSlide.Shapes | Where-Object { $_.Id -eq 8 }).TextFrame.TextRange.Text = $RecommendationTitle

                    if ($FoundryEndpoint) {

                        $Description = Get-MCSMetroAIRecommendationDescription -RecommendationTitle $RecommendationTitle -RecommendationDescription $RecommendationDescription -ExtraRequest $ExtraRequest -MetroAgent $MetroAgent -Conversation $Conversation -Debug:$Debug

                        $Risk = Get-MCSMetroAIRiskImplications -RecommendationTitle $RecommendationTitle -RecommendationDescription $RecommendationDescription -ExtraRequest $ExtraRequest -MetroAgent $MetroAgent -Conversation $Conversation -Debug:$Debug

                        $Action = Get-MCSMetroAIRecommendedActions -RecommendationTitle $RecommendationTitle -RecommendationDescription $RecommendationDescription -ExtraRequest $ExtraRequest -MetroAgent $MetroAgent -Conversation $Conversation -Debug:$Debug

                        ($NextSlide.Shapes | Where-Object { $_.Id -eq 24 }).TextFrame.TextRange.Text = $Risk
                        $Risk = $null

                        ($NextSlide.Shapes | Where-Object { $_.Id -eq 25 }).TextFrame.TextRange.Text = $Action
                        $Action = $null
                    }
                    else
                        {
                            $Description = $RecommendationDescription
                        }

                    ($NextSlide.Shapes | Where-Object { $_.Id -eq 23 }).TextFrame.TextRange.Text = $Description

                    $Loop ++
                    $Counter ++
                }
            Start-Sleep -Milliseconds 500
        }
    }
    else {
        Write-Debug ((get-date -Format 'yyyy-MM-dd HH:mm:ss') + ' - Editing Critical Recommendation Slides - No Critical Recommendations found..')
        ($Presentation.Slides | Where-Object { $_.SlideIndex -eq 13 }).Delete()
    }
}