Public/EquipmentReadingLogs/Update-AspireEquipmentReadingLog.ps1

<#
.SYNOPSIS
    Updates an existing equipment reading log in the Aspire API.
.DESCRIPTION
    Uses Invoke-AspireRequest to perform a PUT request to the /EquipmentReadingLogs endpoint.
.PARAMETER EquipmentReadingLogID
    The ID of the equipment reading log to update (required).
.PARAMETER EquipmentID
    The ID of the equipment (required).
.PARAMETER LogDate
    The log date (required, datetime).
.PARAMETER ReadingDate
    The reading date (required, datetime).
.PARAMETER MeterReading
    The meter reading (required, double).
.PARAMETER TroubleCode
    Optional trouble code.
.OUTPUTS
    The ID of the updated equipment reading log.
.EXAMPLE
    Update-AspireEquipmentReadingLog -EquipmentReadingLogID 456 -EquipmentID 123 -LogDate "2023-01-01T00:00:00Z" -ReadingDate "2023-01-01T00:00:00Z" -MeterReading 100.0
#>

function Update-AspireEquipmentReadingLog {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true)]
        [int]$EquipmentReadingLogID,
        [Parameter(Mandatory = $true)]
        [int]$EquipmentID,
        [Parameter(Mandatory = $true)]
        [datetime]$LogDate,
        [Parameter(Mandatory = $true)]
        [datetime]$ReadingDate,
        [Parameter(Mandatory = $true)]
        [double]$MeterReading,
        [string]$TroubleCode = $null
    )

    $body = @{
        EquipmentReadingLogID = $EquipmentReadingLogID
        EquipmentID = $EquipmentID
        LogDate = $LogDate.ToString("o")
        ReadingDate = $ReadingDate.ToString("o")
        MeterReading = $MeterReading
    }

    if ($TroubleCode) { $body.TroubleCode = $TroubleCode }

    return Invoke-AspireRequest -Method PUT -Path "/EquipmentReadingLogs" -Body $body
}