public/Get-NHLTeamPreviousGame.ps1

<#region HELP
.SYNOPSIS
Get the previous game an NHL Team has played

.DESCRIPTION
This cmdlet uses the NHL.com API to return an NHL game object. The team to retrieve can be passed
via NHLTeam enum or integral ID

This cmdlet supports NHLFavoriteTeam functionality. See Get-NHLFavoriteTeam and Set-NHLFavoriteTeam for more information

.PARAMETER TeamName
The NHL team. The team name is an NHLTeam enum.

.PARAMETER TeamID
The NHL team ID as specified by the NHL.com api

.EXAMPLE
Get-NHLTeamPreviousGame -TeamName PhiladelphiaFlyers

This example uses the NHLTeam enum value "PhiladelphiaFlyers" to return the previously played
game information for the Philadelphia Flyers.

.EXAMPLE
Get-NHLTeamPreviousGame -TeamID 4

This example uses the NHL.com api team ID to return the previously played
game information for the Philadelphia Flyers.

.EXAMPLE
Set-FavoriteNHLTeam -TeamName PhiladelphiaFlyers
Get-NHLTeamPreviousGame

This example will set the favorite team for the user as the PhiladelphiaFlyers. Now, Get-NHLTeamPreviousGame will get the favorite team's previous game by default if not specified

#>


function Get-NHLTeamPreviousGame {
    [CmdletBinding(DefaultParameterSetName="GetPreviousGameByFavorite")]
    param (
    # Parameter help description
    [Parameter(Mandatory=$false, Position=0, ParameterSetName="GetPreviousGameByTeamName")]
    [NHLTeams]
    $TeamName,
    
    [Parameter(Mandatory=$false, ParameterSetName="GetPreviousGameByTeamID")]
    [Int32]
    $TeamID
    )

    process {
        # declare automatics for processing
        [string]$RequestURINextGameParams = "?expand=team.schedule.previous"
        [string]$RequestURITeamParams = ""
        [string]$RequestURI = "https://statsapi.web.nhl.com/api/v1/teams/"

        # check if there is a favorite team set and we did not override with a TeamName
        if ($PSCmdlet.ParameterSetName -eq "GetPreviousGameByFavorite")
        {
            if ($Global:PSNHL_SETTINGS.settings.data.favoriteTeamID)
            {
                $TeamID = $Global:PSNHL_SETTINGS.settings.data.favoriteTeamID
            }
            else 
            {
                Write-Error "There is no favorite NHLTeam currently set. Use Set-NHLFavoriteTeam to set a favorite team"
                break
            }
        }
        
        if ($PSCmdlet.ParameterSetName -eq "GetPreviousGameByTeamName")
        {
            # if we got a name, we need to lookup the ID
            $TeamID = Get-NHLTeamID -TeamName $TeamName
        }
                    
        # Now lets validate the ID and set the api request params
        if ($TeamID -le 0)
        {
            Write-Error "Error processing TeamID : $TeamID : Cannot be a negative value"
            break
        }

        $RequestURITeamParams = $TeamID.ToString()
        
        # hopefully this works
        try {
            $GetResponse = Invoke-RestMethod -Method Get -Uri ($RequestURI + $RequestURITeamParams + $RequestURINextGameParams)
        }
        catch {
            # if we failed, just output what we tried for debugging
            Write-Error -Message "Error requesting team info from NHL.com api. The attempted request was: $RequestURI"
        }

        $GetResponse_PreviousGameInfo = $GetResponse.teams.previousGameSchedule.dates.games
        $PrevGameInfo = [NHLTeamPreviousGameInfo]::new()
        $PrevGameInfo.GameDate = Get-Date $GetResponse_PreviousGameInfo.gameDate
        $PrevGameInfo.HomeTeam = $GetResponse_PreviousGameInfo.teams.home.team.id
        $PrevGameInfo.AwayTeam = $GetResponse_PreviousGameInfo.teams.away.team.id
        $PrevGameInfo.HomeScore = $GetResponse_PreviousGameInfo.teams.home.score
        $PrevGameInfo.AwayScore = $GetResponse_PreviousGameInfo.teams.away.score
        $PrevGameInfo.Venue = $GetResponse_PreviousGameInfo.venue.name
        $PrevGameInfo.GameState = $GetResponse_PreviousGameInfo.status.detailedState

        return $PrevGameInfo
    }
}