public/Confirm-ProcessedFootballFixture.ps1

function Confirm-ProcessedFootballFixture {
  
    [CmdletBinding()]
    param(

        [Parameter(Mandatory=$false)]
        [ValidateSet('europe','europe-uk','south-america','north-america','asia')]
        [string]$Continent,

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [int]$DateMonth,

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [int]$DateYear,

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [Object]$FixtureList,

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$Path,

        [Parameter(Mandatory=$true)]
        [ValidateSet('results','predictions')]
        [string]$Type

    )
    process{

        $ErrorActionPreference = 'Stop'

        try {

            if ($DateMonth -lt 10) {

                $DateMonthToUse = "0$DateMonth"

            }
            else {

                $DateMonthToUse = $DateMonth

            } # if

            if ($Type -eq 'predictions') {

                $UniqueFixtures =@()
                $ProcessedFixtures =@()
                $ProcessedFilesPath = "$Path\fixture-artifact\processed-fixtures\$DateYear\$DateMonthToUse\$Type"
                $ProcessedFilesPathExists = Test-Path -Path $ProcessedFilesPath

                if ($ProcessedFilesPathExists) {
                
                    $ProcessedFiles = Get-ChildItem -Path $ProcessedFilesPath -Recurse -File

                } # if

                if ($($ProcessedFiles.Count) -gt 1) {

                    foreach ($FixtureToProcess in $FixtureList) {

                        foreach ($ProcessedFile in $ProcessedFiles) {
                    
                            # Read and convert the JSON content from the file
                            $ProcessedFixtureList = Get-Content -Path $($ProcessedFile.FullName) | ConvertFrom-Json
                
                            # Check if the fixture id exists in the processed fixture list
                            if ($($ProcessedFixtureList.id) -contains $($FixtureToProcess.id)) {
                    
                                Write-Warning "Fixture Processed: $($FixtureToProcess.id) $($FixtureToProcess.Name)."
                                $ProcessedFixtures += $FixtureToProcess
                    
                            } # if

                        } # foreach

                    } # foreach

                }
                else {

                    $UniqueFixtures = $FixtureList | Select-Object -Property * -Unique
                    return $UniqueFixtures

                } # if

                foreach ($FixtureToProcess in $FixtureList) {

                    if ($($ProcessedFixtures.Id) -notcontains $($FixtureToProcess.id)) {
    
                        $FixtureToProcess
    
                    } #if
    
                } # if

            } # if

            if ($Type -eq 'results') {

                $ProcessedFixtures =@()
                $Competitions = $Competitions = Select-FootballCompetition -Continent $Continent
                $Competitions.GetEnumerator() | ForEach-Object -Process {

                    $ResultFiles = Get-ChildItem -Path "$Path\sportsmonk-results\$($_.key)" -Recurse -File

                    foreach ($FixtureToProcess in $FixtureList) {

                        foreach ($ResultFile in $ResultFiles) {

                            # C:\sportsmonk\sportsmonk-results\eng-premier\2025-02-23\eng-premier-2025-02-23.csv
                            # 2025-02-23\eng-premier-2025-02-23.csv
                            #$Path = 'C:\sportsmonk\sportsmonk-results\eng-premier\2025-02-23\eng-premier-2025-02-23.csv'
                            $Split1 = $($ResultFile.FullName).Split("\$($_.key)\")[-1]
                            #$Split1 = $Path.Split("\$($_.key)\")[-1]
                            # 2025-02-23\eng-premier-2025-02-23.csv
                            # 2025-02-23
                            $Date = $Split1.Split("\$($_.key)")[0]
                            $NoResultsExist = Confirm-FootballFixtureResult -Competition $($_.key) -Date $Date -Path $Path

                            if ($NoResultsExist) {

                                $ProcessedFixtures += $FixtureToProcess

                            } # if

                        } # foreach

                    } # foreach

                } # foreach-object

                $UniqueFixtures = $ProcessedFixtures | Select-Object -Property * -Unique
                return $UniqueFixtures

            } # if

        }
        catch {

            "$($MyInvocation.MyCommand.Name): $_.Exception.Message"
 
         } # trycatch

    } # process

} # function