Public/EquipmentReadingLogs/New-AspireEquipmentReadingLog.ps1

<#
.SYNOPSIS
    Creates a new equipment reading log in the Aspire API.
.DESCRIPTION
    Uses Invoke-AspireRequest to perform a POST request to the /EquipmentReadingLogs endpoint.
.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 created equipment reading log.
.EXAMPLE
    New-AspireEquipmentReadingLog -EquipmentID 123 -LogDate "2023-01-01T00:00:00Z" -ReadingDate "2023-01-01T00:00:00Z" -MeterReading 100.0
#>

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

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

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

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