functions/Get-ABCards.ps1
|
function Get-ABCards { param ( [string]$Plate = '', [string]$Carrier = '', [string]$PersonName = '', [bool]$OnlyInsideCarpark = $true ) if ([string]::IsNullOrWhiteSpace($Plate) -and [string]::IsNullOrWhiteSpace($Carrier) -and [string]::IsNullOrWhiteSpace($PersonName)) { Write-Error "Get-ABCards: At least one filter (Plate, Carrier or PersonName) must be specified to avoid oversized response." return $null } $result = Invoke-ABRequest -Service 'ServiceOperation' -Method 'getCardsByWildcardSearch' -Body @{ plate = $Plate carrier = $Carrier personName = $PersonName onlyCardsInsideCarpark = $OnlyInsideCarpark.ToString().ToLower() } if ($null -eq $result) { return $null } $raw = $result.ArrayOfCardData.CardData if ($null -eq $raw) { return @() } if ($raw -isnot [System.Array]) { $raw = @($raw) } return $raw | ForEach-Object { $primaryCarrier = '' if ($_.CardCarriers -and $_.CardCarriers.CardCarrierData) { $carriers = $_.CardCarriers.CardCarrierData if ($carriers -isnot [System.Array]) { $carriers = @($carriers) } if ($carriers.Count -gt 0) { $primaryCarrier = $carriers[0].CardCarrierNrId } } [PSCustomObject]@{ id = $_.ID owner_first_name = $_.Person.FirstName owner_last_name = $_.Person.LastName price_name = $_.Price.Name valid_from = $_.TimeValidFrom valid_to = $_.TimeValidTo last_usage = $_.TimeLastUsage last_plate = $_.LastLicensePlate last_country_code = $_.LastCountryCode applic_id_last_use = $_.ApplicIDLastUsage time_coding = $_.TimeCoding card_carrier = $primaryCarrier carpark_id = [int]$_.Carpark.ID } } } |