public/Invoke-AutomatedFacebookStoryWithPhoto.ps1

function Invoke-AutomatedFacebookStoryWithPhoto {

    [CmdletBinding()]
    param(

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

        [Parameter(Mandatory=$true)]
        [ValidateSet('corners','goals','match')]
        [string]$Content,

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

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

        [Parameter(Mandatory=$false)]
        [switch]$Post,

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

        [Parameter(Mandatory=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$Token

    )
    process{

        $ErrorActionPreference = 'Stop'


        try {

            # Import the fixtures from the results file
            $ResultsPath = "$Path\sportsmonk-results\$Competition\$Date\$Competition-$Date.csv"
            $ResultsPathExists = Test-Path -Path $ResultsPath

            if ($ResultsPathExists) {

                $FixtureResults = Import-Csv -Path $ResultsPath -ErrorAction Stop

                # Check the artifact path exists
                $FixtureArtifactPath = "$Path\fixture-artifact\working-set\$Competition\$Date\$Content"
                $FixtureArtifactPathExists = Test-Path -Path $FixtureArtifactPath

                $Hash1 =@{
                    Competition = $Competition
                    FunctionName = $($MyInvocation.MyCommand.Name)
                    Content = $Content
                    FixtureArtifactPathExists = $FixtureArtifactPathExists
                    FixtureResultCount = $($FixtureResults.Count)
                }

                $Hash1 | Format-Table

            } # if
                
            if ($FixtureArtifactPathExists -and $($FixtureResults.Count) -ge 1) {

                # Get the fixture artifacts
                $FixtureArtifacts = Get-ChildItem -Path $FixtureArtifactPath -Recurse -File -ErrorAction Stop

                # Only if there are artifacts proceed
                if ($($FixtureArtifacts.Count) -ge 1) {

                    foreach ($FixtureResult in $FixtureResults) {

                        $FixtureNameString = $($FixtureResult.FixtureName).Replace(' ','-')
                        $FilePrefix = "$($FixtureResult.fixture_id)-$FixtureNameString"
                        $FixtureArtifact = $FixtureArtifacts | Where-Object {$_.Name -like "$FilePrefix*"}

                        if ($($FixtureArtifact.Count) -eq 1) {

                            $PSObject = [PSCustomObject]@{
                                Competition = $Competition
                                Date = $Date
                                FixtureId = $($FixtureResult.fixture_id)
                                FixtureName = $($FixtureResult.FixtureName)
                                PhotoPath = $($FixtureArtifact.FullName)
                                Content = $Content
                                Endpoint = 'facebook-story'
                            }
        
                            $PSObject | Format-List

                            [int]$DateYear = $Date.Split('-')[0]
                            [int]$DateMonth = $Date.Split('-')[1]
                            $MFileDateTime = Get-Date -Format FileDateTime
                            $MLogPath = Get-ProcessedFootballFixtureFolderPath -Competition $Competition -DateYear $DateYear -DateMonth $DateMonth -Type media -Path $Path
                            $FilesToProcess = Get-ChildItem -Path $MLogPath | Where-Object {$_.FullName -like "*$Content-fbstory*"}
                            $FixtureProcessed = $false

                            foreach ($File in $($FilesToProcess.FullName)) {

                                Write-CustomWarningMessage -ParentPath $Path -FilePath $File
                                $FileContent = Get-Content $File | ConvertFrom-Json

                                if ($($FileContent.FixtureId) -eq $($FixtureResult.fixture_id)) {

                                    $FixtureProcessed = $true
                                    
                                } # if

                            } # foreach

                            if ($Post -and !$FixtureProcessed) {

                                Invoke-FacebookStoryWithPhoto -PageId $PageId -Token $Token -Path $($FixtureArtifact.FullName)
                                $PSObject| ConvertTo-Json | Set-Content -Path "$MlogPath\$MFileDateTime-$Competition-football-fixture-$Content-fbstory.json"

                            } # if

                        } # if

                    } # foreach

                } # if

            } # if

        }
        catch {

            throw "$($MyInvocation.MyCommand.Name): $_.Exception.Message"

        } # try catch

    } # process

} # function