<#
.SYNOPSIS
  Setzt den Board-Status eines Issues im GitHub Project Board.
.DESCRIPTION
  Ermittelt die Item-ID des Issues im Board und setzt den Status
  auf den angegebenen Wert (Todo, In Progress, Done).
.PARAMETER IssueNumber
  Die Issue-Nummer (z.B. 68).
.PARAMETER Status
  Der Zielstatus: "Todo", "InProgress" oder "Done".
#>
param(
    [Parameter(Mandatory)][int]$IssueNumber,
    [Parameter(Mandatory)][ValidateSet("Todo","InProgress","Done")][string]$Status
)

$projectId = "PVT_kwHOCFqiJ84BXk9U"
$statusFieldId = "PVTSSF_lAHOCFqiJ84BXk9UzhSw4es"

$statusMap = @{
    "Todo"       = "f75ad846"
    "InProgress" = "47fc9ee4"
    "Done"       = "98236657"
}

$optionId = $statusMap[$Status]

# Item-ID im Board finden
$items = gh project item-list 2 --owner jreinemann-euris --format json --limit 200 | ConvertFrom-Json
$item = $items.items | Where-Object { $_.content.number -eq $IssueNumber } | Select-Object -First 1

if (-not $item) {
    Write-Error "Issue #$IssueNumber nicht im Project Board gefunden."
    exit 1
}

$itemId = $item.id

gh project item-edit --project-id $projectId --id $itemId --field-id $statusFieldId --single-select-option-id $optionId 2>&1 | Out-Null
if ($LASTEXITCODE -eq 0) {
    Write-Host "Issue #$IssueNumber → $Status"
} else {
    Write-Error "Fehler beim Setzen des Status für Issue #$IssueNumber."
    exit 1
}
